This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
There is a problem in the SH code, illustrated here in context of the elf/order2 test. A false dependency is induced that later on prevents dlclose from unloading shared libraries. $ LD_DEBUG=all ./order2 --direct [...] 27997: calling init: ./order2mod3.so 27997: 27997: symbol=__gmon_start__; lookup in file=/home/thomas/tmp/order2-sh/order2 [0] 27997: symbol=__gmon_start__; lookup in file=/lib/libdl.so.2 [0] 27997: symbol=__gmon_start__; lookup in file=/lib/libc.so.6 [0] 27997: symbol=__gmon_start__; lookup in file=/lib/ld-linux.so.2 [0] 27997: symbol=__gmon_start__; lookup in file=/home/thomas/tmp/order2-sh/order2mod1.so [0] 27997: 27997: file=/home/thomas/tmp/order2-sh/order2mod1.so [0]; needed by ./order2mod3.so [0] (relocation dependency) 27997: 27997: binding file ./order2mod3.so [0] to /home/thomas/tmp/order2-sh/order2mod1.so [0]: normal symbol `__gmon_start__' [...] That is, __gmon_start__ is required for order2mod3.so, and is bound to order2mod1.so's (weak) definition. Correct would be that order2mod3.so falls back to its *own* (weak) definition of it, unless the real definition of this symbol is linked in through gcrt1.o. The following tiny patch fixes this, and makes the following tests pass, which failed previously: elf/reldep3.out, elf/neededtest.out, elf/order2.out. 2009-12-01 Thomas Schwinge <thomas@codesourcery.com> * sysdeps/sh/elf/initfini.c (__gmon_start__): Make it hidden. Index: sysdeps/sh/elf/initfini.c =================================================================== --- sysdeps/sh/elf/initfini.c (revision 267788) +++ sysdeps/sh/elf/initfini.c (working copy) @@ -1,5 +1,5 @@ /* Special .init and .fini section support for SH. - Copyright (C) 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 2000, 2002, 2009 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -106,6 +106,7 @@ .section .text\n\ .align 5\n\ .weak __gmon_start__\n\ + .hidden __gmon_start__\n\ .type __gmon_start__,@function\n\ __gmon_start__:\n\ mov.l r14,@-r15\n\ Regards, Thomas
Attachment:
pgp00000.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |