Русскоязычное Linux-сообщество's Journal
 
[Most Recent Entries] [Calendar View]

Tuesday, June 24th, 2014

    Time Event
    4:58a
    Кто-нибудь вообще знает, откуда взялся GNU LD и почему он такой?
    Кто-нибудь вообще знает, откуда взялся GNU LD, гнушный линкер? Почему у него такой бредовый синтакс скриптов? Неужели в этой куче мусора этом узоре из текста есть какая-то логика и это на самом деле имеет Высокий Смысл, Недоступный Пониманию Прастых Смертных? Объясните мне кто-нибудь. Почему звездочка-скобочка-точка например и другие "креативные" решения?



    SECTIONS
    {
    PROVIDE(__executable_start = 0x0008000);
    . = 0x00008000 + SIZEOF_HEADERS;
    .interp : { *(.interp) }
    .note.ABI-tag : { *(.note.ABI-tag) }
    .hash : { *(.hash) }
    .dynsym : { *(.dynsym) }
    .dynstr : { *(.dynstr) }
    .version : { *(.version) }
    .version_d : { *(.version_d) }
    .version_r : { *(.version_r) }
    .rel.dyn : { *(.rel.dyn) }
    .rela.dyn : { *(.rela.dyn) }
    .rel.plt : { *(.rel.plt) }
    .rela.plt : { *(.rela.plt) }
    .init : { KEEP (*(.init)) }
    .plt : { *(.plt) }
    .text : { *(.text .text.*) }
    .fini : { KEEP (*(.fini)) }
    PROVIDE(__etext = .);
    PROVIDE(_etext = .);
    PROVIDE(etext = .);
    .rodata : { *(.rodata .rodata.*) }
    __exidx_start = .;
    .ARM.exidx : { *(.ARM.exidx*) }
    __exidx_end = .;

    . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1));
    . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));

    .tdata : { *(.tdata .tdata.*) }
    .tbss : { *(.tbss .tbss.*) }
    .preinit_array :
    {
    PROVIDE_HIDDEN (__preinit_array_start = .);
    KEEP (*(.preinit_array))
    PROVIDE_HIDDEN (__preinit_array_end = .);
    }
    .init_array :
    {
    PROVIDE_HIDDEN (__init_array_start = .);
    KEEP (*(.init_array*))
    PROVIDE_HIDDEN (__init_array_end = .);
    }
    .fini_array :
    {
    PROVIDE_HIDDEN (__fini_array_start = .);
    KEEP (*(.fini_array*))
    PROVIDE_HIDDEN (__fini_array_end = .);
    }
    .dynamic : { *(.dynamic) }
    .got : { *(.got.plt) *(.got) }
    .data :
    {
    __data_start = .;
    *(.data .data.*)
    }
    _edata = .;
    PROVIDE(edata = .);
    __bss_start = .;
    __bss_start__ = .;
    .bss :
    {
    *(.bss .bss.*)
    . = ALIGN(. != 0 ? 32 / 8 : 1);
    }
    __bss_end__ = .;
    _bss_end__ = .;
    . = ALIGN(4);
    __end = .;
    _end = .;
    PROVIDE(end = .);
    }
    Show/hideDefault ld script for a shared object
    SECTIONS
    {
    . = 0 + SIZEOF_HEADERS;
    .note.ABI-tag : { *(.note.ABI-tag) }
    .hash : { *(.hash) }
    .dynsym : { *(.dynsym) }
    .dynstr : { *(.dynstr) }
    .version : { *(.version) }
    .version_d : { *(.version_d) }
    .version_r : { *(.version_r) }
    .rel.dyn : { *(.rel.dyn) }
    .rela.dyn : { *(.rela.dyn) }
    .rel.plt : { *(.rel.plt) }
    .rela.plt : { *(.rela.plt) }
    .init : { KEEP (*(.init)) }
    .plt : { *(.plt) }
    .text : { *(.text .text.*) }
    .fini : { KEEP (*(.fini)) }
    PROVIDE(__etext = .);
    PROVIDE(_etext = .);
    PROVIDE(etext = .);
    .rodata : { *(.rodata .rodata.*) }
    __exidx_start = .;
    .ARM.exidx : { *(.ARM.exidx*) }
    __exidx_end = .;
    .interp : { *(.interp) }

    . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1));
    . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));

    .tdata : { *(.tdata .tdata.*) }
    .tbss : { *(.tbss .tbss.*) }
    .preinit_array :
    {
    PROVIDE_HIDDEN (__preinit_array_start = .);
    KEEP (*(.preinit_array))
    PROVIDE_HIDDEN (__preinit_array_end = .);
    }
    .init_array :
    {
    PROVIDE_HIDDEN (__init_array_start = .);
    KEEP (*(.init_array*))
    PROVIDE_HIDDEN (__init_array_end = .);
    }
    .fini_array :
    {
    PROVIDE_HIDDEN (__fini_array_start = .);
    KEEP (*(.fini_array*))
    PROVIDE_HIDDEN (__fini_array_end = .);
    }
    .dynamic : { *(.dynamic) }
    .got : { *(.got.plt) *(.got) }
    .data :
    {
    __data_start = .;
    *(.data .data.*)
    }
    _edata = .;
    PROVIDE(edata = .);
    __bss_start = .;
    __bss_start__ = .;
    .bss :
    {
    *(.bss .bss.*)
    . = ALIGN(. != 0 ? 32 / 8 : 1);
    }
    __bss_end__ = .;
    _bss_end__ = .;
    . = ALIGN(4);
    __end = .;
    _end = .;
    PROVIDE(end = .);
    }
    Show/hideDefault ld script for a --ldpartial partially linked object
    SECTIONS
    {
    .interp 0 : { *(.interp) }
    .note.ABI-tag 0 : { *(.note.ABI-tag) }
    .hash 0 : { *(.hash) }
    .dynsym 0 : { *(.dynsym) }
    .dynstr 0 : { *(.dynstr) }
    .version 0 : { *(.version) }
    .version_d 0 : { *(.version_d) }
    .version_r 0 : { *(.version_r) }
    .rel.dyn 0 : { *(.rel.dyn) }
    .rel.plt 0 : { *(.rel.plt) }
    .init 0 : { KEEP (*(.init)) }
    .plt 0 : { *(.plt) }
    .text 0 : { *(.text) }
    .fini 0 : { KEEP (*(.fini)) }
    .rodata 0 : { *(.rodata) }
    .ARM.exidx 0 : { *(.ARM.exidx*) }
    .tdata 0 : { *(.tdata) }
    .tbss 0 : { *(.tbss) }
    .preinit_array 0 :
    {
    KEEP (*(.preinit_array))
    }
    .dynamic 0 : { *(.dynamic) }
    .got 0 : { *(.got.plt) *(.got) }
    .data 0 :
    {
    *(.data)
    }
    .bss 0 :
    {
    *(.bss)
    }
    }

    << Previous Day 2014/06/24
    [Calendar]
    Next Day >>

Русскоязычное Linux-сообщество   About LJ.Rossia.org