2004-05-28 Andrew Stubbs <andrew.stubbs@superh.com>
bfd: * Makefile.am: Regenerate dependencies. * Makefile.in: Regenerate. * archures.c: Add bfd_mach_sh3_nommu . * bfd-in2.h: Regenerate. * cpu-sh.c: Add sh3-nommu architecture. (bfd_to_arch_table): Create new table. (sh_get_arch_from_bfd_mach): Create new function. (sh_get_arch_up_from_bfd_mach): Create new function. (sh_merge_bfd_arch): Create new function. * elf32-sh.c (sh_ef_bfd_table): Add table. (sh_elf_check_relocs): Replace switch statement with use of sh_ef_bfd_table . (sh_elf_get_flags_from_mach): Add new function. (sh_find_elf_flags): Likewise. (sh_elf_copy_private_data): Replace most of non-elf contents with a call to sh_merge_bfd_arch() . gas: * Makefile.am: Regenerate dependecies. * Makefile.in: Regenerate. * config/tc-sh.c (valid_arch): Make unsigned. (preset_target_arch): Likewise. (md_begin): Use new architecture flags system. (get_specific): Likewise. (assemble_ppi): Likewise. (md_assemble): Likewise. Also fix error check for bad opcodes. (md_parse_option): Likewise. Also generate -isa values according to the table in bfd/cpu-sh.c instead of just constants. Also allow <arch>-up ISA variants. (sh_elf_final_processing): Replace if-else chain with a call to sh_find_elf_flags(). * testsuite/gas/sh/arch: New directory. * testsuite/gas/sh/arch/arch.exp: New test script. * testsuite/gas/sh/arch/arch_expected.txt: New file. * testsuite/gas/sh/arch/sh.s: New file. * testsuite/gas/sh/arch/sh2.s: New file. * testsuite/gas/sh/arch/sh-dsp.s: New file. * testsuite/gas/sh/arch/sh2e.s: New file. * testsuite/gas/sh/arch/sh3-nommu.s: New file. * testsuite/gas/sh/arch/sh3.s: New file. * testsuite/gas/sh/arch/sh3-dsp.s: New file. * testsuite/gas/sh/arch/sh3e.s: New file. * testsuite/gas/sh/arch/sh4-nommu-nofpu.s: New file. * testsuite/gas/sh/arch/sh4-nofpu.s: New file. * testsuite/gas/sh/arch/sh4.s: New file. * testsuite/gas/sh/arch/sh4a-nofpu.s: New file. * testsuite/gas/sh/arch/sh4al-dsp.s: New file. * testsuite/gas/sh/arch/sh4a.s: New file. include/elf: * sh.h (EF_SH_HAS_DSP): Remove. (EF_SH_HAS_FP): Remove. (EF_SH_MERGE_MACH): Remove. (EF_SH4_NOFPU): Convert to decimal. (EF_SH4A_NOFPU): Likewise. (EF_SH4_NOMMU_NOFPU): Likewise. (EF_SH3_NOMMU): Add new macro. (EF_SH_BFD_TABLE): Likewise. (sh_find_elf_flags): Add prototype. (sh_elf_get_flags_from_mach): Likewise. opcodes: * sh-dis.c (target_arch): Make unsigned. (print_insn_sh): Replace (most of) switch with a call to sh_get_arch_from_bfd_mach(). Also use new architecture flags system. * sh-opc.h: Redefine architecture flags values. Add sh3-nommu architecture. Reorganise <arch>_up macros so they make more visual sense. (SH_MERGE_ARCH_SET): Define new macro. (SH_VALID_BASE_ARCH_SET): Likewise. (SH_VALID_MMU_ARCH_SET): Likewise. (SH_VALID_CO_ARCH_SET): Likewise. (SH_VALID_ARCH_SET): Likewise. (SH_MERGE_ARCH_SET_VALID): Likewise. (SH_ARCH_SET_HAS_FPU): Likewise. (SH_ARCH_SET_HAS_DSP): Likewise. (SH_ARCH_UNKNOWN_ARCH): Likewise. (sh_get_arch_from_bfd_mach): Add prototype. (sh_get_arch_up_from_bfd_mach): Likewise. (sh_get_bfd_mach_from_arch_set): Likewise. (sh_merge_bfd_arc): Likewise. ld: * testsuite/ld-sh/arch/arch.exp: New test script. * testsuite/ld-sh/arch/arch_expected.txt: New file. * testsuite/ld-sh/arch/sh.s: New file. * testsuite/ld-sh/arch/sh2.s: New file. * testsuite/ld-sh/arch/sh-dsp.s: New file. * testsuite/ld-sh/arch/sh2e.s: New file. * testsuite/ld-sh/arch/sh3-nommu.s: New file. * testsuite/ld-sh/arch/sh3.s: New file. * testsuite/ld-sh/arch/sh3-dsp.s: New file. * testsuite/ld-sh/arch/sh3e.s: New file. * testsuite/ld-sh/arch/sh4-nommu-nofpu.s: New file. * testsuite/ld-sh/arch/sh4-nofpu.s: New file. * testsuite/ld-sh/arch/sh4.s: New file. * testsuite/ld-sh/arch/sh4a-nofpu.s: New file. * testsuite/ld-sh/arch/sh4al-dsp.s: New file. * testsuite/ld-sh/arch/sh4a.s: New file.
This commit is contained in:
parent
6d9402b467
commit
dccc3e5d2c
|
@ -1,3 +1,16 @@
|
||||||
|
2004-05-28 Andrew Stubbs <andrew.stubbs@superh.com>
|
||||||
|
|
||||||
|
* sh.h (EF_SH_HAS_DSP): Remove.
|
||||||
|
(EF_SH_HAS_FP): Remove.
|
||||||
|
(EF_SH_MERGE_MACH): Remove.
|
||||||
|
(EF_SH4_NOFPU): Convert to decimal.
|
||||||
|
(EF_SH4A_NOFPU): Likewise.
|
||||||
|
(EF_SH4_NOMMU_NOFPU): Likewise.
|
||||||
|
(EF_SH3_NOMMU): Add new macro.
|
||||||
|
(EF_SH_BFD_TABLE): Likewise.
|
||||||
|
(sh_find_elf_flags): Add prototype.
|
||||||
|
(sh_elf_get_flags_from_mach): Likewise.
|
||||||
|
|
||||||
2004-04-24 Chris Demetriou <cgd@broadcom.com>
|
2004-04-24 Chris Demetriou <cgd@broadcom.com>
|
||||||
|
|
||||||
* mips.h (R_MIPS_PC32, R_MIPS_PC64, R_MIPS_GNU_REL_LO16)
|
* mips.h (R_MIPS_PC32, R_MIPS_PC64, R_MIPS_GNU_REL_LO16)
|
||||||
|
|
|
@ -27,57 +27,51 @@
|
||||||
#define EF_SH1 1
|
#define EF_SH1 1
|
||||||
#define EF_SH2 2
|
#define EF_SH2 2
|
||||||
#define EF_SH3 3
|
#define EF_SH3 3
|
||||||
#define EF_SH_HAS_DSP(flags) (((flags) & EF_SH_MACH_MASK & ~3) == 4)
|
|
||||||
#define EF_SH_DSP 4
|
#define EF_SH_DSP 4
|
||||||
#define EF_SH3_DSP 5
|
#define EF_SH3_DSP 5
|
||||||
#define EF_SH4AL_DSP 6
|
#define EF_SH4AL_DSP 6
|
||||||
#define EF_SH_HAS_FP(flags) ((flags) & 8)
|
|
||||||
#define EF_SH3E 8
|
#define EF_SH3E 8
|
||||||
#define EF_SH4 9
|
#define EF_SH4 9
|
||||||
#define EF_SH2E 11
|
#define EF_SH2E 11
|
||||||
#define EF_SH4A 12
|
#define EF_SH4A 12
|
||||||
|
|
||||||
#define EF_SH4_NOFPU 0x10
|
#define EF_SH4_NOFPU 16
|
||||||
#define EF_SH4A_NOFPU 0x11
|
#define EF_SH4A_NOFPU 17
|
||||||
#define EF_SH4_NOMMU_NOFPU 0x12
|
#define EF_SH4_NOMMU_NOFPU 18
|
||||||
|
#define EF_SH3_NOMMU 20
|
||||||
|
|
||||||
/* This one can only mix in objects from other EF_SH5 objects. */
|
/* This one can only mix in objects from other EF_SH5 objects. */
|
||||||
#define EF_SH5 10
|
#define EF_SH5 10
|
||||||
|
|
||||||
#define EF_SH_MERGE_MACH(mach1, mach2) \
|
/* Define the mapping from ELF to bfd mach numbers.
|
||||||
(((((mach1) == EF_SH3 || (mach1) == EF_SH_UNKNOWN) && (mach2) == EF_SH_DSP) \
|
bfd_mach_* are defined in bfd_in2.h (generated from
|
||||||
|| ((mach1) == EF_SH_DSP \
|
archures.c). */
|
||||||
&& ((mach2) == EF_SH3 || (mach2) == EF_SH_UNKNOWN))) \
|
#define EF_SH_BFD_TABLE \
|
||||||
? EF_SH3_DSP \
|
/* EF_SH_UNKNOWN */ bfd_mach_sh3 , \
|
||||||
: (((mach1) < EF_SH3 && (mach2) == EF_SH_UNKNOWN) \
|
/* EF_SH1 */ bfd_mach_sh , \
|
||||||
|| ((mach2) < EF_SH3 && (mach1) == EF_SH_UNKNOWN)) \
|
/* EF_SH2 */ bfd_mach_sh2 , \
|
||||||
? EF_SH3 \
|
/* EF_SH3 */ bfd_mach_sh3 , \
|
||||||
: ((mach1) == EF_SH2E && EF_SH_HAS_FP (mach2)) \
|
/* EF_SH_DSP */ bfd_mach_sh_dsp , \
|
||||||
? (mach2) \
|
/* EF_SH3_DSP */ bfd_mach_sh3_dsp , \
|
||||||
: ((mach2) == EF_SH2E && EF_SH_HAS_FP (mach1)) \
|
/* EF_SHAL_DSP */ bfd_mach_sh4al_dsp , \
|
||||||
? (mach1) \
|
/* 7 */ 0, \
|
||||||
: (((mach1) == EF_SH2E && (mach2) == EF_SH_UNKNOWN) \
|
/* EF_SH3E */ bfd_mach_sh3e , \
|
||||||
|| ((mach2) == EF_SH2E && (mach1) == EF_SH_UNKNOWN)) \
|
/* EF_SH4 */ bfd_mach_sh4 , \
|
||||||
? EF_SH2E \
|
/* EF_SH5 */ 0, \
|
||||||
: (((mach1) == EF_SH3E && (mach2) == EF_SH_UNKNOWN) \
|
/* EF_SH2E */ bfd_mach_sh2e , \
|
||||||
|| ((mach2) == EF_SH3E && (mach1) == EF_SH_UNKNOWN)) \
|
/* EF_SH4A */ bfd_mach_sh4a , \
|
||||||
? EF_SH4 \
|
/* 13, 14, 15 */ 0, 0, 0, \
|
||||||
/* ??? SH4? Why not SH3E? */ \
|
/* EF_SH4_NOFPU */ bfd_mach_sh4_nofpu , \
|
||||||
: ((((mach1) == EF_SH4_NOFPU || (mach1) == EF_SH4A_NOFPU) \
|
/* EF_SH4A_NOFPU */ bfd_mach_sh4a_nofpu , \
|
||||||
&& EF_SH_HAS_DSP (mach2)) \
|
/* EF_SH4_NOMMU_NOFPU */ bfd_mach_sh4_nommu_nofpu, \
|
||||||
|| (((mach2) == EF_SH4_NOFPU || (mach2) == EF_SH4A_NOFPU) \
|
/* 19 */ 0, \
|
||||||
&& EF_SH_HAS_DSP (mach1))) \
|
/* EF_SH3_NOMMU */ bfd_mach_sh3_nommu
|
||||||
? EF_SH4AL_DSP \
|
|
||||||
: ((mach1) == EF_SH4_NOFPU && EF_SH_HAS_FP (mach2)) \
|
/* Convert arch_sh* into EF_SH*. */
|
||||||
? ((mach2) < EF_SH4A) ? EF_SH4 : (mach2) \
|
int sh_find_elf_flags (unsigned int arch_set);
|
||||||
: ((mach2) == EF_SH4_NOFPU && EF_SH_HAS_FP (mach1)) \
|
|
||||||
? ((mach1) < EF_SH4A) ? EF_SH4 : (mach1) \
|
/* Convert bfd_mach_* into EF_SH*. */
|
||||||
: ((mach1) == EF_SH4A_NOFPU && EF_SH_HAS_FP (mach2)) \
|
int sh_elf_get_flags_from_mach (unsigned long mach);
|
||||||
? ((mach2) <= EF_SH4A) ? EF_SH4A : (mach2) \
|
|
||||||
: ((mach2) == EF_SH4A_NOFPU && EF_SH_HAS_FP (mach1)) \
|
|
||||||
? ((mach1) <= EF_SH4A) ? EF_SH4A : (mach1) \
|
|
||||||
: (((mach1) == EF_SH2E ? 7 : (mach1)) > ((mach2) == EF_SH2E ? 7 : (mach2)) \
|
|
||||||
? (mach1) : (mach2)))
|
|
||||||
|
|
||||||
/* Flags for the st_other symbol field.
|
/* Flags for the st_other symbol field.
|
||||||
Keep away from the STV_ visibility flags (bit 0..1). */
|
Keep away from the STV_ visibility flags (bit 0..1). */
|
||||||
|
|
Loading…
Reference in New Issue