This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH 13/14] or1k binutils changes
- From: Christian Svensson <blue at cmd dot nu>
- To: binutils at sourceware dot org
- Cc: openrisc at lists dot openrisc dot net,openrisc at lists dot opencores dot org
- Date: Sat, 8 Mar 2014 16:05:52 +0000
- Subject: [PATCH 13/14] or1k binutils changes
- Authentication-results: sourceware.org; auth=none
This patch adds binutils code for or1k targets.
---
binutils/readelf.c | 19 +++++++++++++++++++
binutils/testsuite/binutils-all/dw2-decodedline-1.S | 16 ++++++++++++++++
binutils/testsuite/binutils-all/objdump.exp | 11 ++++++++---
3 files changed, 43 insertions(+), 3 deletions(-)
create mode 100644 binutils/testsuite/binutils-all/dw2-decodedline-1.S
diff --git a/binutils/readelf.c b/binutils/readelf.c
index dafed9f..66b60c2 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -133,6 +133,7 @@
#include "elf/msp430.h"
#include "elf/nds32.h"
#include "elf/nios2.h"
+#include "elf/or1k.h"
#include "elf/pj.h"
#include "elf/ppc.h"
#include "elf/ppc64.h"
@@ -626,6 +627,7 @@ guess_is_rela (unsigned int e_machine)
case EM_MT:
case EM_NDS32:
case EM_NIOS32:
+ case EM_OR1K:
case EM_PPC64:
case EM_PPC:
case EM_RL78:
@@ -1182,6 +1184,10 @@ dump_relocations (FILE * file,
rtype = elf_h8_reloc_type (type);
break;
+ case EM_OR1K:
+ rtype = elf_or1k_reloc_type (type);
+ break;
+
case EM_PJ:
case EM_PJ_OLD:
rtype = elf_pj_reloc_type (type);
@@ -2006,6 +2012,7 @@ get_machine_name (unsigned e_machine)
case EM_S390: return "IBM S/390";
case EM_SCORE: return "SUNPLUS S+Core";
case EM_XSTORMY16: return "Sanyo XStormy16 CPU core";
+ case EM_OR1K: return "OpenRISC 1000";
case EM_ARC_A5: return "ARC International ARCompact processor";
case EM_CRX: return "National Semiconductor CRX microprocessor";
case EM_ADAPTEVA_EPIPHANY: return "Adapteva EPIPHANY";
@@ -2884,6 +2891,11 @@ get_machine_flags (unsigned e_flags, unsigned e_machine)
if (e_flags & EF_SH_FDPIC)
strcat (buf, ", fdpic");
break;
+
+ case EM_OR1K:
+ if (e_flags & EF_OR1K_NODELAY)
+ strcat (buf, ", no delay");
+ break;
case EM_SPARCV9:
if (e_flags & EF_SPARC_32PLUS)
@@ -10469,6 +10481,8 @@ is_32bit_abs_reloc (unsigned int reloc_type)
return reloc_type == 12; /* R_NIOS2_BFD_RELOC_32. */
case EM_NIOS32:
return reloc_type == 1; /* R_NIOS_32. */
+ case EM_OR1K:
+ return reloc_type == 1; /* R_OR1K_32. */
case EM_PARISC:
return (reloc_type == 1 /* R_PARISC_DIR32. */
|| reloc_type == 41); /* R_PARISC_SECREL32. */
@@ -10556,6 +10570,8 @@ is_32bit_pcrel_reloc (unsigned int reloc_type)
return reloc_type == 3; /* R_ARM_REL32 */
case EM_MICROBLAZE:
return reloc_type == 2; /* R_MICROBLAZE_32_PCREL. */
+ case EM_OR1K:
+ return reloc_type == 9; /* R_OR1K_32_PCREL. */
case EM_PARISC:
return reloc_type == 9; /* R_PARISC_PCREL32. */
case EM_PPC:
@@ -10721,6 +10737,8 @@ is_16bit_abs_reloc (unsigned int reloc_type)
return reloc_type == 13; /* R_NIOS2_BFD_RELOC_16. */
case EM_NIOS32:
return reloc_type == 9; /* R_NIOS_16. */
+ case EM_OR1K:
+ return reloc_type == 2; /* R_OR1K_16. */
case EM_TI_C6000:
return reloc_type == 2; /* R_C6000_ABS16. */
case EM_XC16X:
@@ -10777,6 +10795,7 @@ is_none_reloc (unsigned int reloc_type)
case EM_C166: /* R_XC16X_NONE. */
case EM_ALTERA_NIOS2: /* R_NIOS2_NONE. */
case EM_NIOS32: /* R_NIOS_NONE. */
+ case EM_OR1K: /* R_OR1K_NONE. */
return reloc_type == 0;
case EM_AARCH64:
return reloc_type == 0 || reloc_type == 256;
diff --git a/binutils/testsuite/binutils-all/dw2-decodedline-1.S b/binutils/testsuite/binutils-all/dw2-decodedline-1.S
new file mode 100644
index 0000000..aa94ded
--- /dev/null
+++ b/binutils/testsuite/binutils-all/dw2-decodedline-1.S
@@ -0,0 +1,16 @@
+ .file "dw2-decodedline.c"
+ .file 1 "dw2-decodedline.c"
+ .file 2 "directory/file1.c"
+ .text
+.globl f1
+ .type f1, %function
+f1:
+ .loc 2 1 0
+ l.nop
+ .size f1, .-f1
+.globl main
+ .type main, %function
+main:
+ .loc 1 2 0
+ l.nop
+ .size main, .-main
diff --git a/binutils/testsuite/binutils-all/objdump.exp b/binutils/testsuite/binutils-all/objdump.exp
index c70e53b..430ba93 100644
--- a/binutils/testsuite/binutils-all/objdump.exp
+++ b/binutils/testsuite/binutils-all/objdump.exp
@@ -37,8 +37,8 @@ set cpus_expected [list]
lappend cpus_expected aarch64 alpha arc arm cris
lappend cpus_expected d10v d30v fr30 fr500 fr550 h8 hppa i386 i860 i960 ip2022
lappend cpus_expected m16c m32c m32r m68hc11 m68hc12 m68k m88k MCore MicroBlaze
-lappend cpus_expected mips mn10200 mn10300 ms1 msp MSP430 nds32 n1h_v3 ns32k
-lappend cpus_expected pj powerpc pyramid romp rs6000 s390 sh sparc
+lappend cpus_expected mips mn10200 mn10300 ms1 msp MSP430 nds32 n1h_v3 ns32k
+lappend cpus_expected or1k or1knd pj powerpc pyramid romp rs6000 s390 sh sparc
lappend cpus_expected tahoe tic54x tic80 tilegx tms320c30 tms320c4x tms320c54x
lappend cpus_expected v850 vax we32k x86-64 xscale xtensa z8k z8001 z8002
@@ -214,7 +214,12 @@ if { ![is_elf_format]
} then {
unsupported "objump decode line"
} else {
- if { ![binutils_assemble $srcdir/$subdir/dw2-decodedline.S tmpdir/dw2-decodedline.o] } then {
+ if { [istarget "or1k*-*-*"] } then {
+ set decodedline_testsrc $srcdir/$subdir/dw2-decodedline-1.S
+ } else {
+ set decodedline_testsrc $srcdir/$subdir/dw2-decodedline.S
+ }
+ if { ![binutils_assemble $decodedline_testsrc tmpdir/dw2-decodedline.o] } then {
fail "objdump decoded line"
}
--
1.7.10.4