summaryrefslogtreecommitdiff
path: root/gas/config/tc-z80.h
diff options
context:
space:
mode:
authorSergey Belyashov <sergey.belyashov@gmail.com>2020-01-02 14:10:40 +0000
committerNick Clifton <nickc@redhat.com>2020-01-02 14:14:59 +0000
commit6655dba246bd164d953fe220a0e3d4eed85bb268 (patch)
tree423258b5dadb447dc649e71c6ce48aaeed8ba385 /gas/config/tc-z80.h
parent0db131fb835e4c4f6a024e86743467e7e01c965e (diff)
downloadbinutils-gdb-6655dba246bd164d953fe220a0e3d4eed85bb268.tar.gz
Add support for the GBZ80, Z180, and eZ80 variants of the Z80 architecure. Add an ELF based target for these as well.
PR 25224 bfd * Makefile.am: Add z80-elf target support. * configure.ac: Likewise. * targets.c: Likewise. * config.bfd: Add z80-elf target support and new arches: ez80 and z180. * elf32-z80.c: New file. * archures.c: Add new z80 architectures: eZ80 and Z180. * coffcode.h: Likewise. * cpu-z80.c: Likewise. * bfd-in2.h: Likewise plus additional Z80 relocations. * coff-z80.c: Add new relocations for Z80 target and local label check. gas * config/tc-z80.c: Add new architectures: Z180 and eZ80. Add support for assembler code generated by SDCC. Add new relocation types. Add z80-elf target support. * config/tc-z80.h: Add z80-elf target support. Enable dollar local labels. Local labels starts from ".L". * testsuite/gas/all/fwdexp.d: Fix failure due to symbol conflict. * testsuite/gas/all/fwdexp.s: Likewise. * testsuite/gas/z80/suffix.d: Fix failure on ELF target. * testsuite/gas/z80/z80.exp: Add new tests * testsuite/gas/z80/dollar.d: New file. * testsuite/gas/z80/dollar.s: New file. * testsuite/gas/z80/ez80_adl_all.d: New file. * testsuite/gas/z80/ez80_adl_all.s: New file. * testsuite/gas/z80/ez80_adl_suf.d: New file. * testsuite/gas/z80/ez80_isuf.s: New file. * testsuite/gas/z80/ez80_z80_all.d: New file. * testsuite/gas/z80/ez80_z80_all.s: New file. * testsuite/gas/z80/ez80_z80_suf.d: New file. * testsuite/gas/z80/r800_extra.d: New file. * testsuite/gas/z80/r800_extra.s: New file. * testsuite/gas/z80/r800_ii8.d: New file. * testsuite/gas/z80/r800_z80_doc.d: New file. * testsuite/gas/z80/z180.d: New file. * testsuite/gas/z80/z180.s: New file. * testsuite/gas/z80/z180_z80_doc.d: New file. * testsuite/gas/z80/z80_doc.d: New file. * testsuite/gas/z80/z80_doc.s: New file. * testsuite/gas/z80/z80_ii8.d: New file. * testsuite/gas/z80/z80_ii8.s: New file. * testsuite/gas/z80/z80_in_f_c.d: New file. * testsuite/gas/z80/z80_in_f_c.s: New file. * testsuite/gas/z80/z80_op_ii_ld.d: New file. * testsuite/gas/z80/z80_op_ii_ld.s: New file. * testsuite/gas/z80/z80_out_c_0.d: New file. * testsuite/gas/z80/z80_out_c_0.s: New file. * testsuite/gas/z80/z80_reloc.d: New file. * testsuite/gas/z80/z80_reloc.s: New file. * testsuite/gas/z80/z80_sli.d: New file. * testsuite/gas/z80/z80_sli.s: New file. ld * Makefile.am: Add new target z80-elf * configure.tgt: Likewise. * emultempl/z80.em: Add support for eZ80 and Z180 architectures. * emulparams/elf32z80.sh: New file. * emultempl/z80elf.em: Likewise. * testsuite/ld-z80/arch_ez80_adl.d: Likewise. * testsuite/ld-z80/arch_ez80_z80.d: Likewise. * testsuite/ld-z80/arch_r800.d: Likewise. * testsuite/ld-z80/arch_z180.d: Likewise. * testsuite/ld-z80/arch_z80.d: Likewise. * testsuite/ld-z80/comb_arch_ez80_z80.d: Likewise. * testsuite/ld-z80/comb_arch_z180.d: Likewise. * testsuite/ld-z80/labels.s: Likewise. * testsuite/ld-z80/relocs.s: Likewise. * testsuite/ld-z80/relocs_b_ez80.d: Likewise. * testsuite/ld-z80/relocs_b_z80.d: Likewise. * testsuite/ld-z80/relocs_f_z80.d: Likewise. * testsuite/ld-z80/z80.exp: Likewise. opcodes * z80-dis.c: Add support for eZ80 and Z80 instructions.
Diffstat (limited to 'gas/config/tc-z80.h')
-rw-r--r--gas/config/tc-z80.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/gas/config/tc-z80.h b/gas/config/tc-z80.h
index 83b09af707b..57490270913 100644
--- a/gas/config/tc-z80.h
+++ b/gas/config/tc-z80.h
@@ -24,6 +24,9 @@
#define TC_Z80
#define TARGET_ARCH bfd_arch_z80
+#ifndef OBJ_COFF
+#define TARGET_FORMAT "elf32-z80"
+#endif
#define BFD_ARCH TARGET_ARCH
#define COFF_MAGIC 0x5A80
#define TARGET_MACH 0
@@ -76,7 +79,7 @@ extern void z80_cons_fix_new (fragS *, int, int, expressionS *);
/* Values passed to md_apply_fix3 don't include the symbol value. */
#define MD_APPLY_SYM_VALUE(FIX) 0
-#define LISTING_WORD_SIZE 2
+#define LISTING_WORD_SIZE 1
/* A single '=' is accepted as a comparison operator. */
#define O_SINGLE_EQ O_eq
@@ -84,14 +87,15 @@ extern void z80_cons_fix_new (fragS *, int, int, expressionS *);
/* A '$' is used to refer to the current location or as a hex. prefix. */
#define DOLLAR_DOT
#define DOLLAR_AMBIGU 1
+#define LOCAL_LABEL_PREFIX '.'
#define LOCAL_LABELS_FB 1
+#define LOCAL_LABELS_DOLLAR 1
#define LITERAL_PREFIXPERCENT_BIN
#define NUMBERS_WITH_SUFFIX 1
#define NO_PSEUDO_DOT 1
/* We allow single quotes to delimit character constants as
well, but it is cleaner to handle that in tc-z80.c. */
#define SINGLE_QUOTE_STRINGS
-#define NO_STRING_ESCAPES
/* An `.lcomm' directive with no explicit alignment parameter will
use this macro to set P2VAR to the alignment that a request for
@@ -106,4 +110,10 @@ extern void z80_cons_fix_new (fragS *, int, int, expressionS *);
we use to identify registers. */
#define md_register_arithmetic 0
+#define TC_LABEL_IS_LOCAL z80_tc_label_is_local
+extern int z80_tc_label_is_local (const char *name);
+
+#define elf_tc_final_processing z80_elf_final_processing
+extern void z80_elf_final_processing (void);
+
#endif