From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19561 invoked by alias); 12 Jan 2008 07:34:42 -0000 Received: (qmail 19552 invoked by uid 22791); 12 Jan 2008 07:34:40 -0000 X-Spam-Check-By: sourceware.org Received: from gum.itee.uq.edu.au (HELO gum.itee.uq.edu.au) (130.102.66.1) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sat, 12 Jan 2008 07:34:19 +0000 Received: from filter1.itee.uq.edu.au (filter1.itee.uq.edu.au [130.102.79.21]) by gum.itee.uq.edu.au (8.13.1/8.13.1) with ESMTP id m0C7YDWL020628 for ; Sat, 12 Jan 2008 17:34:13 +1000 Received: from g5099368 (g509-9368.itee.uq.edu.au [130.102.64.130]) by filter1.itee.uq.edu.au (8.13.1/8.13.1) with SMTP id m0C7YCZV008566 for ; Sat, 12 Jan 2008 17:34:13 +1000 Message-ID: <000701c854ed$866fdf00$82406682@itee.uq.edu.au> Reply-To: "Yi Tang" From: "Yi Tang" To: "GCC-HELP" Subject: __bss_start not correct Date: Mon, 14 Jan 2008 06:44:00 -0000 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="gb2312"; reply-type=original Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook Express 6.00.2900.3138 X-IsSubscribed: yes Mailing-List: contact gcc-help-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-help-owner@gcc.gnu.org X-SW-Source: 2008-01/txt/msg00111.txt.bz2 Hi, Thank you for reading this message. I have found problem when debugging my program. It is the problem with bss section. As normal, the bss section will be zeroed during system restart. However, the two variables __bss_end and __bss_start in my system both point to invalid address and cause the system not cleared any bss section in memory. I do found these two variables in the .symtab section using readelf in my elf file. But I don't know how to see whether they are actually allocated some memory address or not. Can someone help me for that? Thanks a lot. Following is my elf file infos and link property. Regards, Yi ----------------------------------------------------------------------------------------------------- Elf file type is EXEC (Executable file) Entry point 0x40001208 There are 1 program headers, starting at offset 52 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x010000 0x40000000 0x40000000 0x0b188 0x146a0 RWE 0x10000 Section to Segment mapping: Segment Sections... 00 .rom_vectors .text .rodata .data .bss ------------------------------------------------------------------------------------------------- There are 16 section headers, starting at offset 0x57384: Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .rom_vectors PROGBITS 40000000 010000 001390 00 AX 0 0 16 [ 2] .text PROGBITS 40001390 011390 00975c 00 AX 0 0 8 [ 3] .fini PROGBITS 4000aaec 01b188 000000 00 W 0 0 1 [ 4] .rodata PROGBITS 4000aaec 01aaec 00027c 00 A 0 0 8 [ 5] .rodata1 PROGBITS 4000ad68 01b188 000000 00 W 0 0 1 [ 6] .fixup PROGBITS 4000ad68 01b188 000000 00 W 0 0 1 [ 7] .gcc_except_table PROGBITS 4000ad68 01b188 000000 00 W 0 0 1 [ 8] .data PROGBITS 4000ad68 01ad68 000420 00 WA 0 0 8 [ 9] .bss NOBITS 4000b188 01b188 009518 00 WA 0 0 16 [10] .stab PROGBITS 00000000 01b188 0153d8 0c 11 0 4 [11] .stabstr STRTAB 00000000 030560 026af5 00 0 0 1 [12] .comment PROGBITS 00000000 057055 0002ac 00 0 0 1 [13] .shstrtab STRTAB 00000000 057301 000081 00 0 0 1 [14] .symtab SYMTAB 00000000 057604 001e50 10 15 173 4 [15] .strtab STRTAB 00000000 059454 0029c9 00 0 0 1 Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings) I (info), L (link order), G (group), x (unknown) O (extra OS processing required) o (OS specific), p (processor specific) ----------------------------------------------------------------------------------------------------------- Symbol table '.symtab' contains 485 entries: Num: Value Size Type Bind Vis Ndx Name 277: 400146a0 0 NOTYPE GLOBAL DEFAULT ABS __bss_end 362: 4000b188 0 NOTYPE GLOBAL DEFAULT ABS __bss_start ----------------------------------------------------------------------------------------------------------- CFLAGS = -I$(INSTALL_DIR)/include -msoft-float -g -Wall -Q LDFLAGS = -L$(INSTALL_DIR)/lib -Ttarget.ld -nostdlib -Wl,--gc-sections -Wl,-static -Q LIBS = $(INSTALL_DIR)/lib -Ttarget.ld ECOS_GLOBAL_LDFLAGS = -g -nostdlib -fvtable-gc -Wl,--gc-sections -Wl,-static ttrtest: ttrtest.o uivsr.o $(XLD) $(LDFLAGS) $(ECOS_GLOBAL_LDFLAGS) -o $@ $@.o uivsr.o ----------------------------------------------------------------------------------------------------------- my link scripts: STARTUP(vectors.o) ENTRY(reset_vector) INPUT(extras.o) GROUP(libtarget.a libgcc.a libsupc++.a) MEMORY { ram : ORIGIN = 0x40000000, LENGTH = 0x40000000 } SECTIONS { .rom_vectors 0x40000000 : { . = .; KEEP (*(.vectors)) } > ram .text ALIGN (0x1) : { _stext = ABSOLUTE(.); *(.text*) *(.gnu.warning) *(.gnu.linkonce*) *(.init) } > ram _etext = .; PROVIDE (etext = .); .fini ALIGN (0x1) : { . = .; *(.fini) } > ram .rodata ALIGN (0x1) : { . = .; *(.rodata*) } > ram .rodata1 ALIGN (0x1) : { . = .; *(.rodata1) } > ram .fixup ALIGN (0x1) : { . = .; *(.fixup) } > ram .gcc_except_table ALIGN (0x1) : { . = .; *(.gcc_except_table) } > ram .data ALIGN (0x1) : { __ram_data_start = ABSOLUTE (.); *(.data*) *(.data1) _GOT1_START_ = ABSOLUTE (.); *(.got1) _GOT1_END_ = ABSOLUTE (.); _GOT2_START_ = ABSOLUTE (.); *(.got2) _GOT2_END_ = ABSOLUTE (.); . = ALIGN (4); KEEP(*( SORT (.ecos.table.*))) ; __CTOR_LIST__ = ABSOLUTE (.); KEEP(*(SORT(.ctors*))) __CTOR_END__ = ABSOLUTE (.); __DTOR_LIST__ = ABSOLUTE (.); KEEP(*(SORT(.dtors*))) __DTOR_END__ = ABSOLUTE (.); _GOT_START = ABSOLUTE (.); _GLOBAL_OFFSET_TABLE_ = ABSOLUTE (.) + 32768; _SDA_BASE_ = ABSOLUTE (.); *(.got.plt) *(.got) _GOT_END_ = ABSOLUTE (.); *(.dynamic) *(.sdata*) *(.sbss*) *(.eh_frame) } > ram __rom_data_start = LOADADDR (.data); . = ALIGN (8); __ram_data_end = .; PROVIDE (__ram_data_end = .); _edata = .; PROVIDE (edata = .); .bss ALIGN (0x8) (NOLOAD) : { __bss_start = ABSOLUTE (.); *(.scommon) *(.dynbss) *(.bss) *(.bss.*) *(COMMON) __bss_end = ABSOLUTE (.); } > ram __heap1 = ALIGN (0x8); . = ALIGN(8); _end = .; PROVIDE (end = .); .debug 0 : { *(.debug) } .line 0 : { *(.line) } .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } .debug_info 0 : { *(.debug_info) } .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) } .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } }