diff --git a/gas/ChangeLog b/gas/ChangeLog index c6f93cc8d2..0bf722b209 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2020-01-13 Claudiu Zissulescu + + * config/tc-arc.c (arc_select_cpu): Re-init the bfd if we change + the CPU. + * config/tc-arc.h: Add header if/defs. + * testsuite/gas/arc/pseudos.d: Improve matching pattern. + 2020-01-13 Alan Modra * testsuite/gas/wasm32/allinsn.d: Update expected output. diff --git a/gas/config/tc-arc.c b/gas/config/tc-arc.c index ed1e3fb5dd..f8d469cc2e 100644 --- a/gas/config/tc-arc.c +++ b/gas/config/tc-arc.c @@ -841,6 +841,7 @@ static void arc_select_cpu (const char *arg, enum mach_selection_type sel) { int i; + static struct cpu_type old_cpu = { 0, 0, 0, E_ARC_OSABI_CURRENT, 0 }; /* We should only set a default if we've not made a selection from some other source. */ @@ -871,7 +872,6 @@ arc_select_cpu (const char *arg, enum mach_selection_type sel) } return; } - /* Initialise static global data about selected machine type. */ selected_cpu.flags = cpu_types[i].flags; selected_cpu.name = cpu_types[i].name; @@ -889,7 +889,17 @@ arc_select_cpu (const char *arg, enum mach_selection_type sel) /* Check if set features are compatible with the chosen CPU. */ arc_check_feature (); + /* If we change the CPU, we need to re-init the bfd. */ + if (mach_selection_mode != MACH_SELECTION_NONE + && (old_cpu.mach != selected_cpu.mach)) + { + bfd_find_target (arc_target_format, stdoutput); + if (! bfd_set_arch_mach (stdoutput, bfd_arch_arc, selected_cpu.mach)) + as_warn (_("Could not set architecture and machine")); + } + mach_selection_mode = sel; + old_cpu = selected_cpu; } /* Here ends all the ARCompact extension instruction assembling diff --git a/gas/config/tc-arc.h b/gas/config/tc-arc.h index 9bd2ff67b3..b8eee4fb05 100644 --- a/gas/config/tc-arc.h +++ b/gas/config/tc-arc.h @@ -20,14 +20,15 @@ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -#include "opcode/arc.h" - +#ifndef TC_ARC /* By convention, you should define this macro in the `.h' file. For example, `tc-m68k.h' defines `TC_M68K'. You might have to use this if it is necessary to add CPU specific code to the object format file. */ #define TC_ARC +#include "opcode/arc.h" + /* We want local label support. */ #define LOCAL_LABELS_FB 1 @@ -267,3 +268,5 @@ struct arc_relax_type /* Number of flags. Used for re-assembling in md_convert_frag. */ int nflg; }; + +#endif diff --git a/gas/testsuite/gas/arc/pseudos.d b/gas/testsuite/gas/arc/pseudos.d index 9332f4d787..7f59d47239 100644 --- a/gas/testsuite/gas/arc/pseudos.d +++ b/gas/testsuite/gas/arc/pseudos.d @@ -6,7 +6,7 @@ Disassembly of section .text: -00000000 <.text>: +[0]+ <.text>: 0: 1cfc b008 st.aw r0,\[sp,-4\] 4: 1404 3401 ld.ab r1,\[sp,4\] 8: 0901 0002 brlt.* r1,r0,0 ;0x8 diff --git a/ld/ChangeLog b/ld/ChangeLog index 58f9b8b44c..0c4a056313 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,12 @@ +2020-01-13 Claudiu Zissulescu + + * Makefile.am: Remove earcelf_prof.c and earclinux_prof.c + emulations. + * configure.tgt: Likewise. + * Makefile.in: Regenerate. + * emulparams/arcelf_prof.sh: Remove file. + * emulparams/arclinux_prof.sh: Likewise. + 2020-01-13 Claudiu Zissulescu * scripttempl/elfarcv2.sc : Allow interrupt vector table to be diff --git a/ld/Makefile.am b/ld/Makefile.am index 2c7e337cea..2ed13eba87 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -170,10 +170,8 @@ ALL_EMULATION_SOURCES = \ earcv2elf.c \ earcv2elfx.c \ earcelf.c \ - earcelf_prof.c \ earclinux.c \ earclinux_nps.c \ - earclinux_prof.c \ earm_wince_pe.c \ earmelf.c \ earmelf_fbsd.c \ @@ -660,10 +658,8 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS) @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcv2elf.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcv2elfx.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcelf.Pc@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcelf_prof.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux_nps.Pc@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux_prof.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earm_wince_pe.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_fbsd.Pc@am__quote@ diff --git a/ld/Makefile.in b/ld/Makefile.in index e79a8c855b..f635845643 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -660,10 +660,8 @@ ALL_EMULATION_SOURCES = \ earcv2elf.c \ earcv2elfx.c \ earcelf.c \ - earcelf_prof.c \ earclinux.c \ earclinux_nps.c \ - earclinux_prof.c \ earm_wince_pe.c \ earmelf.c \ earmelf_fbsd.c \ @@ -1215,10 +1213,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ealpha.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ealphavms.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcelf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcelf_prof.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux_nps.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux_prof.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcv2elf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcv2elfx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earm_wince_pe.Po@am__quote@ @@ -2266,10 +2262,8 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS) @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcv2elf.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcv2elfx.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcelf.Pc@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcelf_prof.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux_nps.Pc@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux_prof.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earm_wince_pe.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_fbsd.Pc@am__quote@ diff --git a/ld/configure.tgt b/ld/configure.tgt index 18c3ba4c4d..23194e357f 100644 --- a/ld/configure.tgt +++ b/ld/configure.tgt @@ -105,7 +105,7 @@ alpha*-*-*vms*) targ_emul=alphavms am33_2.0-*-linux*) targ_emul=elf32am33lin # mn10300 variant ;; arc*-*-elf*) targ_emul=arcelf - targ_extra_emuls="arcelf_prof arclinux arclinux_nps arclinux_prof arcv2elf arcv2elfx" + targ_extra_emuls="arclinux arclinux_nps arcv2elf arcv2elfx" ;; arc*-*-linux*) case "${with_cpu}" in nps400) targ_emul=arclinux_nps @@ -115,7 +115,7 @@ arc*-*-linux*) case "${with_cpu}" in targ_extra_emuls=arclinux_nps ;; esac - targ_extra_emuls="${targ_extra_emuls} arclinux_prof arcelf arcelf_prof arcv2elf arcv2elfx" + targ_extra_emuls="${targ_extra_emuls} arcelf arcv2elf arcv2elfx" ;; arm*-*-cegcc*) targ_emul=arm_wince_pe targ_extra_ofiles="deffilep.o pe-dll.o" diff --git a/ld/emulparams/arcelf_prof.sh b/ld/emulparams/arcelf_prof.sh deleted file mode 100644 index cd01769914..0000000000 --- a/ld/emulparams/arcelf_prof.sh +++ /dev/null @@ -1,26 +0,0 @@ -source_sh ${srcdir}/emulparams/arc-endianness.sh -SCRIPT_NAME=elfarc -TEMPLATE_NAME=elf -if [ "x${ARC_ENDIAN}" = "xbig" ]; then - OUTPUT_FORMAT="elf32-bigarc" -else - OUTPUT_FORMAT="elf32-littlearc" -fi -LITTLE_OUTPUT_FORMAT="elf32-littlearc" -BIG_OUTPUT_FORMAT="elf32-bigarc" -# leave room for vector table, 32 vectors * 8 bytes -TEXT_START_ADDR=0x100 -MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" -#NONPAGED_TEXT_START_ADDR=0x0 -ARCH=arc -MACHINE= -ENTRY=__start -SDATA_START_SYMBOLS='__SDATA_BEGIN__ = .;' -OTHER_READONLY_SECTIONS=" - .__arc_profile_desc ${RELOCATING-0} : { *(.__arc_profile_desc) } - .__arc_profile_forward ${RELOCATING-0} : { *(.__arc_profile_forward) } -" -OTHER_BSS_SECTIONS=" - .__arc_profile_counters ${RELOCATING-0} : { *(.__arc_profile_counters) } -" -EMBEDDED=yes diff --git a/ld/emulparams/arclinux_prof.sh b/ld/emulparams/arclinux_prof.sh deleted file mode 100644 index da5ab405fb..0000000000 --- a/ld/emulparams/arclinux_prof.sh +++ /dev/null @@ -1,27 +0,0 @@ -source_sh ${srcdir}/emulparams/arc-endianness.sh -SCRIPT_NAME=arclinux -if [ "x${ARC_ENDIAN}" = "xbig" ]; then - OUTPUT_FORMAT="elf32-bigarc" -else - OUTPUT_FORMAT="elf32-littlearc" -fi -LITTLE_OUTPUT_FORMAT="elf32-littlearc" -BIG_OUTPUT_FORMAT="elf32-bigarc" -TEXT_START_ADDR=0x10000 -MAXPAGESIZE=0x2000 -COMMONPAGESIZE=0x2000 -NONPAGED_TEXT_START_ADDR=0x10000 -ARCH=arc -MACHINE= -ENTRY=__start -TEMPLATE_NAME=elf -EXTRA_EM_FILE=arclinux -GENERATE_SHLIB_SCRIPT=yes -SDATA_START_SYMBOLS='__SDATA_BEGIN__ = .;' -OTHER_READONLY_SECTIONS=" - .__arc_profile_desc ${RELOCATING-0} : { *(.__arc_profile_desc) } - .__arc_profile_forward ${RELOCATING-0} : { *(.__arc_profile_forward) } -" -OTHER_BSS_SECTIONS=" - .__arc_profile_counters ${RELOCATING-0} : { *(.__arc_profile_counters) } -" diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 91ce742846..bb235dce4c 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,7 @@ +2012-01-13 Claudiu Zissulescu + + * arc-opc.c (C_NE): Make it required. + 2012-01-13 Claudiu Zissulescu * opcode/arc-dis.c (regnames): Correct ACCL/ACCH naming, fix typo diff --git a/opcodes/arc-opc.c b/opcodes/arc-opc.c index b90e5dad1b..675738aa6b 100644 --- a/opcodes/arc-opc.c +++ b/opcodes/arc-opc.c @@ -1691,7 +1691,7 @@ const struct arc_flag_class arc_flag_classes[] = { F_CLASS_OPTIONAL, { F_ASFAKE, F_NULL}}, #define C_NE (C_AS + 1) - { F_CLASS_OPTIONAL, { F_NE, F_NULL}}, + { F_CLASS_REQUIRED, { F_NE, F_NULL}}, /* ARC NPS400 Support: See comment near head of file. */ #define C_NPS_CL (C_NE + 1)