Hi Kostik,
Thanks to b.f., I've been reminded that this patch has yet to be
committed :).
As a reminder, here are the archive pointers to the discussion:
http://lists.freebsd.org/pipermail/freebsd-hackers/2010-August/032549.html
continued...
http://lists.freebsd.org/pipermail/freebsd-hackers/2010-September/033028.html
continued...
http://lists.freebsd.org/pipermail/freebsd-hackers/2010-November/033478.html
On Sat, Nov 06, 2010 at 09:47:02PM +0200, Kostik Belousov wrote:
> On Fri, Nov 05, 2010 at 07:00:23PM -0400, Alexander Kabaev wrote:
> > On Fri, 5 Nov 2010 22:39:06 +0100
> > Jeremie Le Hen <[email protected]> wrote:
> >
> > > Hi Kib,
> > >
> > > On Tue, Oct 05, 2010 at 08:18:04PM +0200, Jeremie Le Hen wrote:
> > > >
> > > > On Mon, Sep 27, 2010 at 06:44:57PM +0300, Kostik Belousov wrote:
> > > > > Hardcoding /usr/lib as the path to the library in the script looks
> > > > > problematic. For the buidlworld, you are linking resulting
> > > > > binaries with the host library, instead of the
> > > > > buildworld-produced one. For lib32, it makes non-working
> > > > > combination of 32/64 bit.
> > > >
> > > > Sorry for the late reply, but I had to collect various evidences
> > > > for my sayings and my development machine is reaaaaaaaaaaally slow.
> > > >
> > > > In fact it seems the toolchain built for buildworld contains a ld(1)
> > > > binary which invariably bases lookups for libraries in ${WORLDTMP},
> > > > even in case of an absolute path. I have two evidences of this:
> > > > - Putting /usr/obj/usr/src/tmp/usr/lib/libssp_nonshared.a in
> > > > /usr/obj/usr/src/tmp/usr/lib/libc.ld leads toolchain's ld(1) to
> > > > use /usr/obj/usr/src/tmp/usr/obj/usr/src/tmp/usr/lib/libssp_nonshared.a;
> > > > - I also verified this with a hand-wrought opensnoop-like DTrace
> > > > script.
> > >
> > > I dare to remind you about my patch. Do you have any other concerns?
> > >
> > > Thanks.
> > > Regards,
> > > --
> > > Jeremie Le Hen
> > >
> > > Humans are born free and equal. But some are more equal than others.
> > > Coluche
> >
> > Hmm, I thought I did approve this patch already a long time agi, but
> > since you asked:
> >
> > +.if defined(SHLIB_LDSCRIPT) && exists(${.CURDIR}/${SHLIB_LDSCRIPT})
> >
> > this should be:
> >
> > +.if defined(SHLIB_LDSCRIPT)
> >
> > ditto for all other similar places. Otherwise I do not think we should
> > hold the patch in queue ans should unleash it on unsuspecting public.
>
> Also, I think the "DEBUG" lines should be removed.
Sure, I'll do it in my next update.
> You install the libxxx.ld and then symlink libxxx.so to libxxx.ld.
> Why ? Would it be enough to install just the libxxx.so ?
I just thought it would be less puzzling for users than noticing that
libc.so is only a few hundred of ascii. I don't have a strong opinion
about this though.
> Otherwise, I think you need the similar
> .if ${SHLIBDIR} == ${LIBDIR}
> magic, that is better to be avoided.
Can you explain a little bit more about this one please? I'm willing to
post an updated patch for further review.
Regards,
--
Jeremie Le Hen
Humans are born free and equal. But some are more equal than others.
Coluche
diff -urNp src.orig/lib/libc/Makefile src/lib/libc/Makefile
--- src.orig/lib/libc/Makefile 2010-08-01 12:35:01.000000000 +0000
+++ src/lib/libc/Makefile 2010-09-21 23:40:51.000000000 +0000
@@ -20,6 +20,7 @@ CFLAGS+=-DNLS
CLEANFILES+=tags
INSTALL_PIC_ARCHIVE=
PRECIOUSLIB=
+SHLIB_LDSCRIPT=libc.ldscript
#
# Only link with static libgcc.a (no libgcc_eh.a).
diff -urNp src.orig/lib/libc/libc.ldscript src/lib/libc/libc.ldscript
--- src.orig/lib/libc/libc.ldscript 1970-01-01 00:00:00.000000000 +0000
+++ src/lib/libc/libc.ldscript 2010-09-24 21:56:57.000000000 +0000
@@ -0,0 +1,2 @@
+/* $FreeBSD */
+GROUP ( @@SHLIB@@ /usr/lib/libssp_nonshared.a )
diff -urNp src.orig/share/mk/bsd.lib.mk src/share/mk/bsd.lib.mk
--- src.orig/share/mk/bsd.lib.mk 2010-07-30 15:25:57.000000000 +0000
+++ src/share/mk/bsd.lib.mk 2010-09-24 22:01:04.000000000 +0000
@@ -293,9 +293,19 @@ _libinstall:
${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
.if defined(SHLIB_LINK)
+.if defined(SHLIB_LDSCRIPT) && !empty(SHLIB_LDSCRIPT) && exists(${.CURDIR}/${SHLIB_LDSCRIPT})
+ @echo "DEBUG: install lib${LIB}.ld to ${DESTDIR}${LIBDIR}/${SHLIB_LINK}"
+ sed -e 's,@@SHLIB@@,${SHLIBDIR}/${SHLIB_NAME},g' \
+ ${.CURDIR}/${SHLIB_LDSCRIPT} > lib${LIB}.ld
+ ${INSTALL} -S -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
+ ${_INSTALLFLAGS} lib${LIB}.ld ${DESTDIR}${LIBDIR}
+ ln -sf lib${LIB}.ld ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
+.else
.if ${SHLIBDIR} == ${LIBDIR}
+ @echo "DEBUG: symlink (1) ${DESTDIR}${LIBDIR}/${SHLIB_LINK} to ${SHLIB_NAME}"
ln -fs ${SHLIB_NAME} ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
.else
+ @echo "DEBUG: symlink (2) ${DESTDIR}${LIBDIR}/${SHLIB_LINK} to ${_SHLIBDIRPREFIX}${SHLIBDIR}/${SHLIB_NAME}"
ln -fs ${_SHLIBDIRPREFIX}${SHLIBDIR}/${SHLIB_NAME} \
${DESTDIR}${LIBDIR}/${SHLIB_LINK}
.if exists(${DESTDIR}${LIBDIR}/${SHLIB_NAME})
@@ -303,8 +313,9 @@ _libinstall:
rm -f ${DESTDIR}${LIBDIR}/${SHLIB_NAME}
.endif
.endif
-.endif
-.endif
+.endif # SHLIB_LDSCRIPT
+.endif # SHLIB_LINK
+.endif # SHIB_NAME
.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no"
${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
@@ -372,6 +383,9 @@ clean:
.endif
.if defined(SHLIB_NAME)
.if defined(SHLIB_LINK)
+.if defined(SHLIB_LDSCRIPT) && exists(${.CURDIR}/${SHLIB_LDSCRIPT})
+ rm -f lib${LIB}.ld
+.endif
rm -f ${SHLIB_LINK}
.endif
.if defined(LIB) && !empty(LIB)
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[email protected]"