[Buildroot] [PATCH v2 14/17] elf2flt: use new upstream site and add ARM patch

Ezequiel Garcia ezequiel at vanguardiasur.com.ar
Fri Mar 18 21:34:15 UTC 2016


On 18 March 2016 at 18:08, Thomas Petazzoni
<thomas.petazzoni at free-electrons.com> wrote:
> The uClinux developers now have a Github with elf2flt code, with an
> upstream that is again active. Let's switch to this upstream, to which
> Waldemar is contributing as well.
>
> We also add an ARM patch from Waldemar that is needed to make ARM FLAT
> binaries work properly. Since this commit was on the previously used
> upstream, we add it together with the change of upstream location to
> keep the same functionality level.
>
> Since we're now fetching from github, a hash file is added as well.
>
> Finally, we disable -Werror to avoid build issues caused by warnings.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
> ---
>  .../0001-allow-to-build-arm-flat-binaries.patch    | 123 +++++++++++++++++++++
>  package/elf2flt/elf2flt.hash                       |   2 +
>  package/elf2flt/elf2flt.mk                         |   8 +-
>  3 files changed, 129 insertions(+), 4 deletions(-)
>  create mode 100644 package/elf2flt/0001-allow-to-build-arm-flat-binaries.patch
>  create mode 100644 package/elf2flt/elf2flt.hash
>
> diff --git a/package/elf2flt/0001-allow-to-build-arm-flat-binaries.patch b/package/elf2flt/0001-allow-to-build-arm-flat-binaries.patch
> new file mode 100644
> index 0000000..a6c63c5
> --- /dev/null
> +++ b/package/elf2flt/0001-allow-to-build-arm-flat-binaries.patch
> @@ -0,0 +1,123 @@
> +From 56b082412c6f49d21f5e54831a40d1e7c45b3ee4 Mon Sep 17 00:00:00 2001
> +From: Waldemar Brodkorb <wbx at openadk.org>
> +Date: Sat, 12 Mar 2016 22:09:30 +0100
> +Subject: [PATCH] allow to build arm flat binaries
> +
> +Add patchset from ptxdist which is required to produce working
> +ARM flat binaries. Tested with busybox on Kinetis K70.
> +
> +Signed-off-by: Waldemar Brodkorb <wbx at openadk.org>
> +Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
> +---
> + elf2flt.c     | 19 ++++++++++++-------
> + elf2flt.ld.in | 17 ++++++++++++++---
> + 2 files changed, 26 insertions(+), 10 deletions(-)
> +
> +diff --git a/elf2flt.c b/elf2flt.c
> +index fcd797c..c6978e1 100644
> +--- a/elf2flt.c
> ++++ b/elf2flt.c
> +@@ -56,6 +56,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_xtensa)
> +@@ -646,16 +648,23 @@ dump_symbols(symbols, number_of_symbols);
> +                               default:
> +                                       goto good_32bit_resolved_reloc;
> + #elif defined(TARGET_arm)
> ++                              case R_ARM_TARGET1:
> ++                              case R_ARM_TARGET2:
> +                               case R_ARM_ABS32:
> +                                       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_THM_JUMP24:
> +                               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:
> +@@ -871,9 +880,7 @@ dump_symbols(symbols, number_of_symbols);
> +                                       relocation_needed = 1;
> +                                       if (verbose)
> +                                               fprintf(stderr,
> +-                                                      "%s vma=0x%x, "
> +-                                                      "value=0x%"BFD_VMA_FMT"x, "
> +-                                                      "address=0x%"BFD_VMA_FMT"x "
> ++                                                      "%s vma=0x%x, value=0x%x, address=0x%x "
> +                                                       "sym_addr=0x%x rs=0x%x, opcode=0x%x\n",
> +                                                       "ABS32",
> +                                                       sym_vma, (*(q->sym_ptr_ptr))->value,
> +@@ -890,9 +897,7 @@ dump_symbols(symbols, number_of_symbols);
> +                               case R_ARM_PLT32:
> +                                       if (verbose)
> +                                               fprintf(stderr,
> +-                                                      "%s vma=0x%x, "
> +-                                                      "value=0x%"BFD_VMA_FMT"x, "
> +-                                                      "address=0x%"BFD_VMA_FMT"x "
> ++                                                      "%s vma=0x%x, value=0x%x, address=0x%x "
> +                                                       "sym_addr=0x%x rs=0x%x, opcode=0x%x\n",
> +                                                       "PLT32",
> +                                                       sym_vma, (*(q->sym_ptr_ptr))->value,
> +@@ -1446,7 +1451,7 @@ DIS29_RELOCATION:
> +                               }
> +                       }
> +
> +-                      sprintf(&addstr[0], "+0x%lx", sym_addr - (*(q->sym_ptr_ptr))->value -
> ++                      sprintf(&addstr[0], "+0x%x", sym_addr - (*(q->sym_ptr_ptr))->value -
> +                                        bfd_section_vma(abs_bfd, sym_section));
> +
> +
> +diff --git a/elf2flt.ld.in b/elf2flt.ld.in
> +index bfda0ef..ec1fe6f 100644
> +--- a/elf2flt.ld.in
> ++++ b/elf2flt.ld.in
> +@@ -35,6 +35,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
> +@@ -43,11 +45,20 @@ W_RODAT            *(.gnu.linkonce.r*)
> +               PROVIDE(@SYMBOL_PREFIX at __ctbp = .);
> +               *(.call_table_data)
> +               *(.call_table_text)
> +-
> +-              . = ALIGN(0x20) ;
> +-              @SYMBOL_PREFIX at _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 at __exidx_start = .;
> ++      .ARM.exidx :
> ++      {
> ++              *(.ARM.exidx* .gnu.linkonce.armexidx.*)
> ++      } > flatmem
> ++      @SYMBOL_PREFIX at __exidx_end = .;
> ++
> ++      . = ALIGN(0x20) ;
> ++      @SYMBOL_PREFIX at _etext = . ;
> ++
> +       .data : {
> +               . = ALIGN(0x4) ;
> +               @SYMBOL_PREFIX at _sdata = . ;
> +--
> +2.6.4
> +
> diff --git a/package/elf2flt/elf2flt.hash b/package/elf2flt/elf2flt.hash
> new file mode 100644
> index 0000000..c5e71db
> --- /dev/null
> +++ b/package/elf2flt/elf2flt.hash
> @@ -0,0 +1,2 @@
> +# Locally calculated
> +sha256sum

s/sha256sum/sha256 ?

-- 
Ezequiel García, VanguardiaSur
www.vanguardiasur.com.ar


More information about the buildroot mailing list