problems with ctype...

Roland McGrath roland@redhat.com
Sun Sep 15 22:15:00 GMT 2002


It certainly works fine for me, but I am not using the same tools.
I am using GCC 3.2 with RH modifications and binutils is also a RH version.

In my build the libc.so.6 symbol table contains (this is readelf -s output):

   988: 00112a40     4 OBJECT  GLOBAL DEFAULT   16 __ctype_toupper@GLIBC_2.0
  3865: 00112a40     4 OBJECT  LOCAL  DEFAULT   16 __ctype_toupper

and the dynamic symbol table contains:

  5948: 00112a40     4 OBJECT  GLOBAL DEFAULT   16 __ctype_toupper@GLIBC_2.0

In libc_pic.a, lc-ctype.os has: 

    25: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND __ctype_toupper

and ctype/ctype-info.os has:

    32: 0000000c     4 OBJECT  GLOBAL DEFAULT   10 __ctype_toupper
    39: 0000000c     4 OBJECT  GLOBAL DEFAULT   10 __ctype_toupper@GLIBC_2.0

Those are the only __ctype_toupper references.  How does this compare with
the symbols in your build?

Perhaps the ld behavior is different. I don't know what the *IND* magic in
the linker error message is.  I presume that your libc.so.6 symbol tables
must look different from mine, or the error doesn't make sense.

I'm not sure if it's supposed to be the case that the references in
lc-ctype.os uses the versioned name when it's being linked -shared with the
object that defines the non-default versioned name.  But I think not, since
there is also a plain global __ctype_toupper defined in ctype-info.os.  I
could understand the multiple definition error more if it came up doing the
ld -shared instead.  



More information about the Libc-hacker mailing list