Hi, how to know the value of the variables defined in link script file? for example, the following is the target.ld in ecos, could anybody know how to extract the __xxxx values from the generated ELF file? ============== start of target.ld===================== STARTUP(vectors.o) ENTRY(__exception_reset)
INPUT(extras.o)
GROUP(libtarget.a libgcc.a libsupc++.a) MEMORY { ram : ORIGIN = 0, LENGTH = 0x400000 }
SECTIONS {
__reserved_vectors = 0; . = __reserved_vectors + 0x3000;
__reserved_vsr_table = ALIGN (0x10); . = __reserved_vsr_table + 0x200;
__reserved_virtual_table = ALIGN (0x10); . = __reserved_virtual_table + 0x100;
__reserved_for_rom = ALIGN (0x10); . = __reserved_for_rom + 0x1cd00;
.vectors ALIGN (0x10) : { . = .; KEEP(*(.vectors)) } > ram
.text ALIGN (0x4) : { _stext = .; *(.text*) *(.gnu.warning) *(.gnu.linkonce*) *(.init) } > ram _etext = .; PROVIDE (etext = .);
.fini ALIGN (0x4) : { . = .; *(.fini) } > ram
.rodata1 ALIGN (0x8) : { . = .; *(.rodata1*) } > ram
.rodata ALIGN (0x8) : { . = .; *(.rodata*) } > ram
.fixup ALIGN (0x4) : { __FIXUP_START__ = ABSOLUTE(.); *(.fixup) __FIXUP_END__ = ABSOLUTE(.); } > ram
.gcc_except_table ALIGN (0x1) : { __EXCEPT_START__ = ABSOLUTE(.); *(.gcc_except_table) __EXCEPT_END__ = ABSOLUTE(.); } > ram
.data ALIGN (0x8) : { __ram_data_start = ABSOLUTE(.); *(.data*)
__GOT1_START__ = ABSOLUTE(.); *(.got1) __GOT1_END__ = ABSOLUTE(.);
. = ALIGN(8); __CTOR_LIST__ = ABSOLUTE(.); KEEP(*(SORT(.ctors*))) __CTOR_END__ = ABSOLUTE(.);
__DTOR_LIST__ = ABSOLUTE(.); KEEP(*(SORT(.dtors*))) __DTOR_END__ = ABSOLUTE(.);
. = ALIGN(8); KEEP(*( SORT (.ecos.table.*))) ;
. = ALIGN(4); *( .2ram.*) ; __GOT2_START__ = ABSOLUTE(.); *(.got2) __GOT2_END__ = ABSOLUTE(.);
__GOT_START = ABSOLUTE(.); _GLOBAL_OFFSET_TABLE_ = ABSOLUTE(. + 32768); _SDA_BASE_ = ABSOLUTE(.); *(.got.plt) *(.got) __GOT_END__ = ABSOLUTE(.);
*(.dynamic) *(.eh_frame) __SDATA_START__ = ABSOLUTE(.); *(.sdata) *(.sdata.*) __SDATA2_START__ = ABSOLUTE(.); *(.sdata2*) } > ram __rom_data_start = LOADADDR(.data); __ram_data_end = .; PROVIDE(__ram_data_end = .); _edata = .; PROVIDE (edata = .);.sbss ALIGN (0x4) : { __sbss_start = ABSOLUTE (.); __SBSS_START__ = ABSOLUTE(.); *(.sbss.*) __SBSS_END__ = ABSOLUTE(.); __SBSSx_START__ = ABSOLUTE(.); *(.sbss*) __SBSSx_END__ = ABSOLUTE(.); *(.scommon*) __sbss_end = ABSOLUTE (.); } > ram
.bss ALIGN (0x10) : { __bss_start = ABSOLUTE (.); . = .; *(.dynbss*) *(.bss*) *(COMMON) __bss_end = ABSOLUTE (.); } > ram __heap1 = ALIGN (0x8);
. = ALIGN(4); _end = .; PROVIDE (end = .);
} hal_vsr_table = (0x0 + 0x3000);
hal_virtual_vector_table = ((0x0 + 0x3000) + 0x200); ======================= end of target.ld ========================