So, here's the same diff with shlib glue.
If you think that's slightly insane, blame bsd.lib.mk !
Note: for now, there's only arch/libamd64.
I don't feel qualified to comment/test/do the other arches if need be.
Index: libl/Makefile
===================================================================
RCS file: /cvs/src/lib/libl/Makefile,v
retrieving revision 1.4
diff -u -p -r1.4 Makefile
--- libl/Makefile 24 Nov 2005 20:49:18 -0000 1.4
+++ libl/Makefile 19 Jun 2012 17:19:25 -0000
@@ -4,7 +4,6 @@
LIB= l
WANTLINT=
SRCS= libmain.c libyywrap.c
-NOPIC=
.PATH: ${.CURDIR}/../../usr.bin/lex
@@ -13,6 +12,13 @@ NOPIC=
LINKS= ${LIBDIR}/libl.a ${LIBDIR}/libfl.a
.if !defined(NOPROFILE)
LINKS+= ${LIBDIR}/libl_p.a ${LIBDIR}/libfl_p.a
+.endif
+
+.if !defined (NOPIC)
+.if (${MACHINE_CPU} != "mips64")
+LINKS+= ${LIBDIR}/libl_pic.a ${LIBDIR}/libfl_pic.a
+.endif
+LINKS+= ${LIBDIR}/libl.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
${LIBDIR}/libfl.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
.endif
.include <bsd.lib.mk>
Index: libl/shlib_version
===================================================================
RCS file: libl/shlib_version
diff -N libl/shlib_version
@@ -0,0 +1,3 @@
+# $OpenBSD$
+major=0
+minor=0
Index: libarch/amd64/Makefile
===================================================================
RCS file: /cvs/src/lib/libarch/amd64/Makefile,v
retrieving revision 1.10
diff -u -p -r1.10 Makefile
--- libarch/amd64/Makefile 13 Apr 2011 02:49:12 -0000 1.10
+++ libarch/amd64/Makefile 19 Jun 2012 17:19:25 -0000
@@ -9,7 +9,7 @@ MLINKS+=amd64_get_ioperm.2 amd64_set_iop
.if ${MACHINE_ARCH} == "amd64"
.PATH: ${LIBC}/amd64
-NOPIC=
+
SRCS+= amd64_iopl.c amd64_get_ioperm.c amd64_set_ioperm.c \
amd64_get_fsbase.c amd64_set_fsbase.c
.include <bsd.lib.mk>
Index: libarch/amd64/shlib_version
===================================================================
RCS file: libarch/amd64/shlib_version
diff -N libarch/amd64/shlib_version
@@ -0,0 +1,3 @@
+# $OpenBSD$
+major=0
+minor=0