summaryrefslogtreecommitdiff
path: root/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2019-10-09 17:13:05 +0200
committerWaldemar Brodkorb <wbx@openadk.org>2019-10-09 17:13:31 +0200
commit8afcd1092f3dc822aa255685b98c815eb3642819 (patch)
tree410423cf73a0e254e024e9624859ba4b9eb80365 /toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531
parent23650e556bd8eb37a0094ab7973603a1499ac8de (diff)
lm32: try to build kernel for qemu
Diffstat (limited to 'toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531')
-rw-r--r--toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0001-lm32.patch159
-rw-r--r--toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0002-sh2.patch43
-rw-r--r--toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0003-Makefile-fix-build-with-Binutils-2.31.patch34
3 files changed, 0 insertions, 236 deletions
diff --git a/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0001-lm32.patch b/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0001-lm32.patch
deleted file mode 100644
index 44757171b..000000000
--- a/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0001-lm32.patch
+++ /dev/null
@@ -1,159 +0,0 @@
-diff -Nur elf2flt-6d80ab6c93409e796f85da404bde84b841231531.orig/elf2flt.c elf2flt-6d80ab6c93409e796f85da404bde84b841231531/elf2flt.c
---- elf2flt-6d80ab6c93409e796f85da404bde84b841231531.orig/elf2flt.c 2017-09-27 06:06:04.000000000 +0200
-+++ elf2flt-6d80ab6c93409e796f85da404bde84b841231531/elf2flt.c 2017-09-27 06:07:51.032597579 +0200
-@@ -61,6 +61,8 @@
- #include <elf/bfin.h>
- #elif defined(TARGET_h8300)
- #include <elf/h8.h>
-+#elif defined(TARGET_lm32)
-+#include <elf/lm32.h>
- #elif defined(TARGET_m68k)
- #include <elf/m68k.h>
- #elif defined(TARGET_microblaze)
-@@ -120,6 +122,11 @@
- #define ARCH "nios"
- #elif defined(TARGET_nios2)
- #define ARCH "nios2"
-+#elif defined(TARGET_lm32)
-+#define ARCH "lm32"
-+#define FLAT_LM32_RELOC_TYPE_32_BIT 0
-+#define FLAT_LM32_RELOC_TYPE_HI16_BIT 1
-+#define FLAT_LM32_RELOC_TYPE_LO16_BIT 2
- #elif defined(TARGET_xtensa)
- #define ARCH "xtensa"
- #else
-@@ -357,7 +364,7 @@
- int bad_relocs = 0;
- asymbol **symb;
- long nsymb;
--#ifdef TARGET_bfin
-+#if defined (TARGET_bfin) || defined (TARGET_lm32)
- unsigned long persistent_data = 0;
- #endif
-
-@@ -682,6 +689,36 @@
- break;
- default:
- goto bad_resolved_reloc;
-+#elif defined(TARGET_lm32)
-+ case R_LM32_HI16:
-+ case R_LM32_LO16:
-+ if (q->howto->type == R_LM32_HI16) {
-+ pflags = FLAT_LM32_RELOC_TYPE_HI16_BIT << 29;
-+ } else {
-+ pflags = FLAT_LM32_RELOC_TYPE_LO16_BIT << 29;
-+ }
-+
-+ relocation_needed = 1;
-+
-+ /* remember the upper 16 bits */
-+ if ((0xffff0000 & sym_addr) != persistent_data) {
-+ flat_relocs = (uint32_t *)
-+ (realloc (flat_relocs, (flat_reloc_count + 1) * sizeof (uint32_t)));
-+ if (verbose)
-+ printf ("New persistent data for %08lx\n", sym_addr);
-+ persistent_data = 0xffff0000 & sym_addr;
-+ flat_relocs[flat_reloc_count++] = (sym_addr >> 16) | (3 << 29);
-+ }
-+ break;
-+ case R_LM32_32:
-+ pflags = FLAT_LM32_RELOC_TYPE_32_BIT << 29;
-+ relocation_needed = 1;
-+ break;
-+ case R_LM32_CALL:
-+ relocation_needed = 0;
-+ break;
-+ default:
-+ goto bad_resolved_reloc;
- #elif defined(TARGET_m68k)
- case R_68K_32:
- goto good_32bit_resolved_reloc;
-@@ -1459,6 +1496,63 @@
- #undef _30BITS_RELOC
- #undef _28BITS_RELOC
- #endif
-+#ifdef TARGET_lm32
-+ case R_LM32_32:
-+ {
-+ pflags = FLAT_LM32_RELOC_TYPE_32_BIT << 29;
-+ sym_vma = bfd_section_vma(abs_bfd, sym_section);
-+ sym_addr += sym_vma + q->addend;
-+ relocation_needed = 1;
-+ break;
-+ }
-+ case R_LM32_CALL:
-+ {
-+ sym_vma = 0;
-+ sym_addr += sym_vma + q->addend;
-+ sym_addr -= q->address;
-+ sym_addr = (int32_t)sym_addr >> q->howto->rightshift;
-+
-+ if ((int32_t)sym_addr < -0x8000000 || (int32_t)sym_addr > 0x7ffffff) {
-+ printf("ERROR: Relocation overflow for R_LM32_CALL relocation against %s\n", sym_name);
-+ bad_relocs++;
-+ continue;
-+ }
-+
-+ r_mem[0] |= (sym_addr >> 24) & 0x03;
-+ r_mem[1] = (sym_addr >> 16) & 0xff;
-+ r_mem[2] = (sym_addr >> 8) & 0xff;
-+ r_mem[3] = sym_addr & 0xff;
-+ break;
-+ }
-+ case R_LM32_HI16:
-+ case R_LM32_LO16:
-+ {
-+ if (q->howto->type == R_LM32_HI16) {
-+ pflags = FLAT_LM32_RELOC_TYPE_HI16_BIT << 29;
-+ } else {
-+ pflags = FLAT_LM32_RELOC_TYPE_LO16_BIT << 29;
-+ }
-+
-+ sym_vma = bfd_section_vma(abs_bfd, sym_section);
-+ sym_addr += sym_vma + q->addend;
-+
-+ relocation_needed = 1;
-+
-+ /* remember the upper 16 bits */
-+ if ((0xffff0000 & sym_addr) != persistent_data) {
-+ flat_relocs = (uint32_t *)
-+ (realloc (flat_relocs, (flat_reloc_count + 1) * sizeof (uint32_t)));
-+ if (verbose)
-+ printf ("New persistent data for %08lx\n", sym_addr);
-+ persistent_data = 0xffff0000 & sym_addr;
-+ flat_relocs[flat_reloc_count++] = (sym_addr >> 16) | (3 << 29);
-+ }
-+
-+ r_mem[2] = (sym_addr >> 8) & 0xff;
-+ r_mem[3] = sym_addr & 0xff;
-+ break;
-+ }
-+#endif /* TARGET_lm32 */
- default:
- /* missing support for other types of relocs */
- printf("ERROR: bad reloc type %d\n", (*p)->howto->type);
-@@ -1596,6 +1690,13 @@
- break;
- #endif
-
-+#ifdef TARGET_lm32
-+ case R_LM32_HI16:
-+ case R_LM32_LO16:
-+ case R_LM32_CALL:
-+ /* entry has already been written */
-+ break;
-+#endif
- default:
- /* The alignment of the build host
- might be stricter than that of the
-diff -Nur elf2flt-6d80ab6c93409e796f85da404bde84b841231531.orig/elf2flt.ld.in elf2flt-6d80ab6c93409e796f85da404bde84b841231531/elf2flt.ld.in
---- elf2flt-6d80ab6c93409e796f85da404bde84b841231531.orig/elf2flt.ld.in 2017-09-27 06:06:04.000000000 +0200
-+++ elf2flt-6d80ab6c93409e796f85da404bde84b841231531/elf2flt.ld.in 2017-09-29 18:11:30.999698955 +0200
-@@ -34,6 +34,7 @@
- W_RODAT *(.rodata1)
- W_RODAT *(.rodata.*)
- W_RODAT *(.gnu.linkonce.r*)
-+W_RODAT *(.rofixup)
-
- /* .ARM.extab name sections containing exception unwinding information */
- *(.ARM.extab* .gnu.linkonce.armextab.*)
diff --git a/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0002-sh2.patch b/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0002-sh2.patch
deleted file mode 100644
index 59e263bc0..000000000
--- a/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0002-sh2.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-diff -Nur elf2flt-6d80ab6c93409e796f85da404bde84b841231531.orig/elf2flt.c elf2flt-6d80ab6c93409e796f85da404bde84b841231531/elf2flt.c
---- elf2flt-6d80ab6c93409e796f85da404bde84b841231531.orig/elf2flt.c 2017-10-03 10:36:02.718919968 +0200
-+++ elf2flt-6d80ab6c93409e796f85da404bde84b841231531/elf2flt.c 2017-10-03 10:37:42.402568044 +0200
-@@ -74,7 +74,7 @@
- #define FLAT_NIOS2_R_HIADJ_LO 2
- #define FLAT_NIOS2_R_CALL26 4
- #include <elf/nios2.h>
--#elif defined(TARGET_sh)
-+#elif defined(TARGET_sh2) || defined(TARGET_sh2eb)
- #include <elf/sh.h>
- #elif defined(TARGET_sparc)
- #include <elf/sparc.h>
-@@ -108,8 +108,10 @@
- #define ARCH "sparc"
- #elif defined(TARGET_v850)
- #define ARCH "v850"
--#elif defined(TARGET_sh)
--#define ARCH "sh"
-+#elif defined(TARGET_sh2)
-+#define ARCH "sh2"
-+#elif defined(TARGET_sh2eb)
-+#define ARCH "sh2"
- #elif defined(TARGET_h8300)
- #define ARCH "h8300"
- #elif defined(TARGET_microblaze)
-@@ -1309,7 +1311,7 @@
- #endif /* TARGET_sparc */
-
-
--#ifdef TARGET_sh
-+#if defined(TARGET_sh2) || defined(TARGET_sh2eb)
- case R_SH_DIR32:
- relocation_needed = 1;
- sym_vma = bfd_section_vma(abs_bfd, sym_section);
-@@ -1320,7 +1322,7 @@
- sym_addr += sym_vma + q->addend;
- sym_addr -= q->address;
- break;
--#endif /* TARGET_sh */
-+#endif /* TARGET_sh2 / TARGET_sh2eb */
-
- #ifdef TARGET_e1
- #define htoe1l(x) htonl(x)
diff --git a/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0003-Makefile-fix-build-with-Binutils-2.31.patch b/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0003-Makefile-fix-build-with-Binutils-2.31.patch
deleted file mode 100644
index 825582550..000000000
--- a/toolchain/elf2flt/patches/6d80ab6c93409e796f85da404bde84b841231531/0003-Makefile-fix-build-with-Binutils-2.31.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From faf1a1646093fbc5ed279bae1c7250c7dfea56f8 Mon Sep 17 00:00:00 2001
-From: Romain Naour <romain.naour@smile.fr>
-Date: Tue, 17 Jul 2018 16:36:16 +0200
-Subject: [PATCH] Makefile: fix build with Binutils 2.31
-
-Binutils added diagnostics.h to bfd.h [1], so elf2flt must create a symlink
-for this header.
-
-Fixes:
-https://gitlab.com/free-electrons/toolchains-builder/-/jobs/82284139
-
-[1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=95da9854466ada2572b42f5528711a06a2d42db1
-
-Signed-off-by: Romain Naour <romain.naour@smile.fr>
----
- Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index cfad06c..164e306 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -127,7 +127,7 @@ bfd-headers/.stamp:
- rm -rf bfd-headers
- mkdir bfd-headers
- ln -sf $(BFD_INCLUDE_DIR)/bfd.h bfd-headers/bfd.h
-- for f in ansidecl filenames hashtab libiberty symcat; do \
-+ for f in ansidecl diagnostics filenames hashtab libiberty symcat; do \
- ln -sf $(BINUTILS_INCLUDE_DIR)/$$f.h bfd-headers/$$f.h || exit 1; \
- done
- ln -sf $(BINUTILS_INCLUDE_DIR)/elf bfd-headers/elf
---
-2.7.4
-