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