Date: Tue, 17 Feb 2015 01:50:32 +0200 From: Konstantin Belousov <kostikbel@gmail.com> To: sbruno@freebsd.org Cc: freebsd-hackers@freebsd.org Subject: Re: -current static linking or overlinking ... Message-ID: <20150216235032.GP34251@kib.kiev.ua> In-Reply-To: <54E25342.9060308@ignoranthack.me> References: <54E25342.9060308@ignoranthack.me>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150216235032.GP34251>