diff options
| author | Waldemar Brodkorb <wbx@openadk.org> | 2016-08-24 23:03:43 +0200 |
|---|---|---|
| committer | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2016-08-25 15:26:51 +0200 |
| commit | 405fb22c5cb6e473a82a5073126657fff77f3af3 (patch) | |
| tree | 086eee13ae49119d8f10de920b5bb24437bd9c81 /package/elf2flt | |
| parent | 162e7471a69fe919d363a52befda28a902c1ad34 (diff) | |
| download | buildroot-405fb22c5cb6e473a82a5073126657fff77f3af3.tar.gz buildroot-405fb22c5cb6e473a82a5073126657fff77f3af3.zip | |
elf2flt: fix threading apps on ARM noMMU systems
See this thread, which explains the problem in detail:
http://mailman.uclinux.org/pipermail/uclinux-dev//2016-April/052713.html
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'package/elf2flt')
| -rw-r--r-- | package/elf2flt/0001-elf2flt-fix-relocation-support-for-R_ARM_TARGET-type.patch | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/package/elf2flt/0001-elf2flt-fix-relocation-support-for-R_ARM_TARGET-type.patch b/package/elf2flt/0001-elf2flt-fix-relocation-support-for-R_ARM_TARGET-type.patch new file mode 100644 index 0000000000..b9615ab34e --- /dev/null +++ b/package/elf2flt/0001-elf2flt-fix-relocation-support-for-R_ARM_TARGET-type.patch @@ -0,0 +1,34 @@ +From dedce8765d203c1c162a57e6259375e0b457173f Mon Sep 17 00:00:00 2001 +From: Greg Ungerer <gerg@linux-m68k.org> +Date: Fri, 19 Aug 2016 23:49:51 +1000 +Subject: [PATCH] elf2flt: fix relocation support for R_ARM_TARGET types + +R_ARM_TARGET1 (and I think R_ARM_TARGET2) relocation types should be +treated in the same way as R_ARM_ABS32. Fix them to write out the addend +to the flat binary in network byte order. + +Signed-off-by: Greg Ungerer <gerg@uclinux.org> +Tested-by: Waldemar Brodkorb <wbx@openadk.org> + +--- + elf2flt.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/elf2flt.c b/elf2flt.c +index 5ae7dd9..3f31569 100644 +--- a/elf2flt.c ++++ b/elf2flt.c +@@ -1505,7 +1505,9 @@ DIS29_RELOCATION: + (((*p)->howto->type != R_ARM_PC24) && + ((*p)->howto->type != R_ARM_PLT32))) + tmp.c[i3] = (hl >> 24) & 0xff; +- if ((*p)->howto->type == R_ARM_ABS32) ++ if (((*p)->howto->type == R_ARM_ABS32) || ++ ((*p)->howto->type == R_ARM_TARGET1) || ++ ((*p)->howto->type == R_ARM_TARGET2)) + *(uint32_t *)r_mem = htonl(hl); + else + *(uint32_t *)r_mem = tmp.l; +-- +1.9.1 + |

