[Buildroot] wrong address when linking simple ARM test application

Ken Cecka ceckak at alumni.washington.edu
Wed May 2 16:21:59 UTC 2007


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 ----




More information about the buildroot mailing list