diff mbox

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

Message ID 1458164602-16983-13-git-send-email-thomas.petazzoni@free-electrons.com
State Superseded
Headers show

Commit Message

Thomas Petazzoni March 16, 2016, 9:43 p.m. UTC
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, which was on his elf2flt
repository and he submitted upstream.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@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

Comments

Arnout Vandecappelle March 16, 2016, 11:50 p.m. UTC | #1
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@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@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@openadk.org>
> +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@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@__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 = . ;
> +--
> +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
>
>
Thomas Petazzoni March 17, 2016, 8:18 a.m. UTC | #2
Dear Arnout Vandecappelle,

On Thu, 17 Mar 2016 00:50:59 +0100, Arnout Vandecappelle wrote:
> 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.

Will do.

> > 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.

No: the Waldemar Git repository did contain the ARM noMMU support. So
when switching to the more "official" upstream (which doesn't yet have
ARM noMMU support), we need to include the patch adding ARM noMMU
support to keep functionality the same.

I guess I should have made that explicit in the commit log, to avoid
confusion.

Thomas
Mike Frysinger March 17, 2016, 6:53 p.m. UTC | #3
On 17 Mar 2016 09:18, Thomas Petazzoni wrote:
> On Thu, 17 Mar 2016 00:50:59 +0100, Arnout Vandecappelle wrote:
> > 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.
> 
> Will do.
> 
> > > 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.
> 
> No: the Waldemar Git repository did contain the ARM noMMU support. So
> when switching to the more "official" upstream (which doesn't yet have
> ARM noMMU support), we need to include the patch adding ARM noMMU
> support to keep functionality the same.

elf2flt has had nommu arm support pretty much from the beginning (at
least since 2002).  i don't know what this patch is for, but it hasn't
been sent upstream afaik, so i can't really comment on it.
-mike
Waldemar Brodkorb March 17, 2016, 7:39 p.m. UTC | #4
Hi Thomas,
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.
> 
> We also add an ARM patch from Waldemar, which was on his elf2flt
> repository and he submitted upstream.

It is not exactly the stuff I added to my repo, but it produces
working binaries ;)

Please use the updated patch from here:
http://mailman.uclinux.org/pipermail/uclinux-dev/2016-March/052707.html

This only left on build problem with -Werror.

Thanks 
 Waldemar
Waldemar Brodkorb March 17, 2016, 7:41 p.m. UTC | #5
Hi Mike,
Mike Frysinger wrote,

> On 17 Mar 2016 09:18, Thomas Petazzoni wrote:
> > On Thu, 17 Mar 2016 00:50:59 +0100, Arnout Vandecappelle wrote:
> > > 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.
> > 
> > Will do.
> > 
> > > > 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.
> > 
> > No: the Waldemar Git repository did contain the ARM noMMU support. So
> > when switching to the more "official" upstream (which doesn't yet have
> > ARM noMMU support), we need to include the patch adding ARM noMMU
> > support to keep functionality the same.
> 
> elf2flt has had nommu arm support pretty much from the beginning (at
> least since 2002).  i don't know what this patch is for, but it hasn't
> been sent upstream afaik, so i can't really comment on it.

Yes, elf2flt has ARM noMMU support I think it is just not complete
enough to work with recent gcc and binutils. I can't compile a
working busybox binary without this patch:
http://mailman.uclinux.org/pipermail/uclinux-dev/2016-March/052707.html

Isn't this the mailing list to sent patches for elf2flt?

best regards
 Waldemar
Thomas Petazzoni March 17, 2016, 8:34 p.m. UTC | #6
Hello,

On Thu, 17 Mar 2016 14:53:42 -0400, Mike Frysinger wrote:

> > No: the Waldemar Git repository did contain the ARM noMMU support. So
> > when switching to the more "official" upstream (which doesn't yet have
> > ARM noMMU support), we need to include the patch adding ARM noMMU
> > support to keep functionality the same.
> 
> elf2flt has had nommu arm support pretty much from the beginning (at
> least since 2002).  i don't know what this patch is for, but it hasn't
> been sent upstream afaik, so i can't really comment on it.

Well, it was sent to the uclinux-dev mailing list just a few days ago:

  http://mailman.uclinux.org/pipermail/uclinux-dev/2016-March/052707.html

I don't know if you call the uclinux-dev mailing list "upstream", but
it doesn't sound too bad for a project hosted at
github.com/uclinux-dev :-)

Thomas
Mike Frysinger March 17, 2016, 8:45 p.m. UTC | #7
On 17 Mar 2016 21:34, Thomas Petazzoni wrote:
> On Thu, 17 Mar 2016 14:53:42 -0400, Mike Frysinger wrote:
> > > No: the Waldemar Git repository did contain the ARM noMMU support. So
> > > when switching to the more "official" upstream (which doesn't yet have
> > > ARM noMMU support), we need to include the patch adding ARM noMMU
> > > support to keep functionality the same.
> > 
> > elf2flt has had nommu arm support pretty much from the beginning (at
> > least since 2002).  i don't know what this patch is for, but it hasn't
> > been sent upstream afaik, so i can't really comment on it.
> 
> Well, it was sent to the uclinux-dev mailing list just a few days ago:
> 
>   http://mailman.uclinux.org/pipermail/uclinux-dev/2016-March/052707.html
> 
> I don't know if you call the uclinux-dev mailing list "upstream", but
> it doesn't sound too bad for a project hosted at
> github.com/uclinux-dev :-)

that is the upstream list, i'm just not on it ;).  i expect the other
uclinux devs to look at it.  i just watch the github list now myself.
-mike
diff mbox

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@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@openadk.org>
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@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@__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 = . ;
+-- 
+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