* libc divdi3 and libgcc @ 2003-05-02 10:12 Alan Modra 2003-05-02 14:39 ` H. J. Lu 0 siblings, 1 reply; 9+ messages in thread From: Alan Modra @ 2003-05-02 10:12 UTC (permalink / raw) To: H. J. Lu; +Cc: binutils HJ, I think your 2003-04-27 change broke ld. Configuring gcc with /src/gcc-3.3/configure --prefix=/usr/local --build=i686-linux \ --host=i686-linux --target=i686-linux --disable-nls --enable-shared \ --enable-languages=c,c++ I see stage1/xgcc -Bstage1/ -B/usr/local/i686-linux/bin/ -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -pedantic -Wno-long-long -DHAVE_CONFIG_H -o cc1 \ c-parse.o c-lang.o c-pretty-print.o attribs.o c-errors.o c-lex.o c-pragma.o c-decl.o c-typeck.o c-convert.o c-aux-info.o c-common.o c-opts.o c-format.o c-semantics.o c-objc-common.o c-dump.o libcpp.a main.o libbackend.a ../libiberty/libiberty.a /lib/libc.so.6(*IND*+0x0): multiple definition of `__divdi3' stage1/libgcc.a(_divdi3.oS)(.text+0x0):/src/gcc-3.3/gcc/libgcc2.c:737: first defined here __divdi3 in libc is FUNC GLOBAL DEFAULT, in _divdi3.oS it is FUNC GLOBAL HIDDEN -- Alan Modra IBM OzLabs - Linux Technology Centre ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libc divdi3 and libgcc 2003-05-02 10:12 libc divdi3 and libgcc Alan Modra @ 2003-05-02 14:39 ` H. J. Lu 2003-05-02 15:44 ` H. J. Lu 0 siblings, 1 reply; 9+ messages in thread From: H. J. Lu @ 2003-05-02 14:39 UTC (permalink / raw) To: binutils On Fri, May 02, 2003 at 07:42:24PM +0930, Alan Modra wrote: > HJ, > I think your 2003-04-27 change broke ld. > > Configuring gcc with > /src/gcc-3.3/configure --prefix=/usr/local --build=i686-linux \ > --host=i686-linux --target=i686-linux --disable-nls --enable-shared \ > --enable-languages=c,c++ > > I see > > stage1/xgcc -Bstage1/ -B/usr/local/i686-linux/bin/ -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -pedantic -Wno-long-long -DHAVE_CONFIG_H -o cc1 \ > c-parse.o c-lang.o c-pretty-print.o attribs.o c-errors.o c-lex.o c-pragma.o c-decl.o c-typeck.o c-convert.o c-aux-info.o c-common.o c-opts.o c-format.o c-semantics.o c-objc-common.o c-dump.o libcpp.a main.o libbackend.a ../libiberty/libiberty.a > /lib/libc.so.6(*IND*+0x0): multiple definition of `__divdi3' > stage1/libgcc.a(_divdi3.oS)(.text+0x0):/src/gcc-3.3/gcc/libgcc2.c:737: first defined here > > __divdi3 in libc is FUNC GLOBAL DEFAULT, > in _divdi3.oS it is FUNC GLOBAL HIDDEN > I am using the current binutils on gcc gcc-3_2-rhl8-branch and gcc mainline. I have no problems. I will check out gcc 3.3. H.J. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libc divdi3 and libgcc 2003-05-02 14:39 ` H. J. Lu @ 2003-05-02 15:44 ` H. J. Lu 2003-05-03 1:52 ` Alan Modra 0 siblings, 1 reply; 9+ messages in thread From: H. J. Lu @ 2003-05-02 15:44 UTC (permalink / raw) To: binutils On Fri, May 02, 2003 at 07:39:00AM -0700, H. J. Lu wrote: > On Fri, May 02, 2003 at 07:42:24PM +0930, Alan Modra wrote: > > HJ, > > I think your 2003-04-27 change broke ld. > > > > Configuring gcc with > > /src/gcc-3.3/configure --prefix=/usr/local --build=i686-linux \ > > --host=i686-linux --target=i686-linux --disable-nls --enable-shared \ > > --enable-languages=c,c++ > > > > I see > > > > stage1/xgcc -Bstage1/ -B/usr/local/i686-linux/bin/ -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -pedantic -Wno-long-long -DHAVE_CONFIG_H -o cc1 \ > > c-parse.o c-lang.o c-pretty-print.o attribs.o c-errors.o c-lex.o c-pragma.o c-decl.o c-typeck.o c-convert.o c-aux-info.o c-common.o c-opts.o c-format.o c-semantics.o c-objc-common.o c-dump.o libcpp.a main.o libbackend.a ../libiberty/libiberty.a > > /lib/libc.so.6(*IND*+0x0): multiple definition of `__divdi3' > > stage1/libgcc.a(_divdi3.oS)(.text+0x0):/src/gcc-3.3/gcc/libgcc2.c:737: first defined here > > > > __divdi3 in libc is FUNC GLOBAL DEFAULT, > > in _divdi3.oS it is FUNC GLOBAL HIDDEN > > > > I am using the current binutils on gcc gcc-3_2-rhl8-branch and gcc > mainline. I have no problems. I will check out gcc 3.3. > > > H.J. I have no problem with gcc 3.3 either. But I do have one patch http://sources.redhat.com/ml/binutils/2003-04/msg00568.html in my binutils. If you still have this problem, please create a small testcase. I will look into it. H.J. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libc divdi3 and libgcc 2003-05-02 15:44 ` H. J. Lu @ 2003-05-03 1:52 ` Alan Modra 2003-05-03 2:30 ` H. J. Lu ` (2 more replies) 0 siblings, 3 replies; 9+ messages in thread From: Alan Modra @ 2003-05-03 1:52 UTC (permalink / raw) To: H. J. Lu; +Cc: binutils On Fri, May 02, 2003 at 08:44:30AM -0700, H. J. Lu wrote: > in my binutils. If you still have this problem, please create a small > testcase. I will look into it. cat > lib.s <<EOF .data .global x x: .long 0 EOF cat > lib.ver <<EOF FOO { x; }; EOF cat > main.s <<EOF .text .global _start _start: jmp _start .data .global x .hidden x x: .long 0 EOF as -o lib.o lib.s as -o main.o main.s ld -shared -o lib.so --version-script lib.ver lib.o ld main.o lib.so -- Alan Modra IBM OzLabs - Linux Technology Centre ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libc divdi3 and libgcc 2003-05-03 1:52 ` Alan Modra @ 2003-05-03 2:30 ` H. J. Lu 2003-05-03 7:06 ` H. J. Lu 2003-05-03 16:54 ` H. J. Lu 2 siblings, 0 replies; 9+ messages in thread From: H. J. Lu @ 2003-05-03 2:30 UTC (permalink / raw) To: binutils On Sat, May 03, 2003 at 11:22:47AM +0930, Alan Modra wrote: > On Fri, May 02, 2003 at 08:44:30AM -0700, H. J. Lu wrote: > > in my binutils. If you still have this problem, please create a small > > testcase. I will look into it. > I see it now. It is odd that I have no problem with gcc on RedHat 9. I will fix it this weekend. H.J. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libc divdi3 and libgcc 2003-05-03 1:52 ` Alan Modra 2003-05-03 2:30 ` H. J. Lu @ 2003-05-03 7:06 ` H. J. Lu 2003-05-05 0:30 ` Alan Modra 2003-05-03 16:54 ` H. J. Lu 2 siblings, 1 reply; 9+ messages in thread From: H. J. Lu @ 2003-05-03 7:06 UTC (permalink / raw) To: binutils [-- Attachment #1: Type: text/plain, Size: 644 bytes --] On Sat, May 03, 2003 at 11:22:47AM +0930, Alan Modra wrote: > On Fri, May 02, 2003 at 08:44:30AM -0700, H. J. Lu wrote: > > in my binutils. If you still have this problem, please create a small > > testcase. I will look into it. > > cat > lib.s <<EOF > .data > .global x > x: .long 0 > EOF > cat > lib.ver <<EOF > FOO { x; }; > EOF > cat > main.s <<EOF > .text > .global _start > _start: > jmp _start > > .data > .global x > .hidden x > x: .long 0 > EOF > as -o lib.o lib.s > as -o main.o main.s > ld -shared -o lib.so --version-script lib.ver lib.o > ld main.o lib.so > This patch fixed it. I will add some testcases later. H.J. [-- Attachment #2: binutils-vsb-ver.patch --] [-- Type: text/plain, Size: 2164 bytes --] 2003-05-03 H.J. Lu <hjl@gnu.org> * elflink.h (elf_merge_symbol): Don't record a hidden/internal symbol dynamic. Check indirection when removing the old definition for symbols with non-default visibility. (elf_add_default_symbol): Skip when told by elf_merge_symbol. --- bfd/elflink.h.vsb 2003-05-01 08:59:33.000000000 -0700 +++ bfd/elflink.h 2003-05-02 23:48:54.000000000 -0700 @@ -641,7 +641,10 @@ elf_merge_symbol (abfd, info, name, sym, /* Make sure this symbol is dynamic. */ h->elf_link_hash_flags |= ELF_LINK_HASH_REF_DYNAMIC; /* FIXME: Should we check type and size for protected symbol? */ - return _bfd_elf_link_record_dynamic_symbol (info, h); + if (ELF_ST_VISIBILITY (h->other) == STV_PROTECTED) + return _bfd_elf_link_record_dynamic_symbol (info, h); + else + return TRUE; } else if (!newdyn && ELF_ST_VISIBILITY (sym->st_other) @@ -650,10 +653,15 @@ elf_merge_symbol (abfd, info, name, sym, /* If the new symbol with non-default visibility comes from a relocatable file and the old definition comes from a dynamic object, we remove the old definition. */ + if ((*sym_hash)->root.type == bfd_link_hash_indirect) + h = *sym_hash; h->root.type = bfd_link_hash_new; h->root.u.undef.abfd = NULL; - h->elf_link_hash_flags &= ~ELF_LINK_HASH_DEF_DYNAMIC; - h->elf_link_hash_flags |= ELF_LINK_HASH_REF_DYNAMIC; + if (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) + { + h->elf_link_hash_flags &= ~ELF_LINK_HASH_DEF_DYNAMIC; + h->elf_link_hash_flags |= ELF_LINK_HASH_REF_DYNAMIC; + } /* FIXME: Should we check type and size for protected symbol? */ h->size = 0; h->type = 0; @@ -1096,6 +1104,9 @@ elf_add_default_symbol (abfd, info, h, n &size_change_ok, dt_needed)) return FALSE; + if (skip) + return TRUE; + if (! override) { bh = &hi->root; @@ -1205,6 +1216,9 @@ elf_add_default_symbol (abfd, info, h, n &size_change_ok, dt_needed)) return FALSE; + if (skip) + return TRUE; + if (override) { /* Here SHORTNAME is a versioned name, so we don't expect to see ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libc divdi3 and libgcc 2003-05-03 7:06 ` H. J. Lu @ 2003-05-05 0:30 ` Alan Modra 2003-05-05 0:55 ` H. J. Lu 0 siblings, 1 reply; 9+ messages in thread From: Alan Modra @ 2003-05-05 0:30 UTC (permalink / raw) To: H. J. Lu; +Cc: binutils On Sat, May 03, 2003 at 12:05:59AM -0700, H. J. Lu wrote: > 2003-05-03 H.J. Lu <hjl@gnu.org> > > * elflink.h (elf_merge_symbol): Don't record a hidden/internal > symbol dynamic. Check indirection when removing the old > definition for symbols with non-default visibility. > (elf_add_default_symbol): Skip when told by elf_merge_symbol. > > --- bfd/elflink.h.vsb 2003-05-01 08:59:33.000000000 -0700 > +++ bfd/elflink.h 2003-05-02 23:48:54.000000000 -0700 > @@ -641,7 +641,10 @@ elf_merge_symbol (abfd, info, name, sym, > /* Make sure this symbol is dynamic. */ > h->elf_link_hash_flags |= ELF_LINK_HASH_REF_DYNAMIC; > /* FIXME: Should we check type and size for protected symbol? */ > - return _bfd_elf_link_record_dynamic_symbol (info, h); > + if (ELF_ST_VISIBILITY (h->other) == STV_PROTECTED) > + return _bfd_elf_link_record_dynamic_symbol (info, h); > + else > + return TRUE; > } > else if (!newdyn > && ELF_ST_VISIBILITY (sym->st_other) Please comment the reason why STV_PROTECTED needs to be treated specially. OK to commit with that change. -- Alan Modra IBM OzLabs - Linux Technology Centre ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libc divdi3 and libgcc 2003-05-05 0:30 ` Alan Modra @ 2003-05-05 0:55 ` H. J. Lu 0 siblings, 0 replies; 9+ messages in thread From: H. J. Lu @ 2003-05-05 0:55 UTC (permalink / raw) To: binutils On Mon, May 05, 2003 at 09:59:32AM +0930, Alan Modra wrote: > On Sat, May 03, 2003 at 12:05:59AM -0700, H. J. Lu wrote: > > 2003-05-03 H.J. Lu <hjl@gnu.org> > > > > * elflink.h (elf_merge_symbol): Don't record a hidden/internal > > symbol dynamic. Check indirection when removing the old > > definition for symbols with non-default visibility. > > (elf_add_default_symbol): Skip when told by elf_merge_symbol. > > > > --- bfd/elflink.h.vsb 2003-05-01 08:59:33.000000000 -0700 > > +++ bfd/elflink.h 2003-05-02 23:48:54.000000000 -0700 > > @@ -641,7 +641,10 @@ elf_merge_symbol (abfd, info, name, sym, > > /* Make sure this symbol is dynamic. */ > > h->elf_link_hash_flags |= ELF_LINK_HASH_REF_DYNAMIC; > > /* FIXME: Should we check type and size for protected symbol? */ > > - return _bfd_elf_link_record_dynamic_symbol (info, h); > > + if (ELF_ST_VISIBILITY (h->other) == STV_PROTECTED) > > + return _bfd_elf_link_record_dynamic_symbol (info, h); > > + else > > + return TRUE; > > } > > else if (!newdyn > > && ELF_ST_VISIBILITY (sym->st_other) > > Please comment the reason why STV_PROTECTED needs to be treated > specially. OK to commit with that change. > Done. H.J. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: libc divdi3 and libgcc 2003-05-03 1:52 ` Alan Modra 2003-05-03 2:30 ` H. J. Lu 2003-05-03 7:06 ` H. J. Lu @ 2003-05-03 16:54 ` H. J. Lu 2 siblings, 0 replies; 9+ messages in thread From: H. J. Lu @ 2003-05-03 16:54 UTC (permalink / raw) To: binutils On Sat, May 03, 2003 at 11:22:47AM +0930, Alan Modra wrote: > On Fri, May 02, 2003 at 08:44:30AM -0700, H. J. Lu wrote: > > in my binutils. If you still have this problem, please create a small > > testcase. I will look into it. > I checked in the following testcase. H.J. --- 2003-05-03 H.J. Lu <hjl@gnu.org> * ld-elfvers/vers.exp: Add vers27a, vers27b, vers27c1 and vers27c2 to test versioned definition vs. hidden definition in different files. * ld-elfvers/vers27a.c: New file. * ld-elfvers/vers27a.dsym: Likewise. * ld-elfvers/vers27a.map: Likewise. * ld-elfvers/vers27a.ver: Likewise. * ld-elfvers/vers27b.c: Likewise. * ld-elfvers/vers27b.dsym: New empty file. * ld-elfvers/vers27b.ver: Likwise. * ld-elfvers/vers27c.c: Likwise. * ld-elfvers/vers27c.dsym: Likwise. * ld-elfvers/vers27c.ver: Likwise. --- ld/testsuite/ld-elfvers/vers.exp.ver-vsb 2003-05-03 00:06:48.000000000 -0700 +++ ld/testsuite/ld-elfvers/vers.exp 2003-05-03 09:37:31.000000000 -0700 @@ -919,3 +919,9 @@ if [istarget x86_64-*-linux*] { } else { build_vers_lib_no_pic "vers26b3" vers26b.c vers26b3 "vers26a.so vers26b1.so vers26a.o" "" vers26b.ver vers26b.dsym "" } + +# Test versioned definition vs. hidden definition in different files. +build_vers_lib_no_pic "vers27a" vers27a.c vers27a "" vers27a.map vers27a.ver vers27a.dsym "" +build_vers_lib_no_pic "vers27b" vers27b.c vers27b "" "" vers27b.ver vers27b.dsym "" +build_vers_lib_no_pic "vers27c1" vers27c.c vers27c1 "vers27b.o vers27a.so" "" vers27c.ver vers27c.dsym "" +build_vers_lib_no_pic "vers27c2" vers27c.c vers27c2 "vers27a.so vers27b.o" "" vers27c.ver vers27c.dsym "" --- ld/testsuite/ld-elfvers/vers27a.c.ver-vsb 2003-05-03 09:38:46.000000000 -0700 +++ ld/testsuite/ld-elfvers/vers27a.c 2003-05-03 09:26:45.000000000 -0700 @@ -0,0 +1 @@ +void foo () {} --- ld/testsuite/ld-elfvers/vers27a.dsym.ver-vsb 2003-05-03 09:38:46.000000000 -0700 +++ ld/testsuite/ld-elfvers/vers27a.dsym 2003-05-03 09:28:50.000000000 -0700 @@ -0,0 +1,2 @@ +[0]*[ ]+g[ ]+DO[ ]+\*ABS\*[ ]+[0]*[ ]+VERS.0[ ]+VERS.0 +[0-9a-f]*[ ]+g[ ]+DF[ ]+.text[ ]+[0-9a-f]*[ ]+VERS.0[ ]+(0x[0-9a-f]*|)[ ]*foo --- ld/testsuite/ld-elfvers/vers27a.map.ver-vsb 2003-05-03 09:38:46.000000000 -0700 +++ ld/testsuite/ld-elfvers/vers27a.map 2003-05-03 09:28:27.000000000 -0700 @@ -0,0 +1,5 @@ +VERS.0 { + global: + foo; + local: *; +}; --- ld/testsuite/ld-elfvers/vers27a.ver.ver-vsb 2003-05-03 09:38:46.000000000 -0700 +++ ld/testsuite/ld-elfvers/vers27a.ver 2003-05-03 09:30:25.000000000 -0700 @@ -0,0 +1,4 @@ +Version definitions: +1 0x01 0x065b090f vers27a.so +2 0x00 0x05aa7610 VERS.0 + --- ld/testsuite/ld-elfvers/vers27b.c.ver-vsb 2003-05-03 09:38:46.000000000 -0700 +++ ld/testsuite/ld-elfvers/vers27b.c 2003-05-03 09:31:03.000000000 -0700 @@ -0,0 +1,2 @@ +void foo () {} +asm (".hidden foo"); ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2003-05-05 0:55 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2003-05-02 10:12 libc divdi3 and libgcc Alan Modra 2003-05-02 14:39 ` H. J. Lu 2003-05-02 15:44 ` H. J. Lu 2003-05-03 1:52 ` Alan Modra 2003-05-03 2:30 ` H. J. Lu 2003-05-03 7:06 ` H. J. Lu 2003-05-05 0:30 ` Alan Modra 2003-05-05 0:55 ` H. J. Lu 2003-05-03 16:54 ` H. J. Lu
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).