summaryrefslogtreecommitdiff
path: root/toolchain
diff options
context:
space:
mode:
Diffstat (limited to 'toolchain')
-rw-r--r--toolchain/elf2flt/patches/a87f68ae9e879360a9624f2a02999e67cfbe5a2f/0001-fix-sh2-toolchain-building.patch49
-rw-r--r--toolchain/elf2flt/patches/a87f68ae9e879360a9624f2a02999e67cfbe5a2f/0001-lm32-add-support-for-architecture.patch165
2 files changed, 0 insertions, 214 deletions
diff --git a/toolchain/elf2flt/patches/a87f68ae9e879360a9624f2a02999e67cfbe5a2f/0001-fix-sh2-toolchain-building.patch b/toolchain/elf2flt/patches/a87f68ae9e879360a9624f2a02999e67cfbe5a2f/0001-fix-sh2-toolchain-building.patch
deleted file mode 100644
index 11d3a1e5f..000000000
--- a/toolchain/elf2flt/patches/a87f68ae9e879360a9624f2a02999e67cfbe5a2f/0001-fix-sh2-toolchain-building.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 123fe2e98cce5c82d81d2a350529a1ea712a4058 Mon Sep 17 00:00:00 2001
-From: Waldemar Brodkorb <wbx@openadk.org>
-Date: Sat, 26 Mar 2016 10:26:56 +0100
-Subject: [PATCH] fix sh2 toolchain building
-
-
-Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
----
- elf2flt.c | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/elf2flt.c b/elf2flt.c
-index 7d0e639..3546341 100644
---- a/elf2flt.c
-+++ b/elf2flt.c
-@@ -101,8 +101,10 @@ const char *elf2flt_progname;
- #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)
-@@ -1260,7 +1262,7 @@ NIOS2_RELOC_ERR:
- #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);
-@@ -1271,7 +1273,7 @@ NIOS2_RELOC_ERR:
- 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)
---
-1.7.10.4
-
diff --git a/toolchain/elf2flt/patches/a87f68ae9e879360a9624f2a02999e67cfbe5a2f/0001-lm32-add-support-for-architecture.patch b/toolchain/elf2flt/patches/a87f68ae9e879360a9624f2a02999e67cfbe5a2f/0001-lm32-add-support-for-architecture.patch
deleted file mode 100644
index 2bb9e13e1..000000000
--- a/toolchain/elf2flt/patches/a87f68ae9e879360a9624f2a02999e67cfbe5a2f/0001-lm32-add-support-for-architecture.patch
+++ /dev/null
@@ -1,165 +0,0 @@
-From f5d1ee11dfc74dba39110cbefde93c53ae1cf3df Mon Sep 17 00:00:00 2001
-From: Waldemar Brodkorb <wbx@openadk.org>
-Date: Sat, 19 Mar 2016 18:35:06 +0100
-Subject: [PATCH] lm32: add support for architecture
-
-Add lm32 support patch from:
-https://github.com/m-labs/elf2flt-lm32
-
-Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
----
- elf2flt.c | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 102 insertions(+), 1 deletion(-)
-
-diff --git a/elf2flt.c b/elf2flt.c
-index 7d0e639..3b59b92 100644
---- a/elf2flt.c
-+++ b/elf2flt.c
-@@ -62,6 +62,8 @@ const char *elf2flt_progname;
- #include "cygwin-elf.h" /* Cygwin uses a local copy */
- #elif defined(TARGET_xtensa)
- #include <elf/xtensa.h> /* TARGET_* ELF support for the BFD library */
-+#elif defined(TARGET_lm32)
-+#include <elf/lm32.h>
- #elif defined(TARGET_microblaze)
- #include <elf/microblaze.h> /* TARGET_* ELF support for the BFD library */
- #elif defined(TARGET_v850)
-@@ -115,6 +117,11 @@ const char *elf2flt_progname;
- #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
-@@ -345,7 +352,7 @@ output_relocs (
- int bad_relocs = 0;
- asymbol **symb;
- long nsymb;
--#ifdef TARGET_bfin
-+#if defined (TARGET_bfin) || defined (TARGET_lm32)
- unsigned long persistent_data = 0;
- #endif
-
-@@ -669,6 +676,36 @@ dump_symbols(symbols, number_of_symbols);
- 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;
-@@ -1447,6 +1484,63 @@ DIS29_RELOCATION:
- #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);
-@@ -1584,6 +1678,13 @@ DIS29_RELOCATION:
- 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
---
-2.1.4
-