Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Русскоязычное Linux-сообщество ([info]lj_ru_linux)
@ 2014-06-24 04:58:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Кто-нибудь вообще знает, откуда взялся 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)
}
}


(Читать комментарии) (Добавить комментарий)