Run arm-Linux-LD -- verbose in RedHat to get the following information:
Gnu ld version 2.11.2 (with BFD 2.11.2)
Supported emulations:
Armelf_linux
Armelf
Using Internal linker script:
========================================================== ============
Output_format ("elf32-littlearm", "elf32-bigarm ",
Elf32-littlearm ")
Output_arch (ARM)
Entry (_ start)
Search_dir (/usr/local/ARM/2.95.3/ARM-Linux/LIB );
/* Do we need any of these for elf?
_ Dynamic = 0 ;*/
Sections
{
/* Read-only sections, merged into text segment :*/
. = 0x00008000 + 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. init: {* (. Rel. init )}
. Rela. init: {* (. Rela. init )}
. Rel. Text:
{
* (. Rel. Text)
* (. Rel. Text .*)
* (. Rel. GNU. linkonce. T .*)
}
. Rela. Text:
{
* (. Rela. Text)
* (. Rela. Text .*)
* (. Rela. GNU. linkonce. T .*)
}
. Rel. Fini: {* (. Rel. Fini )}
. Rela. Fini: {* (. Rela. Fini )}
. Rel. rodata:
{
* (. Rel. rodata)
* (. Rel. rodata .*)
* (. Rel. GNU. linkonce. R .*)
}
. Rela. rodata:
{
* (. Rela. rodata)
* (. Rela. rodata .*)
* (. Rela. GNU. linkonce. R .*)
}
. Rel. Data:
{
* (. Rel. Data)
* (. Rel. Data .*)
* (. Rel. GNU. linkonce. D .*)
}
. Rela. Data:
{
* (. Rela. Data)
* (. Rela. Data .*)
* (. Rela. GNU. linkonce. D .*)
}
. Rel. ctors: {* (. Rel. ctors )}
. Rela. ctors: {* (. Rela. ctors )}
. Rel. dtors: {* (. Rel. dtors )}
. Rela. dtors: {* (. Rela. dtors )}
. Rel. Got: {* (. Rel. Got )}
. Rela. Got: {* (. Rela. Got )}
. Rel. sdata:
{
* (. Rel. sdata)
* (. Rel. sdata .*)
* (. Rel. GNU. linkonce. S .*)
}
. Rela. sdata:
{
* (. Rela. sdata)
* (. Rela. sdata .*)
* (. Rela. GNU. linkonce. S .*)
}
. Rel. sbss:
{
* (. Rel. sbss)
* (. Rel. sbss .*)
* (. Rel. GNU. linkonce. sb .*)
}
. Rela. sbss:
{
* (. Rela. sbss)
* (. Rela. sbss .*)
* (. Rel. GNU. linkonce. sb .*)
}
. Rel. sdata2:
{
* (. Rel. sdata2)
* (. Rel. sdata2 .*)
* (. Rel. GNU. linkonce. S2 .*)
}
. Rela. sdata2:
{
* (. Rela. sdata2)
* (. Rela. sdata2 .*)
* (. Rela. GNU. linkonce. S2 .*)
}
. Rel. sbss2:
{
* (. Rel. sbss2)
* (. Rel. sbss2 .*)
* (. Rel. GNU. linkonce. sb2 .*)
}
. Rela. sbss2:
{
* (. Rela. sbss2)
* (. Rela. sbss2 .*)
* (. Rela. GNU. linkonce. sb2 .*)
}
. Rel. BSS:
{
* (. Rel. BSS)
* (. Rel. BSS .*)
* (. Rel. GNU. linkonce. B .*)
}
. Rela. BSS:
{
* (. Rela. BSS)
* (. Rela. BSS .*)
* (. Rela. GNU. linkonce. B .*)
}
. Rel. PLT: {* (. Rel. PLT )}
. Rela. PLT: {* (. Rela. PLT )}
. Init:
{
Keep (* (. init ))
} = 0
. PLT: {* (. PLT )}
. Text:
{
* (. Text)
* (. Text .*)
* (. Stub)
/*. GNU. Warning sections are handled specially by elf32.em .*/
* (. GNU. Warning)
* (. GNU. linkonce. T .*)
* (. Glue_7t) * (. glue_7)
} = 0
. Fini:
{
Keep (* (. Fini ))
} = 0
Provide (_ etext = .);
Provide (_ etext = .);
Provide (etext = .);
. Rodata: {* (. rodata) * (. rodata. *) * (. GNU. linkonce. R .*)}
. Rodata1: {* (. rodata1 )}
. Sdata2: {* (. sdata2) * (. sdata2. *) * (. GNU. linkonce. S2 .*)}
. Sbss2: {* (. sbss2) * (. sbss2. *) * (. GNU. linkonce. sb2 .*)}
/* Adjust the address for the data segment. We want to adjust up
The same address within the page on the next page up .*/
. = Align (0x8000) + (. & (0x8000-1 ));
. Data:
{
_ Data_start = .;
* (. Data)
* (. Data .*)
* (. GNU. linkonce. D .*)
Sort (constructors)
}
. Data1: {* (. data1 )}
. Eh_frame: {keep (* (. eh_frame ))}
. Gcc_effect_table: {* (. gcc_effect_table )}
. Ctors:
{
/* GCC uses crtbegin. O to find the start
The constructors, so we make sure it is
First. Because this is a wildcard, it
Doesn' t matter if the user does not
Actually link against crtbegin. O;
Linker won't look for a file to match
Wildcard. The wildcard also means that it
Doesn' t matter which directory crtbegin. o
Is In .*/
Keep (* crtbegin. O (. ctors ))
/* We don't want to include the. ctor section from
From the crtend. o file until after the sorted ctors.
The. ctor section from the crtend file contains
End of ctors marker and it must be last */
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 ))
}
. Got: {* (. Got. PLT) * (. Got )}
. Dynamic: {* (. Dynamic )}
/* We want the small data sections together, so single-instruction Offsets
Can access them all, and initialized data all before uninitialized, so
We can shorten the on-disk segment size .*/
. Sdata:
{
* (. Sdata)
* (. Sdata .*)
* (. GNU. linkonce. S .*)
}
_ Edata = .;
Provide (edata = .);
_ Bss_start = .;
_ Bss_start _ = .;
. Sbss:
{
Provide (_ sbss_start = .);
Provide (___ sbss_start = .);
* (. Dynsbss)
* (. Sbss)
* (. Sbss .*)
* (. GNU. linkonce. sb .*)
* (. Scommon)
Provide (_ sbss_end = .);
Provide (___ sbss_end = .);
}
. BSS:
{
* (. Dynbss)
* (. BSS)
* (. BSS .*)
* (. GNU. linkonce. B .*)
* (Common)
/* Align here to ensure that the. BSS section occupies space up
_ End. Align after. BSS to ensure correct alignment even if
. BSS section disappears because there are no input sections .*/
. = Align (32/8 );
}
. = Align (32/8 );
_ End = .;
_ Bss_end _ =.; _ bss_end _ =.; _ end _ = .;
Provide (END = .);
/* Stabs debugging sections .*/
. 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 debug sections.
Symbols in the dwarf debugging sections are relative to the beginning
Of the section so we begin them at 0 .*/
/* Dwarf 1 */
. Debug 0: {* (. Debug )}
. Line 0: {* (. Line )}
/* GNU dwarf 1 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 Extensions */
. Debug_weaknames 0: {* (. debug_weaknames )}
. Debug_funcnames 0: {* (. debug_funcnames )}
. Debug_typenames 0: {* (. debug_typenames )}
. Debug_varnames 0: {* (. debug_varnames )}
/* These must appear regardless .*/
}
========================================================== ============