From: Ken Cecka <ceckak@alumni.washington.edu>
To: buildroot@busybox.net
Subject: [Buildroot] wrong address when linking simple ARM test application
Date: Wed, 02 May 2007 09:21:59 -0700 [thread overview]
Message-ID: <f1adr8$d8g$1@sea.gmane.org> (raw)
Hi,
May need to go to a GCC list for this, but I thought I'd start here. I've
constructed a very minimal standalone ARM test application that I am trying
to load into SRAM on an ARM1136JFS target. The SRAM is at address
0x1fffc000, and I am trying to link my elf file at that address, but when I
go to download it, the debugger tries to write to address 0x1fff8000.
When I look at the elf file using objdump, I see that all the sections are
at 0x1fffc000, but there's a program header at 0x1fff8000. Why does the
header have this address, and how can I fix it?
Source files and objdump output are copied below.
Thanks,
Ken
---- Begin Makefile ----
TOOLCHAIN=/home/kcecka/projects/zasfiles/buildroot/build_arm/staging_dir
PREFIX=arm-linux-
AS=$(TOOLCHAIN)/bin/$(PREFIX)as
CC=$(TOOLCHAIN)/bin/$(PREFIX)gcc
CXX=$(TOOLCHAIN)/bin/$(PREFIX)g++
LD=$(TOOLCHAIN)/bin/$(PREFIX)ld
OBJDUMP=$(TOOLCHAIN)/bin/$(PREFIX)objdump
STRIP=$(TOOLCHAIN)/bin/$(PREFIX)strip
ASFLAGS=-gdwarf-2
CFLAGS=-gdwarf-2
LDFLAGS=-Ttext 0x1fffc000 --defsym stack=0x1fffffff
all: testapp.elf testapp.srec testapp.elf.s
testapp.elf: start.o main.o
$(LD) $(LDFLAGS) -o $@ $^
%.elf.s: %.elf
$(OBJDUMP) --disassemble-all $< > $@
%.srec: %.elf
cp $< $@
$(STRIP) -O srec $@
---- end Makefile ----
---- begin start.s ----
.text
.global _start
.global main
_start:
LDR r13, =stack
BL main
stall:
B stall
---- end start.s ----
---- begin main.c ----
int foo(int);
int bar(int);
int main()
{
int i = 0;
i = foo(i);
while(1)
i = bar(i);
}
int foo(int i)
{
return i+1;
}
int bar(int i)
{
return i;
}
---- end main.c ----
---- begin objdump output ----
$ arm-linux-objdump -x testapp.elf
testapp.elf: file format elf32-littlearm
testapp.elf
architecture: arm, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x1fffc000
Program Header:
LOAD off 0x00000000 vaddr 0x1fff8000 paddr 0x1fff8000 align 2**15
filesz 0x00004098 memsz 0x00004098 flags r-x
private flags = 4000002: [Version4 EABI] [has entry point]
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000098 1fffc000 1fffc000 00004000 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .comment 00000012 00000000 00000000 00004098 2**0
CONTENTS, READONLY
2 .debug_aranges 00000040 00000000 00000000 000040b0 2**3
CONTENTS, READONLY, DEBUGGING
3 .debug_pubnames 0000002b 00000000 00000000 000040f0 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_info 00000132 00000000 00000000 0000411b 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_abbrev 00000098 00000000 00000000 0000424d 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_line 00000074 00000000 00000000 000042e5 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_frame 00000070 00000000 00000000 0000435c 2**2
CONTENTS, READONLY, DEBUGGING
8 .debug_loc 0000007e 00000000 00000000 000043cc 2**0
CONTENTS, READONLY, DEBUGGING
9 .ARM.attributes 00000010 00000000 00000000 0000444a 2**0
CONTENTS, READONLY
SYMBOL TABLE:
1fffc000 l d .text 00000000 .text
00000000 l d .comment 00000000 .comment
00000000 l d .debug_aranges 00000000 .debug_aranges
00000000 l d .debug_pubnames 00000000 .debug_pubnames
00000000 l d .debug_info 00000000 .debug_info
00000000 l d .debug_abbrev 00000000 .debug_abbrev
00000000 l d .debug_line 00000000 .debug_line
00000000 l d .debug_frame 00000000 .debug_frame
00000000 l d .debug_loc 00000000 .debug_loc
00000000 l d .ARM.attributes 00000000 .ARM.attributes
00000000 l d *ABS* 00000000 .shstrtab
00000000 l d *ABS* 00000000 .symtab
00000000 l d *ABS* 00000000 .strtab
1fffc008 l .text 00000000 stall
00000000 l df *ABS* 00000000 main.c
1fffc098 g *ABS* 00000000 __exidx_end
20004098 g *ABS* 00000000 _bss_end__
20004098 g *ABS* 00000000 __bss_start__
1fffc098 g *ABS* 00000000 __exidx_start
1fffffff g *ABS* 00000000 stack
20004098 g *ABS* 00000000 __bss_end__
1fffc000 g .text 00000000 _start
20004098 g *ABS* 00000000 __bss_start
1fffc010 g F .text 0000003c main
20004098 g *ABS* 00000000 __end__
1fffc04c g F .text 00000028 foo
20004098 g *ABS* 00000000 _edata
20004098 g *ABS* 00000000 _end
1fffc074 g F .text 00000024 bar
20004098 g *ABS* 00000000 __data_start
---- end objdump output ----
next reply other threads:[~2007-05-02 16:21 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-02 16:21 Ken Cecka [this message]
2007-05-07 16:09 ` [Buildroot] wrong address when linking simple ARM test application Ken Cecka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='f1adr8$d8g$1@sea.gmane.org' \
--to=ceckak@alumni.washington.edu \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.