This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils 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]

A symbol visibility problem


I got

cc -O -g -B./ -fPIC -c main.c
cc -shared -o libfoo.so -O -g -B./ shared.c
cc -O -g -B./ -fPIC -c bar.c
cc -O -g -B./ -fPIC -c protected.c
cc -o foo -O -g -B./ main.o libfoo.so bar.o protected.o -Wl,-rpath,.
/usr/local/bin/ld: BFD 2.14.90.0.8 20040114 assertion fail
/export/linux/src/binutils/binutils/bfd/linker.c:617

The problem is there are

    {
      /* 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;
 
If the new entry with non-default visibility is undefined, set the
type to bfd_link_hash_new will lead to the assertion. Should we use

	h->root.type = bfd_link_hash_undefined;

instead and let _bfd_generic_link_add_one_symbol take care of it?


H.J. 

Attachment: bug.tar.gz
Description: GNU Zip compressed data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]