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: Mon, 07 May 2007 09:09:46 -0700	[thread overview]
Message-ID: <f1nj0b$pck$1@sea.gmane.org> (raw)
In-Reply-To: f1adr8$d8g$1@sea.gmane.org

Following up on this with the resolution.  Rex Ashbaugh worked through this
with me and pointed out that the buildroot toolchain links in
linux-specific runtime code by default.  I am trying to build a completely
standalone application, and apparently this was causing problems.  The
solution was to add the '-nostartup' flag to LDFLAGS.

Ken

Ken Cecka wrote:

> 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-07 16:09 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-02 16:21 [Buildroot] wrong address when linking simple ARM test application Ken Cecka
2007-05-07 16:09 ` Ken Cecka [this message]

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='f1nj0b$pck$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.