[Buildroot] [PATCH 12/16] elf2flt: use new upstream site and add ARM patch

Arnout Vandecappelle arnout at mind.be
Wed Mar 16 23:50:59 UTC 2016


On 03/16/16 22:43, Thomas Petazzoni 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.

  While at it, you could have added a hash file.

>
> We also add an ARM patch from Waldemar, which was on his elf2flt
> repository and he submitted upstream.

  That probably should have been a separate patch.


  Regards,
  Arnout


>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
> ---
>   .../0001-allow-to-build-arm-flat-binaries.patch    | 123 +++++++++++++++++++++
>   package/elf2flt/elf2flt.mk                         |   5 +-
>   2 files changed, 125 insertions(+), 3 deletions(-)
>   create mode 100644 package/elf2flt/0001-allow-to-build-arm-flat-binaries.patch
>
> 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.mk b/package/elf2flt/elf2flt.mk
> index bec270b..796313b 100644
> --- a/package/elf2flt/elf2flt.mk
> +++ b/package/elf2flt/elf2flt.mk
> @@ -4,9 +4,8 @@
>   #
>   ################################################################################
>
> -ELF2FLT_VERSION = f859213b18a67fcfc09961267e0a1122d35186f4
> -ELF2FLT_SITE = http://cgit.openadk.org/cgi/cgit/elf2flt.git
> -ELF2FLT_SITE_METHOD = git
> +ELF2FLT_VERSION = 177ec2701aba30270ec1260746b8db5442c77ef4
> +ELF2FLT_SITE = $(call github,uclinux-dev,elf2flt,$(ELF2FLT_VERSION))
>   ELF2FLT_LICENSE = GPLv2+
>   ELF2FLT_LICENSE_FILES = LICENSE.TXT
>
>


-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF


More information about the buildroot mailing list