/* this is tc-z80.h
- Copyright (C) 2005-2018 Free Software Foundation, Inc.
+ Copyright (C) 2005-2020 Free Software Foundation, Inc.
Contributed by Arnold Metselaar <arnold_m@operamail.com>
#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
#define TARGET_BYTES_BIG_ENDIAN 0
/* If you define this macro, GAS will warn about the
/* 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
/* 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
+
+#define LABELS_WITHOUT_COLONS (z80_tc_labels_without_colon())
+extern int z80_tc_labels_without_colon (void);
/* An `.lcomm' directive with no explicit alignment parameter will
use this macro to set P2VAR to the alignment that a request for
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);
+
+/* Define the column that represents the PC. */
+#define DWARF2_DEFAULT_RETURN_COLUMN 5
+
+/* The stack grows down, and is only byte aligned. */
+#define DWARF2_CIE_DATA_ALIGNMENT -1
+
+/* Z80 instructions are 1 or 4 bytes long. */
+#define DWARF2_LINE_MIN_INSN_LENGTH 1
+
+/* 16 bits addresses are used on Z80. */
+#define DWARF2_ADDR_SIZE(bfd) z80_dwarf2_addr_size(bfd)
+extern int z80_dwarf2_addr_size (const bfd *abfd);
+
+/* CFI hooks. */
+#define tc_cfi_frame_initial_instructions z80_tc_frame_initial_instructions
+extern void z80_tc_frame_initial_instructions (void);
+
+#define tc_regname_to_dw2regnum z80_tc_regname_to_dw2regnum
+extern int z80_tc_regname_to_dw2regnum (const char *regname);
+
#endif