Hello Pankaj

I've successfully built a toolchain for an arm926ejs that allow me to build an 
simple c hello world (i haven't tested multithread, c++, or complex project 
with lot of dependancies, ...)

I used the git://sources.blackfin.uclinux.org/git/users/vapier/elf2flt.git 
sources with the attached patch.

The script used for compiling the toolchain is 
https://gitorious.org/bif/bif/blobs/master/framework/packages/toolchain-uclinux_uclibc/toolchain-uclinux_uclibc.sh
It's a personal job that should not be taken as a reference... and perhaps you 
could also see the sources of busybox, crosstools-ng or openembedded ...

Regards.

Paul.

Le 07/20/2012 05:43 AM, Pankaj DEV a écrit :
Hello,

I am using ARM-Versatile Cortex-R4 platform and I have toolchain build with 
following components' versions :

1.       GNU GCC : 4.6.3 20120301

2.       GNU Binutils - 2.20.51.20100809

3.       uClibc-nptl-0.9.33-66
To build the user application binary (FLAT), I downloaded the following(latest) 
version of ELF2FLT package from 
http://blackfin.uclinux.org/git/?p=users/vapier/elf2flt.git;a=summary
2011-04-04

David 
McCullough<http://blackfin.uclinux.org/git/?p=users/vapier/elf2flt.git;a=search;s=David+McCullough;st=author>

The GNU linker uses -v as a shortcut to --version,... 
<http://blackfin.uclinux.org/git/?p=users/vapier/elf2flt.git;a=commit;h=40f0d175e0847d922faa85cc18ec01f2129bb2b9>

I was able to build the package properly and install it in my existing (above) 
toolchain, but now when I try to build a simple (hello) C user program using 
-Wl,-elf2flt options, I am getting following errors :

a.       
/root/distro-armv7r/STLinux-2.4/devkit/armv7r_uclibc/arm-cortex-linux-uclibcgnueabi/bin/ld.real:
 section .junk loaded at [00000000,0000001f] overlaps section .text loaded at 
[00000000,0000011f]

b.      
/root/distro-armv7r/STLinux-2.4/devkit/armv7r_uclibc/arm-cortex-linux-uclibcgnueabi/bin/ld.real:
 BFD (GNU Binutils - STMicroelectronics/Linux Base) 2.20.51.20100809 assertion 
fail ../../bfd/elf32-arm.c:13377

Any Idea ?

My doubt :
Is ELF2FLT package compatible with the above mentioned versions of 
GCC/Binutils/uClibc for ARM-R4 used ?
If anybody has tried to build a toolchain for ARM with this ELF2FLT package, 
can u help us with the versions of GCC/Binutils/uClibc ?
Or may be if anyone knows any working ARM-CortexR4 working toolchain containing 
ELF2FLT ?

Regards
Pankaj Dev



_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev



>From eca469f6946f92035f1ba4463829eb1f0e0fd98d Mon Sep 17 00:00:00 2001
From: Paul Chavent <paul.chav...@fnac.net>
Date: Thu, 17 May 2012 08:10:44 +0200
Subject: [PATCH] Arm support update (exidx sections).

---
 .gitignore    |    1 +
 elf2flt.c     |   27 +++++++++++++++++++++++++++
 elf2flt.ld.in |   17 ++++++++++++++---
 3 files changed, 42 insertions(+), 3 deletions(-)

diff --git a/.gitignore b/.gitignore
index 92ff5f6..e0e0bd5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,3 +22,4 @@ elf2flt
 elf2flt.ld
 flthdr
 ld-elf2flt
+ld-elf2flt.sh
\ No newline at end of file
diff --git a/elf2flt.c b/elf2flt.c
index 2fea9b5..1a7ef88 100644
--- a/elf2flt.c
+++ b/elf2flt.c
@@ -54,6 +54,8 @@ const char *elf2flt_progname;
 
 #if defined(TARGET_h8300)
 #include <elf/h8.h>      /* TARGET_* ELF support for the BFD library           
 */
+#elif defined(TARGET_arm)
+#include "elf/arm.h"
 #elif defined(__CYGWIN__) || defined(__MINGW32__) || defined(TARGET_nios) || 
defined(TARGET_nios2)
 #include "cygwin-elf.h"        /* Cygwin uses a local copy */
 #elif defined(TARGET_microblaze)
@@ -639,12 +641,16 @@ dump_symbols(symbols, number_of_symbols);
                                        relocation_needed = 1;
                                        break;
                                case R_ARM_REL32:
+                               case R_ARM_JUMP24:
+                               case R_ARM_CALL:
                                case R_ARM_THM_PC11:
                                case R_ARM_THM_PC22:
                                case R_ARM_PC24:
                                case R_ARM_PLT32:
                                case R_ARM_GOTPC:
                                case R_ARM_GOT32:
+                               case R_ARM_PREL31:
+                               case R_ARM_NONE:
                                        relocation_needed = 0;
                                        break;
                                default:
@@ -1702,6 +1708,27 @@ int main(int argc, char *argv[])
     }
   }
   
+  if (verbose) {
+    printf("  verbose      = %d\n"
+           "  load_to_ram  = %d\n"
+           "  ktrace       = %d\n"
+           "  docompress   = %d\n"
+           "  pfile        = \"%s\"\n"
+           "  ofile        = \"%s\"\n"
+           "  use_resolved = %d\n"
+           "  stack        = %d\n"
+           "  rel_file     = \"%s\\n",
+           verbose     ,
+           load_to_ram ,
+           ktrace      ,
+           docompress  ,
+           pfile       ,
+           ofile       ,
+           use_resolved,
+           stack       ,
+           rel_file    );
+  }
+
   /*
    * if neither the -r or -p options was given,  default to
    * a RAM load as that is the only option that makes sense.
diff --git a/elf2flt.ld.in b/elf2flt.ld.in
index c7e01a6..56b8f96 100644
--- a/elf2flt.ld.in
+++ b/elf2flt.ld.in
@@ -32,6 +32,8 @@ W_RODAT               *(.rodata1)
 W_RODAT                *(.rodata.*)
 W_RODAT                *(.gnu.linkonce.r*)
 
+               /* .ARM.extab name sections containing exception unwinding 
information */
+               *(.ARM.extab* .gnu.linkonce.armextab.*)
                /* This is special code area at the end of the normal
                   text section.  It contains a small lookup table at
                   the start followed by the code pointed to by entries
@@ -40,11 +42,20 @@ W_RODAT             *(.gnu.linkonce.r*)
                PROVIDE(@SYMBOL_PREFIX@__ctbp = .);
                *(.call_table_data)
                *(.call_table_text)
-
-               . = ALIGN(0x20) ;
-               @SYMBOL_PREFIX@_etext = . ;
        } > flatmem :text
 
+       /* .ARM.exidx name sections containing index entries for section 
unwinding */
+       /* .ARM.exidx is sorted, so has to go in its own output section.  */
+       @SYMBOL_PREFIX@__exidx_start = .;
+       .ARM.exidx :
+       {
+               *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+       } > flatmem
+       @SYMBOL_PREFIX@__exidx_end = .;
+
+       . = ALIGN(0x20) ;
+       @SYMBOL_PREFIX@_etext = . ;
+
        .data : {
                . = ALIGN(0x4) ;
                @SYMBOL_PREFIX@_sdata = . ;
-- 
1.7.4.4

_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

Reply via email to