Thu 27 Mar 2014 12:09:36 AM UTC, comment #3:
I am using gcc 4.1.2 .
$ cc --version
cc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
Copyright (C) 2006 Free Software Foundation, Inc.
…
$ uname -iopms
Linux x86_64 x86_64 x86_64 GNU/Linux
I think the compiler message does not tell the cause exactly.
I cannot see any difference of GSString.m.o files though I recompile with or without -fPIC flag.
I tried this:
---
$ cd gnustep-base-r36344/
$ ./configure
$ make # … aborted due to the LD (collect2) error.
$ rm ./Sources/libgnustep-base.obj/GSString.m.o
$ CC='cc -fPIC' make; # … GSString.m.o is generated, but whose file size is same.
---
Perhaps, these output is useful:
---
$ objdump -t ./Source/obj/libgnustep-base.obj/GSString.m.o | grep GSPrivateHash
- UND 0000000000000000 GSPrivateHash
$ readelf --relocs Source/obj/libgnustep-base.obj/GSString.m.o| grep -C3 GSPrivateHash
000000003646 026c00000004 R_X86_64_PLT32 0000000000000000 NSZoneFromPointer + fffffffffffffffc
000000003651 026d00000004 R_X86_64_PLT32 0000000000000000 NSZoneFree + fffffffffffffffc
000000003695 000300000002 R_X86_64_PC32 0000000000000000 .data + f1f
0000000036e0 027e00000002 R_X86_64_PC32 0000000000000000 GSPrivateHash + fffffffffffffffc
000000003713 014800000002 R_X86_64_PC32 0000000000000000 .data.rel.local + 1f44
000000003722 014800000002 R_X86_64_PC32 0000000000000000 .data.rel.local + 26cc
000000003737 027d00000004 R_X86_64_PLT32 0000000000000000 objc_msg_lookup_super + fffffffffffffffc
000000003741 014800000002 R_X86_64_PC32 0000000000000000 .data.rel.local + 26cc
000000003770 027e00000002 R_X86_64_PC32 0000000000000000 GSPrivateHash + fffffffffffffffc
0000000037a8 014800000002 R_X86_64_PC32 0000000000000000 .data.rel.local + 258c
0000000037c9 026000000004 R_X86_64_PLT32 0000000000000000 objc_msg_lookup + fffffffffffffffc
0000000037d6 014800000002 R_X86_64_PC32 0000000000000000 .data.rel.local + 268c
$ readelf --symbols Source/obj/libgnustep-base.obj/GSString.m.o | grep -C3 GSPrivateHash
635: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND GSObjCIsKindOf
636: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND GSPrivateDefaultCStringEn
637: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND objc_msg_lookup_super
638: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND GSPrivateHash
639: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND NSStringFromSelector
640: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND strlen
641: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND strchr
$ readelf --relocs ./Source/obj/libgnustep-base.obj/GSPrivateHash.m.o | head
Relocation section '.rela.text' at offset 0x16d0 contains 2 entries:
Offset Info Type Sym. Value Sym. Name + Addend
000000000066 001100000004 R_X86_64_PLT32 0000000000000000 GSPrivateIncrementalHa + fffffffffffffffc
000000000075 001200000004 R_X86_64_PLT32 0000000000000030 GSPrivateFinishHash + fffffffffffffffc
Relocation section '.rela.debug_info' at offset 0x1700 contains 84 entries:
Offset Info Type Sym. Value Sym. Name + Addend
000000000006 00050000000a R_X86_64_32 0000000000000000 .debug_abbrev + 0
00000000000c 00070000000a R_X86_64_32 0000000000000000 .debug_line + 0
---
Finally , I modified GSString.m , adding '#include "GSPrivateHash.m" '.
After that:
---
$ readelf --relocs Source/obj/libgnustep-base.obj/GSString.m.o | grep -C3 GSPrivateHash
000000003826 026e00000004 R_X86_64_PLT32 0000000000000000 NSZoneFromPointer + fffffffffffffffc
000000003831 026f00000004 R_X86_64_PLT32 0000000000000000 NSZoneFree + fffffffffffffffc
000000003875 000300000002 R_X86_64_PC32 0000000000000000 .data + f1f
0000000038c0 025e00000002 R_X86_64_PC32 0000000000000040 GSPrivateHash + fffffffffffffffc
0000000038f3 014700000002 R_X86_64_PC32 0000000000000000 .data.rel.local + 1f64
000000003902 014700000002 R_X86_64_PC32 0000000000000000 .data.rel.local + 26ec
000000003917 027f00000004 R_X86_64_PLT32 0000000000000000 objc_msg_lookup_super + fffffffffffffffc
000000003921 014700000002 R_X86_64_PC32 0000000000000000 .data.rel.local + 26ec
000000003950 025e00000002 R_X86_64_PC32 0000000000000040 GSPrivateHash + fffffffffffffffc
000000003988 014700000002 R_X86_64_PC32 0000000000000000 .data.rel.local + 25ac
0000000039a9 026200000004 R_X86_64_PLT32 0000000000000000 objc_msg_lookup + fffffffffffffffc
0000000039b6 014700000002 R_X86_64_PC32 0000000000000000 .data.rel.local + 26ac
$ readelf --symbols Source/obj/libgnustep-base.obj/GSString.m.o | grep -C3 GSPrivateHash
603: 0000000000000000 45 FUNC GLOBAL INTERNAL 2 GSPrivateIncrementalHash
604: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND __gnu_objc_personality_v0
605: 0000000000000030 3 FUNC GLOBAL INTERNAL 2 GSPrivateFinishHash
606: 0000000000000040 63 FUNC GLOBAL INTERNAL 2 GSPrivateHash
607: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND GLOBAL_OFFSET_TABLE
608: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND __objc_exec_class
609: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND objc_get_class
|