2011-05-05 15 views

cevap

7

bu ancak x86 ve x86_64, ELF biçimi için ne kadar taşınabilir emin değil, sen readelf -r kullanmak ve yer değiştirme türleri bakabilirsiniz.

32bit PIC kodu, bir R_386_GOTPC yer değiştirme bölümü olmalıdır:

Relocation section '.rel.text' at offset 0x38c contains 3 entries: 
Offset  Info Type   Sym.Value Sym. Name 
00000004 00000902 R_386_PC32  00000000 __i686.get_pc_thunk.cx 
0000000a 00000a0a R_386_GOTPC  00000000 _GLOBAL_OFFSET_TABLE_ 
00000010 00000803 R_386_GOT32  00000000 f 

gerektiği olmayan PIC .o s için var Böyle bir bölüm bölümü. (Ayrıca, readelf -s çıktısında global bir ofset tablosu göreceksiniz.)

64bit için, aynı şey ancak R_X86_64_GOTPCREL yer değiştirme türü ile. Bütün yer değiştirme türü adları kod PIC olup olmadığı direkt olarak gösterir eminim ki, ama şu anda bir başvuru bulamıyor.

+0

o readlef 'veya 'readelf' nedir? – Raj

+0

üzgün yazım hatası, bu 'readelf' bu. – Mat