All of lore.kernel.org
 help / color / mirror / Atom feed
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 ----

             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.