-current static linking or overlinking ...

Sean Bruno sbruno at ignoranthack.me
Tue Feb 17 02:28:47 UTC 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

On 02/16/15 15:50, Konstantin Belousov wrote:
> On Mon, Feb 16, 2015 at 12:29:54PM -0800, Sean Bruno wrote:
>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512
>> 
>> Building the qemu bsd-user static targets on head seem to be 
>> "overlinking" or something that is pulling in multiple copies of 
>> symbols.  I'm not confident in my terminology here so I could be
>> using the wrong terms.
>> 
>> This is a recent regression (last couple of months).
>> 
>> e.g. checkout qemu source, configure with: ./configure
>> --target-list="i386-bsd-user" --static
>> 
>> and build with gmake,  You'll see a bunch of this at random
>> places where things are linked statically.  I assume "something"
>> has changed in the toolchain that requires a change to the QEMU
>> build?
>> 
>> CC    stubs/vm-stop.o CC    stubs/vmstate.o CC    stubs/cpus.o CC
>> stubs/kvm.o CC    stubs/qmp_pc_dimm_device_list.o AR
>> libqemustub.a LINK  qemu-ga /usr/lib/libpthread.a(thr_spec.o):
>> warning: multiple common of `__cleanup' /usr/lib/crt1.o: warning:
>> previous common is here /usr/lib/libpthread.a(thr_sig.o):
>> warning: multiple common of `__cleanup' /usr/lib/crt1.o: warning:
>> previous common is here /usr/lib/libpthread.a(thr_init.o):
>> warning: multiple common of `__cleanup' /usr/lib/crt1.o: warning:
>> previous common is here /usr/lib/libpthread.a(thr_rtld.o):
>> warning: multiple common of `__cleanup' /usr/lib/crt1.o: warning:
>> previous common is here /usr/lib/libpthread.a(thr_fork.o):
>> warning: multiple common of `__cleanup' /usr/lib/crt1.o: warning:
>> previous common is here /usr/lib/libpthread.a(thr_create.o):
>> warning: multiple common of `__cleanup' /usr/lib/crt1.o: warning:
>> previous common is here /usr/lib/libpthread.a(thr_exit.o):
>> warning: multiple common of `__cleanup' /usr/lib/crt1.o: warning:
>> previous common is here /usr/lib/libpthread.a(thr_error.o):
>> warning: multiple common of `__cleanup' /usr/lib/crt1.o: warning:
>> previous common is here
> 
> This should fix it.  You must rebuild the world to test.
> 
> diff --git a/lib/libc/include/libc_private.h
> b/lib/libc/include/libc_private.h index 71fc8df..e4bf4a6 100644 ---
> a/lib/libc/include/libc_private.h +++
> b/lib/libc/include/libc_private.h @@ -271,7 +271,7 @@ void
> _malloc_first_thread(void); /* * Function to clean up streams,
> called from abort() and exit(). */ -void (*__cleanup)(void)
> __hidden; +extern void (*__cleanup)(void) __hidden;
> 
> /* * Get kern.osreldate to detect ABI revisions.  Explicitly
> 


This patch eliminates the libpthread.a warnings, which is the majority
of the warnings.  I believe I am now dealing with the previously
existing warning messages now.

There are still a few left from libc.a/crt1.o when building static.
GEN   trace/generated-helpers.c
  CC    arm-bsd-user/trace/generated-helpers.o
  LINK  arm-bsd-user/qemu-arm
/usr/lib/libc.a(exit.o): warning: multiple common of `__cleanup'
/usr/lib/crt1.o: warning: previous common is here
  GEN   aarch64-bsd-user/config-target.h
  CC    aarch64-bsd-user/exec.o


sean

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQF8BAEBCgBmBQJU4qdZXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRCQUFENDYzMkU3MTIxREU4RDIwOTk3REQx
MjAxRUZDQTFFNzI3RTY0AAoJEBIB78oecn5kgKIIAKJw+J7rF+IpoUru3ULSGxMd
AylcKISTNjkj6irCI7agZxyQV+/nxlIRa5t/WbZb74oAE4WBI2PRou4PUpWimk5C
bpk4I+TbH0dT6LUDAVaL48qTIy9QUsHmlUZ4ANphyengW8Mgk5rCPbXG61fH4eMi
8MeT79iDoEPTxzCAC0gyw3IjQ+5rx6jQ/TXwX4Ao4mlXsbGdYJSJDIzs9gXVwa+6
vMPB1GPjyB8hOfX7/CU8Isjw+oFZiqVETevck4spxqNQS90GEUuURufSE5HCQE7Z
65S5Y8tbXoOBP4GToqMC2YpwwvcOLz30wtVuJLjN55obVm6qrOokL+ulhQvTY/0=
=8/tU
-----END PGP SIGNATURE-----


More information about the freebsd-hackers mailing list