|
[root@localhost linux]# ld --verbose GNU ld version 2.13.90.0.18 20030206 Desteklenen öykünümler: elf_i386 i386linux iç ilintileme betiği kullanılıyor: ================================================== /* -z combreloc için betik: yeniden yerleştirme (reloc) bölümlerini * birleştirir ve sıralar */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) SEARCH_DIR("/usr/i386-redhat-linux/lib"); SEARCH_DIR("/usr/lib"); SEARCH_DIR("/u sr/local/lib"); SEARCH_DIR("/lib"); /* "elf" için bunlardan herhangi birine ihtiyacımız var mı? __DYNAMIC = 0; */ SECTIONS { /* Salt okunur bölümler, metin bölütü üzerinde birleştirilmiş:*/ . = 0x08048000 + SIZEOF_HEADERS; .interp : { *(.interp) } .hash : { *(.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning bölümleri özellikle elf32.em. tarafından yönetilir */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table) } /* Veri bölütü için adresi ayarla. Bir sonraki sayfa yukarıda sayfadaki aynı adrese kadar ayarlamak istiyoruz. */ . = ALIGN (0x1000) - ((0x1000 - .) & (0x1000 - 1)); . = DATA_SEGMENT_ALIGN (0x1000, 0x1000); /* aşağıdaki *_array_* bölümünü desteklemeyen araçların (tools) geriye dönük uyumluluğu için, glibc'mizin crt dosyaları başvurdukları sembollerin zayıf tanımlamalarını içerir. Kesinlikle zorunlu olmadıkça onları kullanmak istemiyoruz, çünkü bize boş bölümler getirirler; aşağıdaki PROVIDE'dan faklı olarak. Bu yüzden crt dosyalarından olan bölümleri çıkartırız. */ /DISCARD/ : { */crti.o(.init_array .fini_array .preinit_array) */crtn.o(.init_array .fini_array .preinit_array) } /* __preinit_array_start etiketinin uygun bir şekilde hizalandığından emin olun. Bunun yerine etiket tanımlamasını bölümün içine taşıyabilirdik fakat bağlayıcı ozaman boş olsa bile bölümü oluşturacaktı ki bu iyi değildir. */ . = ALIGN(32 / 8); PROVIDE (__preinit_array_start = .); .preinit_array : { *(.preinit_array) } PROVIDE (__preinit_array_end = .); PROVIDE (__init_array_start = .); .init_array : { *(.init_array) } PROVIDE (__init_array_end = .); PROVIDE (__fini_array_start = .); .fini_array : { *(.fini_array) } PROVIDE (__fini_array_end = .); .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table) } .dynamic : { *(.dynamic) } .ctors : { /* yapıcıların başlangıcını bulmak için gcc crtbegin.o'yu kullanır, böylece biz bunun ilk olduğunu anlarız. Bu bir joker karakter (wildcard) olduğundan, kullanıcının crtbegin.o'ya karşı ilintilememesinin bir önemi yoktur. bağlayıcı bir joker karakteri eşleştirmek için bir dosya aramayacaktır. Joker karakter ayrıca crtbegin.o'nun hangi dizinde bulunduğunun önemli olmadığı anlamına gelir. */ KEEP (*crtbegin.o(.ctors)) /* yapıcıların (ctors) sıralanmasının bitişine kadar, crtend.o dosyasından .ctor bölümünü dahil etmek istemiyoruz. crtend dosyasındaki .ctor bölümü yapıcıların sonu işaretini (end of ctors marker ) içerir ve bu sonuncu olmalıdır. */ KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .got : { *(.got.plt) *(.got) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* .bss bölümlerinin _end'e kadar olan boşlukları kullandığından emin olmak için buraya hizala. Herhangi bir girdi olmadığından dolayı .bss bölümleri görünmese bile hizalamanın doğru olduğundan emin olmak için .bss'den sonra hizala. */ . = ALIGN(32 / 8); } . = ALIGN(32 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs hata ayıklama bölümleri. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF hata ayıklama bölümleri. DWARF hata ayıklama bölümlerindeki semboller bölümün başına bağıldır, bu yüzden onları 0'dan başlatırız.*/ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 eklentileri (extensions) */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 eklentileri */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } } ================================================== [root@localhost linux]#
|