* README-vms: Delete.

* config-gas.com: Delete.
	* makefile.vms: Delete.
	* vmsconf.sh: Delete.
	* config/atof-tahoe.c: Delete.
	* config/m88k-opcode.h: Delete.
	* config/obj-bout.c: Delete.
	* config/obj-bout.h: Delete.
	* config/obj-hp300.c: Delete.
	* config/obj-hp300.h: Delete.
	* config/tc-a29k.c: Delete.
	* config/tc-a29k.h: Delete.
	* config/tc-h8500.c: Delete.
	* config/tc-h8500.h: Delete.
	* config/tc-m88k.c: Delete.
	* config/tc-m88k.h: Delete.
	* config/tc-tahoe.c: Delete.
	* config/tc-tahoe.h: Delete.
	* config/tc-tic80.c: Delete.
	* config/tc-tic80.h: Delete.
	* config/tc-w65.c: Delete.
	* config/tc-w65.h: Delete.
	* config/te-aux.h: Delete.
	* config/te-delt88.h: Delete.
	* config/te-delta.h: Delete.
	* config/te-dpx2.h: Delete.
	* config/te-hp300.h: Delete.
	* config/te-ic960.h: Delete.
	* config/vms-a-conf.h: Delete.
	* doc/c-a29k.texi: Delete.
	* doc/c-h8500.texi: Delete.
	* doc/c-m88k.texi: Delete.
	* README: Remove obsolete examples, and list of supported targets.
	* Makefile.am: Remove a29k, h8500, m88k, tahoe, tic80, w65,
	bout and hp300 support.
	(DEP_FLAGS): Don't define BFD_ASSEMBLER.
	* configure.in: Remove --enable-bfd-assembler, need_bfd,
	primary_bfd_gas.
	* configure.tgt: Remove a29k, h8300-coff, h8500-*, i960 non-elf,
	m68k non bfd, m88k, or32-coff, tic80-*, vax non-bfd, w65k-*, *-nindy.
	* as.c: Remove all non-BFD_ASSEMBLER code, support for above targets.
	* as.h: Likewise.
	* dw2gencfi.c: Likewise.
	* dwarf2dbg.c: Likewise.
	* ehopt.c: Likewise.
	* input-file.c: Likewise.
	* listing.c: Likewise.
	* literal.c: Likewise.
	* messages.c: Likewise.
	* obj.h: Likewise.
	* output-file.c: Likewise.
	* read.c: Likewise.
	* stabs.c: Likewise.
	* struc-symbol.h: Likewise.
	* subsegs.c: Likewise.
	* subsegs.h: Likewise.
	* symbols.c: Likewise.
	* symbols.h: Likewise.
	* tc.h: Likewise.
	* write.c: Likewise.
	* write.h: Likewise.
	* config/aout_gnu.h: Likewise.
	* config/obj-aout.c: Likewise.
	* config/obj-aout.h: Likewise.
	* config/obj-coff.c: Likewise.
	* config/obj-coff.h: Likewise.
	* config/obj-evax.h: Likewise.
	* config/obj-ieee.h: Likewise.
	* config/tc-arm.c: Likewise.
	* config/tc-arm.h: Likewise.
	* config/tc-avr.c: Likewise.
	* config/tc-avr.h: Likewise.
	* config/tc-crx.h: Likewise.
	* config/tc-d10v.h: Likewise.
	* config/tc-d30v.h: Likewise.
	* config/tc-dlx.h: Likewise.
	* config/tc-fr30.h: Likewise.
	* config/tc-frv.h: Likewise.
	* config/tc-h8300.c: Likewise.
	* config/tc-h8300.h: Likewise.
	* config/tc-hppa.h: Likewise.
	* config/tc-i370.h: Likewise.
	* config/tc-i386.c: Likewise.
	* config/tc-i386.h: Likewise.
	* config/tc-i860.h: Likewise.
	* config/tc-i960.c: Likewise.
	* config/tc-i960.h: Likewise.
	* config/tc-ip2k.h: Likewise.
	* config/tc-iq2000.h: Likewise.
	* config/tc-m32c.h: Likewise.
	* config/tc-m32r.h: Likewise.
	* config/tc-m68hc11.h: Likewise.
	* config/tc-m68k.c: Likewise.
	* config/tc-m68k.h: Likewise.
	* config/tc-maxq.c: Likewise.
	* config/tc-maxq.h: Likewise.
	* config/tc-mcore.c: Likewise.
	* config/tc-mcore.h: Likewise.
	* config/tc-mn10200.h: Likewise.
	* config/tc-mn10300.c: Likewise.
	* config/tc-mn10300.h: Likewise.
	* config/tc-ms1.h: Likewise.
	* config/tc-msp430.c: Likewise.
	* config/tc-msp430.h: Likewise.
	* config/tc-ns32k.c: Likewise.
	* config/tc-ns32k.h: Likewise.
	* config/tc-openrisc.h: Likewise.
	* config/tc-or32.c: Likewise.
	* config/tc-or32.h: Likewise.
	* config/tc-ppc.c: Likewise.
	* config/tc-ppc.h: Likewise.
	* config/tc-s390.h: Likewise.
	* config/tc-sh.c: Likewise.
	* config/tc-sh.h: Likewise.
	* config/tc-sparc.c: Likewise.
	* config/tc-tic30.c: Likewise.
	* config/tc-tic30.h: Likewise.
	* config/tc-tic4x.c: Likewise.
	* config/tc-tic4x.h: Likewise.
	* config/tc-tic54x.c: Likewise.
	* config/tc-tic54x.h: Likewise.
	* config/tc-v850.h: Likewise.
	* config/tc-vax.c: Likewise.
	* config/tc-vax.h: Likewise.
	* config/tc-xstormy16.h: Likewise.
	* config/tc-xtensa.h: Likewise.
	* config/tc-z8k.c: Likewise.
	* config/tc-z8k.h: Likewise.
	* config/vms-a-conf.h
	* doc/Makefile.am: Likewise.
	* doc/all.texi: Likewise.
	* doc/as.texinfo: Likewise.
	* doc/Makefile.in: Regenerate.
	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* config.in: Regenerate.
	* po/POTFILES.in: Regenerate.
This commit is contained in:
Alan Modra 2005-08-11 01:25:29 +00:00
parent f7348dad42
commit 7be1c4891a
133 changed files with 294 additions and 19087 deletions

View File

@ -1,3 +1,143 @@
2005-08-11 Alan Modra <amodra@bigpond.net.au>
* README-vms: Delete.
* config-gas.com: Delete.
* makefile.vms: Delete.
* vmsconf.sh: Delete.
* config/atof-tahoe.c: Delete.
* config/m88k-opcode.h: Delete.
* config/obj-bout.c: Delete.
* config/obj-bout.h: Delete.
* config/obj-hp300.c: Delete.
* config/obj-hp300.h: Delete.
* config/tc-a29k.c: Delete.
* config/tc-a29k.h: Delete.
* config/tc-h8500.c: Delete.
* config/tc-h8500.h: Delete.
* config/tc-m88k.c: Delete.
* config/tc-m88k.h: Delete.
* config/tc-tahoe.c: Delete.
* config/tc-tahoe.h: Delete.
* config/tc-tic80.c: Delete.
* config/tc-tic80.h: Delete.
* config/tc-w65.c: Delete.
* config/tc-w65.h: Delete.
* config/te-aux.h: Delete.
* config/te-delt88.h: Delete.
* config/te-delta.h: Delete.
* config/te-dpx2.h: Delete.
* config/te-hp300.h: Delete.
* config/te-ic960.h: Delete.
* config/vms-a-conf.h: Delete.
* doc/c-a29k.texi: Delete.
* doc/c-h8500.texi: Delete.
* doc/c-m88k.texi: Delete.
* README: Remove obsolete examples, and list of supported targets.
* Makefile.am: Remove a29k, h8500, m88k, tahoe, tic80, w65,
bout and hp300 support.
(DEP_FLAGS): Don't define BFD_ASSEMBLER.
* configure.in: Remove --enable-bfd-assembler, need_bfd,
primary_bfd_gas.
* configure.tgt: Remove a29k, h8300-coff, h8500-*, i960 non-elf,
m68k non bfd, m88k, or32-coff, tic80-*, vax non-bfd, w65k-*, *-nindy.
* as.c: Remove all non-BFD_ASSEMBLER code, support for above targets.
* as.h: Likewise.
* dw2gencfi.c: Likewise.
* dwarf2dbg.c: Likewise.
* ehopt.c: Likewise.
* input-file.c: Likewise.
* listing.c: Likewise.
* literal.c: Likewise.
* messages.c: Likewise.
* obj.h: Likewise.
* output-file.c: Likewise.
* read.c: Likewise.
* stabs.c: Likewise.
* struc-symbol.h: Likewise.
* subsegs.c: Likewise.
* subsegs.h: Likewise.
* symbols.c: Likewise.
* symbols.h: Likewise.
* tc.h: Likewise.
* write.c: Likewise.
* write.h: Likewise.
* config/aout_gnu.h: Likewise.
* config/obj-aout.c: Likewise.
* config/obj-aout.h: Likewise.
* config/obj-coff.c: Likewise.
* config/obj-coff.h: Likewise.
* config/obj-evax.h: Likewise.
* config/obj-ieee.h: Likewise.
* config/tc-arm.c: Likewise.
* config/tc-arm.h: Likewise.
* config/tc-avr.c: Likewise.
* config/tc-avr.h: Likewise.
* config/tc-crx.h: Likewise.
* config/tc-d10v.h: Likewise.
* config/tc-d30v.h: Likewise.
* config/tc-dlx.h: Likewise.
* config/tc-fr30.h: Likewise.
* config/tc-frv.h: Likewise.
* config/tc-h8300.c: Likewise.
* config/tc-h8300.h: Likewise.
* config/tc-hppa.h: Likewise.
* config/tc-i370.h: Likewise.
* config/tc-i386.c: Likewise.
* config/tc-i386.h: Likewise.
* config/tc-i860.h: Likewise.
* config/tc-i960.c: Likewise.
* config/tc-i960.h: Likewise.
* config/tc-ip2k.h: Likewise.
* config/tc-iq2000.h: Likewise.
* config/tc-m32c.h: Likewise.
* config/tc-m32r.h: Likewise.
* config/tc-m68hc11.h: Likewise.
* config/tc-m68k.c: Likewise.
* config/tc-m68k.h: Likewise.
* config/tc-maxq.c: Likewise.
* config/tc-maxq.h: Likewise.
* config/tc-mcore.c: Likewise.
* config/tc-mcore.h: Likewise.
* config/tc-mn10200.h: Likewise.
* config/tc-mn10300.c: Likewise.
* config/tc-mn10300.h: Likewise.
* config/tc-ms1.h: Likewise.
* config/tc-msp430.c: Likewise.
* config/tc-msp430.h: Likewise.
* config/tc-ns32k.c: Likewise.
* config/tc-ns32k.h: Likewise.
* config/tc-openrisc.h: Likewise.
* config/tc-or32.c: Likewise.
* config/tc-or32.h: Likewise.
* config/tc-ppc.c: Likewise.
* config/tc-ppc.h: Likewise.
* config/tc-s390.h: Likewise.
* config/tc-sh.c: Likewise.
* config/tc-sh.h: Likewise.
* config/tc-sparc.c: Likewise.
* config/tc-tic30.c: Likewise.
* config/tc-tic30.h: Likewise.
* config/tc-tic4x.c: Likewise.
* config/tc-tic4x.h: Likewise.
* config/tc-tic54x.c: Likewise.
* config/tc-tic54x.h: Likewise.
* config/tc-v850.h: Likewise.
* config/tc-vax.c: Likewise.
* config/tc-vax.h: Likewise.
* config/tc-xstormy16.h: Likewise.
* config/tc-xtensa.h: Likewise.
* config/tc-z8k.c: Likewise.
* config/tc-z8k.h: Likewise.
* config/vms-a-conf.h
* doc/Makefile.am: Likewise.
* doc/all.texi: Likewise.
* doc/as.texinfo: Likewise.
* doc/Makefile.in: Regenerate.
* Makefile.in: Regenerate.
* configure: Regenerate.
* config.in: Regenerate.
* po/POTFILES.in: Regenerate.
2005-08-09 Nick Clifton <nickc@redhat.com>
PR 1070

View File

@ -41,7 +41,6 @@ IT_OBJS=itbl-parse.o itbl-lex.o itbl-ops.o
# CPU types. This is only used for dependency information.
CPU_TYPES = \
a29k \
alpha \
arc \
arm \
@ -54,7 +53,6 @@ CPU_TYPES = \
fr30 \
frv \
h8300 \
h8500 \
hppa \
ia64 \
i370 \
@ -66,7 +64,6 @@ CPU_TYPES = \
m32r \
m68hc11 \
m68k \
m88k \
mcore \
mips \
mmix \
@ -83,13 +80,10 @@ CPU_TYPES = \
sh \
sh64 \
sparc \
tahoe \
tic30 \
tic4x \
tic54x \
tic80 \
vax \
w65 \
v850 \
xstormy16 \
xtensa \
@ -100,12 +94,10 @@ CPU_TYPES = \
OBJ_FORMATS = \
aout \
bout \
coff \
ecoff \
elf \
evax \
hp300 \
ieee \
vms
@ -119,13 +111,9 @@ CPU_OBJ_VALID = \
case $$o in \
aout) \
case $$c in \
a29k | arm | cris | i386 | m68k | ns32k | pdp11 | sparc | tahoe | tic30 | vax) \
arm | cris | i386 | m68k | ns32k | pdp11 | sparc | tic30 | vax) \
valid=yes ;; \
esac ;; \
bout) \
case $$c in \
i960) valid=yes ;; \
esac ;; \
coff) valid=yes; \
case $$c in \
cris | i860 | mmix | sh64) \
@ -140,10 +128,6 @@ CPU_OBJ_VALID = \
case $$c in \
alpha) valid=yes ;; \
esac ;; \
hp300) \
case $$c in \
m68k) valid=yes ;; \
esac ;; \
vms) \
case $$c in \
vax) valid=yes ;; \
@ -239,7 +223,6 @@ HFILES = \
# CPU files in config.
TARGET_CPU_CFILES = \
config/tc-a29k.c \
config/tc-alpha.c \
config/tc-arc.c \
config/tc-arm.c \
@ -252,7 +235,6 @@ TARGET_CPU_CFILES = \
config/tc-fr30.c \
config/tc-frv.c \
config/tc-h8300.c \
config/tc-h8500.c \
config/tc-hppa.c \
config/tc-ia64.c \
config/tc-i370.c \
@ -264,7 +246,6 @@ TARGET_CPU_CFILES = \
config/tc-m32r.c \
config/tc-m68hc11.c \
config/tc-m68k.c \
config/tc-m88k.c \
config/tc-mcore.c \
config/tc-mips.c \
config/tc-mmix.c \
@ -281,19 +262,15 @@ TARGET_CPU_CFILES = \
config/tc-sh.c \
config/tc-sh64.c \
config/tc-sparc.c \
config/tc-tahoe.c \
config/tc-tic30.c \
config/tc-tic54x.c \
config/tc-tic80.c \
config/tc-vax.c \
config/tc-w65.c \
config/tc-v850.c \
config/tc-xstormy16.c \
config/tc-xtensa.c \
config/tc-z8k.c
TARGET_CPU_HFILES = \
config/tc-a29k.h \
config/tc-alpha.h \
config/tc-arc.h \
config/tc-arm.h \
@ -306,7 +283,6 @@ TARGET_CPU_HFILES = \
config/tc-fr30.h \
config/tc-frv.h \
config/tc-h8300.h \
config/tc-h8500.h \
config/tc-hppa.h \
config/tc-ia64.h \
config/tc-i370.h \
@ -318,7 +294,6 @@ TARGET_CPU_HFILES = \
config/tc-m32r.h \
config/tc-m68hc11.h \
config/tc-m68k.h \
config/tc-m88k.h \
config/tc-mcore.h \
config/tc-mips.h \
config/tc-mmix.h \
@ -335,12 +310,9 @@ TARGET_CPU_HFILES = \
config/tc-sh.h \
config/tc-sh64.h \
config/tc-sparc.h \
config/tc-tahoe.h \
config/tc-tic30.h \
config/tc-tic54x.h \
config/tc-tic80.h \
config/tc-vax.h \
config/tc-w65.h \
config/tc-v850.h \
config/tc-xstormy16.h \
config/tc-xtensa.h \
@ -350,23 +322,19 @@ TARGET_CPU_HFILES = \
OBJ_FORMAT_CFILES = \
config/obj-aout.c \
config/obj-bout.c \
config/obj-coff.c \
config/obj-ecoff.c \
config/obj-elf.c \
config/obj-evax.c \
config/obj-hp300.c \
config/obj-ieee.c \
config/obj-som.c
OBJ_FORMAT_HFILES = \
config/obj-aout.h \
config/obj-bout.h \
config/obj-coff.h \
config/obj-ecoff.h \
config/obj-elf.h \
config/obj-evax.h \
config/obj-hp300.h \
config/obj-ieee.h \
config/obj-som.h
@ -383,7 +351,6 @@ TARG_ENV_HFILES = \
config/te-epoc-pe.h \
config/te-generic.h \
config/te-go32.h \
config/te-hp300.h \
config/te-hppa.h \
config/te-hppa64.h \
config/te-hppalinux64.h \
@ -501,7 +468,7 @@ INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(srcdir)/config -I$(INCDIR)
# in a subdirectory.
DEP_INCLUDES = -D_GNU_SOURCE -I.. -I$${srcdir} -I../../bfd -I$${srcdir}/config -I$${srcdir}/../include -I$${srcdir}/.. -I$${srcdir}/../bfd -I$${srcdir}/../intl -I../../intl -DLOCALEDIR="\"$(datadir)/locale\""
DEP_FLAGS = -DBFD_ASSEMBLER -DOBJ_MAYBE_ELF \
DEP_FLAGS = -DOBJ_MAYBE_ELF \
-I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES)
# How to link with both our special library facilities
@ -571,8 +538,6 @@ ecoff.o : ecoff.c ecoff.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h \
obj-aout.o : $(srcdir)/config/obj-aout.c
$(COMPILE) -c $(srcdir)/config/obj-aout.c
obj-bout.o : $(srcdir)/config/obj-bout.c
$(COMPILE) -c $(srcdir)/config/obj-bout.c
obj-coff.o: $(srcdir)/config/obj-coff.c
$(COMPILE) -c $(srcdir)/config/obj-coff.c
obj-ecoff.o : $(srcdir)/config/obj-ecoff.c
@ -581,8 +546,6 @@ obj-elf.o : $(srcdir)/config/obj-elf.c
$(COMPILE) -c $(srcdir)/config/obj-elf.c
obj-evax.o : $(srcdir)/config/obj-evax.c
$(COMPILE) -c $(srcdir)/config/obj-evax.c
obj-hp300.o : $(srcdir)/config/obj-hp300.c
$(COMPILE) -c $(srcdir)/config/obj-hp300.c
obj-ieee.o : $(srcdir)/config/obj-ieee.c
$(COMPILE) -c $(srcdir)/config/obj-ieee.c
obj-multi.o : $(srcdir)/config/obj-multi.c
@ -974,17 +937,6 @@ dep-am: DEP
.PHONY: dep dep-in dep-am
AMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW.
DEPTC_a29k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h
DEPTC_a29k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h
DEPTC_a29k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h \
$(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h
DEPTC_alpha_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \
$(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \
@ -1125,16 +1077,6 @@ DEPTC_h8300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h \
subsegs.h $(INCDIR)/obstack.h dwarf2dbg.h $(INCDIR)/opcode/h8300.h \
$(INCDIR)/safe-ctype.h $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h
DEPTC_h8500_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h \
$(INCDIR)/safe-ctype.h
DEPTC_h8500_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h \
subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h \
$(INCDIR)/safe-ctype.h
DEPTC_hppa_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \
$(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \
@ -1188,9 +1130,6 @@ DEPTC_i860_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
$(INCDIR)/opcode/i860.h $(INCDIR)/elf/i860.h $(INCDIR)/elf/reloc-macros.h
DEPTC_i960_bout = $(INCDIR)/symcat.h $(srcdir)/config/obj-bout.h \
$(srcdir)/config/tc-i960.h $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h \
$(INCDIR)/opcode/i960.h
DEPTC_i960_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-i960.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
@ -1272,21 +1211,6 @@ DEPTC_m68k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/m68k.h \
$(srcdir)/config/m68k-parse.h $(INCDIR)/elf/m68k.h \
$(INCDIR)/elf/reloc-macros.h
DEPTC_m68k_hp300 = $(INCDIR)/symcat.h $(srcdir)/config/obj-hp300.h \
$(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \
$(INCDIR)/obstack.h subsegs.h dwarf2dbg.h dw2gencfi.h \
$(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h
DEPTC_m88k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/m88k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \
$(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h
DEPTC_m88k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
$(srcdir)/config/m88k-opcode.h
DEPTC_mcore_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/mcore.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
@ -1467,17 +1391,6 @@ DEPTC_sparc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/opcode/sparc.h dw2gencfi.h $(INCDIR)/elf/dwarf2.h \
$(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h \
dwarf2dbg.h
DEPTC_tahoe_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h
DEPTC_tahoe_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \
$(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \
$(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h
DEPTC_tahoe_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h \
$(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h
DEPTC_tic30_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic30.h
@ -1511,14 +1424,6 @@ DEPTC_tic54x_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
struc-symbol.h $(INCDIR)/opcode/tic54x.h $(srcdir)/config/obj-coff.h \
$(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \
$(BFDDIR)/libcoff.h
DEPTC_tic80_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/tic80.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic80.h
DEPTC_tic80_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h \
$(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic80.h
DEPTC_vax_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
$(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h subsegs.h \
@ -1534,14 +1439,6 @@ DEPTC_vax_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h subsegs.h \
$(INCDIR)/elf/vax.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/vax.h \
$(INCDIR)/safe-ctype.h
DEPTC_w65_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/w65.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h
DEPTC_w65_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h \
subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h
DEPTC_v850_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-v850.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \
$(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
@ -1587,18 +1484,6 @@ DEPTC_i386_multi = $(DEPTC_i386_aout) $(DEPTC_i386_coff) \
DEPTC_mips_multi = $(DEPTC_mips_coff) $(DEPTC_mips_ecoff) \
$(DEPTC_mips_elf)
DEPTC_cris_multi = $(DEPTC_cris_aout) $(DEPTC_cris_elf)
DEPOBJ_a29k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
DEPOBJ_a29k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
DEPOBJ_a29k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_alpha_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \
$(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \
@ -1717,15 +1602,6 @@ DEPOBJ_h8300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_h8500_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
DEPOBJ_h8500_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_hppa_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \
$(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \
@ -1775,8 +1651,6 @@ DEPOBJ_i860_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_i960_bout = $(INCDIR)/symcat.h $(srcdir)/config/obj-bout.h \
$(srcdir)/config/tc-i960.h $(INCDIR)/obstack.h
DEPOBJ_i960_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-i960.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
@ -1834,19 +1708,6 @@ DEPOBJ_m68k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_m68k_hp300 = $(srcdir)/config/obj-aout.c $(INCDIR)/symcat.h \
$(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/obstack.h
DEPOBJ_m88k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/m88k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
DEPOBJ_m88k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_mcore_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/mcore.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
@ -2000,18 +1861,6 @@ DEPOBJ_sparc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_tahoe_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
DEPOBJ_tahoe_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \
$(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \
subsegs.h
DEPOBJ_tahoe_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_tic30_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
@ -2042,15 +1891,6 @@ DEPOBJ_tic54x_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_tic80_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/tic80.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
DEPOBJ_tic80_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_vax_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
@ -2063,15 +1903,6 @@ DEPOBJ_vax_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_w65_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/w65.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
DEPOBJ_w65_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_v850_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-v850.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \
$(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
@ -2114,14 +1945,6 @@ DEPOBJ_i386_multi = $(DEPOBJ_i386_aout) $(DEPOBJ_i386_coff) \
DEPOBJ_mips_multi = $(DEPOBJ_mips_coff) $(DEPOBJ_mips_ecoff) \
$(DEPOBJ_mips_elf)
DEPOBJ_cris_multi = $(DEPOBJ_cris_aout) $(DEPOBJ_cris_elf)
DEP_a29k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-a29k.h \
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
DEP_a29k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h \
$(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
DEP_a29k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h
DEP_alpha_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-alpha.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h
@ -2198,12 +2021,6 @@ DEP_h8300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8300.h \
DEP_h8300_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h
DEP_h8500_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8500.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h \
$(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
DEP_h8500_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h
DEP_hppa_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-hppa.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h
@ -2237,7 +2054,6 @@ DEP_i386_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
DEP_i860_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h
DEP_i960_bout = $(srcdir)/config/obj-bout.h $(srcdir)/config/tc-i960.h
DEP_i960_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i960.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/i960.h \
$(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
@ -2276,14 +2092,6 @@ DEP_m68k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68k.h \
DEP_m68k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h
DEP_m68k_hp300 = $(srcdir)/config/obj-hp300.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
DEP_m88k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m88k.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h \
$(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
DEP_m88k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h
DEP_mcore_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mcore.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h \
$(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
@ -2384,14 +2192,6 @@ DEP_sparc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sparc.h \
DEP_sparc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h
DEP_tahoe_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tahoe.h \
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
DEP_tahoe_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tahoe.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h
DEP_tahoe_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h
DEP_tic30_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tic30.h \
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
DEP_tic30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic30.h \
@ -2412,12 +2212,6 @@ DEP_tic54x_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic54x.h \
DEP_tic54x_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h
DEP_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h \
$(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
DEP_tic80_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h
DEP_vax_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-vax.h \
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
DEP_vax_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-vax.h \
@ -2426,12 +2220,6 @@ DEP_vax_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-vax.h \
DEP_vax_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h
DEP_w65_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-w65.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h \
$(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
DEP_w65_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h
DEP_v850_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-v850.h \
$(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/symcat.h \
$(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h

View File

@ -270,7 +270,6 @@ IT_OBJS = itbl-parse.o itbl-lex.o itbl-ops.o
# CPU types. This is only used for dependency information.
CPU_TYPES = \
a29k \
alpha \
arc \
arm \
@ -283,7 +282,6 @@ CPU_TYPES = \
fr30 \
frv \
h8300 \
h8500 \
hppa \
ia64 \
i370 \
@ -295,7 +293,6 @@ CPU_TYPES = \
m32r \
m68hc11 \
m68k \
m88k \
mcore \
mips \
mmix \
@ -312,13 +309,10 @@ CPU_TYPES = \
sh \
sh64 \
sparc \
tahoe \
tic30 \
tic4x \
tic54x \
tic80 \
vax \
w65 \
v850 \
xstormy16 \
xtensa \
@ -329,12 +323,10 @@ CPU_TYPES = \
# We deliberately omit SOM, since it does not work as a cross assembler.
OBJ_FORMATS = \
aout \
bout \
coff \
ecoff \
elf \
evax \
hp300 \
ieee \
vms
@ -348,13 +340,9 @@ CPU_OBJ_VALID = \
case $$o in \
aout) \
case $$c in \
a29k | arm | cris | i386 | m68k | ns32k | pdp11 | sparc | tahoe | tic30 | vax) \
arm | cris | i386 | m68k | ns32k | pdp11 | sparc | tic30 | vax) \
valid=yes ;; \
esac ;; \
bout) \
case $$c in \
i960) valid=yes ;; \
esac ;; \
coff) valid=yes; \
case $$c in \
cris | i860 | mmix | sh64) \
@ -369,10 +357,6 @@ CPU_OBJ_VALID = \
case $$c in \
alpha) valid=yes ;; \
esac ;; \
hp300) \
case $$c in \
m68k) valid=yes ;; \
esac ;; \
vms) \
case $$c in \
vax) valid=yes ;; \
@ -466,7 +450,6 @@ HFILES = \
# CPU files in config.
TARGET_CPU_CFILES = \
config/tc-a29k.c \
config/tc-alpha.c \
config/tc-arc.c \
config/tc-arm.c \
@ -479,7 +462,6 @@ TARGET_CPU_CFILES = \
config/tc-fr30.c \
config/tc-frv.c \
config/tc-h8300.c \
config/tc-h8500.c \
config/tc-hppa.c \
config/tc-ia64.c \
config/tc-i370.c \
@ -491,7 +473,6 @@ TARGET_CPU_CFILES = \
config/tc-m32r.c \
config/tc-m68hc11.c \
config/tc-m68k.c \
config/tc-m88k.c \
config/tc-mcore.c \
config/tc-mips.c \
config/tc-mmix.c \
@ -508,19 +489,15 @@ TARGET_CPU_CFILES = \
config/tc-sh.c \
config/tc-sh64.c \
config/tc-sparc.c \
config/tc-tahoe.c \
config/tc-tic30.c \
config/tc-tic54x.c \
config/tc-tic80.c \
config/tc-vax.c \
config/tc-w65.c \
config/tc-v850.c \
config/tc-xstormy16.c \
config/tc-xtensa.c \
config/tc-z8k.c
TARGET_CPU_HFILES = \
config/tc-a29k.h \
config/tc-alpha.h \
config/tc-arc.h \
config/tc-arm.h \
@ -533,7 +510,6 @@ TARGET_CPU_HFILES = \
config/tc-fr30.h \
config/tc-frv.h \
config/tc-h8300.h \
config/tc-h8500.h \
config/tc-hppa.h \
config/tc-ia64.h \
config/tc-i370.h \
@ -545,7 +521,6 @@ TARGET_CPU_HFILES = \
config/tc-m32r.h \
config/tc-m68hc11.h \
config/tc-m68k.h \
config/tc-m88k.h \
config/tc-mcore.h \
config/tc-mips.h \
config/tc-mmix.h \
@ -562,12 +537,9 @@ TARGET_CPU_HFILES = \
config/tc-sh.h \
config/tc-sh64.h \
config/tc-sparc.h \
config/tc-tahoe.h \
config/tc-tic30.h \
config/tc-tic54x.h \
config/tc-tic80.h \
config/tc-vax.h \
config/tc-w65.h \
config/tc-v850.h \
config/tc-xstormy16.h \
config/tc-xtensa.h \
@ -577,23 +549,19 @@ TARGET_CPU_HFILES = \
# OBJ files in config
OBJ_FORMAT_CFILES = \
config/obj-aout.c \
config/obj-bout.c \
config/obj-coff.c \
config/obj-ecoff.c \
config/obj-elf.c \
config/obj-evax.c \
config/obj-hp300.c \
config/obj-ieee.c \
config/obj-som.c
OBJ_FORMAT_HFILES = \
config/obj-aout.h \
config/obj-bout.h \
config/obj-coff.h \
config/obj-ecoff.h \
config/obj-elf.h \
config/obj-evax.h \
config/obj-hp300.h \
config/obj-ieee.h \
config/obj-som.h
@ -610,7 +578,6 @@ TARG_ENV_HFILES = \
config/te-epoc-pe.h \
config/te-generic.h \
config/te-go32.h \
config/te-hp300.h \
config/te-hppa.h \
config/te-hppa64.h \
config/te-hppalinux64.h \
@ -709,7 +676,7 @@ INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(srcdir)/config -I$(INCDIR)
# when building dependencies, because the dependency building is done
# in a subdirectory.
DEP_INCLUDES = -D_GNU_SOURCE -I.. -I$${srcdir} -I../../bfd -I$${srcdir}/config -I$${srcdir}/../include -I$${srcdir}/.. -I$${srcdir}/../bfd -I$${srcdir}/../intl -I../../intl -DLOCALEDIR="\"$(datadir)/locale\""
DEP_FLAGS = -DBFD_ASSEMBLER -DOBJ_MAYBE_ELF \
DEP_FLAGS = -DOBJ_MAYBE_ELF \
-I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES)
@ -750,20 +717,6 @@ DEP_FILE_DEPS = $(CFILES) $(HFILES) $(TARGET_CPU_CFILES) \
CONFIG_STATUS_DEPENDENCIES = $(BFDDIR)/configure.in $(srcdir)/configure.tgt
AMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW.
DEPTC_a29k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h
DEPTC_a29k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h
DEPTC_a29k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h \
$(INCDIR)/safe-ctype.h $(INCDIR)/opcode/a29k.h
DEPTC_alpha_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \
$(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \
@ -931,18 +884,6 @@ DEPTC_h8300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
subsegs.h $(INCDIR)/obstack.h dwarf2dbg.h $(INCDIR)/opcode/h8300.h \
$(INCDIR)/safe-ctype.h $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h
DEPTC_h8500_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h \
$(INCDIR)/safe-ctype.h
DEPTC_h8500_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h \
subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h \
$(INCDIR)/safe-ctype.h
DEPTC_hppa_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \
$(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \
@ -1006,10 +947,6 @@ DEPTC_i860_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
$(INCDIR)/opcode/i860.h $(INCDIR)/elf/i860.h $(INCDIR)/elf/reloc-macros.h
DEPTC_i960_bout = $(INCDIR)/symcat.h $(srcdir)/config/obj-bout.h \
$(srcdir)/config/tc-i960.h $(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h \
$(INCDIR)/opcode/i960.h
DEPTC_i960_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-i960.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
@ -1104,24 +1041,6 @@ DEPTC_m68k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(srcdir)/config/m68k-parse.h $(INCDIR)/elf/m68k.h \
$(INCDIR)/elf/reloc-macros.h
DEPTC_m68k_hp300 = $(INCDIR)/symcat.h $(srcdir)/config/obj-hp300.h \
$(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \
$(INCDIR)/obstack.h subsegs.h dwarf2dbg.h dw2gencfi.h \
$(INCDIR)/elf/dwarf2.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h
DEPTC_m88k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/m88k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h subsegs.h \
$(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h
DEPTC_m88k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
$(srcdir)/config/m88k-opcode.h
DEPTC_mcore_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/mcore.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
@ -1336,20 +1255,6 @@ DEPTC_sparc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h \
dwarf2dbg.h
DEPTC_tahoe_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h
DEPTC_tahoe_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \
$(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h \
$(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h
DEPTC_tahoe_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h \
$(INCDIR)/safe-ctype.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h
DEPTC_tic30_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic30.h
@ -1390,16 +1295,6 @@ DEPTC_tic54x_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/coff/internal.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \
$(BFDDIR)/libcoff.h
DEPTC_tic80_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/tic80.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic80.h
DEPTC_tic80_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h \
$(INCDIR)/safe-ctype.h $(INCDIR)/opcode/tic80.h
DEPTC_vax_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
$(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h subsegs.h \
@ -1418,16 +1313,6 @@ DEPTC_vax_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/elf/vax.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/vax.h \
$(INCDIR)/safe-ctype.h
DEPTC_w65_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/w65.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h
DEPTC_w65_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h \
subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h
DEPTC_v850_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-v850.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \
$(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
@ -1483,21 +1368,6 @@ DEPTC_mips_multi = $(DEPTC_mips_coff) $(DEPTC_mips_ecoff) \
$(DEPTC_mips_elf)
DEPTC_cris_multi = $(DEPTC_cris_aout) $(DEPTC_cris_elf)
DEPOBJ_a29k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
DEPOBJ_a29k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/a29k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
DEPOBJ_a29k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_alpha_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \
$(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \
@ -1643,17 +1513,6 @@ DEPOBJ_h8300_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_h8500_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
DEPOBJ_h8500_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_hppa_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \
$(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \
@ -1713,9 +1572,6 @@ DEPOBJ_i860_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_i960_bout = $(INCDIR)/symcat.h $(srcdir)/config/obj-bout.h \
$(srcdir)/config/tc-i960.h $(INCDIR)/obstack.h
DEPOBJ_i960_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-i960.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/i960.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
@ -1786,22 +1642,6 @@ DEPOBJ_m68k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_m68k_hp300 = $(srcdir)/config/obj-aout.c $(INCDIR)/symcat.h \
$(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/obstack.h
DEPOBJ_m88k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/m88k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
DEPOBJ_m88k_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_mcore_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/mcore.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
@ -1989,21 +1829,6 @@ DEPOBJ_sparc_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_tahoe_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
DEPOBJ_tahoe_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \
$(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \
subsegs.h
DEPOBJ_tahoe_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_tic30_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
@ -2041,17 +1866,6 @@ DEPOBJ_tic54x_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_tic80_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/tic80.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
DEPOBJ_tic80_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_vax_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
@ -2067,17 +1881,6 @@ DEPOBJ_vax_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_w65_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/w65.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
DEPOBJ_w65_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h \
$(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
DEPOBJ_v850_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \
$(srcdir)/config/tc-v850.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \
$(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
@ -2130,17 +1933,6 @@ DEPOBJ_mips_multi = $(DEPOBJ_mips_coff) $(DEPOBJ_mips_ecoff) \
$(DEPOBJ_mips_elf)
DEPOBJ_cris_multi = $(DEPOBJ_cris_aout) $(DEPOBJ_cris_elf)
DEP_a29k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-a29k.h \
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
DEP_a29k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h \
$(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
DEP_a29k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-a29k.h
DEP_alpha_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-alpha.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h
@ -2243,14 +2035,6 @@ DEP_h8300_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8300.h
DEP_h8500_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8500.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h \
$(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
DEP_h8500_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h
DEP_hppa_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-hppa.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h
@ -2294,7 +2078,6 @@ DEP_i860_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-i860.h
DEP_i960_bout = $(srcdir)/config/obj-bout.h $(srcdir)/config/tc-i960.h
DEP_i960_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i960.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/i960.h \
$(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
@ -2346,17 +2129,6 @@ DEP_m68k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m68k.h
DEP_m68k_hp300 = $(srcdir)/config/obj-hp300.h $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
DEP_m88k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m88k.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h \
$(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
DEP_m88k_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-m88k.h
DEP_mcore_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mcore.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h \
$(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
@ -2491,17 +2263,6 @@ DEP_sparc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-sparc.h
DEP_tahoe_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tahoe.h \
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
DEP_tahoe_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tahoe.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h
DEP_tahoe_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tahoe.h
DEP_tic30_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tic30.h \
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
@ -2529,14 +2290,6 @@ DEP_tic54x_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic54x.h
DEP_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h \
$(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
DEP_tic80_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-tic80.h
DEP_vax_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-vax.h \
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
@ -2548,14 +2301,6 @@ DEP_vax_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-vax.h
DEP_w65_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-w65.h \
$(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h \
$(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
DEP_w65_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-w65.h
DEP_v850_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-v850.h \
$(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/symcat.h \
$(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
@ -3024,8 +2769,6 @@ ecoff.o : ecoff.c ecoff.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h \
obj-aout.o : $(srcdir)/config/obj-aout.c
$(COMPILE) -c $(srcdir)/config/obj-aout.c
obj-bout.o : $(srcdir)/config/obj-bout.c
$(COMPILE) -c $(srcdir)/config/obj-bout.c
obj-coff.o: $(srcdir)/config/obj-coff.c
$(COMPILE) -c $(srcdir)/config/obj-coff.c
obj-ecoff.o : $(srcdir)/config/obj-ecoff.c
@ -3034,8 +2777,6 @@ obj-elf.o : $(srcdir)/config/obj-elf.c
$(COMPILE) -c $(srcdir)/config/obj-elf.c
obj-evax.o : $(srcdir)/config/obj-evax.c
$(COMPILE) -c $(srcdir)/config/obj-evax.c
obj-hp300.o : $(srcdir)/config/obj-hp300.c
$(COMPILE) -c $(srcdir)/config/obj-hp300.c
obj-ieee.o : $(srcdir)/config/obj-ieee.c
$(COMPILE) -c $(srcdir)/config/obj-ieee.c
obj-multi.o : $(srcdir)/config/obj-multi.c

View File

@ -57,14 +57,6 @@ facility to list all supported host and target names or aliases.
abbreviations to full names; you can read the script, if you wish, or
you can use it to test your guesses on abbreviations--for example:
% sh config.sub sun4
sparc-sun-sunos411
% sh config.sub sun3
m68k-sun-sunos411
% sh config.sub decstation
mips-dec-ultrix42
% sh config.sub hp300bsd
m68k-hp-bsd
% sh config.sub i386v
i386-unknown-sysv
% sh config.sub i786v
@ -139,75 +131,6 @@ The `--enable' options recognized by software in the gas distribution are:
been done, it's already the default. So generally you won't need to use
this option.
Supported platforms
===================
At this point I believe gas to be ANSI only code for most target cpu's. That
is, there should be relatively few, if any host system dependencies. So
porting (as a cross-assembler) to hosts not yet supported should be fairly
easy. Porting to a new target shouldn't be too tough if it's a variant of one
already supported.
Native assembling should work on:
sun3
sun4
386bsd
bsd/386
delta (m68k-sysv from Motorola)
delta88 (m88k-sysv from Motorola)
GNU/linux
m68k hpux 8.0 (hpux 7.0 may be a problem)
vax bsd, ultrix, vms
hp9000s300
decstation
irix 4
irix 5
miniframe (m68k-sysv from Convergent Technologies)
i386-aix (ps/2)
hppa (hpux 4.3bsd, osf1)
AIX
unixware
sco 3.2v4.2
sco openserver 5.0 (a.k.a. 3.2v5.0 )
sparc solaris
ns32k (netbsd, lites)
I believe that gas as a cross-assembler can currently be targeted for
most of the above hosts, plus
arm
decstation-bsd (a.out format, to be used in BSD 4.4)
ebmon29k
go32 (DOS on i386, with DJGPP -- old a.out version)
H8/300, H8/500 (Hitachi)
i386-aix (ps/2)
i960-coff
mips ecoff (decstation-ultrix, iris, mips magnum, mips-idt-ecoff)
Mitsubishi d10v and d30v
nindy960
powerpc EABI
SH (Hitachi)
sco386
TI tic30 and tic80
vax bsd or ultrix?
vms
vxworks68k
vxworks960
z8000 (Zilog)
MIPS ECOFF support has been added, but GAS will not run a C-style
preprocessor. If you want that, rename your file to have a ".S" suffix, and
run gcc on it. Or run "gcc -xassembler-with-cpp foo.s".
Support for ELF should work now for sparc, hppa, i386, alpha, m68k,
MIPS, powerpc.
Support for sequent (ns32k), tahoe, i860 may be suffering from bitrot.
If you try out gas on some host or target not listed above, please let me know
the results, so I can update the list.
Compiler Support Hacks
======================

View File

@ -1,248 +0,0 @@
This document explains a couple of things that are specific to VMS.
There are currently two "chapters", the first deals with cross-assembly
issues, and the second deals with the VMS debugger and GNU-CC.
***********************************************************************
****************** Notes for Cross Assembly with VMS ******************
***********************************************************************
If you wish to build gas on a non-VMS system to cross-assemble,
you should use:
configure ${hosttype} -target=vms
and then follow the usual procedure. The object files generated on
Unix will be correct from a binary point of view, but the real trick is
getting them to the VMS machine. The format of the object file is
a variable-length record, but each record contains binary data. gas
writes the records in the same format that VMS would expect,
namely a two-byte count followed by that number of bytes.
If you try to copy the file to a VMS system using ftp, the ftp
protocol will screw up the file by looking for nulls (record terminator for
unix) and it will insert it's own record terminators at that point. This
will obviously corrupt the file.
If you try to transfer the file with ftp in binary mode, the
file itself will not be corrupt, but VMS will think that the file contains
fixed-length records of 512 bytes. You can use the public-domain FILE
utility to change this with a command like:
$FILE foo.o/type=variable
If you do not have this utility available, the following program can be
used to perform this task:
#include <fab.h>
#define RME$C_SETRFM 1
struct FAB * fab;
main(int argc, char * argv[]){
int i, status;
fab = (struct FAB*) malloc(sizeof(struct FAB));
*fab = cc$rms_fab; /* initialize FAB*/
fab->fab$b_fac = FAB$M_PUT;
fab->fab$l_fop |= FAB$M_ESC;
fab->fab$l_ctx = RME$C_SETRFM;
fab->fab$w_ifi = 0;
for(i=1;i<argc;i++){
printf("Setting %s to variable length records.\n",argv[i]);
fab->fab$l_fna = argv[i];
fab->fab$b_fns = strlen(argv[i]);
status = sys$open(fab,0,0);
if((status & 7) != 1) lib$signal(status);
fab->fab$b_rfm = FAB$C_VAR;
status = sys$modify(fab,0,0);
if((status & 7) != 1) lib$signal(status);
status = sys$close(fab,0,0);
if((status & 7) != 1) lib$signal(status);
};
}
If you have NFS running on the VMS system, what you need to do
depends upon which NFS software you are running on the VMS system. There
are a number of different TCP/IP packages for VMS available, and only very
limited testing has been performed. In the tests that has been done so
far, the contents of the file will always be correct when transferring the
file via NFS, but the record attributes may or may not be correct.
One proprietary TCP/IP/NFS package for VMS is known to
automatically fix the record attributes of the object file if you NFS mount
a unix disk from the VMS system, and if the file has a ".obj" extension on
the unix system. Other TCP/IP packages might do this for you as well, but
they have not been checked.
No matter what method you use to get the file to the VMS system, it is
always a good idea to check to make sure that it is the correct type by
doing a "$dir/full" on the object file. The desired record attributes will
be "None". Undesirable record attributes will be "Stream-LF" or anything
else.
Once you get the files on the VMS system, you can check their integrity
with the "$anal/obj" command. (Naturally at some point you should rename
the .o files to .obj). As far as the debugger is concerned, the records
will be correct, but the debugger will not be able to find the source files,
since it only has the file name, and not the full directory specification.
You must give the debugger some help by telling it which directories to
search for the individual files - once you have done this you should be
able to proceed normally.
It is a good idea to use names for your files which will be valid
under VMS, since otherwise you will have no way of getting the debugger to
find the source file when deugging.
The reason for this is that the object file normally contins specific
information that the debugger can use to positively identify a file, and if
you are assembling on a unix system this information simply does not exist
in a meaningful way. You must help the debugger by using the "SET FILE="
command to tell the debugger where to look for source files. The debugger
records will be correct, except that the debugger will not be initially
able to find the source files. You can use the "SET FILE" command to tell
the debugger where to look for the source files.
I have only tested this with a SVr4 i486 machine, and everything seems to
work OK, with the limited testing that I have done. Other machines may
or may not work. You should read the chapters on cross-compilers in the gcc
manual before fooling with this. Since gas does not need to do any floating
point arithmetic, the floating point constants that are generated here should
be correct - the only concern is with constant folding in the main compiler.
The range and precision of floats and doubles are similar on the 486 (with
a builtin 80387) and the VAX, although there is a factor of 2 to 4
difference in the range. The double, as implemented on the 486, is quite
similar to the G_FLOAT on the VAX.
***********************************************************************
****************** Notes for using GNU CC with the VMS debugger********
***********************************************************************
1) You should be aware that GNU-C, as with any other decent compiler,
will do things when optimization is turned on that you may not expect.
Sometimes intermediate results are not written to variables, if they are only
used in one place, and sometimes variables that are not used at all will not be
written to the symbol table. Also, parameters to inline functions are often
inaccessible. You can see the assembly code equivalent by using KP7 in the
debugger, and from this you can tell if in fact a variable should have the
value that you expect. You can find out if a variable lives withing a register
by doing a 'show symbol/addr'.
2) Overly complex data types, such as:
int (*(*(*(*(*(* sarr6)[1])[1])[2])[3])[4])[5];
will not be debugged properly, since the debugging record overflows an internal
debugger buffer. gcc-as will convert these to *void as far as the debugger
symbol table is concerned, which will avoid any problems, and the assembler
will give you a message informing you that this has happened.
3) You must, of course, compile and link with /debug. If you link
without debug, you still get traceback table in the executable, but there is no
symbol table for variables.
4) Included in the patches to VMS.C are fixes to two bugs that are
unrelated to the changes that I have made. One of these made it impossible to
debug small programs sometimes, and the other caused the debugger to become
confused about which routine it was in, and give this incorrect info in
tracebacks.
5) If you are using the GNU-C++ compiler, you should modify the
compiler driver file GNU_CC:[000000]GCC.COM (or GXX.COM). If you have a
separate GXX.COM, then you need to change one line in GXX.COM to:
$ if f$locate("D",p2) .ne. P2_Length then Debug = " ""-G0"""
Notice zero---> ^
If you are using a GCC.COM that does both C and C++, add the following lines to
GCC.COM:
$!
$! Use old style debugging records for VMS
$!
$ if (Debug.nes."" ).and. Plus then Debug = " ""-G0"""
after the variables Plus and Debug are set. The reason for this, is that C++
compiler by default generates debugging records that are more complex,
with many new syntactical elements that allow for the new features of the
language. The -G0 switch tells the C++ compiler to use the old style debugging
records. Until the debugger understands C++ there is not any point to try and
use the expanded syntax.
6) When you have nested scopes, i.e.:
main(){
int i;
{int i;
{int i;
};};}
and you say "EXAM i" the debugger needs to figure out which variable you
actually want to reference. I have arranged things to define a block to the
debugger when you use brackets to enter a new scope, so in the example above,
the variables would be described as:
TEST\main\i
TEST\main\$0\i
TEST\main\$0\$0\i
At each level, the block name is a number with a dollar sign prefix, the
numbers start with 0 and count upward. When you say EXAM i, the debugger looks
at the current PC, and decides which block it is currently in. It works from
the innermost level outward until it finds a block that has the variable "i"
defined. You can always specify the scope explicitly.
7) With C++, there can be a lot of inline functions, and it would be
rather restrictive to force the user to debug the program by converting all of
the inline functions to normal functions. What I have done is to essentially
"add" (with the debugger) source lines from the include files that contain the
inline functions. Thus when you step into an inline function it appears as if
you have called the function, and you can examine variables and so forth.
There are several *very* important differences, however. First of all, since
there is no function call involved, you cannot step over the inline function
call - you always step into it. Secondly, since the same source lines are used
in many locations, there is a separate copy of the source for *each* usage.
Without this, breakpoints do not work, since we must have a 1-to-1 mapping
between source lines and PC.
Since you cannot step over inline function calls, it can be a real pain
if you are not really interested in what is going on for that function call.
What I have done is to use the "-D" switch for the assembler to toggle the
following behavior. With the "-D" switch, all inline functions are included in
the object file, and you can debug everything. Without the "-D" switch
(default case with VMS implementation), inline functions are included *only* if
they did not come from system header files (i.e. from GNU_CC_INCLUDE: or
GNU_GXX_INCLUDE:). Thus, without the switch the user only debugs his/her own
inline functions, and not the system ones. (This is especially useful if you do
a lot of stream I/O in C++). This probably will not provide enough granularity
for many users, but for now this is still somewhat experimental, and I would
like to reflect upon it and get some feedback before I go any further.
Possible solutions include an interactive prompting, a logical name, or a new
command line option in gcc.c (which is then passed through somehow to the guts
of the assembler).
The inline functions from header files appear after the source code
for the source file. This has the advantage that the source file itself is
numbered with the same line numbers that you get with an editor. In addition,
the entire header file is not included, since the assembler makes a list of
the min and max source lines that are used, and only includes those lines from
the first to the last actually used. (It is easy to change it to include the
whole file).
8) When you are debugging C++ objects, the object "this" is refered to
as "$this". Actually, the compiler writes it as ".this", but the period is
not good for the debugger, so I have a routine to convert it to a $. (It
actually converts all periods to $, but only for variables, since this was
intended to allow us to access "this".
9) If you use the asm("...") keyword for global symbols, you will not
be able to see that symbol with the debugger. The reason is that there are two
records for the symbol stored in the data structures of the assembler. One
contains the info such as psect number and offset, and the other one contains
the information having to do with the data type of the variable. In order to
debug as symbol, you need to be able to coorelate these records, and the only
way to do this is by name. The record with the storage attributes will take
the name used in the asm directive, and the record that specifies the data type
has the actual variable name, and thus when you use the asm directive to change
a variable name, the symbol becomes invisible.
10) Older versions of the compiler ( GNU-C 1.37.92 and earlier) place
global constants in the text psect. This is unfortunate, since to the linker
this appears to be an entry point. I sent a patch to the compiler to RMS,
which will generate a .const section for these variables, and patched the
assembler to put these variables into a psect just like that for normal
variables, except that they are marked NOWRT. static constants are still
placed in the text psect, since there is no need for any external access.

View File

@ -43,10 +43,7 @@
#include "dwarf2dbg.h"
#include "dw2gencfi.h"
#include "hash.h"
#ifdef BFD_ASSEMBLER
#include "bfdver.h"
#endif
#ifdef HAVE_ITBL_CPU
#include "itbl-ops.h"
@ -112,13 +109,11 @@ int debug_memory = 0;
/* Enable verbose mode. */
int verbose = 0;
#ifdef BFD_ASSEMBLER
segT reg_section;
segT expr_section;
segT text_section;
segT data_section;
segT bss_section;
#endif
/* Name of listing file. */
static char *listing_filename = NULL;
@ -225,13 +220,8 @@ print_version_id (void)
return;
printed = 1;
#ifdef BFD_ASSEMBLER
fprintf (stderr, _("GNU assembler version %s (%s) using BFD version %s"),
fprintf (stderr, _("GNU assembler version %s (%s) using BFD version %s\n"),
VERSION, TARGET_ALIAS, BFD_VERSION_STRING);
#else
fprintf (stderr, _("GNU assembler version %s (%s)"), VERSION, TARGET_ALIAS);
#endif
fprintf (stderr, "\n");
}
static void
@ -276,7 +266,7 @@ Options:\n\
emulate output (default %s)\n"), def_em);
}
#endif
#if defined BFD_ASSEMBLER && (defined OBJ_ELF || defined OBJ_MAYBE_ELF)
#if defined OBJ_ELF || defined OBJ_MAYBE_ELF
fprintf (stream, _("\
--execstack require executable stack for this object\n"));
fprintf (stream, _("\
@ -457,7 +447,7 @@ parse_args (int * pargc, char *** pargv)
,{"defsym", required_argument, NULL, OPTION_DEFSYM}
,{"dump-config", no_argument, NULL, OPTION_DUMPCONFIG}
,{"emulation", required_argument, NULL, OPTION_EMULATION}
#if defined BFD_ASSEMBLER && (defined OBJ_ELF || defined OBJ_MAYBE_ELF)
#if defined OBJ_ELF || defined OBJ_MAYBE_ELF
,{"execstack", no_argument, NULL, OPTION_EXECSTACK}
,{"noexecstack", no_argument, NULL, OPTION_NOEXECSTACK}
#endif
@ -598,11 +588,7 @@ parse_args (int * pargc, char *** pargv)
case OPTION_VERSION:
/* This output is intended to follow the GNU standards document. */
#ifdef BFD_ASSEMBLER
printf (_("GNU assembler %s\n"), BFD_VERSION_STRING);
#else
printf (_("GNU assembler %s\n"), VERSION);
#endif
printf (_("Copyright 2005 Free Software Foundation, Inc.\n"));
printf (_("\
This program is free software; you may redistribute it under the terms of\n\
@ -643,11 +629,7 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
if (*s == '\0')
as_fatal (_("bad defsym; format is --defsym name=value"));
*s++ = '\0';
#ifdef BFD_ASSEMBLER
i = bfd_scan_vma (s, (const char **) NULL, 0);
#else
i = strtol (s, (char **) NULL, 0);
#endif
n = xmalloc (sizeof *n);
n->next = defsyms;
n->name = optarg;
@ -774,7 +756,7 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
flag_fatal_warnings = 1;
break;
#if defined BFD_ASSEMBLER && (defined OBJ_ELF || defined OBJ_MAYBE_ELF)
#if defined OBJ_ELF || defined OBJ_MAYBE_ELF
case OPTION_EXECSTACK:
flag_execstack = 1;
flag_noexecstack = 0;
@ -983,44 +965,10 @@ static void
perform_an_assembly_pass (int argc, char ** argv)
{
int saw_a_file = 0;
#ifdef BFD_ASSEMBLER
flagword applicable;
#endif
need_pass_2 = 0;
#ifndef BFD_ASSEMBLER
#ifdef MANY_SEGMENTS
{
unsigned int i;
for (i = SEG_E0; i < SEG_UNKNOWN; i++)
segment_info[i].fix_root = 0;
}
/* Create the three fixed ones. */
{
segT seg;
#ifdef TE_APOLLO
seg = subseg_new (".wtext", 0);
#else
seg = subseg_new (".text", 0);
#endif
assert (seg == SEG_E0);
seg = subseg_new (".data", 0);
assert (seg == SEG_E1);
seg = subseg_new (".bss", 0);
assert (seg == SEG_E2);
#ifdef TE_APOLLO
create_target_segments ();
#endif
}
#else /* not MANY_SEGMENTS. */
text_fix_root = NULL;
data_fix_root = NULL;
bss_fix_root = NULL;
#endif /* not MANY_SEGMENTS. */
#else /* BFD_ASSEMBLER. */
/* Create the standard sections, and those the assembler uses
internally. */
text_section = subseg_new (TEXT_SECTION_NAME, 0);
@ -1042,12 +990,10 @@ perform_an_assembly_pass (int argc, char ** argv)
reg_section = subseg_new ("*GAS `reg' section*", 0);
expr_section = subseg_new ("*GAS `expr' section*", 0);
#endif /* BFD_ASSEMBLER. */
subseg_set (text_section, 0);
/* This may add symbol table entries, which requires having an open BFD,
and sections already created, in BFD_ASSEMBLER mode. */
and sections already created. */
md_begin ();
#ifdef USING_CGEN
@ -1113,10 +1059,8 @@ main (int argc, char ** argv)
out_file_name = OBJ_DEFAULT_OUTPUT_FILE_NAME;
hex_init ();
#ifdef BFD_ASSEMBLER
bfd_init ();
bfd_set_error_program_name (myname);
#endif
#ifdef USE_EMULATIONS
select_emulation_mode (argc, argv);
@ -1140,21 +1084,13 @@ main (int argc, char ** argv)
#ifdef TC_I960
macro_strip_at = flag_mri;
#endif
#ifdef TC_A29K
/* For compatibility with the AMD 29K family macro assembler
specification. */
flag_macro_alternate = 1;
macro_strip_at = 1;
#endif
macro_init (flag_macro_alternate, flag_mri, macro_strip_at, macro_expr);
PROGRESS (1);
#ifdef BFD_ASSEMBLER
output_file_create (out_file_name);
assert (stdoutput != 0);
#endif
#ifdef tc_init_after_args
tc_init_after_args ();
@ -1189,7 +1125,7 @@ main (int argc, char ** argv)
md_end ();
#endif
#if defined BFD_ASSEMBLER && (defined OBJ_ELF || defined OBJ_MAYBE_ELF)
#if defined OBJ_ELF || defined OBJ_MAYBE_ELF
if ((flag_execstack || flag_noexecstack)
&& OUTPUT_FLAVOR == bfd_target_elf_flavour)
{
@ -1216,13 +1152,11 @@ main (int argc, char ** argv)
else
keep_it = 0;
#if defined (BFD_ASSEMBLER) || !defined (BFD)
/* This used to be done at the start of write_object_file in
write.c, but that caused problems when doing listings when
keep_it was zero. This could probably be moved above md_end, but
I didn't want to risk the change. */
subsegs_finish ();
#endif
if (keep_it)
write_object_file ();
@ -1232,10 +1166,7 @@ main (int argc, char ** argv)
#endif
#ifndef OBJ_VMS /* Does its own file handling. */
#ifndef BFD_ASSEMBLER
if (keep_it)
#endif
output_file_close (out_file_name);
output_file_close (out_file_name);
#endif
if (flag_fatal_warnings && had_warnings () > 0 && had_errors () == 0)

View File

@ -111,9 +111,7 @@ extern void *alloca ();
/* Now GNU header files... */
#include "ansidecl.h"
#ifdef BFD_ASSEMBLER
#include "bfd.h"
#endif
#include "libiberty.h"
/* Define the standard progress macros. */
@ -207,14 +205,9 @@ extern char *strstr ();
/* These are assembler-wide concepts */
#ifdef BFD_ASSEMBLER
extern bfd *stdoutput;
typedef bfd_vma addressT;
typedef bfd_signed_vma offsetT;
#else
typedef unsigned long addressT;
typedef long offsetT;
#endif
/* Type of symbol value, etc. For use in prototypes. */
typedef addressT valueT;
@ -243,49 +236,11 @@ typedef addressT valueT;
/* subsegs.c Sub-segments. Also, segment(=expression type)s.*/
#ifndef BFD_ASSEMBLER
#ifdef MANY_SEGMENTS
#include "bfd.h"
#define N_SEGMENTS 40
#define SEG_NORMAL(x) ((x) >= SEG_E0 && (x) <= SEG_E39)
#define SEG_LIST SEG_E0,SEG_E1,SEG_E2,SEG_E3,SEG_E4,SEG_E5,SEG_E6,SEG_E7,SEG_E8,SEG_E9,\
SEG_E10,SEG_E11,SEG_E12,SEG_E13,SEG_E14,SEG_E15,SEG_E16,SEG_E17,SEG_E18,SEG_E19,\
SEG_E20,SEG_E21,SEG_E22,SEG_E23,SEG_E24,SEG_E25,SEG_E26,SEG_E27,SEG_E28,SEG_E29,\
SEG_E30,SEG_E31,SEG_E32,SEG_E33,SEG_E34,SEG_E35,SEG_E36,SEG_E37,SEG_E38,SEG_E39
#define SEG_TEXT SEG_E0
#define SEG_DATA SEG_E1
#define SEG_BSS SEG_E2
#define SEG_LAST SEG_E39
#else
#define N_SEGMENTS 3
#define SEG_NORMAL(x) ((x) == SEG_TEXT || (x) == SEG_DATA || (x) == SEG_BSS)
#define SEG_LIST SEG_TEXT,SEG_DATA,SEG_BSS
#endif
typedef enum _segT
{
SEG_ABSOLUTE = 0,
SEG_LIST,
SEG_UNKNOWN,
SEG_GOOF, /* Only happens if AS has a logic error. */
/* Invented so we don't crash printing
error message involving weird segment. */
SEG_EXPR, /* Intermediate expression values. */
SEG_DEBUG, /* Debug segment */
SEG_NTV, /* Transfert vector preload segment. */
SEG_PTV, /* Transfert vector postload segment. */
SEG_REGISTER /* Mythical: a register-valued expression. */
} segT;
#define SEG_MAXIMUM_ORDINAL (SEG_REGISTER)
#else
typedef asection *segT;
#define SEG_NORMAL(SEG) ( (SEG) != absolute_section \
&& (SEG) != undefined_section \
&& (SEG) != reg_section \
&& (SEG) != expr_section)
#endif
typedef int subsegT;
/* What subseg we are accessing now? */
@ -294,33 +249,13 @@ COMMON subsegT now_subseg;
/* Segment our instructions emit to. */
COMMON segT now_seg;
#ifdef BFD_ASSEMBLER
#define segment_name(SEG) bfd_get_section_name (stdoutput, SEG)
#else
extern char const *const seg_name[];
#define segment_name(SEG) seg_name[(int) (SEG)]
#endif
#ifndef BFD_ASSEMBLER
extern int section_alignment[];
#endif
#ifdef BFD_ASSEMBLER
extern segT reg_section, expr_section;
/* Shouldn't these be eliminated someday? */
extern segT text_section, data_section, bss_section;
#define absolute_section bfd_abs_section_ptr
#define undefined_section bfd_und_section_ptr
#else
#define reg_section SEG_REGISTER
#define expr_section SEG_EXPR
#define text_section SEG_TEXT
#define data_section SEG_DATA
#define bss_section SEG_BSS
#define absolute_section SEG_ABSOLUTE
#define undefined_section SEG_UNKNOWN
#endif
enum _relax_state
{
@ -602,9 +537,7 @@ int seg_not_empty_p (segT);
void start_dependencies (char *);
void register_dependency (char *);
void print_dependencies (void);
#ifdef BFD_ASSEMBLER
segT subseg_get (const char *, int);
#endif
struct expressionS;
struct fix;
@ -612,10 +545,8 @@ typedef struct symbol symbolS;
struct relax_type;
typedef struct frag fragS;
#ifdef BFD_ASSEMBLER
/* literal.c */
valueT add_to_literal_pool (symbolS *, valueT, segT, int);
#endif
int check_eh_frame (struct expressionS *, unsigned int *);
int eh_frame_estimate_size_before_relax (fragS *);

View File

@ -1,189 +0,0 @@
$!config-gas.com
$! This file sets things up to build gas on a VMS system to generate object
$! files for a VMS system. We do not use the configure script, since we
$! do not have /bin/sh to execute it.
$!
$! Note: Only this script contains vax-vms and alpha-vms support, but vax-vms
$! is no longer supported.
$!
$!
$ gas_host="vms"
$ arch_indx = 1 + ((f$getsyi("CPU").ge.128).and.1) ! vax==1, alpha==2
$ arch = f$element(arch_indx,"|","|VAX|Alpha|")
$ if arch.eqs."VAX"
$ then
$ cpu_type="vax"
$ obj_format="vms"
$ atof="vax"
$ else
$ cpu_type="alpha"
$ obj_format="evax"
$ atof="ieee"
$ endif
$ emulation="generic"
$!
$ DELETE = "delete/noConfirm"
$ ECHO = "write sys$output"
$!
$! Target specific information
$ call make "targ-cpu.h" "[.config]tc-''cpu_type'.h"
$ call make "targ-env.h" "[.config]te-''emulation'.h"
$!
$! Code to handle the object file format.
$ call make "obj-format.h" "[.config]obj-''obj_format'.h"
$!
$! (not currently used for vax or alpha)
$ call make "itbl-cpu.h" "[.config]itbl-''cpu_type'.h"
$!
$!
$! Create the file version.opt, which helps identify the executable.
$!
$if f$trnlnm("IFILE$").nes."" then close/noLog ifile$
$search CONFIGURE.IN "AM_INIT_AUTOMAKE"/Exact/Output=config-gas-tmp.tmp
$open ifile$ config-gas-tmp.tmp
$read ifile$ line
$close ifile$
$DELETE config-gas-tmp.tmp;*
$! Discard "AM_INIT_AUTOMAKE(gas, " and ")" parts.
$ijk=f$locate(",",line)+2
$line=f$extract(ijk,f$length(line)-ijk,line)
$ijk=f$locate(")",line)
$line=f$extract(0,ijk,line)
$!
$ if f$search("version.opt").nes."" then DELETE version.opt;*
$copy _NL: version.opt
$open/Append ifile$ version.opt
$write ifile$ "identification="+""""+line+""""
$close ifile$
$!
$! Now write config.h.
$!
$ if f$search("config.h").nes."" then DELETE config.h;*
$copy _NL: config.h
$open/Append ifile$ config.h
$write ifile$ "/* config.h. Generated by config-gas.com. */
$write ifile$ "#ifndef VERSION"
$write ifile$ "#define VERSION """,line,""""
$write ifile$ "#endif"
$write ifile$ "/*--*/"
$if arch .eqs. "VAX"
$then
$append [.config]vms-conf.h ifile$:
$else
$ append [.config]vms-a-conf.h ifile$:
$endif
$close ifile$
$ECHO "Created config.h."
$!
$! Check for, and possibly make, header file <unistd.h>.
$!
$ if f$search("tmp-chk-h.*").nes."" then DELETE tmp-chk-h.*;*
$!can't use simple `#include HDR' with `gcc /Define="HDR=<foo.h>"'
$!because the 2.6.[0-3] preprocessor handles it wrong (VMS-specific gcc bug)
$ create tmp-chk-h.c
int tmp_chk_h; /* guarantee non-empty output */
#ifdef HAVE_STDIO_H
#include <stdio.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_UNIXIO_H
#include <unixio.h>
#endif
#ifdef HAVE_UNIXLIB_H
#include <unixlib.h>
#endif
$ on warning then continue
$ CHECK = "call tmp_chk_h"
$ CHECK "HAVE_STDIO_H"
$ if .not.$status
$ then type sys$input:
? could not compile <stdio.h>.
If you're compiling with DEC C or VAX C, create config.status as an
empty file and start gnu make again.
If you're compiling with GNU C, there is some setup problem and
gas configuration cannot proceed.
$ DELETE tmp-chk-h.c;*
$ exit %x002C
$ endif
$!
$ CHECK "HAVE_UNISTD_H"
$ if .not.$status
$ then
$ if f$trnlnm("HFILE$").nes."" then close/noLog hfile$
$ CHECK "HAVE_UNIXIO_H"
$ got_unixio = ($status .and. 1)
$ CHECK "HAVE_UNIXLIB_H"
$ got_unixlib = ($status .and. 1)
$ create []unistd.h !with rudimentary contents
/* <unistd.h> substitute for building gas */
#ifndef UNISTD_H
#define UNISTD_H
$ open/Append hfile$ []unistd.h
$ if got_unixio
$ then write hfile$ "#include <unixio.h>"
$ else append sys$input: hfile$:
/* some of the routines normally prototyped in <unixio.h> */
extern int creat(), open(), close(), read(), write();
extern int access(), dup(), dup2(), fstat(), stat();
extern long lseek();
$ endif
$ write hfile$ ""
$ if got_unixlib
$ then write hfile$ "#include <unixlib.h>"
$ else append sys$input: hfile$:
/* some of the routines normally prototyped in <unixlib.h> */
extern char *sbrk(), *getcwd(), *cuserid();
extern int brk(), chdir(), chmod(), chown(), mkdir();
extern unsigned getuid(), umask();
$ endif
$ append sys$input: hfile$:
#endif /*UNISTD_H*/
$ close hfile$
$ ECHO "Created ""[]unistd.h""."
$ endif !gcc '#include <unistd.h>' failed
$ DELETE tmp-chk-h.c;*
$
$tmp_chk_h: subroutine
$ set noOn
$ hname = f$edit("<" + (p1 - "HAVE_" - "_H") + ".h>","LOWERCASE")
$ write sys$output "Checking for ''hname'."
$ if f$search("tmp-chk-h.obj").nes."" then DELETE tmp-chk-h.obj;*
$ define/noLog sys$error _NL: !can't use /User_Mode here due to gcc
$ define/noLog sys$output _NL: ! driver's use of multiple image activation
$ gcc /Include=([],[-.include]) /Define=("''p1'") tmp-chk-h.c
$!can't just check $status; gcc 2.6.[0-3] preprocessor doesn't set it correctly
$ ok = (($status.and.1).and.(f$search("tmp-chk-h.obj").nes."")) .or. %x10000000
$ deassign sys$error !restore, more or less
$ deassign sys$output
$ if ok then DELETE tmp-chk-h.obj;*
$ exit ok
$ endsubroutine !tmp_chk_h
$
$!
$! Done
$!
$ if f$search("config.status") .nes. "" then DELETE config.status;*
$ open/write cfile []config.status
$ write cfile "Links are now set up for use with a "+arch+" running VMS."
$ close cfile
$ type []config.status
$exit
$!
$!
$make: subroutine
$ if f$search(p1).nes."" then DELETE 'p1';*
$ create 'p1'
$ if f$trnlnm("IFILE$").nes."" then close/noLog ifile$
$ open/Append ifile$ 'p1'
$ write ifile$ "#include ""''f$string(p2 - "[.config]")'"""
$ close ifile$
$ ECHO "Created ''p1' for ''p2'."
$endsubroutine !make

View File

@ -3,9 +3,6 @@
/* Define if using AIX 5.2 value for C_WEAKEXT. */
#undef AIX_WEAK_SUPPORT
/* Use BFD interface? */
#undef BFD_ASSEMBLER
/* assert broken? */
#undef BROKEN_ASSERT
@ -168,9 +165,6 @@
/* Using m88k COFF? */
#undef M88KCOFF
/* old COFF support? */
#undef MANY_SEGMENTS
/* Default CPU for MIPS targets. */
#undef MIPS_CPU_STRING_DEFAULT
@ -219,9 +213,6 @@
/* generic support? */
#undef OBJ_MAYBE_GENERIC
/* HP300 support? */
#undef OBJ_MAYBE_HP300
/* IEEE support? */
#undef OBJ_MAYBE_IEEE

View File

@ -26,15 +26,15 @@
relocations, and one which uses extended relocations.
Today, the extended reloc uses are
TC_SPARC, TC_A29K
TC_SPARC
each must define the enum reloc_type
*/
#define USE_EXTENDED_RELOC (defined(TC_SPARC) || defined(TC_A29K))
#define USE_EXTENDED_RELOC defined(TC_SPARC)
#if defined(TC_SPARC) || defined(TC_A29K)
#if defined(TC_SPARC)
enum reloc_type
{
RELOC_8, RELOC_16, RELOC_32,/* simple relocations */
@ -62,7 +62,7 @@ enum reloc_type
NO_RELOC
};
#endif /* TC_SPARC or TC_A29K */
#endif /* TC_SPARC */
#define __GNU_EXEC_MACROS__

View File

@ -1,415 +0,0 @@
/* atof_tahoe.c - turn a string into a Tahoe floating point number
Copyright 1987, 1993, 2000, 2003 Free Software Foundation, Inc.
/* This is really a simplified version of atof_vax.c. I glommed it wholesale
and then shaved it down. I don't even know how it works. (Don't you find
my honesty refreshing? Devon E Bowen <bowen@cs.buffalo.edu>
I don't allow uppercase letters in the precision descriptors.
i.e. 'f' and 'd' are allowed but 'F' and 'D' aren't. */
#include "as.h"
/* Precision in LittleNums. */
#define MAX_PRECISION (4)
#define D_PRECISION (4)
#define F_PRECISION (2)
/* Precision in chars. */
#define D_PRECISION_CHARS (8)
#define F_PRECISION_CHARS (4)
/* Length in LittleNums of guard bits. */
#define GUARD (2)
static const long int mask[] =
{
0x00000000,
0x00000001,
0x00000003,
0x00000007,
0x0000000f,
0x0000001f,
0x0000003f,
0x0000007f,
0x000000ff,
0x000001ff,
0x000003ff,
0x000007ff,
0x00000fff,
0x00001fff,
0x00003fff,
0x00007fff,
0x0000ffff,
0x0001ffff,
0x0003ffff,
0x0007ffff,
0x000fffff,
0x001fffff,
0x003fffff,
0x007fffff,
0x00ffffff,
0x01ffffff,
0x03ffffff,
0x07ffffff,
0x0fffffff,
0x1fffffff,
0x3fffffff,
0x7fffffff,
0xffffffff
};
/* Shared between flonum_gen2tahoe and next_bits. */
static int bits_left_in_littlenum;
static LITTLENUM_TYPE *littlenum_pointer;
static LITTLENUM_TYPE *littlenum_end;
#if __STDC__ == 1
int flonum_gen2tahoe (int format_letter, FLONUM_TYPE * f,
LITTLENUM_TYPE * words);
#else /* not __STDC__ */
int flonum_gen2tahoe ();
#endif /* not __STDC__ */
static int
next_bits (number_of_bits)
int number_of_bits;
{
int return_value;
if (littlenum_pointer < littlenum_end)
return 0;
if (number_of_bits >= bits_left_in_littlenum)
{
return_value = mask[bits_left_in_littlenum] & *littlenum_pointer;
number_of_bits -= bits_left_in_littlenum;
return_value <<= number_of_bits;
bits_left_in_littlenum = LITTLENUM_NUMBER_OF_BITS - number_of_bits;
littlenum_pointer--;
if (littlenum_pointer >= littlenum_end)
return_value |= ((*littlenum_pointer) >> (bits_left_in_littlenum)) &
mask[number_of_bits];
}
else
{
bits_left_in_littlenum -= number_of_bits;
return_value = mask[number_of_bits] &
((*littlenum_pointer) >> bits_left_in_littlenum);
}
return return_value;
}
static void
make_invalid_floating_point_number (words)
LITTLENUM_TYPE *words;
{
/* Floating Reserved Operand Code. */
*words = 0x8000;
}
static int /* 0 means letter is OK. */
what_kind_of_float (letter, precisionP, exponent_bitsP)
/* In: lowercase please. What kind of float? */
char letter;
/* Number of 16-bit words in the float. */
int *precisionP;
/* Number of exponent bits. */
long int *exponent_bitsP;
{
int retval; /* 0: OK. */
retval = 0;
switch (letter)
{
case 'f':
*precisionP = F_PRECISION;
*exponent_bitsP = 8;
break;
case 'd':
*precisionP = D_PRECISION;
*exponent_bitsP = 8;
break;
default:
retval = 69;
break;
}
return (retval);
}
/* Warning: This returns 16-bit LITTLENUMs, because that is what the
VAX thinks in. It is up to the caller to figure out any alignment
problems and to conspire for the bytes/word to be emitted in the
right order. Bigendians beware! */
char * /* Return pointer past text consumed. */
atof_tahoe (str, what_kind, words)
char *str; /* Text to convert to binary. */
char what_kind; /* 'd', 'f', 'g', 'h' */
LITTLENUM_TYPE *words; /* Build the binary here. */
{
FLONUM_TYPE f;
LITTLENUM_TYPE bits[MAX_PRECISION + MAX_PRECISION + GUARD];
/* Extra bits for zeroed low-order bits. */
/* The 1st MAX_PRECISION are zeroed, the last contain flonum bits. */
char *return_value;
int precision; /* Number of 16-bit words in the format. */
long int exponent_bits;
return_value = str;
f.low = bits + MAX_PRECISION;
f.high = NULL;
f.leader = NULL;
f.exponent = NULL;
f.sign = '\0';
if (what_kind_of_float (what_kind, &precision, &exponent_bits))
{
/* We lost. */
return_value = NULL;
make_invalid_floating_point_number (words);
}
if (return_value)
{
memset (bits, '\0', sizeof (LITTLENUM_TYPE) * MAX_PRECISION);
/* Use more LittleNums than seems necessary:
the highest flonum may have 15 leading 0 bits, so could be
useless. */
f.high = f.low + precision - 1 + GUARD;
if (atof_generic (&return_value, ".", "eE", &f))
{
make_invalid_floating_point_number (words);
/* We lost. */
return_value = NULL;
}
else
{
if (flonum_gen2tahoe (what_kind, &f, words))
return_value = NULL;
}
}
return return_value;
}
/* In: a flonum, a Tahoe floating point format.
Out: a Tahoe floating-point bit pattern. */
int /* 0: OK. */
flonum_gen2tahoe (format_letter, f, words)
char format_letter; /* One of 'd' 'f'. */
FLONUM_TYPE *f;
LITTLENUM_TYPE *words; /* Deliver answer here. */
{
LITTLENUM_TYPE *lp;
int precision;
long int exponent_bits;
int return_value; /* 0 == OK. */
return_value =
what_kind_of_float (format_letter, &precision, &exponent_bits);
if (return_value != 0)
{
make_invalid_floating_point_number (words);
}
else
{
if (f->low > f->leader)
{
/* 0.0e0 seen. */
memset (words, '\0', sizeof (LITTLENUM_TYPE) * precision);
}
else
{
long int exponent_1;
long int exponent_2;
long int exponent_3;
long int exponent_4;
int exponent_skippage;
LITTLENUM_TYPE word1;
/* JF: Deal with new Nan, +Inf and -Inf codes. */
if (f->sign != '-' && f->sign != '+')
{
make_invalid_floating_point_number (words);
return return_value;
}
/* All tahoe floating_point formats have:
Bit 15 is sign bit.
Bits 14:n are excess-whatever exponent.
Bits n-1:0 (if any) are most significant bits of fraction.
Bits 15:0 of the next word are the next most significant bits.
And so on for each other word.
So we need: number of bits of exponent, number of bits of
mantissa. */
bits_left_in_littlenum = LITTLENUM_NUMBER_OF_BITS;
littlenum_pointer = f->leader;
littlenum_end = f->low;
/* Seek (and forget) 1st significant bit. */
for (exponent_skippage = 0;
!next_bits (1);
exponent_skippage++)
;
exponent_1 = f->exponent + f->leader + 1 - f->low;
/* Radix LITTLENUM_RADIX, point just higher than f -> leader. */
exponent_2 = exponent_1 * LITTLENUM_NUMBER_OF_BITS;
/* Radix 2. */
exponent_3 = exponent_2 - exponent_skippage;
/* Forget leading zeros, forget 1st bit. */
exponent_4 = exponent_3 + (1 << (exponent_bits - 1));
/* Offset exponent. */
if (exponent_4 & ~mask[exponent_bits])
{
/* Exponent overflow. Lose immediately. */
make_invalid_floating_point_number (words);
/* We leave return_value alone: admit we read the
number, but return a floating exception because we
can't encode the number. */
}
else
{
lp = words;
/* Word 1. Sign, exponent and perhaps high bits. */
/* Assume 2's complement integers. */
word1 = ((exponent_4 & mask[exponent_bits])
<< (15 - exponent_bits))
| ((f->sign == '+') ? 0 : 0x8000)
| next_bits (15 - exponent_bits);
*lp++ = word1;
/* The rest of the words are just mantissa bits. */
for (; lp < words + precision; lp++)
*lp = next_bits (LITTLENUM_NUMBER_OF_BITS);
if (next_bits (1))
{
/* Since the NEXT bit is a 1, round UP the mantissa.
The cunning design of these hidden-1 floats permits
us to let the mantissa overflow into the exponent, and
it 'does the right thing'. However, we lose if the
highest-order bit of the lowest-order word flips.
Is that clear? */
unsigned long int carry;
/* #if (sizeof(carry)) < ((sizeof(bits[0]) *
BITS_PER_CHAR) + 2) Please allow at least 1 more
bit in carry than is in a LITTLENUM. We need
that extra bit to hold a carry during a LITTLENUM
carry propagation. Another extra bit (kept 0)
will assure us that we don't get a sticky sign
bit after shifting right, and that permits us to
propagate the carry without any masking of bits.
#endif */
for (carry = 1, lp--;
carry && (lp >= words);
lp--)
{
carry = *lp + carry;
*lp = carry;
carry >>= LITTLENUM_NUMBER_OF_BITS;
}
if ((word1 ^ *words)
& (1 << (LITTLENUM_NUMBER_OF_BITS - 1)))
{
make_invalid_floating_point_number (words);
/* We leave return_value alone: admit we read
the number, but return a floating exception
because we can't encode the number. */
}
} /* if (we needed to round up) */
} /* if (exponent overflow) */
} /* if (0.0e0) */
} /* if (float_type was OK) */
return return_value;
}
/* In: input_line_pointer -> the 1st character of a floating-point
* number.
* 1 letter denoting the type of statement that wants a
* binary floating point number returned.
* Address of where to build floating point literal.
* Assumed to be 'big enough'.
* Address of where to return size of literal (in chars).
*
* Out: Input_line_pointer -> of next char after floating number.
* Error message, or 0.
* Floating point literal.
* Number of chars we used for the literal. */
char *
md_atof (what_statement_type, literalP, sizeP)
char what_statement_type;
char *literalP;
int *sizeP;
{
LITTLENUM_TYPE words[MAX_PRECISION];
register char kind_of_float;
register int number_of_chars;
register LITTLENUM_TYPE *littlenum_pointer;
switch (what_statement_type)
{
case 'f': /* .ffloat */
case 'd': /* .dfloat */
kind_of_float = what_statement_type;
break;
default:
kind_of_float = 0;
break;
}
if (kind_of_float)
{
register LITTLENUM_TYPE *limit;
input_line_pointer = atof_tahoe (input_line_pointer,
kind_of_float,
words);
/* The atof_tahoe() builds up 16-bit numbers.
Since the assembler may not be running on
a different-endian machine, be very careful about
converting words to chars. */
number_of_chars = (kind_of_float == 'f' ? F_PRECISION_CHARS :
(kind_of_float == 'd' ? D_PRECISION_CHARS : 0));
know (number_of_chars <= MAX_PRECISION * sizeof (LITTLENUM_TYPE));
limit = words + (number_of_chars / sizeof (LITTLENUM_TYPE));
for (littlenum_pointer = words;
littlenum_pointer < limit;
littlenum_pointer++)
{
md_number_to_chars (literalP, *littlenum_pointer,
sizeof (LITTLENUM_TYPE));
literalP += sizeof (LITTLENUM_TYPE);
}
}
else
{
number_of_chars = 0;
}
*sizeP = number_of_chars;
return kind_of_float ? 0 : _("Bad call to md_atof()");
}

View File

@ -1,559 +0,0 @@
/* m88k-opcode.h -- Instruction information for the Motorola 88000
Contributed by Devon Bowen of Buffalo University
and Torbjorn Granlund of the Swedish Institute of Computer Science.
Copyright 1989, 1990, 1991, 1993, 2000 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
#if !defined(__STDC__) && !defined(const)
#define const
#endif
/*
Character codes for op_spec field below.
Reserved for self-matching: [ ] ,
d = GRF Destination register (21:5)
x = XRF register prefix. Makes next d, 1, or 2, match an extended register.
1 = Source register 1 (16:5)
2 = Source register 2 (0:5)
3 = Both source registers (same value) (0:5 and 16:5)
I = IMM16 (0:16)
b = bit field spec. (0:10)
p = 16 bit pc displ. (0:16)
P = 26 bit pc displ. (0:26)
B = bb0/bb1 condition (21:5)
M = bcnd condition (21:5)
f = fcr (5:6)
c = cr (5:6)
V = VEC9 (0:9)
o = O6 field of "prot" insn (10:7)
? = Give warning for this insn/operand combination
*/
/* instruction descriptor structure */
struct m88k_opcode
{
unsigned int opcode;
char *name;
char *op_spec;
};
/* and introducing... the Motorola 88100 and 88110 instruction sets... */
/* By default, include the 88110 instructions. */
#define MC88110
#if defined (MC88110)
#define _MC88100(OPCODE,MNEM,OP_SPEC)
#define _MC88110(OPCODE,MNEM,OP_SPEC) {OPCODE,MNEM,OP_SPEC},
#else
#define _MC88100(OPCODE,MNEM,OP_SPEC) {OPCODE,MNEM,OP_SPEC},
#define _MC88110(OPCODE,MNEM,OP_SPEC)
#endif
#define _MC88xxx(OPCODE,MNEM,OP_SPEC) {OPCODE,MNEM,OP_SPEC},
/* Equal mnemonics must be adjacent.
More specific operand specification must go before more general.
For example, "d,1,2" must go before "d,1,I" as a register for s2
would otherwise be considered a variable name. */
static struct m88k_opcode m88k_opcodes[] =
{
/* Opcode Mnemonic Opspec */
_MC88xxx (0xf4007000, "add", "d,1,2")
_MC88xxx (0x70000000, "add", "d,1,I")
_MC88xxx (0xf4007200, "add.ci", "d,1,2")
_MC88xxx (0xf4007300, "add.cio", "d,1,2")
_MC88xxx (0xf4007100, "add.co", "d,1,2")
_MC88xxx (0xf4006000, "addu", "d,1,2")
_MC88xxx (0x60000000, "addu", "d,1,I")
_MC88xxx (0xf4006200, "addu.ci", "d,1,2")
_MC88xxx (0xf4006300, "addu.cio", "d,1,2")
_MC88xxx (0xf4006100, "addu.co", "d,1,2")
_MC88xxx (0xf4004000, "and", "d,1,2")
_MC88xxx (0x40000000, "and", "d,1,I")
_MC88xxx (0xf4004400, "and.c", "d,1,2")
_MC88xxx (0x44000000, "and.u", "d,1,I")
_MC88xxx (0xd0000000, "bb0", "B,1,p")
_MC88xxx (0xd4000000, "bb0.n", "B,1,p")
_MC88xxx (0xd8000000, "bb1", "B,1,p")
_MC88xxx (0xdc000000, "bb1.n", "B,1,p")
_MC88xxx (0xe8000000, "bcnd", "M,1,p")
_MC88xxx (0xec000000, "bcnd.n", "M,1,p")
_MC88xxx (0xc0000000, "br", "P")
_MC88xxx (0xc4000000, "br.n", "P")
_MC88xxx (0xc8000000, "bsr", "P")
_MC88xxx (0xcc000000, "bsr.n", "P")
_MC88xxx (0xf4008000, "clr", "d,1,2")
_MC88xxx (0xf0008000, "clr", "d,1,b")
_MC88xxx (0xf4007c00, "cmp", "d,1,2")
_MC88xxx (0x7c000000, "cmp", "d,1,I")
_MC88xxx (0xf4007800, "div", "d,1,2")
_MC88xxx (0x78000000, "div", "d,1,I")
_MC88xxx (0xf4007800, "divs", "d,1,2")
_MC88xxx (0x78000000, "divs", "d,1,I")
_MC88110 (0xf4006900, "divu.d", "d,1,2")
_MC88xxx (0xf4006800, "divu", "d,1,2")
_MC88xxx (0x68000000, "divu", "d,1,I")
_MC88xxx (0xf4009000, "ext", "d,1,2")
_MC88xxx (0xf0009000, "ext", "d,1,b")
_MC88xxx (0xf4009800, "extu", "d,1,2")
_MC88xxx (0xf0009800, "extu", "d,1,b")
_MC88xxx (0x84002800, "fadd.sss", "d,1,2")
_MC88110 (0x8400a800, "fadd.sss", "xd,x1,x2")
_MC88xxx (0x84002880, "fadd.ssd", "d,1,2")
_MC88110 (0x8400a820, "fadd.ssd", "xd,x1,x2")
_MC88110 (0x8400a840, "fadd.ssx", "xd,x1,x2")
_MC88xxx (0x84002a00, "fadd.sds", "d,1,2")
_MC88110 (0x8400a880, "fadd.sds", "xd,x1,x2")
_MC88xxx (0x84002a80, "fadd.sdd", "d,1,2")
_MC88110 (0x8400a8a0, "fadd.sdd", "xd,x1,x2")
_MC88110 (0x8400a8c0, "fadd.sdx", "xd,x1,x2")
_MC88110 (0x8400a900, "fadd.sxs", "xd,x1,x2")
_MC88110 (0x8400a920, "fadd.sxd", "xd,x1,x2")
_MC88110 (0x8400a940, "fadd.sxx", "xd,x1,x2")
_MC88xxx (0x84002820, "fadd.dss", "d,1,2")
_MC88110 (0x8400aa00, "fadd.dss", "xd,x1,x2")
_MC88xxx (0x840028a0, "fadd.dsd", "d,1,2")
_MC88110 (0x8400aa20, "fadd.dsd", "xd,x1,x2")
_MC88110 (0x8400aa40, "fadd.dsx", "xd,x1,x2")
_MC88xxx (0x84002a20, "fadd.dds", "d,1,2")
_MC88110 (0x8400aa80, "fadd.dds", "xd,x1,x2")
_MC88xxx (0x84002aa0, "fadd.ddd", "d,1,2")
_MC88110 (0x8400aaa0, "fadd.ddd", "xd,x1,x2")
_MC88110 (0x8400aac0, "fadd.ddx", "xd,x1,x2")
_MC88110 (0x8400ab00, "fadd.dxs", "xd,x1,x2")
_MC88110 (0x8400ab20, "fadd.dxd", "xd,x1,x2")
_MC88110 (0x8400ab40, "fadd.dxx", "xd,x1,x2")
_MC88110 (0x8400ac00, "fadd.xss", "xd,x1,x2")
_MC88110 (0x8400ac20, "fadd.xsd", "xd,x1,x2")
_MC88110 (0x8400ac40, "fadd.xsx", "xd,x1,x2")
_MC88110 (0x8400ac80, "fadd.xds", "xd,x1,x2")
_MC88110 (0x8400aca0, "fadd.xdd", "xd,x1,x2")
_MC88110 (0x8400acc0, "fadd.xdx", "xd,x1,x2")
_MC88110 (0x8400ad00, "fadd.xxs", "xd,x1,x2")
_MC88110 (0x8400ad20, "fadd.xxd", "xd,x1,x2")
_MC88110 (0x8400ad40, "fadd.xxx", "xd,x1,x2")
_MC88xxx (0x84003a80, "fcmp.sdd", "d,1,2")
_MC88110 (0x8400ba80, "fcmp.sdd", "d,x1,x2")
_MC88xxx (0x84003a00, "fcmp.sds", "d,1,2")
_MC88110 (0x8400ba00, "fcmp.sds", "d,x1,x2")
_MC88110 (0x8400bb00, "fcmp.sdx", "d,x1,x2")
_MC88xxx (0x84003880, "fcmp.ssd", "d,1,2")
_MC88110 (0x8400b880, "fcmp.ssd", "d,x1,x2")
_MC88xxx (0x84003800, "fcmp.sss", "d,1,2")
_MC88110 (0x8400b800, "fcmp.sss", "d,x1,x2")
_MC88110 (0x8400b900, "fcmp.ssx", "d,x1,x2")
_MC88110 (0x8400bc80, "fcmp.sxd", "d,x1,x2")
_MC88110 (0x8400bc00, "fcmp.sxs", "d,x1,x2")
_MC88110 (0x8400bd00, "fcmp.sxx", "d,x1,x2")
_MC88110 (0x84003aa0, "fcmpu.sdd", "d,1,2")
_MC88110 (0x8400baa0, "fcmpu.sdd", "d,x1,x2")
_MC88110 (0x84003a20, "fcmpu.sds", "d,1,2")
_MC88110 (0x8400ba20, "fcmpu.sds", "d,x1,x2")
_MC88110 (0x8400bb20, "fcmpu.sdx", "d,x1,x2")
_MC88110 (0x840038a0, "fcmpu.ssd", "d,1,2")
_MC88110 (0x8400b8a0, "fcmpu.ssd", "d,x1,x2")
_MC88110 (0x84003820, "fcmpu.sss", "d,1,2")
_MC88110 (0x8400b820, "fcmpu.sss", "d,x1,x2")
_MC88110 (0x8400b920, "fcmpu.ssx", "d,x1,x2")
_MC88110 (0x8400bca0, "fcmpu.sxd", "d,x1,x2")
_MC88110 (0x8400bc20, "fcmpu.sxs", "d,x1,x2")
_MC88110 (0x8400bd20, "fcmpu.sxx", "d,x1,x2")
_MC88110 (0x84000880, "fcvt.ds", "d,2")
_MC88110 (0x84008880, "fcvt.ds", "xd,x2")
_MC88110 (0x840088c0, "fcvt.dx", "xd,x2")
_MC88110 (0x84000820, "fcvt.sd", "d,2")
_MC88110 (0x84008820, "fcvt.sd", "xd,x2")
_MC88110 (0x84008840, "fcvt.sx", "xd,x2")
_MC88110 (0x84008920, "fcvt.xd", "xd,x2")
_MC88110 (0x84008900, "fcvt.xs", "xd,x2")
_MC88xxx (0x84007000, "fdiv.sss", "d,1,2")
_MC88110 (0x8400f000, "fdiv.sss", "xd,x1,x2")
_MC88xxx (0x84007080, "fdiv.ssd", "d,1,2")
_MC88110 (0x8400f020, "fdiv.ssd", "xd,x1,x2")
_MC88110 (0x8400f040, "fdiv.ssx", "xd,x1,x2")
_MC88xxx (0x84007200, "fdiv.sds", "d,1,2")
_MC88110 (0x8400f080, "fdiv.sds", "xd,x1,x2")
_MC88xxx (0x84007280, "fdiv.sdd", "d,1,2")
_MC88110 (0x8400f0a0, "fdiv.sdd", "xd,x1,x2")
_MC88110 (0x8400f0c0, "fdiv.sdx", "xd,x1,x2")
_MC88110 (0x8400f100, "fdiv.sxs", "xd,x1,x2")
_MC88110 (0x8400f120, "fdiv.sxd", "xd,x1,x2")
_MC88110 (0x8400f140, "fdiv.sxx", "xd,x1,x2")
_MC88xxx (0x84007020, "fdiv.dss", "d,1,2")
_MC88110 (0x8400f200, "fdiv.dss", "xd,x1,x2")
_MC88xxx (0x840070a0, "fdiv.dsd", "d,1,2")
_MC88110 (0x8400f220, "fdiv.dsd", "xd,x1,x2")
_MC88110 (0x8400f240, "fdiv.dsx", "xd,x1,x2")
_MC88xxx (0x84007220, "fdiv.dds", "d,1,2")
_MC88110 (0x8400f280, "fdiv.dds", "xd,x1,x2")
_MC88xxx (0x840072a0, "fdiv.ddd", "d,1,2")
_MC88110 (0x8400f2a0, "fdiv.ddd", "xd,x1,x2")
_MC88110 (0x8400f2c0, "fdiv.ddx", "xd,x1,x2")
_MC88110 (0x8400f300, "fdiv.dxs", "xd,x1,x2")
_MC88110 (0x8400f320, "fdiv.dxd", "xd,x1,x2")
_MC88110 (0x8400f340, "fdiv.dxx", "xd,x1,x2")
_MC88110 (0x8400f400, "fdiv.xss", "xd,x1,x2")
_MC88110 (0x8400f420, "fdiv.xsd", "xd,x1,x2")
_MC88110 (0x8400f440, "fdiv.xsx", "xd,x1,x2")
_MC88110 (0x8400f480, "fdiv.xds", "xd,x1,x2")
_MC88110 (0x8400f4a0, "fdiv.xdd", "xd,x1,x2")
_MC88110 (0x8400f4c0, "fdiv.xdx", "xd,x1,x2")
_MC88110 (0x8400f500, "fdiv.xxs", "xd,x1,x2")
_MC88110 (0x8400f520, "fdiv.xxd", "xd,x1,x2")
_MC88110 (0x8400f540, "fdiv.xxx", "xd,x1,x2")
_MC88xxx (0xf400ec00, "ff0", "d,2")
_MC88xxx (0xf400e800, "ff1", "d,2")
_MC88xxx (0x80004800, "fldcr", "d,f")
_MC88xxx (0x84002020, "flt.ds", "d,2")
_MC88110 (0x84002220, "flt.ds", "xd,2")
_MC88xxx (0x84002000, "flt.ss", "d,2")
_MC88110 (0x84002200, "flt.ss", "xd,2")
_MC88110 (0x84002240, "flt.xs", "xd,2")
_MC88xxx (0x84000000, "fmul.sss", "d,1,2")
_MC88110 (0x84008000, "fmul.sss", "xd,x1,x2")
_MC88xxx (0x84000080, "fmul.ssd", "d,1,2")
_MC88110 (0x84008020, "fmul.ssd", "xd,x1,x2")
_MC88110 (0x84008040, "fmul.ssx", "xd,x1,x2")
_MC88xxx (0x84000200, "fmul.sds", "d,1,2")
_MC88110 (0x84008080, "fmul.sds", "xd,x1,x2")
_MC88xxx (0x84000280, "fmul.sdd", "d,1,2")
_MC88110 (0x840080a0, "fmul.sdd", "xd,x1,x2")
_MC88110 (0x840080c0, "fmul.sdx", "xd,x1,x2")
_MC88110 (0x84008100, "fmul.sxs", "xd,x1,x2")
_MC88110 (0x84008120, "fmul.sxd", "xd,x1,x2")
_MC88110 (0x84008140, "fmul.sxx", "xd,x1,x2")
_MC88xxx (0x84000020, "fmul.dss", "d,1,2")
_MC88110 (0x84008200, "fmul.dss", "xd,x1,x2")
_MC88xxx (0x840000a0, "fmul.dsd", "d,1,2")
_MC88110 (0x84008220, "fmul.dsd", "xd,x1,x2")
_MC88110 (0x84008240, "fmul.dsx", "xd,x1,x2")
_MC88xxx (0x84000220, "fmul.dds", "d,1,2")
_MC88110 (0x84008280, "fmul.dds", "xd,x1,x2")
_MC88xxx (0x840002a0, "fmul.ddd", "d,1,2")
_MC88110 (0x840082a0, "fmul.ddd", "xd,x1,x2")
_MC88110 (0x840082c0, "fmul.ddx", "xd,x1,x2")
_MC88110 (0x84008300, "fmul.dxs", "xd,x1,x2")
_MC88110 (0x84008320, "fmul.dxd", "xd,x1,x2")
_MC88110 (0x84008340, "fmul.dxx", "xd,x1,x2")
_MC88110 (0x84008400, "fmul.xss", "xd,x1,x2")
_MC88110 (0x84008420, "fmul.xsd", "xd,x1,x2")
_MC88110 (0x84008440, "fmul.xsx", "xd,x1,x2")
_MC88110 (0x84008480, "fmul.xds", "xd,x1,x2")
_MC88110 (0x840084a0, "fmul.xdd", "xd,x1,x2")
_MC88110 (0x840084c0, "fmul.xdx", "xd,x1,x2")
_MC88110 (0x84008500, "fmul.xxs", "xd,x1,x2")
_MC88110 (0x84008520, "fmul.xxd", "xd,x1,x2")
_MC88110 (0x84008540, "fmul.xxx", "xd,x1,x2")
_MC88110 (0x840078a0, "fsqrt.dd", "d,2")
_MC88110 (0x8400f8a0, "fsqrt.dd", "xd,x2")
_MC88110 (0x84007880, "fsqrt.ds", "d,2")
_MC88110 (0x8400f880, "fsqrt.ds", "xd,x2")
_MC88110 (0x8400f8c0, "fsqrt.dx", "xd,x2")
_MC88110 (0x84007820, "fsqrt.sd", "d,2")
_MC88110 (0x8400f820, "fsqrt.sd", "xd,x2")
_MC88110 (0x84007800, "fsqrt.ss", "d,2")
_MC88110 (0x8400f800, "fsqrt.ss", "xd,x2")
_MC88110 (0x8400f840, "fsqrt.sx", "xd,x2")
_MC88110 (0x8400f920, "fsqrt.xd", "xd,x2")
_MC88110 (0x8400f900, "fsqrt.xs", "xd,x2")
_MC88110 (0x8400f940, "fsqrt.xx", "xd,x2")
_MC88xxx (0x80008800, "fstcr", "3,f")
_MC88xxx (0x84003000, "fsub.sss", "d,1,2")
_MC88110 (0x8400b000, "fsub.sss", "xd,x1,x2")
_MC88xxx (0x84003080, "fsub.ssd", "d,1,2")
_MC88110 (0x8400b020, "fsub.ssd", "xd,x1,x2")
_MC88110 (0x8400b040, "fsub.ssx", "xd,x1,x2")
_MC88xxx (0x84003200, "fsub.sds", "d,1,2")
_MC88110 (0x8400b080, "fsub.sds", "xd,x1,x2")
_MC88xxx (0x84003280, "fsub.sdd", "d,1,2")
_MC88110 (0x8400b0a0, "fsub.sdd", "xd,x1,x2")
_MC88110 (0x8400b0c0, "fsub.sdx", "xd,x1,x2")
_MC88110 (0x8400b100, "fsub.sxs", "xd,x1,x2")
_MC88110 (0x8400b120, "fsub.sxd", "xd,x1,x2")
_MC88110 (0x8400b140, "fsub.sxx", "xd,x1,x2")
_MC88xxx (0x84003020, "fsub.dss", "d,1,2")
_MC88110 (0x8400b200, "fsub.dss", "xd,x1,x2")
_MC88xxx (0x840030a0, "fsub.dsd", "d,1,2")
_MC88110 (0x8400b220, "fsub.dsd", "xd,x1,x2")
_MC88110 (0x8400b240, "fsub.dsx", "xd,x1,x2")
_MC88xxx (0x84003220, "fsub.dds", "d,1,2")
_MC88110 (0x8400b280, "fsub.dds", "xd,x1,x2")
_MC88xxx (0x840032a0, "fsub.ddd", "d,1,2")
_MC88110 (0x8400b2a0, "fsub.ddd", "xd,x1,x2")
_MC88110 (0x8400b2c0, "fsub.ddx", "xd,x1,x2")
_MC88110 (0x8400b300, "fsub.dxs", "xd,x1,x2")
_MC88110 (0x8400b320, "fsub.dxd", "xd,x1,x2")
_MC88110 (0x8400b340, "fsub.dxx", "xd,x1,x2")
_MC88110 (0x8400b400, "fsub.xss", "xd,x1,x2")
_MC88110 (0x8400b420, "fsub.xsd", "xd,x1,x2")
_MC88110 (0x8400b440, "fsub.xsx", "xd,x1,x2")
_MC88110 (0x8400b480, "fsub.xds", "xd,x1,x2")
_MC88110 (0x8400b4a0, "fsub.xdd", "xd,x1,x2")
_MC88110 (0x8400b4c0, "fsub.xdx", "xd,x1,x2")
_MC88110 (0x8400b500, "fsub.xxs", "xd,x1,x2")
_MC88110 (0x8400b520, "fsub.xxd", "xd,x1,x2")
_MC88110 (0x8400b540, "fsub.xxx", "xd,x1,x2")
_MC88xxx (0x8000c800, "fxcr", "d,3,f")
_MC88xxx (0x8400fc01, "illop1", "")
_MC88xxx (0x8400fc02, "illop2", "")
_MC88xxx (0x8400fc03, "illop3", "")
_MC88xxx (0x84004880, "int.sd", "d,2")
_MC88110 (0x8400c880, "int.sd", "d,x2")
_MC88xxx (0x84004800, "int.ss", "d,2")
_MC88110 (0x8400c800, "int.ss", "d,x2")
_MC88110 (0x8400c900, "int.sx", "d,x2")
_MC88xxx (0xf400c000, "jmp", "2")
_MC88xxx (0xf400c400, "jmp.n", "2")
_MC88xxx (0xf400c800, "jsr", "2")
_MC88xxx (0xf400cc00, "jsr.n", "2")
_MC88xxx (0xf4001400, "ld", "d,1,2")
_MC88xxx (0xf4001600, "ld", "d,1[2]")
_MC88xxx (0x14000000, "ld", "d,1,I")
_MC88110 (0xf0001600, "ld", "xd,1[2]")
_MC88110 (0xf0001400, "ld", "xd,1,2")
_MC88110 (0x04000000, "ld", "xd,1,I")
_MC88xxx (0xf4001e00, "ld.b", "d,1[2]")
_MC88xxx (0xf4001c00, "ld.b", "d,1,2")
_MC88xxx (0x1c000000, "ld.b", "d,1,I")
_MC88xxx (0xf4001d00, "ld.b.usr", "d,1,2")
_MC88xxx (0xf4001f00, "ld.b.usr", "d,1[2]")
_MC88xxx (0xf4000e00, "ld.bu", "d,1[2]")
_MC88xxx (0xf4000c00, "ld.bu", "d,1,2")
_MC88xxx (0x0c000000, "ld.bu", "d,1,I")
_MC88xxx (0xf4000d00, "ld.bu.usr", "d,1,2")
_MC88xxx (0xf4000f00, "ld.bu.usr", "d,1[2]")
_MC88xxx (0xf4001200, "ld.d", "d,1[2]")
_MC88xxx (0xf4001000, "ld.d", "d,1,2")
_MC88xxx (0x10000000, "ld.d", "d,1,I")
_MC88110 (0xf0001200, "ld.d", "xd,1[2]")
_MC88110 (0xf0001000, "ld.d", "xd,1,2")
_MC88110 (0x00000000, "ld.d", "xd,1,I")
_MC88xxx (0xf4001100, "ld.d.usr", "d,1,2")
_MC88xxx (0xf4001300, "ld.d.usr", "d,1[2]")
_MC88110 (0xf0001100, "ld.d.usr", "xd,1,2")
_MC88110 (0xf0001300, "ld.d.usr", "xd,1[2]")
_MC88xxx (0xf4001a00, "ld.h", "d,1[2]")
_MC88xxx (0xf4001800, "ld.h", "d,1,2")
_MC88xxx (0x18000000, "ld.h", "d,1,I")
_MC88xxx (0xf4001900, "ld.h.usr", "d,1,2")
_MC88xxx (0xf4001b00, "ld.h.usr", "d,1[2]")
_MC88xxx (0xf4000a00, "ld.hu", "d,1[2]")
_MC88xxx (0xf4000800, "ld.hu", "d,1,2")
_MC88xxx (0x08000000, "ld.hu", "d,1,I")
_MC88xxx (0xf4000900, "ld.hu.usr", "d,1,2")
_MC88xxx (0xf4000b00, "ld.hu.usr", "d,1[2]")
_MC88xxx (0xf4001500, "ld.usr", "d,1,2")
_MC88xxx (0xf4001700, "ld.usr", "d,1[2]")
_MC88110 (0xf0001500, "ld.usr", "xd,1,2")
_MC88110 (0xf0001700, "ld.usr", "xd,1[2]")
_MC88110 (0xf0001a00, "ld.x", "xd,1[2]")
_MC88110 (0xf0001800, "ld.x", "xd,1,2")
_MC88110 (0x3c000000, "ld.x", "xd,1,I")
_MC88110 (0xf0001900, "ld.x.usr", "xd,1,2")
_MC88110 (0xf0001b00, "ld.x.usr", "xd,1[2]")
_MC88xxx (0xf4003600, "lda", "d,1[2]")
_MC88xxx (0xf4006000, "lda", "?d,1,2") /* Output addu */
_MC88xxx (0x60000000, "lda", "?d,1,I") /* Output addu */
_MC88xxx (0xf4006000, "lda.b", "?d,1[2]") /* Output addu */
_MC88xxx (0xf4006000, "lda.b", "?d,1,2") /* Output addu */
_MC88xxx (0x60000000, "lda.b", "?d,1,I") /* Output addu */
_MC88xxx (0xf4003200, "lda.d", "d,1[2]")
_MC88xxx (0xf4006000, "lda.d", "?d,1,2") /* Output addu */
_MC88xxx (0x60000000, "lda.d", "?d,1,I") /* Output addu */
_MC88110 (0xf4003e00, "lda.x", "d,1[2]")
_MC88xxx (0xf4003a00, "lda.h", "d,1[2]")
_MC88xxx (0xf4006000, "lda.h", "?d,1,2") /* Output addu */
_MC88xxx (0x60000000, "lda.h", "?d,1,I") /* Output addu */
_MC88xxx (0x80004000, "ldcr", "d,c")
_MC88xxx (0xf400a000, "mak", "d,1,2")
_MC88xxx (0xf000a000, "mak", "d,1,b")
_MC88xxx (0x48000000, "mask", "d,1,I")
_MC88xxx (0x4c000000, "mask.u", "d,1,I")
_MC88110 (0x8400c000, "mov.s", "d,x2")
_MC88110 (0x84004200, "mov.s", "xd,2")
_MC88110 (0x8400c080, "mov.d", "d,x2")
_MC88110 (0x84004280, "mov.d", "xd,2")
_MC88110 (0x8400c300, "mov", "xd,x2")
_MC88xxx (0xf4006c00, "mul", "d,1,2")
_MC88xxx (0x6c000000, "mul", "d,1,I")
_MC88xxx (0xf4006e00, "muls", "d,1,2")
_MC88xxx (0x6c000000, "muls", "d,1,I")
_MC88xxx (0xf4006c00, "mulu", "d,1,2") /* synonym for mul */
_MC88xxx (0x6c000000, "mulu", "d,1,I") /* synonym for mul */
_MC88110 (0xf4006d00, "mulu.d", "d,1,2")
_MC88xxx (0x84005080, "nint.sd", "d,2")
_MC88110 (0x8400d080, "nint.sd", "d,x2")
_MC88xxx (0x84005000, "nint.ss", "d,2")
_MC88110 (0x8400d000, "nint.ss", "d,x2")
_MC88110 (0x8400d100, "nint.sx", "d,x2")
_MC88xxx (0xf4005800, "or", "d,1,2")
_MC88xxx (0x58000000, "or", "d,1,I")
_MC88xxx (0xf4005c00, "or.c", "d,1,2")
_MC88xxx (0x5c000000, "or.u", "d,1,I")
_MC88110 (0x88002020, "padd.b", "d,1,2")
_MC88110 (0x88002040, "padd.h", "d,1,2")
_MC88110 (0x88002060, "padd", "d,1,2")
_MC88110 (0x880020a0, "padds.u.b", "d,1,2")
_MC88110 (0x880020c0, "padds.u.h", "d,1,2")
_MC88110 (0x880020e0, "padds.u", "d,1,2")
_MC88110 (0x88002120, "padds.us.b", "d,1,2")
_MC88110 (0x88002140, "padds.us.h", "d,1,2")
_MC88110 (0x88002160, "padds.us", "d,1,2")
_MC88110 (0x880021a0, "padds.s.b", "d,1,2")
_MC88110 (0x880021c0, "padds.s.h", "d,1,2")
_MC88110 (0x880021e0, "padds.s", "d,1,2")
_MC88110 (0x88003860, "pcmp", "d,1,2")
_MC88110 (0x88000000, "pmul", "d,1,2")
_MC88110 (0x88006420, "ppack.32.b", "d,1,2")
_MC88110 (0x88006240, "ppack.16.h", "d,1,2")
_MC88110 (0x88006440, "ppack.32.h", "d,1,2")
_MC88110 (0x88006160, "ppack.8", "d,1,2")
_MC88110 (0x88006260, "ppack.16", "d,1,2")
_MC88110 (0x88006460, "ppack.32", "d,1,2")
_MC88110 (0x88007800, "prot", "d,1,2")
_MC88110 (0x88007000, "prot", "d,1,o")
_MC88110 (0x88003020, "psub.b", "d,1,2")
_MC88110 (0x88003040, "psub.h", "d,1,2")
_MC88110 (0x88003060, "psub", "d,1,2")
_MC88110 (0x880030a0, "psubs.u.b", "d,1,2")
_MC88110 (0x880030c0, "psubs.u.h", "d,1,2")
_MC88110 (0x880030e0, "psubs.u", "d,1,2")
_MC88110 (0x88003120, "psubs.us.b", "d,1,2")
_MC88110 (0x88003140, "psubs.us.h", "d,1,2")
_MC88110 (0x88003160, "psubs.us", "d,1,2")
_MC88110 (0x880031a0, "psubs.s.b", "d,1,2")
_MC88110 (0x880031c0, "psubs.s.h", "d,1,2")
_MC88110 (0x880031e0, "psubs.s", "d,1,2")
_MC88110 (0x88006800, "punpk.n", "d,1")
_MC88110 (0x88006820, "punpk.b", "d,1")
_MC88110 (0x88006840, "punpk.h", "d,1")
_MC88xxx (0xf400a800, "rot", "d,1,2")
_MC88xxx (0xf000a800, "rot", "d,1,b")
_MC88xxx (0xf400fc00, "rte", "")
_MC88xxx (0xf4008800, "set", "d,1,2")
_MC88xxx (0xf0008800, "set", "d,1,b")
_MC88xxx (0xf4002600, "st", "d,1[2]")
_MC88xxx (0xf4002400, "st", "d,1,2")
_MC88xxx (0x24000000, "st", "d,1,I")
_MC88110 (0xf0002600, "st", "xd,1[2]")
_MC88110 (0xf0002400, "st", "xd,1,2")
_MC88110 (0x34000000, "st", "xd,1,I")
_MC88xxx (0xf4002e00, "st.b", "d,1[2]")
_MC88xxx (0xf4002c00, "st.b", "d,1,2")
_MC88xxx (0x2c000000, "st.b", "d,1,I")
_MC88xxx (0xf4002d00, "st.b.usr", "d,1,2")
_MC88xxx (0xf4002f00, "st.b.usr", "d,1[2]")
_MC88110 (0xf4002d80, "st.b.usr.wt", "d,1,2")
_MC88110 (0xf4002f80, "st.b.usr.wt", "d,1[2]")
_MC88110 (0xf4002c80, "st.b.wt", "d,1,2")
_MC88110 (0xf4002e80, "st.b.wt", "d,1[2]")
_MC88xxx (0xf4002200, "st.d", "d,1[2]")
_MC88xxx (0xf4002000, "st.d", "d,1,2")
_MC88xxx (0x20000000, "st.d", "d,1,I")
_MC88110 (0xf0002200, "st.d", "xd,1[2]")
_MC88110 (0xf0002000, "st.d", "xd,1,2")
_MC88110 (0x30000000, "st.d", "xd,1,I")
_MC88xxx (0xf4002100, "st.d.usr", "d,1,2")
_MC88xxx (0xf4002300, "st.d.usr", "d,1[2]")
_MC88110 (0xf0002100, "st.d.usr", "xd,1,2")
_MC88110 (0xf0002300, "st.d.usr", "xd,1[2]")
_MC88110 (0xf4002180, "st.d.usr.wt", "d,1,2")
_MC88110 (0xf4002380, "st.d.usr.wt", "d,1[2]")
_MC88110 (0xf0002180, "st.d.usr.wt", "xd,1,2")
_MC88110 (0xf0002380, "st.d.usr.wt", "xd,1[2]")
_MC88110 (0xf4002080, "st.d.wt", "d,1,2")
_MC88110 (0xf4002280, "st.d.wt", "d,1[2]")
_MC88110 (0xf0002080, "st.d.wt", "xd,1,2")
_MC88110 (0xf0002280, "st.d.wt", "xd,1[2]")
_MC88xxx (0xf4002a00, "st.h", "d,1[2]")
_MC88xxx (0xf4002800, "st.h", "d,1,2")
_MC88xxx (0x28000000, "st.h", "d,1,I")
_MC88xxx (0xf4002900, "st.h.usr", "d,1,2")
_MC88xxx (0xf4002b00, "st.h.usr", "d,1[2]")
_MC88110 (0xf4002980, "st.h.usr.wt", "d,1,2")
_MC88110 (0xf4002b80, "st.h.usr.wt", "d,1[2]")
_MC88110 (0xf4002880, "st.h.wt", "d,1,2")
_MC88110 (0xf4002a80, "st.h.wt", "d,1[2]")
_MC88xxx (0xf4002500, "st.usr", "d,1,2")
_MC88xxx (0xf4002700, "st.usr", "d,1[2]")
_MC88110 (0xf0002500, "st.usr", "xd,1,2")
_MC88110 (0xf0002700, "st.usr", "xd,1[2]")
_MC88110 (0xf4002580, "st.usr.wt", "d,1,2")
_MC88110 (0xf4002780, "st.usr.wt", "d,1[2]")
_MC88110 (0xf0002580, "st.usr.wt", "xd,1,2")
_MC88110 (0xf0002780, "st.usr.wt", "xd,1[2]")
_MC88110 (0xf4002480, "st.wt", "d,1,2")
_MC88110 (0xf4002680, "st.wt", "d,1[2]")
_MC88110 (0xf0002480, "st.wt", "xd,1,2")
_MC88110 (0xf0002680, "st.wt", "xd,1[2]")
_MC88110 (0xf0002a00, "st.x", "xd,1[2]")
_MC88110 (0xf0002800, "st.x", "xd,1,2")
_MC88110 (0x38000000, "st.x", "xd,1,I")
_MC88110 (0xf0002900, "st.x.usr", "xd,1,2")
_MC88110 (0xf0002b00, "st.x.usr", "xd,1[2]")
_MC88110 (0xf0002980, "st.x.usr.wt", "xd,1,2")
_MC88110 (0xf0002b80, "st.x.usr.wt", "xd,1[2]")
_MC88110 (0xf0002880, "st.x.wt", "xd,1,2")
_MC88110 (0xf0002a80, "st.x.wt", "xd,1[2]")
_MC88xxx (0x80008000, "stcr", "3,c")
_MC88xxx (0xf4007400, "sub", "d,1,2")
_MC88xxx (0x74000000, "sub", "d,1,I")
_MC88xxx (0xf4007600, "sub.ci", "d,1,2")
_MC88xxx (0xf4007700, "sub.cio", "d,1,2")
_MC88xxx (0xf4007500, "sub.co", "d,1,2")
_MC88xxx (0xf4006400, "subu", "d,1,2")
_MC88xxx (0x64000000, "subu", "d,1,I")
_MC88xxx (0xf4006600, "subu.ci", "d,1,2")
_MC88xxx (0xf4006700, "subu.cio", "d,1,2")
_MC88xxx (0xf4006500, "subu.co", "d,1,2")
_MC88xxx (0xf000d000, "tb0", "B,1,V")
_MC88xxx (0xf000d800, "tb1", "B,1,V")
_MC88xxx (0xf400f800, "tbnd", "1,2")
_MC88xxx (0xf8000000, "tbnd", "1,I")
_MC88xxx (0xf000e800, "tcnd", "M,1,V")
_MC88xxx (0x84005880, "trnc.sd", "d,2")
_MC88110 (0x8400d880, "trnc.sd", "d,x2")
_MC88xxx (0x84005800, "trnc.ss", "d,2")
_MC88110 (0x8400d800, "trnc.ss", "d,x2")
_MC88110 (0x8400d900, "trnc.sx", "d,x2")
_MC88xxx (0x8000c000, "xcr", "d,3,c")
_MC88xxx (0xf4000600, "xmem", "d,1[2]")
_MC88xxx (0xf4000400, "xmem", "d,1,2")
_MC88100 (0x04000000, "xmem", "?d,1,I")
_MC88xxx (0xf4000200, "xmem.bu", "d,1[2]")
_MC88xxx (0xf4000000, "xmem.bu", "d,1,2")
_MC88100 (0x00000000, "xmem.bu", "?d,1,I")
_MC88xxx (0xf4000300, "xmem.bu.usr", "d,1[2]")
_MC88xxx (0xf4000100, "xmem.bu.usr", "d,1,2")
_MC88100 (0x00000100, "xmem.bu.usr", "?d,1,I")
_MC88xxx (0xf4000700, "xmem.usr", "d,1[2]")
_MC88xxx (0xf4000500, "xmem.usr", "d,1,2")
_MC88100 (0x04000100, "xmem.usr", "?d,1,I")
_MC88xxx (0xf4005000, "xor", "d,1,2")
_MC88xxx (0x50000000, "xor", "d,1,I")
_MC88xxx (0xf4005400, "xor.c", "d,1,2")
_MC88xxx (0x54000000, "xor.u", "d,1,I")
_MC88xxx (0x00000000, "", 0)
};
#define NUMOPCODES ((sizeof m88k_opcodes)/(sizeof m88k_opcodes[0]))

View File

@ -22,51 +22,10 @@
#define OBJ_HEADER "obj-aout.h"
#include "as.h"
#ifdef BFD_ASSEMBLER
#undef NO_RELOC
#include "aout/aout64.h"
#endif
#include "obstack.h"
#ifndef BFD_ASSEMBLER
/* in: segT out: N_TYPE bits. */
const short seg_N_TYPE[] =
{
N_ABS,
N_TEXT,
N_DATA,
N_BSS,
N_UNDF, /* Unknown. */
N_UNDF, /* Error. */
N_UNDF, /* Expression. */
N_UNDF, /* Debug. */
N_UNDF, /* Ntv. */
N_UNDF, /* Ptv. */
N_REGISTER, /* Register. */
};
const segT N_TYPE_seg[N_TYPE + 2] =
{ /* N_TYPE == 0x1E = 32-2 */
SEG_UNKNOWN, /* N_UNDF == 0 */
SEG_GOOF,
SEG_ABSOLUTE, /* N_ABS == 2 */
SEG_GOOF,
SEG_TEXT, /* N_TEXT == 4 */
SEG_GOOF,
SEG_DATA, /* N_DATA == 6 */
SEG_GOOF,
SEG_BSS, /* N_BSS == 8 */
SEG_GOOF,
SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF,
SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF,
SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF,
SEG_REGISTER, /* Dummy N_REGISTER for regs = 30. */
SEG_GOOF,
};
#endif
#ifdef BFD_ASSEMBLER
void
obj_aout_frob_symbol (symbolS *sym, int *punt ATTRIBUTE_UNUSED)
{
@ -176,137 +135,6 @@ obj_aout_frob_file_before_fix (void)
assert (x);
}
#else /* ! BFD_ASSEMBLER */
/* Relocation. */
/** Crawl along a fixS chain. Emit the segment's relocations. */
void
obj_emit_relocations (char **where,
fixS *fixP, /* Fixup chain for this segment. */
relax_addressT segment_address_in_file)
{
for (; fixP; fixP = fixP->fx_next)
if (fixP->fx_done == 0)
{
symbolS *sym;
sym = fixP->fx_addsy;
while (sym->sy_value.X_op == O_symbol
&& (! S_IS_DEFINED (sym) || S_IS_COMMON (sym)))
sym = sym->sy_value.X_add_symbol;
fixP->fx_addsy = sym;
if (! sym->sy_resolved && ! S_IS_DEFINED (sym))
{
char *file;
unsigned int line;
if (expr_symbol_where (sym, &file, &line))
as_bad_where (file, line, _("unresolved relocation"));
else
as_bad (_("bad relocation: symbol `%s' not in symbol table"),
S_GET_NAME (sym));
}
tc_aout_fix_to_chars (*where, fixP, segment_address_in_file);
*where += md_reloc_size;
}
}
#ifndef obj_header_append
/* Aout file generation & utilities. */
/* An AOUT header on disk is laid out in target byte order. */
void
obj_header_append (char **where, object_headers *headers)
{
char *p;
tc_headers_hook (headers);
#ifdef __A_OUT_GNU_H__
#define SIZEOF_HEADER(PIECE) (sizeof (((struct exec_bytes *) 0)->PIECE))
#else
#define SIZEOF_HEADER(PIECE) 4
#endif
#define DO(PIECE) \
md_number_to_chars (p, headers->header.PIECE, SIZEOF_HEADER (PIECE)); \
p += SIZEOF_HEADER (PIECE);
p = *where;
DO (a_info);
DO (a_text);
DO (a_data);
DO (a_bss);
DO (a_syms);
DO (a_entry);
DO (a_trsize);
DO (a_drsize);
*where = p;
#undef DO
#undef SIZEOF_HEADER
}
#endif /* ! defined (obj_header_append) */
void
obj_symbol_to_chars (char **where, symbolS *symbolP)
{
char *p = *where;
md_number_to_chars (p, S_GET_OFFSET (symbolP), 4);
p += 4;
/* Can't use S_GET_TYPE here as it masks. */
*p++ = symbolP->sy_symbol.n_type;
*p++ = symbolP->sy_symbol.n_other;
md_number_to_chars (p, S_GET_DESC (symbolP), 2);
p += 2;
md_number_to_chars (p, S_GET_VALUE (symbolP), 4);
p += 4;
*where = p;
}
void
obj_emit_symbols (char **where, symbolS *symbol_rootP)
{
symbolS *symbolP;
/* Emit all symbols left in the symbol chain. */
for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP))
{
/* Used to save the offset of the name. It is used to point
to the string in memory but must be a file offset. */
char *temp;
temp = S_GET_NAME (symbolP);
S_SET_OFFSET (symbolP, symbolP->sy_name_offset);
/* Any symbol still undefined and is not a dbg symbol is made N_EXT. */
if (!S_IS_DEBUG (symbolP) && !S_IS_DEFINED (symbolP))
S_SET_EXTERNAL (symbolP);
/* Adjust the type of a weak symbol. */
if (S_GET_WEAK (symbolP))
{
switch (S_GET_TYPE (symbolP))
{
case N_UNDF: S_SET_TYPE (symbolP, N_WEAKU); break;
case N_ABS: S_SET_TYPE (symbolP, N_WEAKA); break;
case N_TEXT: S_SET_TYPE (symbolP, N_WEAKT); break;
case N_DATA: S_SET_TYPE (symbolP, N_WEAKD); break;
case N_BSS: S_SET_TYPE (symbolP, N_WEAKB); break;
default: as_bad (_("%s: bad type for weak symbol"), temp); break;
}
}
obj_symbol_to_chars (where, symbolP);
S_SET_NAME (symbolP, temp);
}
}
#endif /* ! BFD_ASSEMBLER */
static void
obj_aout_line (int ignore ATTRIBUTE_UNUSED)
{
@ -381,136 +209,6 @@ obj_aout_type (int ignore ATTRIBUTE_UNUSED)
s_ignore (0);
}
#ifndef BFD_ASSEMBLER
void
obj_crawl_symbol_chain (object_headers *headers)
{
symbolS *symbolP;
symbolS **symbolPP;
int symbol_number = 0;
tc_crawl_symbol_chain (headers);
symbolPP = &symbol_rootP; /*->last symbol chain link. */
while ((symbolP = *symbolPP) != NULL)
{
if (symbolP->sy_mri_common)
{
if (S_IS_EXTERNAL (symbolP))
as_bad (_("%s: global symbols not supported in common sections"),
S_GET_NAME (symbolP));
*symbolPP = symbol_next (symbolP);
continue;
}
if (flag_readonly_data_in_text && (S_GET_SEGMENT (symbolP) == SEG_DATA))
{
S_SET_SEGMENT (symbolP, SEG_TEXT);
}
resolve_symbol_value (symbolP);
/* Skip symbols which were equated to undefined or common
symbols. Also skip defined uncommon symbols which can
be resolved since in this case they should have been
resolved to a non-symbolic constant. */
if (symbolP->sy_value.X_op == O_symbol
&& (! S_IS_DEFINED (symbolP)
|| S_IS_COMMON (symbolP)
|| symbol_resolved_p (symbolP)))
{
*symbolPP = symbol_next (symbolP);
continue;
}
/* OK, here is how we decide which symbols go out into the brave
new symtab. Symbols that do are:
* symbols with no name (stabd's?)
* symbols with debug info in their N_TYPE
Symbols that don't are:
* symbols that are registers
* symbols with \1 as their 3rd character (numeric labels)
* "local labels" as defined by S_LOCAL_NAME(name) if the -L
switch was passed to gas.
All other symbols are output. We complain if a deleted
symbol was marked external. */
if (!S_IS_REGISTER (symbolP)
&& (!S_GET_NAME (symbolP)
|| S_IS_DEBUG (symbolP)
|| !S_IS_DEFINED (symbolP)
|| S_IS_EXTERNAL (symbolP)
|| (S_GET_NAME (symbolP)[0] != '\001'
&& (flag_keep_locals || !S_LOCAL_NAME (symbolP)))))
{
symbolP->sy_number = symbol_number++;
/* The + 1 after strlen account for the \0 at the
end of each string */
if (!S_IS_STABD (symbolP))
{
/* Ordinary case. */
symbolP->sy_name_offset = string_byte_count;
string_byte_count += strlen (S_GET_NAME (symbolP)) + 1;
}
else /* .Stabd case. */
symbolP->sy_name_offset = 0;
symbolPP = &symbolP->sy_next;
}
else
{
if (S_IS_EXTERNAL (symbolP) || !S_IS_DEFINED (symbolP))
/* This warning should never get triggered any more.
Well, maybe if you're doing twisted things with
register names... */
as_bad (_("Local symbol %s never defined."),
decode_local_label_name (S_GET_NAME (symbolP)));
/* Unhook it from the chain */
*symbolPP = symbol_next (symbolP);
}
}
H_SET_SYMBOL_TABLE_SIZE (headers, symbol_number);
}
/* Find strings by crawling along symbol table chain. */
void
obj_emit_strings (char **where)
{
symbolS *symbolP;
md_number_to_chars (*where, string_byte_count, 4);
*where += 4;
for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP))
if (S_GET_NAME (symbolP))
append (where, S_GET_NAME (symbolP),
(unsigned long) (strlen (S_GET_NAME (symbolP)) + 1));
}
#ifndef AOUT_VERSION
#define AOUT_VERSION 0
#endif
void
obj_pre_write_hook (object_headers *headers)
{
H_SET_DYNAMIC (headers, 0);
H_SET_VERSION (headers, AOUT_VERSION);
H_SET_MACHTYPE (headers, AOUT_MACHTYPE);
tc_aout_pre_write_hook (headers);
}
#endif /* ! BFD_ASSEMBLER */
#ifdef BFD_ASSEMBLER
/* Support for an AOUT emulation. */
static void
@ -614,7 +312,6 @@ const struct format_ops aout_format_ops =
0, /* read_begin_hook. */
0 /* symbol_new_hook. */
};
#endif /* BFD_ASSEMBLER */
const pseudo_typeS aout_pseudo_table[] =
{

View File

@ -24,33 +24,10 @@
#include "targ-cpu.h"
#ifdef BFD_ASSEMBLER
#include "bfd/libaout.h"
#define OUTPUT_FLAVOR bfd_target_aout_flavour
#else /* ! BFD_ASSEMBLER */
#ifndef VMS
#include "aout_gnu.h" /* Needed to define struct nlist. Sigh. */
#else
#include "a_out.h"
#endif
#ifndef AOUT_MACHTYPE
#define AOUT_MACHTYPE 0
#endif /* AOUT_MACHTYPE */
extern const short seg_N_TYPE[];
extern const segT N_TYPE_seg[];
#ifndef DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE
#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE (OMAGIC)
#endif /* DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE */
#endif /* ! BFD_ASSEMBLER */
extern const pseudo_typeS aout_pseudo_table[];
#ifndef obj_pop_insert
@ -63,8 +40,6 @@ typedef struct nlist obj_symbol_type; /* Symbol table entry. */
/* Symbol table macros and constants */
#ifdef BFD_ASSEMBLER
#define S_SET_OTHER(S,V) \
(aout_symbol (symbol_get_bfdsym (S))->other = (V))
#define S_SET_TYPE(S,T) \
@ -88,163 +63,6 @@ extern void obj_aout_frob_file_before_fix (void);
#define obj_sec_sym_ok_for_reloc(SEC) 1
#else
/* We use the sy_obj field to record whether a symbol is weak. */
#define OBJ_SYMFIELD_TYPE char
/* Macros to extract information from a symbol table entry.
This syntactic indirection allows independence regarding a.out or coff.
The argument (s) of all these macros is a pointer to a symbol table entry. */
/* True if the symbol is external. */
#define S_IS_EXTERNAL(s) ((s)->sy_symbol.n_type & N_EXT)
/* True if symbol has been defined, ie is in N_{TEXT,DATA,BSS,ABS} or N_EXT. */
#define S_IS_DEFINED(s) \
(S_GET_TYPE (s) != N_UNDF || S_GET_DESC (s) != 0)
#define S_IS_COMMON(s) \
(S_GET_TYPE (s) == N_UNDF && S_GET_VALUE (s) != 0)
/* Return true for symbols that should not be reduced to section
symbols or eliminated from expressions, because they may be
overridden by the linker. */
#define S_FORCE_RELOC(s, strict) \
(!SEG_NORMAL (S_GET_SEGMENT (s)))
#define S_IS_REGISTER(s) ((s)->sy_symbol.n_type == N_REGISTER)
/* True if a debug special symbol entry. */
#define S_IS_DEBUG(s) ((s)->sy_symbol.n_type & N_STAB)
/* True if a symbol is local symbol name. */
#define S_IS_LOCAL(s) \
((S_GET_NAME (s) \
&& !S_IS_DEBUG (s) \
&& (strchr (S_GET_NAME (s), '\001') != NULL \
|| strchr (S_GET_NAME (s), '\002') != NULL \
|| (S_LOCAL_NAME(s) && !flag_keep_locals))) \
|| (flag_strip_local_absolute \
&& ! S_IS_EXTERNAL(s) \
&& S_GET_SEGMENT (s) == absolute_section))
/* True if the symbol has been generated because of a .stabd directive. */
#define S_IS_STABD(s) (S_GET_NAME(s) == NULL)
/* Accessors. */
/* The name of the symbol. */
#define S_GET_NAME(s) ((s)->sy_symbol.n_un.n_name)
/* The pointer to the string table. */
#define S_GET_OFFSET(s) ((s)->sy_symbol.n_un.n_strx)
/* The type of the symbol. */
#define S_GET_TYPE(s) ((s)->sy_symbol.n_type & N_TYPE)
/* The numeric value of the segment. */
#define S_GET_SEGMENT(s) (N_TYPE_seg[S_GET_TYPE(s)])
/* The n_other expression value. */
#define S_GET_OTHER(s) ((s)->sy_symbol.n_other)
/* The n_desc expression value. */
#define S_GET_DESC(s) ((s)->sy_symbol.n_desc)
/* Whether the symbol is weak. */
#define S_GET_WEAK(s) ((s)->sy_obj)
/* Modifiers. */
/* Assume that a symbol cannot be simultaneously in more than on segment. */
/* Set segment. */
#define S_SET_SEGMENT(s,seg) ((s)->sy_symbol.n_type &= ~N_TYPE,(s)->sy_symbol.n_type |= SEGMENT_TO_SYMBOL_TYPE (seg))
/* The symbol is external. */
#define S_SET_EXTERNAL(s) ((s)->sy_symbol.n_type |= N_EXT)
/* The symbol is not external. */
#define S_CLEAR_EXTERNAL(s) ((s)->sy_symbol.n_type &= ~N_EXT)
/* Set the name of the symbol. */
#define S_SET_NAME(s,v) ((s)->sy_symbol.n_un.n_name = (v))
/* Set the offset in the string table. */
#define S_SET_OFFSET(s,v) ((s)->sy_symbol.n_un.n_strx = (v))
/* Set the n_type field. */
#define S_SET_TYPE(s,t) ((s)->sy_symbol.n_type = (t))
/* Set the n_other expression value. */
#define S_SET_OTHER(s,v) ((s)->sy_symbol.n_other = (v))
/* Set the n_desc expression value. */
#define S_SET_DESC(s,v) ((s)->sy_symbol.n_desc = (v))
/* Mark the symbol as weak. This causes n_type to be adjusted when
the symbol is written out. */
#define S_SET_WEAK(s) ((s)->sy_obj = 1)
/* File header macro and type definition. */
#define H_GET_FILE_SIZE(h) (H_GET_HEADER_SIZE (h) \
+ H_GET_TEXT_SIZE (h) \
+ H_GET_DATA_SIZE (h) \
+ H_GET_TEXT_RELOCATION_SIZE (h) \
+ H_GET_DATA_RELOCATION_SIZE (h) \
+ H_GET_LINENO_SIZE (h) \
+ H_GET_SYMBOL_TABLE_SIZE (h) \
+ H_GET_STRING_SIZE (h))
#define H_GET_HEADER_SIZE(h) (EXEC_BYTES_SIZE)
#define H_GET_TEXT_SIZE(h) ((h)->header.a_text)
#define H_GET_DATA_SIZE(h) ((h)->header.a_data)
#define H_GET_BSS_SIZE(h) ((h)->header.a_bss)
#define H_GET_TEXT_RELOCATION_SIZE(h) ((h)->header.a_trsize)
#define H_GET_DATA_RELOCATION_SIZE(h) ((h)->header.a_drsize)
#define H_GET_SYMBOL_TABLE_SIZE(h) ((h)->header.a_syms)
#define H_GET_ENTRY_POINT(h) ((h)->header.a_entry)
#define H_GET_STRING_SIZE(h) ((h)->string_table_size)
#define H_GET_LINENO_SIZE(h) (0)
#define H_GET_DYNAMIC(h) ((h)->header.a_info >> 31)
#define H_GET_VERSION(h) (((h)->header.a_info >> 24) & 0x7f)
#define H_GET_MACHTYPE(h) (((h)->header.a_info >> 16) & 0xff)
#define H_GET_MAGIC_NUMBER(h) ((h)->header.a_info & 0xffff)
#define H_SET_DYNAMIC(h,v) ((h)->header.a_info = (((v) << 31) \
| (H_GET_VERSION (h) << 24) \
| (H_GET_MACHTYPE (h) << 16) \
| (H_GET_MAGIC_NUMBER (h))))
#define H_SET_VERSION(h,v) ((h)->header.a_info = ((H_GET_DYNAMIC (h) << 31) \
| ((v) << 24) \
| (H_GET_MACHTYPE (h) << 16) \
| (H_GET_MAGIC_NUMBER (h))))
#define H_SET_MACHTYPE(h,v) ((h)->header.a_info = ((H_GET_DYNAMIC (h) << 31) \
| (H_GET_VERSION (h) << 24) \
| ((v) << 16) \
| (H_GET_MAGIC_NUMBER (h))))
#define H_SET_MAGIC_NUMBER(h,v) ((h)->header.a_info = ((H_GET_DYNAMIC (h) << 31) \
| (H_GET_VERSION (h) << 24) \
| (H_GET_MACHTYPE (h) << 16) \
| ((v))))
#define H_SET_TEXT_SIZE(h,v) ((h)->header.a_text = md_section_align (SEG_TEXT, (v)))
#define H_SET_DATA_SIZE(h,v) ((h)->header.a_data = md_section_align (SEG_DATA, (v)))
#define H_SET_BSS_SIZE(h,v) ((h)->header.a_bss = md_section_align (SEG_BSS, (v)))
#define H_SET_RELOCATION_SIZE(h,t,d) (H_SET_TEXT_RELOCATION_SIZE ((h),(t)),\
H_SET_DATA_RELOCATION_SIZE ((h),(d)))
#define H_SET_TEXT_RELOCATION_SIZE(h,v) ((h)->header.a_trsize = (v))
#define H_SET_DATA_RELOCATION_SIZE(h,v) ((h)->header.a_drsize = (v))
#define H_SET_SYMBOL_TABLE_SIZE(h,v) ((h)->header.a_syms = (v) * 12)
#define H_SET_ENTRY_POINT(h,v) ((h)->header.a_entry = (v))
#define H_SET_STRING_SIZE(h,v) ((h)->string_table_size = (v))
typedef struct
{
struct exec header; /* a.out header. */
long string_table_size; /* names + '\0' + sizeof (int). */
}
object_headers;
/* Line numbering stuff. */
#define OBJ_EMIT_LINENO(a, b, c) {;}
struct fix;
extern void tc_aout_fix_to_chars (char *, struct fix *, relax_addressT);
#endif
#define obj_read_begin_hook() {;}
#define obj_symbol_new_hook(s) {;}

View File

@ -1,324 +0,0 @@
/* b.out object file format
Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1996, 2000, 2001, 2002,
2003, 2005 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2,
or (at your option) any later version.
GAS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
#include "as.h"
#include "obstack.h"
/* In: segT Out: N_TYPE bits. */
const short seg_N_TYPE[] =
{
N_ABS,
N_TEXT,
N_DATA,
N_BSS,
N_UNDF, /* Unknown. */
N_UNDF, /* Error. */
N_UNDF, /* Expression. */
N_UNDF, /* Debug. */
N_UNDF, /* Ntv. */
N_UNDF, /* Ptv. */
N_REGISTER, /* Register. */
};
const segT N_TYPE_seg[N_TYPE + 2] =
{ /* N_TYPE == 0x1E = 32-2 */
SEG_UNKNOWN, /* N_UNDF == 0 */
SEG_GOOF,
SEG_ABSOLUTE, /* N_ABS == 2 */
SEG_GOOF,
SEG_TEXT, /* N_TEXT == 4 */
SEG_GOOF,
SEG_DATA, /* N_DATA == 6 */
SEG_GOOF,
SEG_BSS, /* N_BSS == 8 */
SEG_GOOF,
SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF,
SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF,
SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF,
SEG_REGISTER, /* Dummy N_REGISTER for regs = 30. */
SEG_GOOF,
};
/* Relocation. */
/* Crawl along a fixS chain. Emit the segment's relocations. */
void
obj_emit_relocations (char **where,
fixS *fixP, /* Fixup chain for this segment. */
relax_addressT segment_address_in_file)
{
for (; fixP; fixP = fixP->fx_next)
{
if (fixP->fx_done == 0
|| fixP->fx_r_type != NO_RELOC)
{
symbolS *sym;
sym = fixP->fx_addsy;
while (sym->sy_value.X_op == O_symbol
&& (! S_IS_DEFINED (sym) || S_IS_COMMON (sym)))
sym = sym->sy_value.X_add_symbol;
fixP->fx_addsy = sym;
tc_bout_fix_to_chars (*where, fixP, segment_address_in_file);
*where += md_reloc_size;
}
}
}
/* Aout file generation & utilities . */
/* Convert a lvalue to machine dependent data. */
void
obj_header_append (char **where, object_headers *headers)
{
/* Always leave in host byte order. */
char *p;
headers->header.a_talign = section_alignment[SEG_TEXT];
/* Force to at least 2. */
if (headers->header.a_talign < 2)
headers->header.a_talign = 2;
headers->header.a_dalign = section_alignment[SEG_DATA];
headers->header.a_balign = section_alignment[SEG_BSS];
headers->header.a_tload = 0;
headers->header.a_dload =
md_section_align (SEG_DATA, H_GET_TEXT_SIZE (headers));
headers->header.a_relaxable = linkrelax;
p = *where;
host_number_to_chars (p, headers->header.a_magic, 4);
p += 4;
host_number_to_chars (p, headers->header.a_text, 4);
p += 4;
host_number_to_chars (p, headers->header.a_data, 4);
p += 4;
host_number_to_chars (p, headers->header.a_bss, 4);
p += 4;
host_number_to_chars (p, headers->header.a_syms, 4);
p += 4;
host_number_to_chars (p, headers->header.a_entry, 4);
p += 4;
host_number_to_chars (p, headers->header.a_trsize, 4);
p += 4;
host_number_to_chars (p, headers->header.a_drsize, 4);
p += 4;
host_number_to_chars (p, headers->header.a_tload, 4);
p += 4;
host_number_to_chars (p, headers->header.a_dload, 4);
p += 4;
*p++ = headers->header.a_talign;
*p++ = headers->header.a_dalign;
*p++ = headers->header.a_balign;
*p++ = headers->header.a_relaxable;
*where = p;
}
void
obj_symbol_to_chars (char **where, symbolS *symbolP)
{
char *p = *where;
host_number_to_chars (p, S_GET_OFFSET (symbolP), 4);
p += 4;
/* Can't use S_GET_TYPE here as it masks. */
*p++ = symbolP->sy_symbol.n_type;
*p++ = symbolP->sy_symbol.n_other;
host_number_to_chars (p, S_GET_DESC (symbolP), 2);
p += 2;
host_number_to_chars (p, S_GET_VALUE (symbolP), 4);
p += 4;
*where = p;
}
void
obj_emit_symbols (char **where, symbolS *symbol_rootP)
{
symbolS *symbolP;
/* Emit all symbols left in the symbol chain. */
for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP))
{
/* Used to save the offset of the name. It is used to point to
the string in memory but must be a file offset. */
char *temp;
temp = S_GET_NAME (symbolP);
S_SET_OFFSET (symbolP, symbolP->sy_name_offset);
/* Any symbol still undefined and is not a dbg symbol is made N_EXT. */
if (!S_IS_DEBUG (symbolP) && !S_IS_DEFINED (symbolP))
S_SET_EXTERNAL (symbolP);
obj_symbol_to_chars (where, symbolP);
S_SET_NAME (symbolP, temp);
}
}
void
obj_symbol_new_hook (symbolS *symbolP)
{
S_SET_OTHER (symbolP, 0);
S_SET_DESC (symbolP, 0);
}
static void
obj_bout_line (int ignore ATTRIBUTE_UNUSED)
{
/* Assume delimiter is part of expression. */
/* BSD4.2 as fails with delightful bug, so we are not being
incompatible here. */
new_logical_line (NULL, (int) (get_absolute_expression ()));
demand_empty_rest_of_line ();
}
void
obj_read_begin_hook (void)
{
}
void
obj_crawl_symbol_chain (object_headers *headers)
{
symbolS **symbolPP;
symbolS *symbolP;
int symbol_number = 0;
tc_crawl_symbol_chain (headers);
symbolPP = &symbol_rootP; /* -> last symbol chain link. */
while ((symbolP = *symbolPP) != NULL)
{
if (flag_readonly_data_in_text && (S_GET_SEGMENT (symbolP) == SEG_DATA))
{
S_SET_SEGMENT (symbolP, SEG_TEXT);
}
resolve_symbol_value (symbolP);
/* Skip symbols which were equated to undefined or common
symbols. */
if (symbolP->sy_value.X_op == O_symbol
&& (! S_IS_DEFINED (symbolP) || S_IS_COMMON (symbolP)))
{
*symbolPP = symbol_next (symbolP);
continue;
}
/* OK, here is how we decide which symbols go out into the
brave new symtab. Symbols that do are:
* symbols with no name (stabd's?)
* symbols with debug info in their N_TYPE
Symbols that don't are:
* symbols that are registers
* symbols with \1 as their 3rd character (numeric labels)
* "local labels" as defined by S_LOCAL_NAME(name)
if the -L switch was passed to gas.
All other symbols are output. We complain if a deleted
symbol was marked external. */
if (1
&& !S_IS_REGISTER (symbolP)
&& (!S_GET_NAME (symbolP)
|| S_IS_DEBUG (symbolP)
#ifdef TC_I960
/* FIXME-SOON this ifdef seems highly dubious to me. xoxorich. */
|| !S_IS_DEFINED (symbolP)
|| S_IS_EXTERNAL (symbolP)
#endif
|| (S_GET_NAME (symbolP)[0] != '\001'
&& (flag_keep_locals || !S_LOCAL_NAME (symbolP)))))
{
symbolP->sy_number = symbol_number++;
/* The + 1 after strlen account for the \0 at the end of
each string. */
if (!S_IS_STABD (symbolP))
{
/* Ordinary case. */
symbolP->sy_name_offset = string_byte_count;
string_byte_count += strlen (S_GET_NAME (symbolP)) + 1;
}
else /* .Stabd case. */
symbolP->sy_name_offset = 0;
symbolPP = &(symbolP->sy_next);
}
else
{
if (S_IS_EXTERNAL (symbolP) || !S_IS_DEFINED (symbolP))
as_bad (_("Local symbol %s never defined"),
S_GET_NAME (symbolP));
/* Unhook it from the chain. */
*symbolPP = symbol_next (symbolP);
}
}
H_SET_SYMBOL_TABLE_SIZE (headers, symbol_number);
}
/* Find strings by crawling along symbol table chain. */
void
obj_emit_strings (char **where)
{
symbolS *symbolP;
md_number_to_chars (*where, string_byte_count, 4);
*where += 4;
for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP))
if (S_GET_NAME (symbolP))
append (where, S_GET_NAME (symbolP),
(unsigned long) (strlen (S_GET_NAME (symbolP)) + 1));
}
const pseudo_typeS obj_pseudo_table[] =
{
{"line", obj_bout_line, 0}, /* Source code line number. */
/* COFF debugging directives. Currently ignored silently. */
{"def", s_ignore, 0},
{"dim", s_ignore, 0},
{"endef", s_ignore, 0},
{"ln", s_ignore, 0},
{"scl", s_ignore, 0},
{"size", s_ignore, 0},
{"tag", s_ignore, 0},
{"type", s_ignore, 0},
{"val", s_ignore, 0},
/* Other stuff we don't handle. */
{"ABORT", s_ignore, 0},
{"ident", s_ignore, 0},
{NULL, NULL, 0}
};

View File

@ -1,310 +0,0 @@
/* b.out object file format
Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 2000,
2002, 2003, 2005 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2,
or (at your option) any later version.
GAS is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public
License along with GAS; see the file COPYING. If not, write
to the Free Software Foundation, 51 Franklin Street - Fifth Floor, Cambridge, MA
02139, USA. */
/* This file is a modified version of 'a.out.h'. It is to be used in all GNU
tools modified to support the i80960 b.out format (or tools that operate on
object files created by such tools).
All i80960 development is done in a CROSS-DEVELOPMENT environment. I.e.,
object code is generated on, and executed under the direction of a symbolic
debugger running on, a host system. We do not want to be subject to the
vagaries of which host it is or whether it supports COFF or a.out format, or
anything else. We DO want to:
o always generate the same format object files, regardless of host.
o have an 'a.out' header that we can modify for our own purposes
(the 80960 is typically an embedded processor and may require
enhanced linker support that the normal a.out.h header can't
accommodate).
As for byte-ordering, the following rules apply:
o Text and data that is actually downloaded to the target is always
in i80960 (little-endian) order.
o All other numbers (in the header, symbols, relocation directives)
are in host byte-order: object files CANNOT be lifted from a
little-end host and used on a big-endian (or vice versa) without
modification.
==> This is no longer true using BFD. We can generate any byte order
for the header, and read any byte order. Preference would be to
use little-endian byte order throughout, regardless of host. <==
o The downloader ('comm960') takes care to generate a pseudo-header
with correct (i80960) byte-ordering before shipping text and data
off to the NINDY monitor in the target systems. Symbols and
relocation info are never sent to the target. */
#define OBJ_BOUT 1
#define OUTPUT_FLAVOR bfd_target_aout_flavour
#include "targ-cpu.h"
#define OBJ_DEFAULT_OUTPUT_FILE_NAME "b.out"
extern const short seg_N_TYPE[];
extern const segT N_TYPE_seg[];
#define BMAGIC 0415
/* We don't accept the following (see N_BADMAG macro).
They're just here so GNU code will compile. */
#define OMAGIC 0407 /* Old impure format. */
#define NMAGIC 0410 /* Read-only text. */
#define ZMAGIC 0413 /* Demand load format. */
#ifndef DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE
#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE BMAGIC
#endif
/* File header:
All 'lengths' are given as a number of bytes.
All 'alignments' are for relinkable files only; an alignment of
'n' indicates the corresponding segment must begin at an
address that is a multiple of (2**n). */
struct exec
{
/* Standard stuff. */
unsigned long a_magic; /* Identifies this as a b.out file. */
unsigned long a_text; /* Length of text. */
unsigned long a_data; /* Length of data. */
unsigned long a_bss; /* Length of runtime uninitialized data area. */
unsigned long a_syms; /* Length of symbol table. */
unsigned long a_entry; /* Runtime start address. */
unsigned long a_trsize; /* Length of text relocation info. */
unsigned long a_drsize; /* Length of data relocation info. */
/* Added for i960 */
unsigned long a_tload; /* Text runtime load address. */
unsigned long a_dload; /* Data runtime load address. */
unsigned char a_talign; /* Alignment of text segment. */
unsigned char a_dalign; /* Alignment of data segment. */
unsigned char a_balign; /* Alignment of bss segment. */
unsigned char a_relaxable; /* Contains enough info to relax. */
};
#define EXEC_BYTES_SIZE (10 * 4 + 4 * 1)
#define N_BADMAG(x) (((x).a_magic) != BMAGIC)
#define N_TXTOFF(x) EXEC_BYTES_SIZE
#define N_DATOFF(x) ( N_TXTOFF(x) + (x).a_text )
#define N_TROFF(x) ( N_DATOFF(x) + (x).a_data )
#define N_DROFF(x) ( N_TROFF(x) + (x).a_trsize )
#define N_SYMOFF(x) ( N_DROFF(x) + (x).a_drsize )
#define N_STROFF(x) ( N_SYMOFF(x) + (x).a_syms )
/* A single entry in the symbol table. */
struct nlist
{
union
{
char *n_name;
struct nlist *n_next;
long n_strx; /* Index into string table. */
}
n_un;
unsigned char n_type; /* See below. */
char n_other; /* Used in i80960 support -- see below. */
short n_desc;
unsigned long n_value;
};
typedef struct nlist obj_symbol_type;
/* Legal values of n_type. */
#define N_UNDF 0 /* Undefined symbol. */
#define N_ABS 2 /* Absolute symbol. */
#define N_TEXT 4 /* Text symbol. */
#define N_DATA 6 /* Data symbol. */
#define N_BSS 8 /* BSS symbol. */
#define N_FN 31 /* Filename symbol. */
#define N_EXT 1 /* External symbol (OR'd in with one of above). */
#define N_TYPE 036 /* Mask for all the type bits. */
#define N_STAB 0340 /* Mask for all bits used for SDB entries. */
#ifndef CUSTOM_RELOC_FORMAT
struct relocation_info
{
int r_address; /* File address of item to be relocated. */
unsigned
r_index:24, /* Index of symbol on which relocation is based. */
r_pcrel:1, /* 1 => relocate PC-relative; else absolute
On i960, pc-relative implies 24-bit
address, absolute implies 32-bit. */
r_length:2, /* Number of bytes to relocate:
0 => 1 byte
1 => 2 bytes
2 => 4 bytes -- only value used for i960. */
r_extern:1, r_bsr:1, /* Something for the GNU NS32K assembler. */
r_disp:1, /* Something for the GNU NS32K assembler. */
r_callj:1, /* 1 if relocation target is an i960 'callj'. */
nuthin:1; /* Unused. */
};
#endif /* CUSTOM_RELOC_FORMAT */
/* Macros to extract information from a symbol table entry.
This syntactic indirection allows independence regarding a.out or coff.
The argument (s) of all these macros is a pointer to a symbol table entry. */
/* Predicates. */
/* True if the symbol is external. */
#define S_IS_EXTERNAL(s) ((s)->sy_symbol.n_type & N_EXT)
/* True if symbol has been defined, ie is in N_{TEXT,DATA,BSS,ABS} or N_EXT. */
#define S_IS_DEFINED(s) ((S_GET_TYPE(s) != N_UNDF) || (S_GET_DESC(s) != 0))
/* Return true for symbols that should not be reduced to section
symbols or eliminated from expressions, because they may be
overridden by the linker. */
#define S_FORCE_RELOC(s, strict) \
(!SEG_NORMAL (S_GET_SEGMENT (s)))
#define S_IS_COMMON(s) \
(S_GET_TYPE (s) == N_UNDF && S_GET_VALUE (s) != 0)
#define S_IS_REGISTER(s) ((s)->sy_symbol.n_type == N_REGISTER)
/* True if a debug special symbol entry. */
#define S_IS_DEBUG(s) ((s)->sy_symbol.n_type & N_STAB)
/* True if a symbol is local symbol name. */
#define S_IS_LOCAL(s) \
((S_GET_NAME (s) \
&& !S_IS_DEBUG (s) \
&& (strchr (S_GET_NAME (s), '\001') != NULL \
|| strchr (S_GET_NAME (s), '\002') != NULL \
|| (S_LOCAL_NAME(s) && !flag_keep_locals))) \
|| (flag_strip_local_absolute \
&& !S_IS_EXTERNAL(s) \
&& S_GET_SEGMENT(s) == absolute_section))
/* True if the symbol has been generated because of a .stabd directive. */
#define S_IS_STABD(s) (S_GET_NAME(s) == NULL)
/* Accessors. */
/* The name of the symbol. */
#define S_GET_NAME(s) ((s)->sy_symbol.n_un.n_name)
/* The pointer to the string table. */
#define S_GET_OFFSET(s) ((s)->sy_symbol.n_un.n_strx)
/* The type of the symbol. */
#define S_GET_TYPE(s) ((s)->sy_symbol.n_type & N_TYPE)
/* The numeric value of the segment. */
#define S_GET_SEGMENT(s) (N_TYPE_seg[S_GET_TYPE(s)])
/* The n_other expression value. */
#define S_GET_OTHER(s) ((s)->sy_symbol.n_other)
/* The n_desc expression value. */
#define S_GET_DESC(s) ((s)->sy_symbol.n_desc)
/* Modifiers. */
/* Assume that a symbol cannot be simultaneously in more than on segment. */
/* Set segment. */
#define S_SET_SEGMENT(s,seg) ((s)->sy_symbol.n_type &= ~N_TYPE,(s)->sy_symbol.n_type |= SEGMENT_TO_SYMBOL_TYPE (seg))
/* The symbol is external. */
#define S_SET_EXTERNAL(s) ((s)->sy_symbol.n_type |= N_EXT)
/* The symbol is not external. */
#define S_CLEAR_EXTERNAL(s) ((s)->sy_symbol.n_type &= ~N_EXT)
/* Set the name of the symbol. */
#define S_SET_NAME(s,v) ((s)->sy_symbol.n_un.n_name = (v))
/* Set the offset in the string table. */
#define S_SET_OFFSET(s,v) ((s)->sy_symbol.n_un.n_strx = (v))
/* Set the n_other expression value. */
#define S_SET_OTHER(s,v) ((s)->sy_symbol.n_other = (v))
/* Set the n_desc expression value. */
#define S_SET_DESC(s,v) ((s)->sy_symbol.n_desc = (v))
/* Set the n_type value. */
#define S_SET_TYPE(s,v) ((s)->sy_symbol.n_type = (v))
/* File header macro and type definition. */
#define H_GET_FILE_SIZE(h) (EXEC_BYTES_SIZE \
+ H_GET_TEXT_SIZE (h) \
+ H_GET_DATA_SIZE(h) \
+ H_GET_SYMBOL_TABLE_SIZE (h) \
+ H_GET_TEXT_RELOCATION_SIZE (h) \
+ H_GET_DATA_RELOCATION_SIZE (h) \
+ (h)->string_table_size)
#define H_GET_HEADER_SIZE(h) EXEC_BYTES_SIZE
#define H_GET_TEXT_SIZE(h) ((h)->header.a_text)
#define H_GET_DATA_SIZE(h) ((h)->header.a_data)
#define H_GET_BSS_SIZE(h) ((h)->header.a_bss)
#define H_GET_TEXT_RELOCATION_SIZE(h) ((h)->header.a_trsize)
#define H_GET_DATA_RELOCATION_SIZE(h) ((h)->header.a_drsize)
#define H_GET_SYMBOL_TABLE_SIZE(h) ((h)->header.a_syms)
#define H_GET_MAGIC_NUMBER(h) ((h)->header.a_info)
#define H_GET_ENTRY_POINT(h) ((h)->header.a_entry)
#define H_GET_STRING_SIZE(h) ((h)->string_table_size)
#define H_GET_LINENO_SIZE(h) (0)
#ifdef EXEC_MACHINE_TYPE
#define H_GET_MACHINE_TYPE(h) ((h)->header.a_machtype)
#endif /* EXEC_MACHINE_TYPE. */
#ifdef EXEC_VERSION
#define H_GET_VERSION(h) ((h)->header.a_version)
#endif /* EXEC_VERSION. */
#define H_SET_TEXT_SIZE(h,v) ((h)->header.a_text = (v))
#define H_SET_DATA_SIZE(h,v) ((h)->header.a_data = (v))
#define H_SET_BSS_SIZE(h,v) ((h)->header.a_bss = (v))
#define H_SET_RELOCATION_SIZE(h,t,d) (H_SET_TEXT_RELOCATION_SIZE((h),(t)),\
H_SET_DATA_RELOCATION_SIZE((h),(d)))
#define H_SET_TEXT_RELOCATION_SIZE(h,v) ((h)->header.a_trsize = (v))
#define H_SET_DATA_RELOCATION_SIZE(h,v) ((h)->header.a_drsize = (v))
#define H_SET_SYMBOL_TABLE_SIZE(h,v) ((h)->header.a_syms = (v) * 12)
#define H_SET_MAGIC_NUMBER(h,v) ((h)->header.a_magic = (v))
#define H_SET_ENTRY_POINT(h,v) ((h)->header.a_entry = (v))
#define H_SET_STRING_SIZE(h,v) ((h)->string_table_size = (v))
#ifdef EXEC_MACHINE_TYPE
#define H_SET_MACHINE_TYPE(h,v) ((h)->header.a_machtype = (v))
#endif /* EXEC_MACHINE_TYPE. */
#ifdef EXEC_VERSION
#define H_SET_VERSION(h,v) ((h)->header.a_version = (v))
#endif /* EXEC_VERSION. */
typedef struct
{
struct exec header; /* a.out header. */
long string_table_size; /* names + '\0' + sizeof (int). */
}
object_headers;
/* Unused hooks. */
#define OBJ_EMIT_LINENO(a, b, c) {;}
#define obj_pre_write_hook(a) {;}
#if WORDS_BIGENDIAN
#define host_number_to_chars number_to_chars_bigendian
#else
#define host_number_to_chars number_to_chars_littleendian
#endif
struct fix;
extern void tc_aout_fix_to_chars (char *, struct fix *, relax_addressT);
extern void tc_bout_fix_to_chars (char *, struct fix *, relax_addressT);
#define AOUT_STABS

File diff suppressed because it is too large Load Diff

View File

@ -25,16 +25,6 @@
#define OBJ_COFF 1
#ifndef BFD_ASSEMBLER
#define WORKING_DOT_WORD
#define WARN_SIGNED_OVERFLOW_WORD
#define OBJ_COFF_OMIT_OPTIONAL_HEADER
#define BFD_HEADERS
#define BFD
#endif
#include "targ-cpu.h"
#include "bfd.h"
@ -85,11 +75,6 @@
#endif
#endif
#ifdef TC_A29K
#include "coff/a29k.h"
#define TARGET_FORMAT "coff-a29k-big"
#endif
#ifdef TC_OR32
#include "coff/or32.h"
#define TARGET_FORMAT "coff-or32-big"
@ -147,16 +132,6 @@
#define TARGET_FORMAT "pe-mips"
#endif
#ifdef TC_M88K
#include "coff/m88k.h"
#define TARGET_FORMAT "coff-m88kbcs"
#endif
#ifdef TC_W65
#include "coff/w65.h"
#define TARGET_FORMAT "coff-w65"
#endif
#ifdef TC_TIC30
#include "coff/tic30.h"
#define TARGET_FORMAT "coff-tic30"
@ -172,12 +147,6 @@
#define TARGET_FORMAT "coff1-c54x"
#endif
#ifdef TC_TIC80
#include "coff/tic80.h"
#define TARGET_FORMAT "coff-tic80"
#define ALIGNMENT_IN_S_FLAGS 1
#endif
#ifdef TC_MCORE
#include "coff/mcore.h"
#ifndef TARGET_FORMAT
@ -190,11 +159,6 @@
#define USE_UNIQUE 1
#endif
/* Targets may also set this. Also, if BFD_ASSEMBLER is defined, this
will already have been defined. */
#undef SYMBOLS_NEED_BACKPOINTERS
#define SYMBOLS_NEED_BACKPOINTERS 1
#ifndef OBJ_COFF_MAX_AUXENTRIES
#define OBJ_COFF_MAX_AUXENTRIES 1
#endif
@ -202,44 +166,6 @@
#define obj_symbol_new_hook coff_obj_symbol_new_hook
#define obj_read_begin_hook coff_obj_read_begin_hook
/* This file really contains two implementations of the COFF back end.
They are in the process of being merged, but this is only a
preliminary, mechanical merging. Many definitions that are
identical between the two are still found in both versions.
The first version, with BFD_ASSEMBLER defined, uses high-level BFD
interfaces and data structures. The second version, with
BFD_ASSEMBLER not defined, also uses BFD, but mostly for swapping
data structures and for doing the actual I/O. The latter defines
the preprocessor symbols BFD and BFD_HEADERS. Try not to let this
confuse you.
These two are in the process of being merged, and eventually the
BFD_ASSEMBLER version should take over completely. Release timing
issues and namespace problems convinced me to merge the two
together in this fashion, a little sooner than I would have liked.
The real merge should be much better done by the time the next
release comes out.
For now, the structure of this file is:
<common>
#ifdef BFD_ASSEMBLER
<one version>
#else
<other version>
#endif
<common>
Unfortunately, the common portions are very small at the moment,
and many declarations or definitions are duplicated. The structure
of obj-coff.c is similar.
See doc/internals.texi for a brief discussion of the history, if
you care.
Ken Raeburn, 5 May 1994. */
#ifdef BFD_ASSEMBLER
#include "bfd/libcoff.h"
#define OUTPUT_FLAVOR bfd_target_coff_flavour
@ -414,422 +340,6 @@ hey ! Where is the C_LEAFSTAT definition ? i960 - coff support is depending on i
#endif /* no C_LEAFSTAT */
#endif /* TC_I960 */
#else /* not BFD_ASSEMBLER */
#if defined TC_A29K || defined TC_OR32
/* Allow translate from aout relocs to coff relocs. */
#define NO_RELOC 20
#define RELOC_32 1
#define RELOC_8 2
#define RELOC_CONST 3
#define RELOC_CONSTH 4
#define RELOC_JUMPTARG 5
#define RELOC_BASE22 6
#define RELOC_HI22 7
#define RELOC_LO10 8
#define RELOC_BASE13 9
#define RELOC_WDISP22 10
#define RELOC_WDISP30 11
#endif
extern const segT N_TYPE_seg[];
/* Magic number of paged executable. */
#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE 0x8300
/* SYMBOL TABLE */
/* Symbol table entry data type. */
typedef struct
{
/* Basic symbol. */
struct internal_syment ost_entry;
/* Auxiliary entry. */
union internal_auxent ost_auxent[OBJ_COFF_MAX_AUXENTRIES];
/* obj_coff internal use only flags. */
unsigned int ost_flags;
} obj_symbol_type;
/* Symbol table macros and constants. */
/* Possible and useful section number in symbol table
The values of TEXT, DATA and BSS may not be portable. */
#define C_ABS_SECTION N_ABS
#define C_UNDEF_SECTION N_UNDEF
#define C_DEBUG_SECTION N_DEBUG
#define C_NTV_SECTION N_TV
#define C_PTV_SECTION P_TV
#define C_REGISTER_SECTION 50
/* Macros to extract information from a symbol table entry.
This syntactic indirection allows independence regarding a.out or coff.
The argument (s) of all these macros is a pointer to a symbol table entry. */
/* Predicates. */
/* True if the symbol is external. */
#define S_IS_EXTERNAL(s) \
((s)->sy_symbol.ost_entry.n_scnum == C_UNDEF_SECTION)
/* True if symbol has been defined, ie :
section > 0 (DATA, TEXT or BSS)
section == 0 and value > 0 (external bss symbol). */
#define S_IS_DEFINED(s) \
((s)->sy_symbol.ost_entry.n_scnum > C_UNDEF_SECTION \
|| ((s)->sy_symbol.ost_entry.n_scnum == C_UNDEF_SECTION \
&& S_GET_VALUE (s) > 0) \
|| ((s)->sy_symbol.ost_entry.n_scnum == C_ABS_SECTION))
/* Return true for symbols that should not be reduced to section
symbols or eliminated from expressions, because they may be
overridden by the linker. */
#define S_FORCE_RELOC(s, strict) \
(!SEG_NORMAL (S_GET_SEGMENT (s)) || (strict && S_IS_WEAK (s)))
/* True if a debug special symbol entry. */
#define S_IS_DEBUG(s) \
((s)->sy_symbol.ost_entry.n_scnum == C_DEBUG_SECTION)
/* True if a symbol is local symbol name. */
/* A symbol name whose name includes ^A is a gas internal pseudo symbol. */
#define S_IS_LOCAL(s) \
((s)->sy_symbol.ost_entry.n_scnum == C_REGISTER_SECTION \
|| (S_LOCAL_NAME(s) && ! flag_keep_locals && ! S_IS_DEBUG (s)) \
|| strchr (S_GET_NAME (s), '\001') != NULL \
|| strchr (S_GET_NAME (s), '\002') != NULL \
|| (flag_strip_local_absolute \
&& !S_IS_EXTERNAL (s) \
&& (s)->sy_symbol.ost_entry.n_scnum == C_ABS_SECTION))
/* True if a symbol can be multiply defined (bss symbols have this def
though it is bad practice). */
#define S_IS_COMMON(s) ((s)->sy_symbol.ost_entry.n_scnum == 0 \
&& S_GET_VALUE (s) != 0)
/* True if a symbol name is in the string table, i.e. its length is > 8. */
#define S_IS_STRING(s) (strlen (S_GET_NAME (s)) > 8 ? 1 : 0)
/* True if a symbol is defined as weak. */
#ifdef TE_PE
#define S_IS_WEAK(s) \
( (s)->sy_symbol.ost_entry.n_sclass == C_NT_WEAK \
|| (s)->sy_symbol.ost_entry.n_sclass == C_WEAKEXT)
#else
#define S_IS_WEAK(s) \
((s)->sy_symbol.ost_entry.n_sclass == C_WEAKEXT)
#endif
/* Accessors. */
/* The name of the symbol. */
#define S_GET_NAME(s) ((char *) (s)->sy_symbol.ost_entry.n_offset)
/* The pointer to the string table. */
#define S_GET_OFFSET(s) ((s)->sy_symbol.ost_entry.n_offset)
/* The numeric value of the segment. */
#define S_GET_SEGMENT(s) s_get_segment (s)
/* The data type. */
#define S_GET_DATA_TYPE(s) ((s)->sy_symbol.ost_entry.n_type)
/* The storage class. */
#define S_GET_STORAGE_CLASS(s) ((s)->sy_symbol.ost_entry.n_sclass)
/* The number of auxiliary entries. */
#define S_GET_NUMBER_AUXILIARY(s) ((s)->sy_symbol.ost_entry.n_numaux)
/* Modifiers. */
/* Set the name of the symbol. */
#define S_SET_NAME(s, v) \
((s)->sy_symbol.ost_entry.n_offset = (unsigned long) (v))
/* Set the offset of the symbol. */
#define S_SET_OFFSET(s, v) \
((s)->sy_symbol.ost_entry.n_offset = (v))
/* The numeric value of the segment. */
#define S_SET_SEGMENT(s, v) \
((s)->sy_symbol.ost_entry.n_scnum = SEGMENT_TO_SYMBOL_TYPE (v))
/* The data type. */
#define S_SET_DATA_TYPE(s, v) \
((s)->sy_symbol.ost_entry.n_type = (v))
/* The storage class. */
#define S_SET_STORAGE_CLASS(s, v) \
((s)->sy_symbol.ost_entry.n_sclass = (v))
/* The number of auxiliary entries. */
#define S_SET_NUMBER_AUXILIARY(s, v) \
((s)->sy_symbol.ost_entry.n_numaux = (v))
/* Additional modifiers. */
/* The symbol is external (does not mean undefined). */
#define S_SET_EXTERNAL(s) \
do \
{ \
S_SET_STORAGE_CLASS (s, C_EXT); \
SF_CLEAR_LOCAL (s); \
} \
while (0)
/* Auxiliary entry macros. SA_ stands for symbol auxiliary. */
/* Omit the tv related fields. */
/* Accessors. */
#define SYM_AUXENT(S) (&(S)->sy_symbol.ost_auxent[0])
#define SA_GET_SYM_TAGNDX(s) (SYM_AUXENT (s)->x_sym.x_tagndx.l)
#define SA_GET_SYM_LNNO(s) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_lnno)
#define SA_GET_SYM_SIZE(s) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_size)
#define SA_GET_SYM_FSIZE(s) (SYM_AUXENT (s)->x_sym.x_misc.x_fsize)
#define SA_GET_SYM_LNNOPTR(s) (SYM_AUXENT (s)->x_sym.x_fcnary.x_fcn.x_lnnoptr)
#define SA_GET_SYM_ENDNDX(s) (SYM_AUXENT (s)->x_sym.x_fcnary.x_fcn.x_endndx.l)
#define SA_GET_SYM_DIMEN(s,i) (SYM_AUXENT (s)->x_sym.x_fcnary.x_ary.x_dimen[(i)])
#define SA_GET_FILE_FNAME(s) (SYM_AUXENT (s)->x_file.x_fname)
#define SA_GET_FILE_FNAME_OFFSET(s) (SYM_AUXENT (s)->x_file.x_n.x_offset)
#define SA_GET_FILE_FNAME_ZEROS(s) (SYM_AUXENT (s)->x_file.x_n.x_zeroes)
#define SA_GET_SCN_SCNLEN(s) (SYM_AUXENT (s)->x_scn.x_scnlen)
#define SA_GET_SCN_NRELOC(s) (SYM_AUXENT (s)->x_scn.x_nreloc)
#define SA_GET_SCN_NLINNO(s) (SYM_AUXENT (s)->x_scn.x_nlinno)
/* Modifiers. */
#define SA_SET_SYM_TAGNDX(s,v) (SYM_AUXENT (s)->x_sym.x_tagndx.l = (v))
#define SA_SET_SYM_LNNO(s,v) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_lnno = (v))
#define SA_SET_SYM_SIZE(s,v) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_size = (v))
#define SA_SET_SYM_FSIZE(s,v) (SYM_AUXENT (s)->x_sym.x_misc.x_fsize = (v))
#define SA_SET_SYM_LNNOPTR(s,v) (SYM_AUXENT (s)->x_sym.x_fcnary.x_fcn.x_lnnoptr = (v))
#define SA_SET_SYM_ENDNDX(s,v) (SYM_AUXENT (s)->x_sym.x_fcnary.x_fcn.x_endndx.l = (v))
#define SA_SET_SYM_DIMEN(s,i,v) (SYM_AUXENT (s)->x_sym.x_fcnary.x_ary.x_dimen[(i)] = (v))
#define SA_SET_FILE_FNAME(s,v) strncpy (SYM_AUXENT (s)->x_file.x_fname,(v),FILNMLEN)
#define SA_SET_FILE_FNAME_OFFSET(s,v) (SYM_AUXENT (s)->x_file.x_n.x_offset = (v))
#define SA_SET_FILE_FNAME_ZEROS(s,v) (SYM_AUXENT (s)->x_file.x_n.x_zeroes = (v))
#define SA_SET_SCN_SCNLEN(s,v) (SYM_AUXENT (s)->x_scn.x_scnlen = (v))
#define SA_SET_SCN_NRELOC(s,v) (SYM_AUXENT (s)->x_scn.x_nreloc = (v))
#define SA_SET_SCN_NLINNO(s,v) (SYM_AUXENT (s)->x_scn.x_nlinno = (v))
/* Internal use only definitions. SF_ stands for symbol flags.
These values can be assigned to sy_symbol.ost_flags field of a symbolS.
You'll break i960 if you shift the SYSPROC bits anywhere else. for
more on the balname/callname hack, see tc-i960.h. b.out is done
differently. */
#define SF_I960_MASK 0x000001ff /* Bits 0-8 are used by the i960 port. */
#define SF_SYSPROC 0x0000003f /* bits 0-5 are used to store the sysproc number. */
#define SF_IS_SYSPROC 0x00000040 /* bit 6 marks symbols that are sysprocs. */
#define SF_BALNAME 0x00000080 /* bit 7 marks BALNAME symbols. */
#define SF_CALLNAME 0x00000100 /* bit 8 marks CALLNAME symbols. */
#define SF_NORMAL_MASK 0x0000ffff /* bits 12-15 are general purpose. */
#define SF_STATICS 0x00001000 /* Mark the .text & all symbols. */
#define SF_DEFINED 0x00002000 /* Symbol is defined in this file. */
#define SF_STRING 0x00004000 /* Symbol name length > 8. */
#define SF_LOCAL 0x00008000 /* Symbol must not be emitted. */
#define SF_DEBUG_MASK 0xffff0000 /* bits 16-31 are debug info. */
#define SF_FUNCTION 0x00010000 /* The symbol is a function. */
#define SF_PROCESS 0x00020000 /* Process symbol before write. */
#define SF_TAGGED 0x00040000 /* Is associated with a tag. */
#define SF_TAG 0x00080000 /* Is a tag. */
#define SF_DEBUG 0x00100000 /* Is in debug or abs section. */
#define SF_GET_SEGMENT 0x00200000 /* Get the section of the forward symbol. */
#define SF_ADJ_LNNOPTR 0x00400000 /* Has a lnnoptr. */
/* All other bits are unused. */
/* Accessors. */
#define SF_GET(s) ((s)->sy_symbol.ost_flags)
#define SF_GET_NORMAL_FIELD(s) (SF_GET (s) & SF_NORMAL_MASK)
#define SF_GET_DEBUG_FIELD(s) (SF_GET (s) & SF_DEBUG_MASK)
#define SF_GET_FILE(s) (SF_GET (s) & SF_FILE)
#define SF_GET_STATICS(s) (SF_GET (s) & SF_STATICS)
#define SF_GET_DEFINED(s) (SF_GET (s) & SF_DEFINED)
#define SF_GET_STRING(s) (SF_GET (s) & SF_STRING)
#define SF_GET_LOCAL(s) (SF_GET (s) & SF_LOCAL)
#define SF_GET_FUNCTION(s) (SF_GET (s) & SF_FUNCTION)
#define SF_GET_PROCESS(s) (SF_GET (s) & SF_PROCESS)
#define SF_GET_DEBUG(s) (SF_GET (s) & SF_DEBUG)
#define SF_GET_TAGGED(s) (SF_GET (s) & SF_TAGGED)
#define SF_GET_TAG(s) (SF_GET (s) & SF_TAG)
#define SF_GET_GET_SEGMENT(s) (SF_GET (s) & SF_GET_SEGMENT)
#define SF_GET_ADJ_LNNOPTR(s) (SF_GET (s) & SF_ADJ_LNNOPTR)
#define SF_GET_I960(s) (SF_GET (s) & SF_I960_MASK) /* Used by i960. */
#define SF_GET_BALNAME(s) (SF_GET (s) & SF_BALNAME) /* Used by i960. */
#define SF_GET_CALLNAME(s) (SF_GET (s) & SF_CALLNAME) /* Used by i960. */
#define SF_GET_IS_SYSPROC(s) (SF_GET (s) & SF_IS_SYSPROC) /* Used by i960. */
#define SF_GET_SYSPROC(s) (SF_GET (s) & SF_SYSPROC) /* Used by i960. */
/* Modifiers. */
#define SF_SET(s,v) (SF_GET (s) = (v))
#define SF_SET_NORMAL_FIELD(s,v)(SF_GET (s) |= ((v) & SF_NORMAL_MASK))
#define SF_SET_DEBUG_FIELD(s,v) (SF_GET (s) |= ((v) & SF_DEBUG_MASK))
#define SF_SET_FILE(s) (SF_GET (s) |= SF_FILE)
#define SF_SET_STATICS(s) (SF_GET (s) |= SF_STATICS)
#define SF_SET_DEFINED(s) (SF_GET (s) |= SF_DEFINED)
#define SF_SET_STRING(s) (SF_GET (s) |= SF_STRING)
#define SF_SET_LOCAL(s) (SF_GET (s) |= SF_LOCAL)
#define SF_CLEAR_LOCAL(s) (SF_GET (s) &= ~SF_LOCAL)
#define SF_SET_FUNCTION(s) (SF_GET (s) |= SF_FUNCTION)
#define SF_SET_PROCESS(s) (SF_GET (s) |= SF_PROCESS)
#define SF_SET_DEBUG(s) (SF_GET (s) |= SF_DEBUG)
#define SF_SET_TAGGED(s) (SF_GET (s) |= SF_TAGGED)
#define SF_SET_TAG(s) (SF_GET (s) |= SF_TAG)
#define SF_SET_GET_SEGMENT(s) (SF_GET (s) |= SF_GET_SEGMENT)
#define SF_SET_ADJ_LNNOPTR(s) (SF_GET (s) |= SF_ADJ_LNNOPTR)
#define SF_SET_I960(s,v) (SF_GET (s) |= ((v) & SF_I960_MASK)) /* Used by i960. */
#define SF_SET_BALNAME(s) (SF_GET (s) |= SF_BALNAME) /* Used by i960. */
#define SF_SET_CALLNAME(s) (SF_GET (s) |= SF_CALLNAME) /* Used by i960. */
#define SF_SET_IS_SYSPROC(s) (SF_GET (s) |= SF_IS_SYSPROC) /* Used by i960. */
#define SF_SET_SYSPROC(s,v) (SF_GET (s) |= ((v) & SF_SYSPROC)) /* Used by i960. */
/* File header macro and type definition. */
/* File position calculators. Beware to use them when all the
appropriate fields are set in the header. */
#ifdef OBJ_COFF_OMIT_OPTIONAL_HEADER
#define OBJ_COFF_AOUTHDRSZ (0)
#else
#define OBJ_COFF_AOUTHDRSZ (AOUTHDRSZ)
#endif
#define H_GET_TEXT_FILE_OFFSET(h) \
(long) (FILHSZ \
+ OBJ_COFF_AOUTHDRSZ \
+ H_GET_NUMBER_OF_SECTIONS (h) * SCNHSZ)
#define H_GET_DATA_FILE_OFFSET(h) \
(long) (H_GET_TEXT_FILE_OFFSET (h) \
+ H_GET_TEXT_SIZE (h))
#define H_GET_BSS_FILE_OFFSET(h) 0
#define H_GET_RELOCATION_FILE_OFFSET(h) \
(long) (H_GET_DATA_FILE_OFFSET (h) \
+ H_GET_DATA_SIZE (h))
#define H_GET_LINENO_FILE_OFFSET(h) \
(long) (H_GET_RELOCATION_FILE_OFFSET (h) \
+ H_GET_RELOCATION_SIZE (h))
#define H_GET_SYMBOL_TABLE_FILE_OFFSET(h) \
(long) (H_GET_LINENO_FILE_OFFSET (h) \
+ H_GET_LINENO_SIZE (h))
#define H_GET_FILE_SIZE(h) \
(long) (H_GET_SYMBOL_TABLE_FILE_OFFSET (h) \
+ H_GET_SYMBOL_TABLE_SIZE (h) \
+ (h)->string_table_size)
/* Accessors. */
/* aouthdr. */
#define H_GET_MAGIC_NUMBER(h) ((h)->aouthdr.magic)
#define H_GET_VERSION_STAMP(h) ((h)->aouthdr.vstamp)
#define H_GET_TEXT_SIZE(h) ((h)->aouthdr.tsize)
#define H_GET_DATA_SIZE(h) ((h)->aouthdr.dsize)
#define H_GET_BSS_SIZE(h) ((h)->aouthdr.bsize)
#define H_GET_ENTRY_POINT(h) ((h)->aouthdr.entry)
#define H_GET_TEXT_START(h) ((h)->aouthdr.text_start)
#define H_GET_DATA_START(h) ((h)->aouthdr.data_start)
/* filehdr. */
#define H_GET_FILE_MAGIC_NUMBER(h) ((h)->filehdr.f_magic)
#define H_GET_NUMBER_OF_SECTIONS(h) ((h)->filehdr.f_nscns)
#define H_GET_TIME_STAMP(h) ((h)->filehdr.f_timdat)
#define H_GET_SYMBOL_TABLE_POINTER(h) ((h)->filehdr.f_symptr)
#define H_GET_SYMBOL_COUNT(h) ((h)->filehdr.f_nsyms)
#define H_GET_SYMBOL_TABLE_SIZE(h) (H_GET_SYMBOL_COUNT(h) * SYMESZ)
#define H_GET_SIZEOF_OPTIONAL_HEADER(h) ((h)->filehdr.f_opthdr)
#define H_GET_FLAGS(h) ((h)->filehdr.f_flags)
/* Extra fields to achieve bsd a.out compatibility and for convenience. */
#define H_GET_RELOCATION_SIZE(h) ((h)->relocation_size)
#define H_GET_STRING_SIZE(h) ((h)->string_table_size)
#define H_GET_LINENO_SIZE(h) ((h)->lineno_size)
#ifndef OBJ_COFF_OMIT_OPTIONAL_HEADER
#define H_GET_HEADER_SIZE(h) (sizeof (FILHDR) \
+ sizeof (AOUTHDR)\
+ (H_GET_NUMBER_OF_SECTIONS(h) * SCNHSZ))
#else /* OBJ_COFF_OMIT_OPTIONAL_HEADER */
#define H_GET_HEADER_SIZE(h) (sizeof (FILHDR) \
+ (H_GET_NUMBER_OF_SECTIONS(h) * SCNHSZ))
#endif /* OBJ_COFF_OMIT_OPTIONAL_HEADER */
#define H_GET_TEXT_RELOCATION_SIZE(h) (text_section_header.s_nreloc * RELSZ)
#define H_GET_DATA_RELOCATION_SIZE(h) (data_section_header.s_nreloc * RELSZ)
/* Modifiers. */
/* aouthdr. */
#define H_SET_MAGIC_NUMBER(h,v) ((h)->aouthdr.magic = (v))
#define H_SET_VERSION_STAMP(h,v) ((h)->aouthdr.vstamp = (v))
#define H_SET_TEXT_SIZE(h,v) ((h)->aouthdr.tsize = (v))
#define H_SET_DATA_SIZE(h,v) ((h)->aouthdr.dsize = (v))
#define H_SET_BSS_SIZE(h,v) ((h)->aouthdr.bsize = (v))
#define H_SET_ENTRY_POINT(h,v) ((h)->aouthdr.entry = (v))
#define H_SET_TEXT_START(h,v) ((h)->aouthdr.text_start = (v))
#define H_SET_DATA_START(h,v) ((h)->aouthdr.data_start = (v))
/* filehdr. */
#define H_SET_FILE_MAGIC_NUMBER(h,v) ((h)->filehdr.f_magic = (v))
#define H_SET_NUMBER_OF_SECTIONS(h,v) ((h)->filehdr.f_nscns = (v))
#define H_SET_TIME_STAMP(h,v) ((h)->filehdr.f_timdat = (v))
#define H_SET_SYMBOL_TABLE_POINTER(h,v) ((h)->filehdr.f_symptr = (v))
#define H_SET_SYMBOL_TABLE_SIZE(h,v) ((h)->filehdr.f_nsyms = (v))
#define H_SET_SIZEOF_OPTIONAL_HEADER(h,v) ((h)->filehdr.f_opthdr = (v))
#define H_SET_FLAGS(h,v) ((h)->filehdr.f_flags = (v))
/* Extra fields to achieve bsd a.out compatibility and for convenience. */
#define H_SET_RELOCATION_SIZE(h,t,d) ((h)->relocation_size = (t)+(d))
#define H_SET_STRING_SIZE(h,v) ((h)->string_table_size = (v))
#define H_SET_LINENO_SIZE(h,v) ((h)->lineno_size = (v))
/* Segment flipping. */
typedef struct
{
struct internal_aouthdr aouthdr; /* a.out header. */
struct internal_filehdr filehdr; /* File header, not machine dep. */
long string_table_size; /* names + '\0' + sizeof (int). */
long relocation_size; /* Cumulated size of relocation
information for all sections in
bytes. */
long lineno_size; /* Size of the line number information
table in bytes. */
} object_headers;
struct lineno_list
{
struct bfd_internal_lineno line;
char *frag; /* Frag to which the line number is related. */
struct lineno_list *next; /* Forward chain pointer. */
};
#define obj_segment_name(i) (segment_info[(int) (i)].scnhdr.s_name)
#define obj_add_segment(s) obj_coff_add_segment (s)
/* Sanity check. */
#ifdef TC_I960
#ifndef C_LEAFSTAT
hey ! Where is the C_LEAFSTAT definition ? i960 - coff support is depending on it.
#endif /* no C_LEAFSTAT */
#endif /* TC_I960 */
extern struct internal_scnhdr data_section_header;
extern struct internal_scnhdr text_section_header;
/* Forward the segment of a forwarded symbol. */
#define OBJ_COPY_SYMBOL_ATTRIBUTES(dest,src) \
(SF_GET_GET_SEGMENT (dest) \
? (S_SET_SEGMENT (dest, S_GET_SEGMENT (src)), 0) \
: 0)
#ifdef TE_PE
#define obj_handle_link_once(t) obj_coff_pe_handle_link_once (t)
#endif
#endif /* not BFD_ASSEMBLER */
extern const pseudo_typeS coff_pseudo_table[];
#ifndef obj_pop_insert
@ -861,7 +371,6 @@ extern const pseudo_typeS coff_pseudo_table[];
#define obj_app_file(name, app) c_dot_file_symbol (name, app)
#ifdef BFD_ASSEMBLER
extern int S_SET_DATA_TYPE (symbolS *, int);
extern int S_SET_STORAGE_CLASS (symbolS *, int);
extern int S_GET_STORAGE_CLASS (symbolS *);
@ -873,9 +382,6 @@ extern void coff_adjust_symtab (void);
extern void coff_frob_section (segT);
extern void coff_adjust_section_syms (bfd *, asection *, void *);
extern void coff_frob_file_after_relocs (void);
#else
extern void obj_extra_stuff (object_headers *);
#endif
extern void coff_obj_symbol_new_hook (symbolS *);
extern void coff_obj_read_begin_hook (void);
extern void obj_coff_section (int);

View File

@ -1,5 +1,5 @@
/* This file is obj-evax.h
Copyright 1996, 2000 Free Software Foundation, Inc.
Copyright 1996, 2000, 2005 Free Software Foundation, Inc.
Contributed by Klaus Kämpf (kkaempf@progis.de) of
proGIS Software, Aachen, Germany.
@ -31,9 +31,7 @@
/* include whatever target cpu is appropriate. */
#include "targ-cpu.h"
#ifdef BFD_ASSEMBLER
#define OUTPUT_FLAVOR bfd_target_evax_flavour
#endif
/*
* SYMBOLS
@ -58,8 +56,6 @@ obj_symbol_type; /* should be the format's symbol structure */
typedef void *object_headers;
#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE (0) /* your magic number */
#define OBJ_EMIT_LINENO(a,b,c) /* must be *something*. This no-op's it out. */
#define obj_symbol_new_hook(s) {;}

View File

@ -1,54 +0,0 @@
/* This file is obj-hp300.h
Copyright 1993, 2000, 2005 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
#include "config/obj-aout.c"
/* Aout file generation & utilities */
void
hp300_header_append (where, headers)
char **where;
object_headers *headers;
{
tc_headers_hook (headers);
#define DO(FIELD) \
{ \
md_number_to_chars (*where, headers->header.FIELD, \
sizeof (((struct exec_bytes *) 0)->FIELD)); \
*where += sizeof (((struct exec_bytes *) 0)->FIELD); \
}
DO (a_info);
DO (a_spare1);
DO (a_spare2);
DO (a_text);
DO (a_data);
DO (a_bss);
DO (a_trsize);
DO (a_drsize);
DO (a_spare3);
DO (a_spare4);
DO (a_spare5);
DO (a_entry);
DO (a_spare6);
DO (a_spare7);
DO (a_syms);
DO (a_spare8);
}

View File

@ -1,72 +0,0 @@
/* This file is obj-hp300.h
Copyright 1993, 2000, 2005 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
#define __STRUCT_EXEC_OVERRIDE__
struct exec_bytes
{
unsigned char a_info[4]; /* a_machtype/a_magic */
unsigned char a_spare1[4];
unsigned char a_spare2[4];
unsigned char a_text[4]; /* length of text, in bytes */
unsigned char a_data[4]; /* length of data, in bytes */
unsigned char a_bss[4]; /* length of uninitialized data area for file, in bytes */
unsigned char a_trsize[4]; /* length of relocation info for text, in bytes */
unsigned char a_drsize[4]; /* length of relocation info for data, in bytes */
unsigned char a_spare3[4]; /* HP = pascal interface size */
unsigned char a_spare4[4]; /* HP = symbol table size */
unsigned char a_spare5[4]; /* HP = debug name table size */
unsigned char a_entry[4]; /* start address */
unsigned char a_spare6[4]; /* HP = source line table size */
unsigned char a_spare7[4]; /* HP = value table size */
unsigned char a_syms[4]; /* length of symbol table data in file, in bytes */
unsigned char a_spare8[4];
};
/* How big the "struct exec" is on disk */
#define EXEC_BYTES_SIZE (16 * 4)
struct exec
{
unsigned long a_info;
unsigned long a_spare1;
unsigned long a_spare2;
unsigned long a_text;
unsigned long a_data;
unsigned long a_bss;
unsigned long a_trsize;
unsigned long a_drsize;
unsigned long a_spare3;
unsigned long a_spare4;
unsigned long a_spare5;
unsigned long a_entry;
unsigned long a_spare6;
unsigned long a_spare7;
unsigned long a_syms;
unsigned long a_spare8;
};
#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE (OMAGIC)
#define AOUT_VERSION 0x02
#define AOUT_MACHTYPE 0x0c
#define OMAGIC 0x106
#define obj_header_append hp300_header_append
#include "config/obj-aout.h"

View File

@ -19,8 +19,6 @@
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
#define BFD 1
#include "bfd.h"
typedef struct
@ -43,8 +41,6 @@ typedef struct
}
object_headers;
#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE 1
int lineno_rootP;
#define IEEE_STYLE

File diff suppressed because it is too large Load Diff

View File

@ -1,53 +0,0 @@
/* tc-a29k.h -- Assemble for the AMD 29000.
Copyright 1989, 1990, 1991, 1992, 1993, 1995, 1998, 2003, 2005
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
#define TC_A29K
#define TARGET_BYTES_BIG_ENDIAN 1
#define WORKING_DOT_WORD
#define LEX_DOLLAR 1
#define tc_unrecognized_line(c) a29k_unrecognized_line (c)
extern int a29k_unrecognized_line (int);
#define tc_headers_hook(a) ; /* Not used. */
#define tc_headers_hook(a) ; /* Not used. */
#define tc_crawl_symbol_chain(a) ; /* Not used. */
#define tc_coff_symbol_emit_hook(a) ; /* Not used. */
#define AOUT_MACHTYPE 101
#define TC_COFF_FIX2RTYPE(fix_ptr) tc_coff_fix2rtype (fix_ptr)
#define BFD_ARCH bfd_arch_a29k
#define COFF_MAGIC SIPFBOMAGIC
/* Should the reloc be output ?
on the 29k, this is true only if there is a symbol attached.
on the h8, this is always true, since no fixup is done. */
#define TC_COUNT_RELOC(x) (x->fx_addsy)
#define TC_CONS_RELOC RELOC_32
#define COFF_FLAGS F_AR32W
#define reloc_type int
#define NEED_FX_R_TYPE
#define ZERO_BASED_SEGMENTS

View File

@ -175,9 +175,6 @@ static int meabi_flags = EF_ARM_EABI_UNKNOWN;
symbolS * GOT_symbol;
#endif
/* Size of relocation record. */
const int md_reloc_size = 8;
/* 0: assemble for ARM,
1: assemble for Thumb,
2: assemble for Thumb even though target CPU does not support thumb

View File

@ -32,8 +32,6 @@
#define COFF_MAGIC ARMMAGIC
#define TARGET_ARCH bfd_arch_arm
#define AOUT_MACHTYPE 0
#define DIFF_EXPR_OK
#ifdef LITTLE_ENDIAN
@ -121,7 +119,6 @@ struct fix;
#define TC_START_LABEL(C,STR) (c == ':' || (c == '/' && arm_data_in_code ()))
#define tc_canonicalize_symbol_name(str) arm_canonicalize_symbol_name (str);
#define obj_adjust_symtab() arm_adjust_symtab ()
#define tc_aout_pre_write_hook(x) {;} /* not used */
#define LISTING_HEADER "ARM GAS "

View File

@ -1085,12 +1085,11 @@ md_apply_fix (fixP, valP, seg)
}
}
/* A `BFD_ASSEMBLER' GAS will call this to generate a reloc. GAS
will pass the resulting reloc to `bfd_install_relocation'. This
currently works poorly, as `bfd_install_relocation' often does the
wrong thing, and instances of `tc_gen_reloc' have been written to
work around the problems, which in turns makes it difficult to fix
`bfd_install_relocation'. */
/* GAS will call this to generate a reloc, passing the resulting reloc
to `bfd_install_relocation'. This currently works poorly, as
`bfd_install_relocation' often does the wrong thing, and instances of
`tc_gen_reloc' have been written to work around the problems, which
in turns makes it difficult to fix `bfd_install_relocation'. */
/* If while processing a fixup, a reloc really needs to be created
then it is done here. */

View File

@ -1,5 +1,5 @@
/* This file is tc-avr.h
Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
Copyright 1999, 2000, 2001, 2002, 2005 Free Software Foundation, Inc.
Contributed by Denis Chertykov <denisc@overta.ru>
@ -20,10 +20,6 @@
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
#ifndef BFD_ASSEMBLER
#error AVR support requires BFD_ASSEMBLER
#endif
/* 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

View File

@ -31,10 +31,8 @@
#define TARGET_FORMAT "elf32-crx"
#define TARGET_ARCH bfd_arch_crx
#define BFD_ARCH bfd_arch_crx
#define WORKING_DOT_WORD
#define NEED_FX_R_TYPE
#define LOCAL_LABEL_PREFIX '.'
#define md_undefined_symbol(s) 0

View File

@ -24,10 +24,6 @@
#define TARGET_BYTES_BIG_ENDIAN 0
#ifndef BFD_ASSEMBLER
#error D10V support requires BFD_ASSEMBLER
#endif
/* The target BFD architecture. */
#define TARGET_ARCH bfd_arch_d10v

View File

@ -22,10 +22,6 @@
#define TC_D30V
#ifndef BFD_ASSEMBLER
#error D30V support requires BFD_ASSEMBLER
#endif
/* The target BFD architecture. */
#define TARGET_ARCH bfd_arch_d30v
#define TARGET_FORMAT "elf32-d30v"

View File

@ -22,10 +22,6 @@
#define TC_DLX
#ifndef BFD_ASSEMBLER
#error DLX support requires BFD_ASSEMBLER
#endif
#ifndef __BFD_H_SEEN__
#include "bfd.h"
#endif
@ -52,21 +48,9 @@ extern bfd_boolean md_dlx_fix_adjustable (struct fix *);
#define tc_unrecognized_line(c) dlx_unrecognized_line (c)
#define tc_headers_hook(a) ; /* Not used. */
#define tc_headers_hook(a) ; /* Not used. */
#define tc_crawl_symbol_chain(a) ; /* Not used. */
#define tc_coff_symbol_emit_hook(a) ; /* Not used. */
#define AOUT_MACHTYPE 101
#define TC_COFF_FIX2RTYPE(fix_ptr) tc_coff_fix2rtype (fix_ptr)
#define BFD_ARCH bfd_arch_dlx
#define COFF_MAGIC DLXMAGIC
/* Should the reloc be output ?
on the 29k, this is true only if there is a symbol attached.
on the h8, this is always true, since no fixup is done
on dlx, I have no idea!! but lets keep it here just for fun. */
#define TC_COUNT_RELOC(x) (x->fx_addsy)
#define TC_CONS_RELOC BFD_RELOC_32_PCREL
/* No shared lib support, so we don't need to ensure externally
visible symbols can be overridden. */
@ -77,8 +61,6 @@ extern bfd_boolean md_dlx_fix_adjustable (struct fix *);
/* Values passed to md_apply_fix don't include the symbol value. */
#define MD_APPLY_SYM_VALUE(FIX) 0
#define NEED_FX_R_TYPE
/* Zero Based Segment?? sound very dangerous to me! */
#define ZERO_BASED_SEGMENTS

View File

@ -21,11 +21,6 @@
#define TC_FR30
#ifndef BFD_ASSEMBLER
/* Leading space so will compile with cc. */
#error FR30 support requires BFD_ASSEMBLER
#endif
#define LISTING_HEADER "FR30 GAS "
/* The target BFD architecture. */

View File

@ -20,11 +20,6 @@
#define TC_FRV
#ifndef BFD_ASSEMBLER
/* leading space so will compile with cc */
#error FRV support requires BFD_ASSEMBLER
#endif
#define LISTING_HEADER "FRV GAS "
/* The target BFD architecture. */

View File

@ -25,10 +25,7 @@
#include "as.h"
#include "subsegs.h"
#include "bfd.h"
#ifdef BFD_ASSEMBLER
#include "dwarf2dbg.h"
#endif
#define DEFINE_TABLE
#define h8_opcodes ops
@ -77,10 +74,8 @@ h8300hmode (int arg ATTRIBUTE_UNUSED)
{
Hmode = 1;
Smode = 0;
#ifdef BFD_ASSEMBLER
if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300h))
as_warn (_("could not set architecture and machine"));
#endif
}
static void
@ -88,10 +83,8 @@ h8300smode (int arg ATTRIBUTE_UNUSED)
{
Smode = 1;
Hmode = 1;
#ifdef BFD_ASSEMBLER
if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300s))
as_warn (_("could not set architecture and machine"));
#endif
}
static void
@ -100,10 +93,8 @@ h8300hnmode (int arg ATTRIBUTE_UNUSED)
Hmode = 1;
Smode = 0;
Nmode = 1;
#ifdef BFD_ASSEMBLER
if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300hn))
as_warn (_("could not set architecture and machine"));
#endif
}
static void
@ -112,10 +103,8 @@ h8300snmode (int arg ATTRIBUTE_UNUSED)
Smode = 1;
Hmode = 1;
Nmode = 1;
#ifdef BFD_ASSEMBLER
if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300sn))
as_warn (_("could not set architecture and machine"));
#endif
}
static void
@ -124,10 +113,8 @@ h8300sxmode (int arg ATTRIBUTE_UNUSED)
Smode = 1;
Hmode = 1;
SXmode = 1;
#ifdef BFD_ASSEMBLER
if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300sx))
as_warn (_("could not set architecture and machine"));
#endif
}
static void
@ -137,10 +124,8 @@ h8300sxnmode (int arg ATTRIBUTE_UNUSED)
Hmode = 1;
SXmode = 1;
Nmode = 1;
#ifdef BFD_ASSEMBLER
if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300sxn))
as_warn (_("could not set architecture and machine"));
#endif
}
static void
@ -184,8 +169,6 @@ const pseudo_typeS md_pseudo_table[] =
{0, 0, 0}
};
const int md_reloc_size;
const char EXP_CHARS[] = "eE";
/* Chars that mean this number is a floating point constant
@ -208,10 +191,8 @@ md_begin (void)
char prev_buffer[100];
int idx = 0;
#ifdef BFD_ASSEMBLER
if (!bfd_set_arch_mach (stdoutput, bfd_arch_h8300, bfd_mach_h8300))
as_warn (_("could not set architecture and machine"));
#endif
opcode_hash_control = hash_new ();
prev_buffer[0] = 0;
@ -2017,33 +1998,15 @@ md_assemble (char *str)
build_bytes (instruction, operand);
#ifdef BFD_ASSEMBLER
dwarf2_emit_insn (instruction->length);
#endif
}
#ifndef BFD_ASSEMBLER
void
tc_crawl_symbol_chain (object_headers *headers ATTRIBUTE_UNUSED)
{
printf (_("call to tc_crawl_symbol_chain \n"));
}
#endif
symbolS *
md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
{
return 0;
}
#ifndef BFD_ASSEMBLER
void
tc_headers_hook (object_headers *headers ATTRIBUTE_UNUSED)
{
printf (_("call to tc_headers_hook \n"));
}
#endif
/* Various routines to kill one day */
/* Equal to MAX_PRECISION in atof-ieee.c */
#define MAX_LITTLENUMS 6
@ -2132,12 +2095,7 @@ tc_aout_fix_to_chars (void)
}
void
md_convert_frag (
#ifdef BFD_ASSEMBLER
bfd *headers ATTRIBUTE_UNUSED,
#else
object_headers *headers ATTRIBUTE_UNUSED,
#endif
md_convert_frag (bfd *headers ATTRIBUTE_UNUSED,
segT seg ATTRIBUTE_UNUSED,
fragS *fragP ATTRIBUTE_UNUSED)
{
@ -2145,22 +2103,12 @@ md_convert_frag (
abort ();
}
#ifdef BFD_ASSEMBLER
valueT
md_section_align (segT segment, valueT size)
{
int align = bfd_get_section_alignment (stdoutput, segment);
return ((size + (1 << align) - 1) & (-1 << align));
}
#else
valueT
md_section_align (segT seg, valueT size)
{
return ((size + (1 << section_alignment[(int) seg]) - 1)
& (-1 << section_alignment[(int) seg]));
}
#endif
void
md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
@ -2212,66 +2160,6 @@ md_pcrel_from (fixS *fixP ATTRIBUTE_UNUSED)
abort ();
}
#ifndef BFD_ASSEMBLER
void
tc_reloc_mangle (fixS *fix_ptr, struct internal_reloc *intr, bfd_vma base)
{
symbolS *symbol_ptr;
symbol_ptr = fix_ptr->fx_addsy;
/* If this relocation is attached to a symbol then it's ok
to output it. */
if (fix_ptr->fx_r_type == TC_CONS_RELOC)
{
/* cons likes to create reloc32's whatever the size of the reloc..
*/
switch (fix_ptr->fx_size)
{
case 4:
intr->r_type = R_RELLONG;
break;
case 2:
intr->r_type = R_RELWORD;
break;
case 1:
intr->r_type = R_RELBYTE;
break;
default:
abort ();
}
}
else
{
intr->r_type = fix_ptr->fx_r_type;
}
intr->r_vaddr = fix_ptr->fx_frag->fr_address + fix_ptr->fx_where + base;
intr->r_offset = fix_ptr->fx_offset;
if (symbol_ptr)
{
if (symbol_ptr->sy_number != -1)
intr->r_symndx = symbol_ptr->sy_number;
else
{
symbolS *segsym;
/* This case arises when a reference is made to `.'. */
segsym = seg_info (S_GET_SEGMENT (symbol_ptr))->dot;
if (segsym == NULL)
intr->r_symndx = -1;
else
{
intr->r_symndx = segsym->sy_number;
intr->r_offset += S_GET_VALUE (symbol_ptr);
}
}
}
else
intr->r_symndx = -1;
}
#else /* BFD_ASSEMBLER */
arelent *
tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
{
@ -2313,4 +2201,3 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
return rel;
}
#endif

View File

@ -1,6 +1,6 @@
/* This file is tc-h8300.h
Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 2000, 2001, 2002, 2003
1997, 1998, 2000, 2001, 2002, 2003, 2005
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -26,10 +26,8 @@
#define TARGET_ARCH bfd_arch_h8300
#ifdef BFD_ASSEMBLER
/* Fixup debug sections since we will never relax them. */
#define TC_LINKRELAX_FIXUP(seg) (seg->flags & SEC_ALLOC)
#endif
#ifdef OBJ_ELF
#define TARGET_FORMAT "elf32-h8300"
#define LOCAL_LABEL_PREFIX '.'
@ -42,12 +40,7 @@ struct internal_reloc;
#define WORKING_DOT_WORD
/* This macro translates between an internal fix and a coff reloc type. */
#define TC_COFF_FIX2RTYPE(fixP) abort ();
#define BFD_ARCH bfd_arch_h8300
#define COFF_MAGIC ( Smode && Nmode ? 0x8304 : Hmode && Nmode ? 0x8303 : Smode ? 0x8302 : Hmode ? 0x8301 : 0x8300)
#define TC_COUNT_RELOC(x) (1)
#define IGNORE_NONSTANDARD_ESCAPES
#define tc_coff_symbol_emit_hook(a) ; /* not used */
@ -84,10 +77,7 @@ extern void tc_reloc_mangle (struct fix *, struct internal_reloc *, bfd_vma);
#define tc_fix_adjustable(FIX) 0
#endif
#define TC_CONS_RELOC (Hmode ? R_RELLONG: R_RELWORD)
#define LISTING_HEADER "Renesas H8/300 GAS "
#define NEED_FX_R_TYPE 1
#ifndef OBJ_ELF
#define RELOC_32 1234
#endif

File diff suppressed because it is too large Load Diff

View File

@ -1,55 +0,0 @@
/* This file is tc-h8500.h
Copyright 1993, 1995, 1997, 1998, 2000, 2003, 2005
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
#define TC_H8500
#define TARGET_BYTES_BIG_ENDIAN 1
struct internal_reloc;
#define WORKING_DOT_WORD
/* This macro translates between an internal fix and a coff reloc type. */
#define TC_COFF_FIX2RTYPE(fixP) tc_coff_fix2rtype (fixP)
#define BFD_ARCH bfd_arch_h8500
#define COFF_MAGIC 0x8500
#define TC_COUNT_RELOC(x) ((x)->fx_addsy || (x)->fx_subsy)
#define IGNORE_NONSTANDARD_ESCAPES
#define TC_RELOC_MANGLE(s,a,b,c) tc_reloc_mangle(a, b, c)
extern void tc_reloc_mangle
(struct fix *, struct internal_reloc *, bfd_vma);
#define LISTING_HEADER "Renesas H8/500 GAS "
#define NEED_FX_R_TYPE 1
#define RELOC_32 1234
#define TC_START_LABEL(ch, ptr) (ch == ':' && start_label (ptr))
int start_label (char *);
#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep (frag)
int tc_coff_sizemachdep (struct frag *);
#define md_operand(x)
extern struct relax_type md_relax_table[];
#define TC_GENERIC_RELAX_TABLE md_relax_table

View File

@ -106,10 +106,6 @@ extern void pa_check_eof PARAMS ((void));
extern const char hppa_symbol_chars[];
#define tc_symbol_chars hppa_symbol_chars
/* The PA does not need support for either of these. */
#define tc_crawl_symbol_chain(headers) {;}
#define tc_headers_hook(headers) {;}
#define RELOC_EXPANSION_POSSIBLE
#define MAX_RELOC_EXPANSION 6

View File

@ -29,10 +29,6 @@ struct fix;
#define TARGET_BYTES_BIG_ENDIAN 1
#endif
#ifndef BFD_ASSEMBLER
#error I370 support requires BFD_ASSEMBLER
#endif
/* The target BFD architecture. */
#define TARGET_ARCH (i370_arch ())
extern enum bfd_architecture i370_arch (void);

View File

@ -4870,9 +4870,6 @@ int md_short_jump_size = 2;
/* Size of dword displacement jmp. */
int md_long_jump_size = 5;
/* Size of relocation record. */
const int md_reloc_size = 8;
void
md_create_short_jump (ptr, from_addr, to_addr, frag, to_symbol)
char *ptr;
@ -4986,10 +4983,7 @@ md_apply_fix (fixP, valP, seg)
/* For some reason, the PE format does not store a
section address offset for a PC relative symbol. */
if (S_GET_SEGMENT (fixP->fx_addsy) != seg
#if defined(BFD_ASSEMBLER) || defined(S_IS_WEAK)
|| S_IS_WEAK (fixP->fx_addsy)
#endif
)
|| S_IS_WEAK (fixP->fx_addsy))
value += md_pcrel_from (fixP);
#endif
}

View File

@ -1,6 +1,6 @@
/* tc-i386.h -- Header file for tc-i386.c
Copyright 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2002, 2003, 2004
2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -23,10 +23,6 @@
#ifndef TC_I386
#define TC_I386 1
#ifndef BFD_ASSEMBLER
#error So, do you know what you are doing?
#endif
struct fix;
#define TARGET_BYTES_BIG_ENDIAN 0

View File

@ -1,5 +1,5 @@
/* tc-i860.h -- Header file for the i860.
Copyright 1991, 1992, 1995, 1998, 2000, 2001, 2002, 2003
Copyright 1991, 1992, 1995, 1998, 2000, 2001, 2002, 2003, 2005
Free Software Foundation, Inc.
Brought back from the dead and completely reworked
@ -24,10 +24,6 @@
#ifndef TC_I860
#define TC_I860 1
#ifndef BFD_ASSEMBLER
#error i860 support requires BFD_ASSEMBLER
#endif
enum i860_fix_info
{
OP_NONE = 0x00000,

View File

@ -123,14 +123,6 @@
extern char *input_line_pointer;
#if !defined (BFD_ASSEMBLER) && !defined (BFD)
#ifdef OBJ_COFF
const int md_reloc_size = sizeof (struct reloc);
#else /* OBJ_COFF */
const int md_reloc_size = sizeof (struct relocation_info);
#endif /* OBJ_COFF */
#endif
/* Local i80960 routines. */
struct memS;
struct regop;
@ -2050,17 +2042,10 @@ relax_cobr (fragS *fragP) /* fragP->fr_opcode is assumed to point to
If the fragment substate is 2, a 13-bit displacement was not enough.
Replace the cobr with a two instructions (a compare and a branch). */
#ifndef BFD_ASSEMBLER
void
md_convert_frag (object_headers *headers ATTRIBUTE_UNUSED,
segT seg ATTRIBUTE_UNUSED,
fragS *fragP)
#else
void
md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
segT sec ATTRIBUTE_UNUSED,
fragS *fragP)
#endif
{
/* Structure describing needed address fix. */
fixS *fixP;
@ -2455,15 +2440,6 @@ md_apply_fix (fixS *fixP,
if (!fixP->fx_bit_fixP)
{
#ifndef BFD_ASSEMBLER
/* For callx, we always want to write out zero, and emit a
symbolic relocation. */
if (fixP->fx_bsr)
val = 0;
fixP->fx_addnumber = val;
#endif
md_number_to_imm (place, val, fixP->fx_size);
}
else if ((int) (size_t) fixP->fx_bit_fixP == 13
@ -2546,33 +2522,6 @@ tc_bout_fix_to_chars (char *where,
#endif /* OBJ_AOUT or OBJ_BOUT */
#if defined (OBJ_COFF) && defined (BFD)
short
tc_coff_fix2rtype (fixS *fixP)
{
if (fixP->fx_bsr)
abort ();
if (fixP->fx_pcrel == 0 && fixP->fx_size == 4)
return R_RELLONG;
if (fixP->fx_pcrel != 0 && fixP->fx_size == 4)
return R_IPRMED;
abort ();
return 0;
}
int
tc_coff_sizemachdep (fragS *frag)
{
if (frag->fr_next)
return frag->fr_next->fr_address - frag->fr_address;
else
return 0;
}
#endif
/* Align an address by rounding it up to the specified boundary. */
valueT
@ -2581,139 +2530,12 @@ md_section_align (segT seg,
{
int align;
#ifdef BFD_ASSEMBLER
align = bfd_get_section_alignment (stdoutput, seg);
#else
align = section_alignment[(int) seg];
#endif
return (addr + (1 << align) - 1) & (-1 << align);
}
extern int coff_flags;
#ifdef OBJ_COFF
void
tc_headers_hook (object_headers *headers)
{
switch (architecture)
{
case ARCH_KA:
coff_flags |= F_I960KA;
break;
case ARCH_KB:
coff_flags |= F_I960KB;
break;
case ARCH_MC:
coff_flags |= F_I960MC;
break;
case ARCH_CA:
coff_flags |= F_I960CA;
break;
case ARCH_JX:
coff_flags |= F_I960JX;
break;
case ARCH_HX:
coff_flags |= F_I960HX;
break;
default:
if (iclasses_seen == I_BASE)
coff_flags |= F_I960CORE;
else if (iclasses_seen & I_CX)
coff_flags |= F_I960CA;
else if (iclasses_seen & I_HX)
coff_flags |= F_I960HX;
else if (iclasses_seen & I_JX)
coff_flags |= F_I960JX;
else if (iclasses_seen & I_CX2)
coff_flags |= F_I960CA;
else if (iclasses_seen & I_MIL)
coff_flags |= F_I960MC;
else if (iclasses_seen & (I_DEC | I_FP))
coff_flags |= F_I960KB;
else
coff_flags |= F_I960KA;
break;
}
if (flag_readonly_data_in_text)
{
headers->filehdr.f_magic = I960RWMAGIC;
headers->aouthdr.magic = OMAGIC;
}
else
{
headers->filehdr.f_magic = I960ROMAGIC;
headers->aouthdr.magic = NMAGIC;
} /* set magic numbers */
}
#endif /* OBJ_COFF */
#ifndef BFD_ASSEMBLER
/* Things going on here:
For bout, We need to assure a couple of simplifying
assumptions about leafprocs for the linker: the leafproc
entry symbols will be defined in the same assembly in
which they're declared with the '.leafproc' directive;
and if a leafproc has both 'call' and 'bal' entry points
they are both global or both local.
For coff, the call symbol has a second aux entry that
contains the bal entry point. The bal symbol becomes a
label.
For coff representation, the call symbol has a second aux entry that
contains the bal entry point. The bal symbol becomes a label. */
void
tc_crawl_symbol_chain (object_headers *headers ATTRIBUTE_UNUSED)
{
symbolS *symbolP;
for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP))
{
#ifdef OBJ_COFF
if (TC_S_IS_SYSPROC (symbolP))
{
/* Second aux entry already contains the sysproc number. */
S_SET_NUMBER_AUXILIARY (symbolP, 2);
S_SET_STORAGE_CLASS (symbolP, C_SCALL);
S_SET_DATA_TYPE (symbolP, S_GET_DATA_TYPE (symbolP) | (DT_FCN << N_BTSHFT));
continue;
}
#endif /* OBJ_COFF */
if (!TC_S_IS_BALNAME (symbolP) && !TC_S_IS_CALLNAME (symbolP))
continue;
if (!S_IS_DEFINED (symbolP))
as_bad (_("leafproc symbol '%s' undefined"), S_GET_NAME (symbolP));
if (TC_S_IS_CALLNAME (symbolP))
{
symbolS *balP = tc_get_bal_of_call (symbolP);
if (S_IS_EXTERNAL (symbolP) != S_IS_EXTERNAL (balP))
{
S_SET_EXTERNAL (symbolP);
S_SET_EXTERNAL (balP);
as_warn (_("Warning: making leafproc entries %s and %s both global\n"),
S_GET_NAME (symbolP), S_GET_NAME (balP));
} /* externality mismatch */
} /* if callname */
} /* walk the symbol chain */
}
#endif /* ! BFD_ASSEMBLER */
/* For aout or bout, the bal immediately follows the call.
For coff, we cheat and store a pointer to the bal symbol in the
@ -2841,8 +2663,6 @@ i960_validate_fix (fixS *fixP, segT this_segment_type ATTRIBUTE_UNUSED)
return 1;
}
#ifdef BFD_ASSEMBLER
/* From cgen.c: */
static short
@ -2895,8 +2715,6 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixP)
/* end from cgen.c */
#endif /* BFD_ASSEMBLER */
const pseudo_typeS md_pseudo_table[] =
{
{"bss", s_lcomm, 1},

View File

@ -52,21 +52,12 @@
*/
/* tailor gas */
#define SYMBOLS_NEED_BACKPOINTERS
#define LOCAL_LABELS_FB 1
#define BITFIELD_CONS_EXPRESSIONS
/* tailor the coff format */
#define BFD_ARCH bfd_arch_i960
#define COFF_FLAGS F_AR32WR
#define COFF_MAGIC I960ROMAGIC
#define OBJ_COFF_SECTION_HEADER_HAS_ALIGNMENT
#define OBJ_COFF_MAX_AUXENTRIES (2)
#define TC_COUNT_RELOC(FIX) (!(FIX)->fx_done)
#define TC_COFF_FIX2RTYPE(FIX) tc_coff_fix2rtype (FIX)
#define TC_COFF_SIZEMACHDEP(FRAGP) tc_coff_sizemachdep (FRAGP)
#define TC_COFF_SET_MACHINE(HDRS) tc_headers_hook (HDRS)
extern int tc_coff_sizemachdep PARAMS ((struct frag *));
/* MEANING OF 'n_other' in the symbol record.
*
@ -188,7 +179,6 @@ extern struct symbol *tc_get_bal_of_call PARAMS ((symbolS *));
extern void i960_handle_align PARAMS ((struct frag *));
#define HANDLE_ALIGN(FRAG) i960_handle_align (FRAG)
#define NEED_FX_R_TYPE
#define NO_RELOC -1
#define md_operand(x)

View File

@ -20,11 +20,6 @@
#define TC_IP2K
#ifndef BFD_ASSEMBLER
/* Leading space so will compile with cc. */
#error IP2K support requires BFD_ASSEMBLER
#endif
#define LISTING_HEADER "IP2xxx GAS "
/* The target BFD architecture. */

View File

@ -1,5 +1,5 @@
/* tc-iq2000.h -- Header file for tc-iq2000.c.
Copyright (C) 2003, 2004 Free Software Foundation, Inc.
Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -20,11 +20,6 @@
#define TC_IQ2000
#ifndef BFD_ASSEMBLER
/* Leading space so will compile with cc. */
#error IQ2000 support requires BFD_ASSEMBLER
#endif
#define LISTING_HEADER "IQ2000 GAS "
/* The target BFD architecture. */

View File

@ -1,5 +1,5 @@
/* tc-m32c.h -- Header file for tc-m32c.c.
Copyright (C) 2004 Free Software Foundation, Inc.
Copyright (C) 2004, 2005 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -20,10 +20,6 @@
#define TC_M32C
#ifndef BFD_ASSEMBLER
#error M32C support requires BFD_ASSEMBLER
#endif
#define LISTING_HEADER "M16C/M32C GAS "
/* The target BFD architecture. */

View File

@ -21,11 +21,6 @@
#define TC_M32R
#ifndef BFD_ASSEMBLER
/* Leading space so will compile with cc. */
#error M32R support requires BFD_ASSEMBLER
#endif
#define LISTING_HEADER \
(target_big_endian ? "M32R GAS" : "M32R GAS Little Endian")

View File

@ -32,10 +32,6 @@ struct fix;
/* Motorola assembler specs does not require '.' before pseudo-ops. */
#define NO_PSEUDO_DOT 1
#ifndef BFD_ASSEMBLER
#error M68HC11 support requires BFD_ASSEMBLER
#endif
/* The target BFD architecture. */
#define TARGET_ARCH (m68hc11_arch ())
extern enum bfd_architecture m68hc11_arch (void);

View File

@ -70,8 +70,6 @@ const char FLT_CHARS[] = "rRsSfFdDxXeEpP";
changed in read.c . Ideally it shouldn't have to know about it at all,
but nothing is ideal around here. */
const int md_reloc_size = 8; /* Size of relocation record. */
/* Are we trying to generate PIC code? If so, absolute references
ought to be made into linkage table references or pc-relative
references. Not implemented. For ELF there are other means
@ -740,63 +738,6 @@ find_cf_chip (int architecture)
return buf;
}
#if defined (M68KCOFF) && !defined (BFD_ASSEMBLER)
#ifdef NO_PCREL_RELOCS
int
make_pcrel_absolute (fixS *fixP, long *add_number)
{
register unsigned char *opcode = fixP->fx_frag->fr_opcode;
/* Rewrite the PC relative instructions to absolute address ones.
these are rumored to be faster, and the apollo linker refuses
to deal with the PC relative relocations. */
if (opcode[0] == 0x60 && opcode[1] == 0xff) /* BRA -> JMP. */
{
if (flag_keep_pcrel)
as_fatal (_("Tried to convert PC relative branch to absolute jump"));
opcode[0] = 0x4e;
opcode[1] = 0xf9;
}
else if (opcode[0] == 0x61 && opcode[1] == 0xff) /* BSR -> JSR. */
{
if (flag_keep_pcrel)
as_fatal (_("Tried to convert PC relative BSR to absolute JSR"));
opcode[0] = 0x4e;
opcode[1] = 0xb9;
}
else
as_fatal (_("Unknown PC relative instruction"));
*add_number -= 4;
return 0;
}
#endif /* NO_PCREL_RELOCS */
short
tc_coff_fix2rtype (fixS *fixP)
{
if (fixP->fx_tcbit && fixP->fx_size == 4)
return R_RELLONG_NEG;
#ifdef NO_PCREL_RELOCS
know (fixP->fx_pcrel == 0);
return (fixP->fx_size == 1 ? R_RELBYTE
: fixP->fx_size == 2 ? R_DIR16
: R_DIR32);
#else
return (fixP->fx_pcrel
? (fixP->fx_size == 1 ? R_PCRBYTE
: fixP->fx_size == 2 ? R_PCRWORD
: R_PCRLONG)
: (fixP->fx_size == 1 ? R_RELBYTE
: fixP->fx_size == 2 ? R_RELWORD
: R_RELLONG));
#endif
}
#endif
#ifdef OBJ_ELF
/* Return zero if the reference to SYMBOL from within the same segment may
@ -956,8 +897,6 @@ tc_m68k_fix_adjustable (fixS *fixP)
#endif /* OBJ_ELF */
#ifdef BFD_ASSEMBLER
arelent *
tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
{
@ -1068,8 +1007,6 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
return reloc;
}
#endif /* BFD_ASSEMBLER */
/* Handle of the OPCODE hash table. NULL means any use before
m68k_ip_begin() will crash. */
static struct hash_control *op_hash;
@ -2273,12 +2210,8 @@ m68k_ip (char *instring)
&& m68k_abspcadd)
{
opP->disp.exp.X_op = O_symbol;
#ifndef BFD_ASSEMBLER
opP->disp.exp.X_add_symbol = &abs_symbol;
#else
opP->disp.exp.X_add_symbol =
section_symbol (absolute_section);
#endif
}
/* Force into index mode. Hope this works. */
@ -3894,11 +3827,6 @@ init_regtable (void)
static int no_68851, no_68881;
#ifdef OBJ_AOUT
/* a.out machine type. Default to 68020. */
int m68k_aout_machtype = 2;
#endif
void
md_assemble (char *str)
{
@ -4444,18 +4372,6 @@ m68k_init_after_args (void)
if (no_68851 && (current_architecture & m68851))
as_bad (_("options for 68851 and no-68851 both given"));
#ifdef OBJ_AOUT
/* Work out the magic number. This isn't very general. */
if (current_architecture & m68000)
m68k_aout_machtype = 0;
else if (current_architecture & m68010)
m68k_aout_machtype = 1;
else if (current_architecture & m68020)
m68k_aout_machtype = 2;
else
m68k_aout_machtype = 2;
#endif
/* Note which set of "movec" control registers is available. */
select_control_regs ();
@ -4654,11 +4570,9 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
}
#endif
#ifdef BFD_ASSEMBLER
if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
|| fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
return;
#endif
switch (fixP->fx_size)
{
@ -4712,10 +4626,7 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
in write.c may have clobbered fx_pcrel, so we need to examine the
reloc type. */
if ((fixP->fx_pcrel
#ifdef BFD_ASSEMBLER
|| fixP->fx_r_type == BFD_RELOC_8_PCREL
#endif
)
|| fixP->fx_r_type == BFD_RELOC_8_PCREL)
&& fixP->fx_size == 1
&& (fixP->fx_addsy == NULL
|| S_IS_DEFINED (fixP->fx_addsy))
@ -4943,18 +4854,6 @@ md_convert_frag_1 (fragS *fragP)
}
}
#ifndef BFD_ASSEMBLER
void
md_convert_frag (object_headers *headers ATTRIBUTE_UNUSED,
segT sec ATTRIBUTE_UNUSED,
fragS *fragP)
{
md_convert_frag_1 (fragP);
}
#else
void
md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
segT sec ATTRIBUTE_UNUSED,
@ -4962,7 +4861,6 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
{
md_convert_frag_1 (fragP);
}
#endif
/* Force truly undefined symbols to their maximum size, and generally set up
the frag list to be relaxed
@ -5121,38 +5019,6 @@ md_ri_to_chars (char *the_bytes, struct reloc_info_generic *ri)
#endif
#ifndef BFD_ASSEMBLER
void
tc_aout_fix_to_chars (char *where, fixS *fixP,
relax_addressT segment_address_in_file)
{
/*
* In: length of relocation (or of address) in chars: 1, 2 or 4.
* Out: GNU LD relocation length code: 0, 1, or 2.
*/
static const unsigned char nbytes_r_length[] = {42, 0, 1, 42, 2};
long r_symbolnum;
know (fixP->fx_addsy != NULL);
md_number_to_chars (where,
(fixP->fx_frag->fr_address
+ fixP->fx_where - segment_address_in_file), 4);
r_symbolnum = (S_IS_DEFINED (fixP->fx_addsy)
? S_GET_TYPE (fixP->fx_addsy)
: fixP->fx_addsy->sy_number);
where[4] = (r_symbolnum >> 16) & 0x0ff;
where[5] = (r_symbolnum >> 8) & 0x0ff;
where[6] = r_symbolnum & 0x0ff;
where[7] = (((fixP->fx_pcrel << 7) & 0x80)
| ((nbytes_r_length[fixP->fx_size] << 5) & 0x60)
| ((!S_IS_DEFINED (fixP->fx_addsy) << 4) & 0x10));
}
#endif
#endif /* OBJ_AOUT or OBJ_BOUT */
#ifndef WORKING_DOT_WORD
@ -7408,7 +7274,6 @@ valueT
md_section_align (segT segment ATTRIBUTE_UNUSED, valueT size)
{
#ifdef OBJ_AOUT
#ifdef BFD_ASSEMBLER
/* For a.out, force the section size to be aligned. If we don't do
this, BFD will align it for us, but it will not write out the
final bytes of the section. This may be a bug in BFD, but it is
@ -7418,7 +7283,6 @@ md_section_align (segT segment ATTRIBUTE_UNUSED, valueT size)
align = bfd_get_section_alignment (stdoutput, segment);
size = ((size + (1 << align) - 1) & ((valueT) -1 << align));
#endif
#endif
return size;
@ -7441,34 +7305,6 @@ md_pcrel_from (fixS *fixP)
return fixP->fx_where + fixP->fx_frag->fr_address - adjust;
}
#ifndef BFD_ASSEMBLER
#ifdef OBJ_COFF
void
tc_coff_symbol_emit_hook (symbolS *ignore ATTRIBUTE_UNUSED)
{
}
int
tc_coff_sizemachdep (fragS *frag)
{
switch (frag->fr_subtype & 0x3)
{
case BYTE:
return 1;
case SHORT:
return 2;
case LONG:
return 4;
default:
abort ();
return 0;
}
}
#endif
#endif
#ifdef OBJ_ELF
void
m68k_elf_final_processing (void)

View File

@ -61,34 +61,11 @@ struct fix;
#ifndef COFF_MAGIC
#define COFF_MAGIC MC68MAGIC
#endif
#define BFD_ARCH bfd_arch_m68k /* for non-BFD_ASSEMBLER */
#define TARGET_ARCH bfd_arch_m68k /* BFD_ASSEMBLER */
#define COFF_FLAGS F_AR32W
#define TC_COUNT_RELOC(x) ((x)->fx_addsy||(x)->fx_subsy)
#define TC_COFF_FIX2RTYPE(FIX) tc_coff_fix2rtype(FIX)
#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep(frag)
extern int tc_coff_sizemachdep (struct frag *);
#ifdef TE_SUN3
/* This variable contains the value to write out at the beginning of
the a.out file. The 2<<16 means that this is a 68020 file instead
of an old-style 68000 file */
#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE (2<<16|OMAGIC); /* Magic byte for file header */
#endif /* TE_SUN3 */
#ifndef AOUT_MACHTYPE
#define AOUT_MACHTYPE m68k_aout_machtype
extern int m68k_aout_machtype;
#endif
#define TARGET_ARCH bfd_arch_m68k
#define tc_comment_chars m68k_comment_chars
extern const char *m68k_comment_chars;
#define tc_crawl_symbol_chain(a) {;} /* not used */
#define tc_headers_hook(a) {;} /* not used */
#define tc_aout_pre_write_hook(x) {;} /* not used */
#define LISTING_WORD_SIZE 2 /* A word is 2 bytes */
#define LISTING_LHS_WIDTH 2 /* One word on the first line */
#define LISTING_LHS_WIDTH_SECOND 2 /* One word on the second line */
@ -101,10 +78,6 @@ extern const char *m68k_comment_chars;
#if !defined (REGISTER_PREFIX_OPTIONAL)
#if defined (M68KCOFF) || defined (OBJ_ELF)
#ifndef BFD_ASSEMBLER
#define LOCAL_LABEL(name) (name[0] == '.' \
&& (name[1] == 'L' || name[1] == '.'))
#endif /* ! BFD_ASSEMBLER */
#define REGISTER_PREFIX_OPTIONAL 0
#else /* ! (COFF || ELF) */
#define REGISTER_PREFIX_OPTIONAL 1
@ -120,11 +93,6 @@ extern const char *m68k_comment_chars;
#define tc_canonicalize_symbol_name(s) ((*(s) == '~' ? *(s) = '.' : '.'), s)
/* On the Delta, dots are not required before pseudo-ops. */
#define NO_PSEUDO_DOT 1
#ifndef BFD_ASSEMBLER
#undef LOCAL_LABEL
#define LOCAL_LABEL(name) \
(name[0] == '.' || (name[0] == 'L' && name[1] == '%'))
#endif
#endif
extern void m68k_mri_mode_change (int);
@ -141,8 +109,6 @@ extern void m68k_flush_pending_output (void);
extern void m68k_frob_symbol (symbolS *);
#ifdef BFD_ASSEMBLER
#define tc_frob_symbol(sym,punt) \
do \
{ \
@ -177,20 +143,6 @@ extern int tc_m68k_fix_adjustable (struct fix *);
extern void m68k_elf_final_processing (void);
#endif
#else /* ! BFD_ASSEMBLER */
#define tc_frob_coff_symbol(sym) m68k_frob_symbol (sym)
#define NO_RELOC 0
#define RELAX_RELOC_ABS8 0
#define RELAX_RELOC_ABS16 0
#define RELAX_RELOC_ABS32 0
#define RELAX_RELOC_PC8 0
#define RELAX_RELOC_PC16 0
#define RELAX_RELOC_PC32 0
#endif /* ! BFD_ASSEMBLER */
#define DIFF_EXPR_OK
extern void m68k_init_after_args (void);

File diff suppressed because it is too large Load Diff

View File

@ -1,109 +0,0 @@
/* m88k.h -- Assembler for the Motorola 88000
Contributed by Devon Bowen of Buffalo University
and Torbjorn Granlund of the Swedish Institute of Computer Science.
Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000,
2002, 2005 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
#define TC_M88K
#define TARGET_BYTES_BIG_ENDIAN 1
#ifdef M88KCOFF
#define COFF_MAGIC MC88OMAGIC
#define BFD_ARCH bfd_arch_m88k
#define COFF_FLAGS F_AR32W
#endif
#define NEED_FX_R_TYPE
#define TC_KEEP_FX_OFFSET
#define TC_CONS_RELOC RELOC_32
/* Different type of relocation available in the m88k. */
enum reloc_type
{
RELOC_LO16, /* lo16(sym). */
RELOC_HI16, /* hi16(sym). */
RELOC_PC16, /* bb0, bb1, bcnd. */
RELOC_PC26, /* br, bsr. */
RELOC_32, /* Jump tables, etc. */
RELOC_IW16, /* Global access through linker regs 28. */
NO_RELOC
};
struct reloc_info_m88k
{
unsigned long int r_address;
unsigned int r_symbolnum:24;
unsigned int r_extern:1;
unsigned int r_pad:3;
enum reloc_type r_type:4;
long int r_addend;
};
#define relocation_info reloc_info_m88k
/* The m88k uses '@' to start local labels. */
#define LEX_AT (LEX_BEGIN_NAME | LEX_NAME)
#ifndef BFD_ASSEMBLER
#define LOCAL_LABEL(name) \
((name[0] =='@' && (name [1] == 'L' || name [1] == '.')) \
|| (name[0] == 'L' && name[1] == '0' && name[2] == '\001'))
#endif
/* The m88k uses pseudo-ops with no leading period. */
#define NO_PSEUDO_DOT 1
/* Don't warn on word overflow; it happens on %hi relocs. */
#undef WARN_SIGNED_OVERFLOW_WORD
#define md_convert_frag(b,s,f) {as_fatal (_("m88k convert_frag\n"));}
/* We don't need to do anything special for undefined symbols. */
#define md_undefined_symbol(s) 0
/* We have no special operand handling. */
#define md_operand(e)
#ifdef M88KCOFF
/* Whether a reloc should be output. */
#define TC_COUNT_RELOC(fixp) ((fixp)->fx_addsy != NULL)
/* Get the BFD reloc type to use for a gas fixS structure. */
#define TC_COFF_FIX2RTYPE(fixp) tc_coff_fix2rtype (fixp)
/* No special hook needed for symbols. */
#define tc_coff_symbol_emit_hook(s)
/* Align sections to a four byte boundary. */
#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif
#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) max (section_alignment[(int) (SEG)], 4)
/* Fill in rs_align_code fragments. */
extern void m88k_handle_align (fragS *);
#define HANDLE_ALIGN(frag) m88k_handle_align (frag)
#define MAX_MEM_FOR_RS_ALIGN_CODE (3 + 4)
#endif /* M88KCOFF */

View File

@ -90,7 +90,6 @@ union _maxq20_op
typedef union _maxq20_op maxq20_opcode;
/* For handling optional L/S in Maxq20. */
#ifdef BFD_ASSEMBLER
/* Exposed For Linker - maps indirectly to the liker relocations. */
#define LONG_PREFIX MAXQ_LONGJUMP /* BFD_RELOC_16 */
@ -100,16 +99,6 @@ typedef union _maxq20_op maxq20_opcode;
#define NO_PREFIX 0
#define EXPLICT_LONG_PREFIX 14
#else
#define EXPLICT_LONG_PREFIX 14
#define LONG_PREFIX 5
#define SHORT_PREFIX 1
#define ABSOLUTE_ADDR_FOR_DATA 0
#define NO_PREFIX 0
#endif
/* The main instruction structure containing fields to describe instrn */
typedef struct _maxq20_insn
{
@ -229,7 +218,6 @@ md_show_usage (FILE * stream)
"));
}
#ifdef BFD_ASSEMBLER
unsigned long
maxq20_mach (void)
{
@ -298,8 +286,6 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
return rel;
}
#endif
/* md_estimate_size_before_relax()
Called just before relax() for rs_machine_dependent frags. The MAXQ
@ -464,35 +450,13 @@ maxq20_cons_fix_new (fragS * frag, unsigned int off, unsigned int len,
return;
}
short
tc_coff_fix2rtype (fixS * fixP)
{
return fixP->fx_r_type;
}
int
tc_coff_sizemachdep (fragS *fragP)
{
if (fragP->fr_next)
return (fragP->fr_next->fr_address - fragP->fr_address);
return 0;
}
/* GAS will call this for every rs_machine_dependent fragment. The
instruction is compleated using the data from the relaxation pass. It may
also create any necessary relocations. */
#ifdef BFD_ASSEMBLER
void
md_convert_frag (bfd * headers ATTRIBUTE_UNUSED,
segT seg ATTRIBUTE_UNUSED,
fragS * fragP)
#else
void
md_convert_frag (object_headers * headers ATTRIBUTE_UNUSED,
segT sec ATTRIBUTE_UNUSED,
fragS * fragP)
#endif
{
char *opcode;
offsetT target_address;
@ -619,18 +583,10 @@ md_apply_fix (fixS *fixP, valueT *valT, segT seg ATTRIBUTE_UNUSED)
maxq_number_to_chars (p + 1, PFX0, 1);
}
#ifdef BFD_ASSEMBLER
/* Remember value for tc_gen_reloc. */
fixP->fx_addnumber = *valT;
#endif
}
/* This prob can be fixed by defining tc_fix_adjustable. */
#ifndef BFD_ASSEMBLER
if (fixP->fx_addsy && S_GET_SEGMENT (fixP->fx_addsy))
segment_info[S_GET_SEGMENT (fixP->fx_addsy)].dot = NULL;
#endif
/* Some fixups generated by GAS which gets resovled before this this
func. is called need to be wriiten to the frag as here we are going
to go away with the relocations fx_done=1. */
@ -728,16 +684,6 @@ const pseudo_typeS md_pseudo_table[] =
{NULL, 0, 0},
};
#if defined(BFD_HEADERS)
#ifdef RELSZ
const int md_reloc_size = RELSZ; /* Coff headers. */
#else
const int md_reloc_size = 12; /* Something else headers. */
#endif
#else
const int md_reloc_size = 12; /* Not bfdized. */
#endif
#define SET_PFX_ARG(x) (PFX_INSN[1] = x)
@ -1512,22 +1458,8 @@ maxq20_data (char *op_string)
if (symbolP != NULL
&& S_GET_SEGMENT (symbolP) != now_seg
&& S_GET_SEGMENT (symbolP) !=
#ifdef BFD_ASSEMBLER
bfd_und_section_ptr
#else
SEG_UNKNOWN
#endif
)
&& S_GET_SEGMENT (symbolP) != bfd_und_section_ptr)
{
int val_pfx;
#ifdef BFD_ASSEMBLER
val_pfx = 0;
#else
val_pfx = (symbolP->sy_value.X_add_number) >> 8;
#endif
/* In case we do not want to always include the prefix instruction and
let the loader handle the job or in case of a 8 bit addressing mode,
we will just check for val_pfx to be equal to zero and then load the
@ -1535,7 +1467,7 @@ maxq20_data (char *op_string)
loaded. */
/* The prefix register will have to be loaded automatically as we have
a 16 bit addressing field. */
pfx_for_imm_val (val_pfx);
pfx_for_imm_val (0);
return symbolP;
}
@ -1592,23 +1524,14 @@ maxq20_displacement (char *disp_start, char *disp_end)
#if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT))
if (exp->X_op != O_constant
#ifdef BFD_ASSEMBLER
&& OUTPUT_FLAVOR == bfd_target_aout_flavour
#endif
&& exp_seg != absolute_section
&& exp_seg != text_section
&& exp_seg != data_section
&& exp_seg != bss_section && exp_seg != undefined_section
#ifdef BFD_ASSEMBLER
&& !bfd_is_com_section (exp_seg)
#endif
)
&& !bfd_is_com_section (exp_seg))
{
#ifdef BFD_ASSEMBLER
as_bad (_("unimplemented segment %s in operand"), exp_seg->name);
#else
as_bad (_("unimplemented segment type %d in operand"), exp_seg);
#endif
return 0;
}
#endif

View File

@ -1,6 +1,6 @@
/* tc-maxq.h -- Header file for the asssembler(MAXQ)
Copyright 2004 Free Software Foundation, Inc.
Copyright 2004, 2005 Free Software Foundation, Inc.
Contributed by HCL Technologies Pvt. Ltd.
@ -50,10 +50,6 @@ typedef enum _RELOC_ENUM
}
RELOC_ENUM;
#ifndef NEED_FX_R_TYPE
#define NEED_FX_R_TYPE /* For defining our own rloc type. */
#endif
#ifndef MAX_STACK
#define MAX_STACK 0xf
#endif
@ -86,9 +82,6 @@ RELOC_ENUM;
/* Locally defined symbol shoudnot be adjusted to section symbol. */
#define tc_fix_adjustable(FIX) 0
#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep (frag)
extern int tc_coff_sizemachdep (fragS * frag);
/* This specifies that the target has been defined as little endian -
default. */
#define TARGET_BYTES_BIG_ENDIAN 0
@ -107,23 +100,6 @@ extern int tc_coff_sizemachdep (fragS * frag);
#define TARGET_MACH maxq20_mach ()
extern unsigned long maxq20_mach (void);
/* COFF format. */
#ifndef BFD_ASSEMBLER
/* Defines the magic number we are using for the maxq-coff. defined in coff.h. */
#define COFF_MAGIC MAXQ20MAGIC
#define BFD_ARCH bfd_arch_maxq
/* Whether the reloc should be outputted to the file or not. This
is only true if the symbol we are relocating for is not empty. */
#define TC_COUNT_RELOC(fixp) ((fixp) -> fx_addsy != NULL)
/* This macro translates between an internal fix and an coff reloc type. */
#define TC_COFF_FIX2RTYPE(fixP) tc_coff_fix2rtype (fixP)
extern short tc_coff_fix2rtype (struct fix *);
#endif /* BFD_ASSEMBLER */
#ifndef LEX_AT
/* We define this macro to generate a fixup for a data allocation pseudo-op. */
#define TC_CONS_FIX_NEW(FRAG,OFF,LEN,EXP) maxq20_cons_fix_new (FRAG,OFF,LEN,EXP)

View File

@ -49,8 +49,6 @@ const char comment_chars[] = "#/";
const char line_separator_chars[] = ";";
const char line_comment_chars[] = "#/";
const int md_reloc_size = 8;
static int do_jsri2bsr = 0; /* Change here from 1 by Cruess 19 August 97. */
static int sifilter_mode = 0;

View File

@ -23,18 +23,10 @@
#ifndef TC_MCORE
#define TC_MCORE 1
#ifndef BFD_ASSEMBLER
#error MCORE support requires BFD_ASSEMBLER
#endif
#define TARGET_ARCH bfd_arch_mcore
/* Used to initialise target_big_endian. */
#define TARGET_BYTES_BIG_ENDIAN 0
/* Don't write out relocs for pcrel stuff. */
#define TC_COUNT_RELOC(x) (((x)->fx_addsy || (x)->fx_subsy) && \
(x)->fx_r_type < BFD_RELOC_MCORE_PCREL_IMM8BY4)
#define IGNORE_NONSTANDARD_ESCAPES
#define TC_RELOC_MANGLE(a,b,c) tc_reloc_mangle (a, b, c)
@ -45,15 +37,9 @@
#define LISTING_HEADER "M.CORE GAS Version 2.9.4"
#define LISTING_LHS_CONT_LINES 4
#define NEED_FX_R_TYPE 1
#define COFF_FLAGS 1
/* We want local label support. */
#define LOCAL_LABELS_FB 1
#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep (frag)
int tc_coff_sizemachdep (struct frag *);
extern const struct relax_type md_relax_table[];
#define TC_GENERIC_RELAX_TABLE md_relax_table
#define md_end md_mcore_end

View File

@ -1,5 +1,5 @@
/* tc-mn10200.h -- Header file for tc-mn10200.c.
Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
Copyright 1996, 1997, 2000, 2001, 2005 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -22,10 +22,6 @@
#define TARGET_BYTES_BIG_ENDIAN 0
#ifndef BFD_ASSEMBLER
#error MN10200 support requires BFD_ASSEMBLER
#endif
/* The target BFD architecture. */
#define TARGET_ARCH bfd_arch_mn10200

View File

@ -1,5 +1,5 @@
/* tc-mn10300.c -- Assembler code for the Matsushita 10300
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -2468,11 +2468,10 @@ md_apply_fix (fixP, valP, seg)
abort ();
/* The value we are passed in *valuep includes the symbol values.
Since we are using BFD_ASSEMBLER, if we are doing this relocation
the code in write.c is going to call bfd_install_relocation, which
is also going to use the symbol value. That means that if the
reloc is fully resolved we want to use *valuep since
bfd_install_relocation is not being used.
If we are doing this relocation the code in write.c is going to
call bfd_install_relocation, which is also going to use the symbol
value. That means that if the reloc is fully resolved we want to
use *valuep since bfd_install_relocation is not being used.
However, if the reloc is not fully resolved we do not want to use
*valuep, and must use fx_offset instead. However, if the reloc

View File

@ -1,5 +1,5 @@
/* tc-mn10300.h -- Header file for tc-mn10300.c.
Copyright 1996, 1997, 2000, 2001, 2002, 2003, 2004
Copyright 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -23,10 +23,6 @@
#define TARGET_BYTES_BIG_ENDIAN 0
#ifndef BFD_ASSEMBLER
#error MN10300 support requires BFD_ASSEMBLER
#endif
#define DIFF_EXPR_OK
#define GLOBAL_OFFSET_TABLE_NAME "_GLOBAL_OFFSET_TABLE_"

View File

@ -20,11 +20,6 @@
#define TC_MS1
#ifndef BFD_ASSEMBLER
/* Leading space so will compile with cc. */
#error MS1 support requires BFD_ASSEMBLER
#endif
#define LISTING_HEADER "MS1 GAS "
/* The target BFD architecture. */

View File

@ -1964,12 +1964,11 @@ md_apply_fix (fixS * fixp, valueT * valuep, segT seg)
}
}
/* A `BFD_ASSEMBLER' GAS will call this to generate a reloc. GAS
will pass the resulting reloc to `bfd_install_relocation'. This
currently works poorly, as `bfd_install_relocation' often does the
wrong thing, and instances of `tc_gen_reloc' have been written to
work around the problems, which in turns makes it difficult to fix
`bfd_install_relocation'. */
/* GAS will call this to generate a reloc, passing the resulting reloc
to `bfd_install_relocation'. This currently works poorly, as
`bfd_install_relocation' often does the wrong thing, and instances of
`tc_gen_reloc' have been written to work around the problems, which
in turns makes it difficult to fix `bfd_install_relocation'. */
/* If while processing a fixup, a reloc really needs to be created
then it is done here. */

View File

@ -1,5 +1,5 @@
/* This file is tc-msp430.h
Copyright (C) 2002, 2004 Free Software Foundation, Inc.
Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
Contributed by Dmitry Diky <diwil@mail.ru>
@ -20,10 +20,6 @@
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
#ifndef BFD_ASSEMBLER
#error MSP430 support requires BFD_ASSEMBLER
#endif
#define TC_MSP430
/* 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

View File

@ -1243,7 +1243,6 @@ parse (const char *line, int recursive_level)
return recursive_level;
}
#ifdef BFD_ASSEMBLER
/* This functionality should really be in the bfd library. */
static bfd_reloc_code_real_type
@ -1307,7 +1306,6 @@ reloc (int size, int pcrel, int type)
return BFD_RELOC_NONE;
}
#endif
static void
fix_new_ns32k (fragS *frag, /* Which frag? */
@ -1327,11 +1325,7 @@ fix_new_ns32k (fragS *frag, /* Which frag? */
{
fixS *fixP = fix_new (frag, where, size, add_symbol,
offset, pcrel,
#ifdef BFD_ASSEMBLER
bit_fixP ? NO_RELOC : reloc (size, pcrel, im_disp)
#else
NO_RELOC
#endif
);
fix_opcode_frag (fixP) = opcode_frag;
@ -1359,11 +1353,7 @@ fix_new_ns32k_exp (fragS *frag, /* Which frag? */
unsigned int opcode_offset)
{
fixS *fixP = fix_new_exp (frag, where, size, exp, pcrel,
#ifdef BFD_ASSEMBLER
bit_fixP ? NO_RELOC : reloc (size, pcrel, im_disp)
#else
NO_RELOC
#endif
);
fix_opcode_frag (fixP) = opcode_frag;
@ -2047,17 +2037,10 @@ md_apply_fix (fixS *fixP, valueT * valP, segT seg ATTRIBUTE_UNUSED)
/* Convert a relaxed displacement to ditto in final output. */
#ifndef BFD_ASSEMBLER
void
md_convert_frag (object_headers *headers,
segT sec,
fragS *fragP)
#else
void
md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
segT sec ATTRIBUTE_UNUSED,
fragS *fragP)
#endif
{
long disp;
long ext = 0;
@ -2137,7 +2120,6 @@ md_estimate_size_before_relax (fragS *fragP, segT segment)
int md_short_jump_size = 3;
int md_long_jump_size = 5;
const int md_reloc_size = 8; /* Size of relocation record. */
void
md_create_short_jump (char *ptr,
@ -2275,8 +2257,6 @@ md_pcrel_from (fixS *fixP)
return res;
}
#ifdef BFD_ASSEMBLER
arelent *
tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
{
@ -2308,39 +2288,3 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
return rel;
}
#else /* BFD_ASSEMBLER */
#ifdef OBJ_AOUT
void
cons_fix_new_ns32k (char *where,
struct fix *fixP,
relax_addressT segment_address_in_file)
{
/* In: Length of relocation (or of address) in chars: 1, 2 or 4.
Out: GNU LD relocation length code: 0, 1, or 2. */
static unsigned char nbytes_r_length[] = { 42, 0, 1, 42, 2 };
long r_symbolnum;
know (fixP->fx_addsy != NULL);
md_number_to_chars (where,
fixP->fx_frag->fr_address + fixP->fx_where - segment_address_in_file,
4);
r_symbolnum = (S_IS_DEFINED (fixP->fx_addsy)
? S_GET_TYPE (fixP->fx_addsy)
: fixP->fx_addsy->sy_number);
md_number_to_chars (where + 4,
((long) (r_symbolnum)
| (long) (fixP->fx_pcrel << 24)
| (long) (nbytes_r_length[fixP->fx_size] << 25)
| (long) ((!S_IS_DEFINED (fixP->fx_addsy)) << 27)
| (long) (fix_bsr (fixP) << 28)
| (long) (fix_im_disp (fixP) << 29)),
4);
}
#endif /* OBJ_AOUT */
#endif /* BFD_ASSEMBLER */

View File

@ -26,7 +26,6 @@
#define TC_PCREL_ADJUST(F) md_pcrel_adjust(F)
extern int md_pcrel_adjust (fragS *);
#ifdef BFD_ASSEMBLER
#define NO_RELOC BFD_RELOC_NONE
#define TARGET_ARCH bfd_arch_ns32k
@ -34,18 +33,11 @@ extern int md_pcrel_adjust (fragS *);
#ifndef TARGET_FORMAT /* Maybe defined in te-*.h. */
#define TARGET_FORMAT "a.out-pc532-mach"
#endif
#else
#define NO_RELOC 0
#endif
#define LOCAL_LABELS_FB 1
#include "bit_fix.h"
#define tc_aout_pre_write_hook(x) {;} /* not used */
#define tc_crawl_symbol_chain(a) {;} /* not used */
#define tc_headers_hook(a) {;} /* not used */
#ifdef SEQUENT_COMPATABILITY
#define DEF_MODEC 20
#define DEF_MODEL 21

View File

@ -20,11 +20,6 @@
#define TC_OPENRISC
#ifndef BFD_ASSEMBLER
/* leading space so will compile with cc */
# error OPENRISC support requires BFD_ASSEMBLER
#endif
#define LISTING_HEADER "OpenRISC GAS "
/* The target BFD architecture. */

View File

@ -26,10 +26,7 @@
#include "safe-ctype.h"
#include "as.h"
#include "opcode/or32.h"
#ifdef BFD_ASSEMBLER
#include "elf/or32.h"
#endif
#define DEBUG 0
@ -74,16 +71,6 @@ const pseudo_typeS md_pseudo_table[] =
int md_short_jump_size = 4;
int md_long_jump_size = 4;
#if defined(BFD_HEADERS)
#ifdef RELSZ
const int md_reloc_size = RELSZ; /* Coff headers. */
#else
const int md_reloc_size = 12; /* Something else headers. */
#endif
#else
const int md_reloc_size = 12; /* Not bfdized. */
#endif
/* This array holds the chars that always start a comment.
If the pre-processor is disabled, these aren't very useful. */
const char comment_chars[] = "#";
@ -254,11 +241,7 @@ md_assemble (char *str)
md_number_to_chars (toP, the_insn.opcode, 4);
/* Put out the symbol-dependent stuff. */
#ifdef BFD_ASSEMBLER
if (the_insn.reloc != BFD_RELOC_NONE)
#else
if (the_insn.reloc != NO_RELOC)
#endif
{
fix_new_exp (frag_now,
(toP - frag_now->fr_literal + the_insn.reloc_offset),
@ -274,7 +257,6 @@ static int waiting_for_shift = 0;
static int mask_or_shift = 0;
#ifdef BFD_ASSEMBLER
static char *
parse_operand (char *s, expressionS *operandp, int opt)
{
@ -338,83 +320,11 @@ parse_operand (char *s, expressionS *operandp, int opt)
return new;
}
#else
static char *
parse_operand (char *s, expressionS *operandp, int opt)
{
char *save = input_line_pointer;
char *new;
#if DEBUG
printf (" PROCESS NEW OPERAND(%s) == %c (%d)\n", s, opt ? opt : '!', opt);
#endif
input_line_pointer = s;
if (strncasecmp (s, "HI(", 3) == 0)
{
waiting_for_shift = 1;
mask_or_shift = RELOC_CONSTH;
input_line_pointer += 3;
}
else if (strncasecmp (s, "LO(", 3) == 0)
{
mask_or_shift = RELOC_CONST;
input_line_pointer += 3;
}
else
mask_or_shift = 0;
expression (operandp);
if (operandp->X_op == O_absent)
{
if (! opt)
as_bad (_("missing operand"));
else
{
operandp->X_add_number = 0;
operandp->X_op = O_constant;
}
}
new = input_line_pointer;
input_line_pointer = save;
if ((operandp->X_op == O_symbol) && (*s != '_'))
{
#if DEBUG
printf ("symbol: '%s'\n", save);
#endif
for (save = s; s < new; s++)
if ((*s == REGISTER_PREFIX) && (*(s + 1) == 'r')) /* Register prefix. */
s++;
if ((*s == 'r') && ISDIGIT (*(s + 1)))
{
operandp->X_add_number = strtol (s + 1, NULL, 10);
operandp->X_op = O_register;
}
s = save;
}
#if DEBUG
printf (" %s=parse_operand(%s): operandp->X_op = %u\n", new, s, operandp->X_op);
#endif
return new;
}
#endif
/* Instruction parsing. Takes a string containing the opcode.
Operands are at input_line_pointer. Output is in the_insn.
Warnings or errors are generated. */
#ifdef BFD_ASSEMBLER
static void
machine_ip (char *str)
{
@ -619,214 +529,6 @@ machine_ip (char *str)
}
}
#else
static void
machine_ip (char *str)
{
char *s;
const char *args;
const struct machine_opcode *insn;
char *argsStart;
unsigned long opcode;
expressionS the_operand;
expressionS *operand = &the_operand;
unsigned int regno;
int reloc = NO_RELOC;
#if DEBUG
printf ("machine_ip(%s)\n", str);
#endif
s = str;
for (; ISALNUM (*s) || *s == '.'; ++s)
if (ISUPPER (*s))
*s = TOLOWER (*s);
switch (*s)
{
case '\0':
break;
case ' ': /* FIXME-SOMEDAY more whitespace. */
*s++ = '\0';
break;
default:
as_bad (_("unknown opcode1: `%s'"), str);
return;
}
if ((insn = (struct machine_opcode *) hash_find (op_hash, str)) == NULL)
{
as_bad (_("unknown opcode2 `%s'."), str);
return;
}
argsStart = s;
opcode = 0;
memset (&the_insn, '\0', sizeof (the_insn));
the_insn.reloc = NO_RELOC;
reloc = NO_RELOC;
/* Build the opcode, checking as we go to make sure that the
operands match.
If an operand matches, we modify the_insn or opcode appropriately,
and do a "continue". If an operand fails to match, we "break". */
if (insn->args[0] != '\0')
/* Prime the pump. */
s = parse_operand (s, operand,
insn->args[0] == 'I'
|| strcmp (insn->name, "l.nop") == 0);
for (args = insn->args;; ++args)
{
#if DEBUG
printf (" args = %s\n", args);
#endif
switch (*args)
{
case '\0': /* End of args. */
/* We have have 0 args, do the bazoooka! */
if (args == insn->args)
encode (insn, &opcode, 0, 0);
if (*s == '\0')
{
/* We are truly done. */
the_insn.opcode = opcode;
if (check_invalid_opcode (opcode))
as_bad (_("instruction not allowed: %s"), str);
return;
}
as_bad (_("too many operands: %s"), s);
break;
case ',': /* Must match a comma. */
if (*s++ == ',')
{
reloc = NO_RELOC;
/* Parse next operand. */
s = parse_operand (s, operand, args[1] == 'I');
#if DEBUG
printf (" ',' case: operand->X_add_number = %d, *args = %s, *s = %s\n",
operand->X_add_number, args, s);
#endif
continue;
}
break;
case '(': /* Must match a (. */
s = parse_operand (s, operand, args[1] == 'I');
continue;
case ')': /* Must match a ). */
continue;
case 'r': /* A general register. */
args++;
if (operand->X_op != O_register)
break; /* Only registers. */
know (operand->X_add_symbol == 0);
know (operand->X_op_symbol == 0);
regno = operand->X_add_number;
encode (insn, &opcode, regno, *args);
#if DEBUG
printf (" r: operand->X_op = %d\n", operand->X_op);
#endif
continue;
default:
/* if (! ISALPHA (*args))
break; */ /* Only immediate values. */
if (mask_or_shift)
{
#if DEBUG
printf ("mask_or_shift = %d\n", mask_or_shift);
#endif
reloc = mask_or_shift;
}
mask_or_shift = 0;
if (strncasecmp (args, "LO(", 3) == 0)
{
#if DEBUG
printf ("reloc_const\n");
#endif
reloc = RELOC_CONST;
}
else if (strncasecmp (args, "HI(", 3) == 0)
{
#if DEBUG
printf ("reloc_consth\n");
#endif
reloc = RELOC_CONSTH;
}
if (*s == '(')
operand->X_op = O_constant;
else if (*s == ')')
s += 1;
#if DEBUG
printf (" default case: operand->X_add_number = %d, *args = %s, *s = %s\n",
operand->X_add_number, args, s);
#endif
if (operand->X_op == O_constant)
{
if (reloc == NO_RELOC)
{
unsigned long v, mask;
mask = 0x3ffffff;
v = abs (operand->X_add_number) & ~ mask;
if (v)
as_bad (_("call/jmp target out of range (1)"));
}
if (reloc == RELOC_CONSTH)
operand->X_add_number = ((operand->X_add_number>>16) & 0xffff);
the_insn.pcrel = 0;
encode (insn, &opcode, operand->X_add_number, *args);
/* the_insn.reloc = NO_RELOC; */
continue;
}
if (reloc == NO_RELOC)
the_insn.reloc = RELOC_JUMPTARG;
else
the_insn.reloc = reloc;
#if DEBUG
printf (" reloc sym=%d\n", the_insn.reloc);
printf (" NO_RELOC=%d\n", NO_RELOC);
#endif
the_insn.exp = *operand;
/* the_insn.reloc_offset = 1; */
the_insn.pcrel = 1; /* Assume PC-relative jump. */
/* FIXME-SOON, Do we figure out whether abs later, after
know sym val? */
if (reloc == RELOC_CONST || reloc == RELOC_CONSTH)
the_insn.pcrel = 0;
encode (insn, &opcode, operand->X_add_number, *args);
continue;
}
/* Types or values of args don't match. */
as_bad (_("invalid operands"));
return;
}
}
#endif
/* This is identical to the md_atof in m68k.c. I think this is right,
but I'm not sure.
@ -900,7 +602,6 @@ md_number_to_chars (char *buf, valueT val, int n)
number_to_chars_bigendian (buf, val, n);
}
#ifdef BFD_ASSEMBLER
void
md_apply_fix (fixS * fixP, valueT * val, segT seg ATTRIBUTE_UNUSED)
{
@ -996,153 +697,6 @@ md_apply_fix (fixS * fixP, valueT * val, segT seg ATTRIBUTE_UNUSED)
if (fixP->fx_addsy == (symbolS *) NULL)
fixP->fx_done = 1;
}
#else
void
md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
{
long val = *valP;
char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
#if DEBUG
printf ("md_apply_fix val:%x\n", val);
#endif
fixP->fx_addnumber = val; /* Remember value for emit_reloc. */
know (fixP->fx_size == 4);
know (fixP->fx_r_type < NO_RELOC);
/* This is a hack. There should be a better way to handle this. */
if (fixP->fx_r_type == RELOC_WDISP30 && fixP->fx_addsy)
val += fixP->fx_where + fixP->fx_frag->fr_address;
switch (fixP->fx_r_type)
{
case RELOC_32:
buf[0] = val >> 24;
buf[1] = val >> 16;
buf[2] = val >> 8;
buf[3] = val;
break;
case RELOC_8:
buf[0] = val;
break;
case RELOC_WDISP30:
val = (val >> 2) + 1;
buf[0] |= (val >> 24) & 0x3f;
buf[1] = (val >> 16);
buf[2] = val >> 8;
buf[3] = val;
break;
case RELOC_HI22:
buf[1] |= (val >> 26) & 0x3f;
buf[2] = val >> 18;
buf[3] = val >> 10;
break;
case RELOC_LO10:
buf[2] |= (val >> 8) & 0x03;
buf[3] = val;
break;
case RELOC_BASE13:
buf[2] |= (val >> 8) & 0x1f;
buf[3] = val;
break;
case RELOC_WDISP22:
val = (val >> 2) + 1;
/* FALLTHROUGH */
case RELOC_BASE22:
buf[1] |= (val >> 16) & 0x3f;
buf[2] = val >> 8;
buf[3] = val;
break;
case RELOC_JUMPTARG: /* 0000XXXX pattern in a word. */
if (!fixP->fx_done)
{
/* The linker tries to support both AMD and old GNU style
R_IREL relocs. That means that if the addend is exactly
the negative of the address within the section, the
linker will not handle it correctly. */
}
else if (fixP->fx_pcrel)
{
long v = val >> 28;
if (v != 0 && v != -1)
as_bad_where (fixP->fx_file, fixP->fx_line,
_("call/jmp target out of range (2)"));
}
else
/* This case was supposed to be handled in machine_ip. */
abort ();
buf[0] |= (val >> 26) & 0x03; /* Holds bits 0FFFFFFC of address. */
buf[1] = val >> 18;
buf[2] = val >> 10;
buf[3] = val >> 2;
break;
case RELOC_CONST: /* 0000XXXX pattern in a word. */
#if DEBUG
printf ("reloc_const: val=%x\n", val);
#endif
buf[2] = val >> 8; /* Holds bits 0000XXXX. */
buf[3] = val;
break;
case RELOC_CONSTH: /* 0000XXXX pattern in a word. */
#if DEBUG
printf ("reloc_consth: val=%x\n", val);
#endif
buf[2] = val >> 24; /* Holds bits XXXX0000. */
buf[3] = val >> 16;
break;
case BFD_RELOC_VTABLE_INHERIT:
case BFD_RELOC_VTABLE_ENTRY:
fixP->fx_done = 0;
break;
case NO_RELOC:
default:
as_bad (_("bad relocation type: 0x%02x"), fixP->fx_r_type);
break;
}
if (fixP->fx_addsy == (symbolS *) NULL)
fixP->fx_done = 1;
}
#endif
#ifdef OBJ_COFF
short
tc_coff_fix2rtype (fixS *fixP)
{
#if DEBUG
printf ("tc_coff_fix2rtype\n");
#endif
switch (fixP->fx_r_type)
{
case RELOC_32: return R_WORD;
case RELOC_8: return R_BYTE;
case RELOC_CONST: return R_ILOHALF;
case RELOC_CONSTH: return R_IHIHALF;
case RELOC_JUMPTARG: return R_IREL;
default:
printf ("need %d\n", fixP->fx_r_type);
abort ();
}
return 0;
}
#endif /* OBJ_COFF */
/* Should never be called for or32. */
@ -1158,16 +712,6 @@ md_create_short_jump (char * ptr ATTRIBUTE_UNUSED,
/* Should never be called for or32. */
#ifndef BFD_ASSEMBLER
void
md_convert_frag (object_headers * headers ATTRIBUTE_UNUSED,
segT seg ATTRIBUTE_UNUSED,
register fragS * fragP ATTRIBUTE_UNUSED)
{
as_fatal ("or32_convert_frag\n");
}
#else
void
md_convert_frag (bfd * headers ATTRIBUTE_UNUSED,
segT seg ATTRIBUTE_UNUSED,
@ -1175,7 +719,6 @@ md_convert_frag (bfd * headers ATTRIBUTE_UNUSED,
{
as_fatal ("or32_convert_frag\n");
}
#endif
/* Should never be called for or32. */
@ -1307,34 +850,6 @@ or32_unrecognized_line (int c)
symbolS *
md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
{
#ifndef BFD_ASSEMBLER
long regnum;
char testbuf[5 + /*SLOP*/ 5];
#if DEBUG
printf ("md_undefined_symbol(%s)\n", name);
#endif
/* Register name. */
if (name[0] == 'r' || name[0] == 'R' || name[0] == 'a' || name[0] == 'b')
{
/* Parse the number, make sure it has no extra zeroes or
trailing chars. */
regnum = atol (& name[1]);
if (regnum > 31)
as_fatal (_("register out of range"));
sprintf (testbuf, "%ld", regnum);
if (strcmp (testbuf, &name[1]) != 0)
return NULL; /* gr007 or lr7foo or whatever. */
/* We have a wiener! Define and return a new symbol for it. */
return (symbol_new (name, SEG_REGISTER, (valueT) regnum,
&zero_address_frag));
}
#endif
return NULL;
}
@ -1486,7 +1001,6 @@ md_pcrel_from (fixS *fixP)
/* Generate a reloc for a fixup. */
#ifdef BFD_ASSEMBLER
arelent *
tc_gen_reloc (asection *seg ATTRIBUTE_UNUSED, fixS *fixp)
{
@ -1513,4 +1027,3 @@ tc_gen_reloc (asection *seg ATTRIBUTE_UNUSED, fixS *fixp)
reloc->addend = fixp->fx_addnumber;
return reloc;
}
#endif

View File

@ -40,14 +40,8 @@
extern int or32_unrecognized_line (int);
#define tc_headers_hook(a) ; /* Not used. */
#define tc_headers_hook(a) ; /* Not used. */
#define tc_crawl_symbol_chain(a) ; /* Not used. */
#define tc_coff_symbol_emit_hook(a) ; /* Not used. */
#define AOUT_MACHTYPE 80
#define TC_COFF_FIX2RTYPE(fix_ptr) tc_coff_fix2rtype (fix_ptr)
#define BFD_ARCH bfd_arch_or32
#define COFF_MAGIC SIPFBOMAGIC
/* No shared lib support, so we don't need to ensure externally
@ -59,13 +53,4 @@ extern int or32_unrecognized_line (int);
#define MD_APPLY_SYM_VALUE(FIX) 0
#endif
/* Should the reloc be output ?
on the 29k, this is true only if there is a symbol attached.
on the h8, this is always true, since no fixup is done. */
#define TC_COUNT_RELOC(x) (x->fx_addsy)
#define TC_CONS_RELOC RELOC_32
#define COFF_FLAGS F_AR32W
#define NEED_FX_R_TYPE
#define ZERO_BASED_SEGMENTS

View File

@ -5532,11 +5532,11 @@ md_apply_fix (fixP, valP, seg)
fixP->fx_done = 1;
#else
/* FIXME FIXME FIXME: The value we are passed in *valP includes
the symbol values. Since we are using BFD_ASSEMBLER, if we are
doing this relocation the code in write.c is going to call
bfd_install_relocation, which is also going to use the symbol
value. That means that if the reloc is fully resolved we want to
use *valP since bfd_install_relocation is not being used.
the symbol values. If we are doing this relocation the code in
write.c is going to call bfd_install_relocation, which is also
going to use the symbol value. That means that if the reloc is
fully resolved we want to use *valP since bfd_install_relocation is
not being used.
However, if the reloc is not fully resolved we do not want to use
*valP, and must use fx_offset instead. However, if the reloc
is PC relative, we do want to use *valP since it includes the

View File

@ -29,10 +29,6 @@ struct fix;
#define TARGET_BYTES_BIG_ENDIAN 1
#endif
#ifndef BFD_ASSEMBLER
#error PowerPC support requires BFD_ASSEMBLER
#endif
/* If OBJ_COFF is defined, and TE_PE is not defined, we are assembling
XCOFF for AIX or PowerMac. If TE_PE is defined, we are assembling
COFF for Windows NT. */

View File

@ -1,5 +1,6 @@
/* tc-s390.h -- Header file for tc-s390.c.
Copyright 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Copyright 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
Written by Martin Schwidefsky (schwidefsky@de.ibm.com).
This file is part of GAS, the GNU Assembler.
@ -23,10 +24,6 @@
struct fix;
#ifndef BFD_ASSEMBLER
#error S390 support requires BFD_ASSEMBLER
#endif
#define TC_FORCE_RELOCATION(FIX) tc_s390_force_relocation(FIX)
extern int tc_s390_force_relocation PARAMS ((struct fix *));

View File

@ -124,8 +124,6 @@ const pseudo_typeS md_pseudo_table[] =
{0, 0, 0}
};
/*int md_reloc_size; */
int sh_relax; /* set if -relax seen */
/* Whether -small was seen. */
@ -2871,9 +2869,7 @@ md_assemble (char *str)
}
}
#ifdef BFD_ASSEMBLER
dwarf2_emit_insn (size);
#endif
}
/* This routine is called each time a label definition is seen. It
@ -2922,24 +2918,6 @@ md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
return 0;
}
#ifdef OBJ_COFF
#ifndef BFD_ASSEMBLER
void
tc_crawl_symbol_chain (object_headers *headers ATTRIBUTE_UNUSED)
{
printf (_("call to tc_crawl_symbol_chain \n"));
}
void
tc_headers_hook (object_headers *headers ATTRIBUTE_UNUSED)
{
printf (_("call to tc_headers_hook \n"));
}
#endif
#endif
/* Various routines to kill one day. */
/* Equal to MAX_PRECISION in atof-ieee.c. */
#define MAX_LITTLENUMS 6
@ -3245,8 +3223,7 @@ struct sh_count_relocs
};
/* Count the number of fixups in a section which refer to a particular
symbol. When using BFD_ASSEMBLER, this is called via
bfd_map_over_sections. */
symbol. This is called via bfd_map_over_sections. */
static void
sh_count_relocs (bfd *abfd ATTRIBUTE_UNUSED, segT sec, void *data)
@ -3271,8 +3248,8 @@ sh_count_relocs (bfd *abfd ATTRIBUTE_UNUSED, segT sec, void *data)
}
}
/* Handle the count relocs for a particular section. When using
BFD_ASSEMBLER, this is called via bfd_map_over_sections. */
/* Handle the count relocs for a particular section.
This is called via bfd_map_over_sections. */
static void
sh_frob_section (bfd *abfd ATTRIBUTE_UNUSED, segT sec,
@ -3302,9 +3279,6 @@ sh_frob_section (bfd *abfd ATTRIBUTE_UNUSED, segT sec,
|| fix->fx_subsy != NULL
|| fix->fx_addnumber != 0
|| S_GET_SEGMENT (sym) != sec
#if ! defined (BFD_ASSEMBLER) && defined (OBJ_COFF)
|| S_GET_STORAGE_CLASS (sym) == C_EXT
#endif
|| S_IS_EXTERNAL (sym))
{
as_warn_where (fix->fx_file, fix->fx_line,
@ -3344,9 +3318,6 @@ sh_frob_section (bfd *abfd ATTRIBUTE_UNUSED, segT sec,
|| fscan->fx_subsy != NULL
|| fscan->fx_addnumber != 0
|| S_GET_SEGMENT (sym) != sec
#if ! defined (BFD_ASSEMBLER) && defined (OBJ_COFF)
|| S_GET_STORAGE_CLASS (sym) == C_EXT
#endif
|| S_IS_EXTERNAL (sym))
{
as_warn_where (fix->fx_file, fix->fx_line,
@ -3358,16 +3329,7 @@ sh_frob_section (bfd *abfd ATTRIBUTE_UNUSED, segT sec,
counting the number of times we find a reference to sym. */
info.sym = sym;
info.count = 0;
#ifdef BFD_ASSEMBLER
bfd_map_over_sections (stdoutput, sh_count_relocs, &info);
#else
{
int iscan;
for (iscan = SEG_E0; iscan < SEG_UNKNOWN; iscan++)
sh_count_relocs ((bfd *) NULL, iscan, &info);
}
#endif
if (info.count < 1)
abort ();
@ -3402,28 +3364,14 @@ sh_frob_file (void)
if (! sh_relax)
return;
#ifdef BFD_ASSEMBLER
bfd_map_over_sections (stdoutput, sh_frob_section, NULL);
#else
{
int iseg;
for (iseg = SEG_E0; iseg < SEG_UNKNOWN; iseg++)
sh_frob_section ((bfd *) NULL, iseg, NULL);
}
#endif
}
/* Called after relaxing. Set the correct sizes of the fragments, and
create relocs so that md_apply_fix will fill in the correct values. */
void
#ifdef BFD_ASSEMBLER
md_convert_frag (bfd *headers ATTRIBUTE_UNUSED, segT seg, fragS *fragP)
#else
md_convert_frag (object_headers *headers ATTRIBUTE_UNUSED, segT seg,
fragS *fragP)
#endif
{
int donerelax = 0;
@ -3496,12 +3444,7 @@ md_convert_frag (object_headers *headers ATTRIBUTE_UNUSED, segT seg,
/* Build a relocation to six / four bytes farther on. */
subseg_change (seg, 0);
fix_new (fragP, fragP->fr_fix, 2,
#ifdef BFD_ASSEMBLER
section_symbol (seg),
#else
seg_info (seg)->dot,
#endif
fix_new (fragP, fragP->fr_fix, 2, section_symbol (seg),
fragP->fr_address + fragP->fr_fix + (delay ? 4 : 6),
1, BFD_RELOC_SH_PCDISP8BY2);
@ -3568,17 +3511,12 @@ md_convert_frag (object_headers *headers ATTRIBUTE_UNUSED, segT seg,
valueT
md_section_align (segT seg ATTRIBUTE_UNUSED, valueT size)
{
#ifdef BFD_ASSEMBLER
#ifdef OBJ_ELF
return size;
#else /* ! OBJ_ELF */
return ((size + (1 << bfd_get_section_alignment (stdoutput, seg)) - 1)
& (-1 << bfd_get_section_alignment (stdoutput, seg)));
#endif /* ! OBJ_ELF */
#else /* ! BFD_ASSEMBLER */
return ((size + (1 << section_alignment[(int) seg]) - 1)
& (-1 << section_alignment[(int) seg]));
#endif /* ! BFD_ASSEMBLER */
}
/* This static variable is set by s_uacons to tell sh_cons_align that
@ -3803,7 +3741,6 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
long max, min;
int shift;
#ifdef BFD_ASSEMBLER
/* A difference between two symbols, the second of which is in the
current section, is transformed in a PC-relative relocation to
the other symbol. We have to adjust the relocation type here. */
@ -3849,24 +3786,9 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
&& fixP->fx_addsy != NULL
&& S_IS_WEAK (fixP->fx_addsy))
val -= S_GET_VALUE (fixP->fx_addsy);
#endif
#ifdef BFD_ASSEMBLER
if (SWITCH_TABLE (fixP))
val -= S_GET_VALUE (fixP->fx_subsy);
#else
if (fixP->fx_r_type == 0)
{
if (fixP->fx_size == 2)
fixP->fx_r_type = BFD_RELOC_16;
else if (fixP->fx_size == 4)
fixP->fx_r_type = BFD_RELOC_32;
else if (fixP->fx_size == 1)
fixP->fx_r_type = BFD_RELOC_8;
else
abort ();
}
#endif
max = min = 0;
shift = 0;
@ -4207,8 +4129,7 @@ md_number_to_chars (char *ptr, valueT use, int nbytes)
number_to_chars_bigendian (ptr, use, nbytes);
}
/* This version is used in obj-coff.c when not using BFD_ASSEMBLER.
eg for the sh-hms target. */
/* This version is used in obj-coff.c eg. for the sh-hms target. */
long
md_pcrel_from (fixS *fixP)
@ -4234,167 +4155,6 @@ md_pcrel_from_section (fixS *fixP, segT sec)
return md_pcrel_from (fixP);
}
#ifdef OBJ_COFF
int
tc_coff_sizemachdep (fragS *frag)
{
return md_relax_table[frag->fr_subtype].rlx_length;
}
#endif /* OBJ_COFF */
#ifndef BFD_ASSEMBLER
#ifdef OBJ_COFF
/* Map BFD relocs to SH COFF relocs. */
struct reloc_map
{
bfd_reloc_code_real_type bfd_reloc;
int sh_reloc;
};
static const struct reloc_map coff_reloc_map[] =
{
{ BFD_RELOC_32, R_SH_IMM32 },
{ BFD_RELOC_16, R_SH_IMM16 },
{ BFD_RELOC_8, R_SH_IMM8 },
{ BFD_RELOC_SH_PCDISP8BY2, R_SH_PCDISP8BY2 },
{ BFD_RELOC_SH_PCDISP12BY2, R_SH_PCDISP },
{ BFD_RELOC_SH_IMM4, R_SH_IMM4 },
{ BFD_RELOC_SH_IMM4BY2, R_SH_IMM4BY2 },
{ BFD_RELOC_SH_IMM4BY4, R_SH_IMM4BY4 },
{ BFD_RELOC_SH_IMM8, R_SH_IMM8 },
{ BFD_RELOC_SH_IMM8BY2, R_SH_IMM8BY2 },
{ BFD_RELOC_SH_IMM8BY4, R_SH_IMM8BY4 },
{ BFD_RELOC_SH_PCRELIMM8BY2, R_SH_PCRELIMM8BY2 },
{ BFD_RELOC_SH_PCRELIMM8BY4, R_SH_PCRELIMM8BY4 },
{ BFD_RELOC_8_PCREL, R_SH_SWITCH8 },
{ BFD_RELOC_SH_SWITCH16, R_SH_SWITCH16 },
{ BFD_RELOC_SH_SWITCH32, R_SH_SWITCH32 },
{ BFD_RELOC_SH_USES, R_SH_USES },
{ BFD_RELOC_SH_COUNT, R_SH_COUNT },
{ BFD_RELOC_SH_ALIGN, R_SH_ALIGN },
{ BFD_RELOC_SH_CODE, R_SH_CODE },
{ BFD_RELOC_SH_DATA, R_SH_DATA },
{ BFD_RELOC_SH_LABEL, R_SH_LABEL },
{ BFD_RELOC_UNUSED, 0 }
};
/* Adjust a reloc for the SH. This is similar to the generic code,
but does some minor tweaking. */
void
sh_coff_reloc_mangle (segment_info_type *seg, fixS *fix,
struct internal_reloc *intr, unsigned int paddr)
{
symbolS *symbol_ptr = fix->fx_addsy;
symbolS *dot;
intr->r_vaddr = paddr + fix->fx_frag->fr_address + fix->fx_where;
if (! SWITCH_TABLE (fix))
{
const struct reloc_map *rm;
for (rm = coff_reloc_map; rm->bfd_reloc != BFD_RELOC_UNUSED; rm++)
if (rm->bfd_reloc == (bfd_reloc_code_real_type) fix->fx_r_type)
break;
if (rm->bfd_reloc == BFD_RELOC_UNUSED)
as_bad_where (fix->fx_file, fix->fx_line,
_("Can not represent %s relocation in this object file format"),
bfd_get_reloc_code_name (fix->fx_r_type));
intr->r_type = rm->sh_reloc;
intr->r_offset = 0;
}
else
{
know (sh_relax);
if (fix->fx_r_type == BFD_RELOC_16)
intr->r_type = R_SH_SWITCH16;
else if (fix->fx_r_type == BFD_RELOC_8)
intr->r_type = R_SH_SWITCH8;
else if (fix->fx_r_type == BFD_RELOC_32)
intr->r_type = R_SH_SWITCH32;
else
abort ();
/* For a switch reloc, we set r_offset to the difference between
the reloc address and the subtrahend. When the linker is
doing relaxing, it can use the determine the starting and
ending points of the switch difference expression. */
intr->r_offset = intr->r_vaddr - S_GET_VALUE (fix->fx_subsy);
}
/* PC relative relocs are always against the current section. */
if (symbol_ptr == NULL)
{
switch (fix->fx_r_type)
{
case BFD_RELOC_SH_PCRELIMM8BY2:
case BFD_RELOC_SH_PCRELIMM8BY4:
case BFD_RELOC_SH_PCDISP8BY2:
case BFD_RELOC_SH_PCDISP12BY2:
case BFD_RELOC_SH_USES:
symbol_ptr = seg->dot;
break;
default:
break;
}
}
if (fix->fx_r_type == BFD_RELOC_SH_USES)
{
/* We can't store the offset in the object file, since this
reloc does not take up any space, so we store it in r_offset.
The fx_addnumber field was set in md_apply_fix. */
intr->r_offset = fix->fx_addnumber;
}
else if (fix->fx_r_type == BFD_RELOC_SH_COUNT)
{
/* We can't store the count in the object file, since this reloc
does not take up any space, so we store it in r_offset. The
fx_offset field was set when the fixup was created in
sh_coff_frob_file. */
intr->r_offset = fix->fx_offset;
/* This reloc is always absolute. */
symbol_ptr = NULL;
}
else if (fix->fx_r_type == BFD_RELOC_SH_ALIGN)
{
/* Store the alignment in the r_offset field. */
intr->r_offset = fix->fx_offset;
/* This reloc is always absolute. */
symbol_ptr = NULL;
}
else if (fix->fx_r_type == BFD_RELOC_SH_CODE
|| fix->fx_r_type == BFD_RELOC_SH_DATA
|| fix->fx_r_type == BFD_RELOC_SH_LABEL)
{
/* These relocs are always absolute. */
symbol_ptr = NULL;
}
/* Turn the segment of the symbol into an offset. */
if (symbol_ptr != NULL)
{
dot = segment_info[S_GET_SEGMENT (symbol_ptr)].dot;
if (dot != NULL)
intr->r_symndx = dot->sy_number;
else
intr->r_symndx = symbol_ptr->sy_number;
}
else
intr->r_symndx = -1;
}
#endif /* OBJ_COFF */
#endif /* ! BFD_ASSEMBLER */
#ifdef BFD_ASSEMBLER
/* Create a reloc. */
arelent *
@ -4610,4 +4370,3 @@ sh_regname_to_dw2regnum (const char *regname)
return regnum;
}
#endif /* OBJ_ELF */
#endif /* BFD_ASSEMBLER */

View File

@ -1,6 +1,6 @@
/* This file is tc-sh.h
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
2003, 2004 Free Software Foundation, Inc.
2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -60,16 +60,6 @@ extern int sh_force_relocation (struct fix *);
to know about all such entries so that it can adjust them if
necessary. */
#ifdef BFD_ASSEMBLER
#define SWITCH_TABLE_CONS(FIX) (0)
#else
#define SWITCH_TABLE_CONS(FIX) \
((FIX)->fx_r_type == 0 \
&& ((FIX)->fx_size == 2 \
|| (FIX)->fx_size == 1 \
|| (FIX)->fx_size == 4))
#endif
#define SWITCH_TABLE(FIX) \
((FIX)->fx_addsy != NULL \
&& (FIX)->fx_subsy != NULL \
@ -77,8 +67,7 @@ extern int sh_force_relocation (struct fix *);
&& S_GET_SEGMENT ((FIX)->fx_subsy) == text_section \
&& ((FIX)->fx_r_type == BFD_RELOC_32 \
|| (FIX)->fx_r_type == BFD_RELOC_16 \
|| (FIX)->fx_r_type == BFD_RELOC_8 \
|| SWITCH_TABLE_CONS (FIX)))
|| (FIX)->fx_r_type == BFD_RELOC_8))
#define TC_FORCE_RELOCATION_SUB_SAME(FIX, SEC) \
(! SEG_NORMAL (SEC) \
@ -122,27 +111,15 @@ extern void sh_frob_label (void);
extern void sh_flush_pending_output (void);
#define md_flush_pending_output() sh_flush_pending_output ()
#ifdef BFD_ASSEMBLER
#define tc_frob_file_before_adjust sh_frob_file
#else
#define tc_frob_file sh_frob_file
#endif
extern void sh_frob_file (void);
#ifdef OBJ_COFF
/* COFF specific definitions. */
/* This macro translates between an internal fix and a coff reloc type. */
#define TC_COFF_FIX2RTYPE(fix) ((fix)->fx_r_type)
#define BFD_ARCH TARGET_ARCH
#define COFF_MAGIC (!target_big_endian ? SH_ARCH_MAGIC_LITTLE : SH_ARCH_MAGIC_BIG)
/* We need to write out relocs which have not been completed. */
#define TC_COUNT_RELOC(fix) ((fix)->fx_addsy != NULL)
#define TC_RELOC_MANGLE(seg, fix, int, paddr) \
sh_coff_reloc_mangle ((seg), (fix), (int), (paddr))
extern void sh_coff_reloc_mangle
@ -151,18 +128,9 @@ extern void sh_coff_reloc_mangle
#define tc_coff_symbol_emit_hook(a) ; /* not used */
#define NEED_FX_R_TYPE 1
#define TC_KEEP_FX_OFFSET 1
#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep(frag)
extern int tc_coff_sizemachdep (fragS *);
#ifdef BFD_ASSEMBLER
#define SEG_NAME(SEG) segment_name (SEG)
#else
#define SEG_NAME(SEG) obj_segment_name (SEG)
#endif
/* We align most sections to a 16 byte boundary. */
#define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) \

View File

@ -174,9 +174,6 @@ const pseudo_typeS md_pseudo_table[] =
{NULL, 0, 0},
};
/* Size of relocation record. */
const int md_reloc_size = 12;
/* This array holds the chars that always start a comment. If the
pre-processor is disabled, these aren't very useful. */
const char comment_chars[] = "!"; /* JF removed '|' from
@ -3961,9 +3958,7 @@ s_common (ignore)
goto allocate_common;
}
#ifdef BFD_ASSEMBLER
symbol_get_bfdsym (symbolP)->flags |= BSF_OBJECT;
#endif
demand_empty_rest_of_line ();
return;

File diff suppressed because it is too large Load Diff

View File

@ -1,43 +0,0 @@
/* This file is tc-tahoe.h
Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1995, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
#define TC_TAHOE 1
#define TARGET_BYTES_BIG_ENDIAN 1
#define NO_LISTING
#define tc_headers_hook(a) {;} /* don't need it. */
#define tc_crawl_symbol_chain(a) {;} /* don't need it. */
#define tc_aout_pre_write_hook(a) {;}
#define md_operand(x)
extern const struct relax_type md_relax_table[];
#define TC_GENERIC_RELAX_TABLE md_relax_table
/*
* Local Variables:
* comment-column: 0
* fill-column: 131
* End:
*/

View File

@ -38,8 +38,6 @@ static char *ordinal_names[] =
"first", "second", "third", "fourth", "fifth"
};
const int md_reloc_size = 0;
const char comment_chars[] = ";";
const char line_comment_chars[] = "*";
const char line_separator_chars[] = "";

View File

@ -48,6 +48,4 @@
extern int tic30_unrecognized_line (int);
#define tc_aout_pre_write_hook {}
#endif

View File

@ -257,7 +257,6 @@ const pseudo_typeS
int md_short_jump_size = 4;
int md_long_jump_size = 4;
const int md_reloc_size = RELSZ; /* Coff headers. */
/* This array holds the chars that always start a comment. If the
pre-processor is disabled, these aren't very useful. */

View File

@ -22,10 +22,6 @@
#define TC_TIC4X
#define TIC4X
#ifndef BFD_ASSEMBLER
#error TMS320C4x requires BFD_ASSEMBLER
#endif
#define TARGET_ARCH bfd_arch_tic4x
#define WORKING_DOT_WORD
@ -57,13 +53,6 @@
#define OCTETS_PER_BYTE_POWER 2
#define TARGET_ARCH bfd_arch_tic4x
#define BFD_ARCH TARGET_ARCH
#define TC_COUNT_RELOC(x) (x->fx_addsy)
#define TC_CONS_RELOC RELOC_32
#define TC_COFF_FIX2RTYPE(fixP) tc_coff_fix2rtype (fixP)
#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep (frag)
#define NEED_FX_R_TYPE
#define TIC_NOP_OPCODE 0x0c800000

View File

@ -5549,17 +5549,6 @@ md_pcrel_from (fixP)
return 0;
}
#if defined OBJ_COFF
short
tc_coff_fix2rtype (fixP)
fixS *fixP;
{
return (fixP->fx_r_type);
}
#endif /* OBJ_COFF */
/* Mostly little-endian, but longwords (4 octets) get MS word stored
first. */

View File

@ -29,7 +29,6 @@
#define OCTETS_PER_BYTE_POWER 1
#define TARGET_ARCH bfd_arch_tic54x
#define BFD_ARCH TARGET_ARCH
#define WORKING_DOT_WORD 1
@ -48,10 +47,6 @@
/* affects preprocessor */
#define KEEP_WHITE_AROUND_COLON 1
/* We need the extra field in the fixup struct to put the relocation in. */
#define NEED_FX_R_TYPE
struct bit_info
{
segT seg;

View File

@ -1,894 +0,0 @@
/* tc-tic80.c -- Assemble for the TI TMS320C80 (MV)
Copyright 1996, 1997, 2000, 2001, 2002, 2005
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
#include "as.h"
#include "safe-ctype.h"
#include "opcode/tic80.h"
#define internal_error(what) \
as_fatal (_("internal error:%s:%d: %s\n"), __FILE__, __LINE__, what)
#define internal_error_a(what,arg) \
as_fatal (_("internal error:%s:%d: %s %ld\n"), __FILE__, __LINE__, what, arg)
/* Generic assembler global variables which must be defined by all
targets. */
/* Characters which always start a comment. */
const char comment_chars[] = ";";
/* Characters which start a comment at the beginning of a line. */
const char line_comment_chars[] = ";*#";
/* Characters which may be used to separate multiple commands on a single
line. The semicolon is such a character by default and should not be
explicitly listed. */
const char line_separator_chars[] = "";
/* Characters which are used to indicate an exponent in a floating
point number. */
const char EXP_CHARS[] = "eE";
/* Characters which mean that a number is a floating point constant,
as in 0f1.0. */
const char FLT_CHARS[] = "fF";
/* This table describes all the machine specific pseudo-ops the assembler
has to support. The fields are:
pseudo-op name without dot
function to call to execute this pseudo-op
integer arg to pass to the function */
const pseudo_typeS md_pseudo_table[] =
{
{ "align", s_align_bytes, 4 }, /* Do byte alignment, default is a 4 byte boundary. */
{ "word", cons, 4 }, /* FIXME: Should this be machine independent? */
{ "bss", s_lcomm_bytes, 1 },
{ "sect", obj_coff_section, 0}, /* For compatibility with TI tools. */
{ "section", obj_coff_section, 0}, /* Standard COFF .section pseudo-op. */
{ NULL, NULL, 0 }
};
/* Opcode hash table. */
static struct hash_control *tic80_hash;
/* Replace short PC relative instructions with long form when
necessary. Currently this is off by default or when given the
-no-relax option. Turning it on by using the -relax option forces
all PC relative instructions to use the long form, which is why it
is currently not the default. */
static int tic80_relax = 0;
int
md_estimate_size_before_relax (fragS *fragP ATTRIBUTE_UNUSED,
segT segment_type ATTRIBUTE_UNUSED)
{
internal_error (_("Relaxation is a luxury we can't afford"));
return -1;
}
/* We have no need to default values of symbols. */
symbolS *
md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
{
return NULL;
}
/* Turn a string in input_line_pointer into a floating point constant
of type TYPE, and store the appropriate bytes in *LITP. The number
of LITTLENUMS emitted is stored in *SIZEP. An error message is
returned, or NULL on OK. */
#define MAX_LITTLENUMS 4
char *
md_atof (int type, char *litP, int *sizeP)
{
int prec;
LITTLENUM_TYPE words[MAX_LITTLENUMS];
LITTLENUM_TYPE *wordP;
char *t;
switch (type)
{
case 'f':
case 'F':
case 's':
case 'S':
prec = 2;
break;
case 'd':
case 'D':
case 'r':
case 'R':
prec = 4;
break;
default:
*sizeP = 0;
return _("bad call to md_atof ()");
}
t = atof_ieee (input_line_pointer, type, words);
if (t)
input_line_pointer = t;
*sizeP = prec * sizeof (LITTLENUM_TYPE);
for (wordP = words; prec--;)
{
md_number_to_chars (litP, (valueT) (*wordP++), sizeof (LITTLENUM_TYPE));
litP += sizeof (LITTLENUM_TYPE);
}
return NULL;
}
/* Check to see if the constant value in NUM will fit in a field of
width BITS if it has flags FLAGS. */
static int
const_overflow (unsigned long num, int bits, int flags)
{
long min, max;
int retval = 0;
/* Only need to check fields less than 32 bits wide. */
if (bits >= 32)
return retval;
if (flags & TIC80_OPERAND_SIGNED)
{
max = (1 << (bits - 1)) - 1;
min = - (1 << (bits - 1));
retval = (long) num > max || (long) num < min;
}
else
{
max = (1 << bits) - 1;
retval = num > (unsigned long) max;
}
return retval;
}
/* get_operands () parses a string of operands and fills in a passed
array of expressions in EXP.
Note that we use O_absent expressions to record additional information
about the previous non-O_absent expression, such as ":m" or ":s"
modifiers or register numbers enclosed in parens like "(r10)".
Returns the number of expressions that were placed in EXP. */
static int
get_operands (expressionS exp[])
{
char *p = input_line_pointer;
int numexp = 0;
int parens = 0;
while (*p)
{
/* Skip leading whitespace. */
while (*p == ' ' || *p == '\t' || *p == ',')
p++;
/* Check to see if we have any operands left to parse. */
if (*p == 0 || *p == '\n' || *p == '\r')
break;
/* Notice scaling or direct memory operand modifiers and save them in
an O_absent expression after the expression that they modify. */
if (*p == ':')
{
p++;
exp[numexp].X_op = O_absent;
if (*p == 'm')
{
p++;
/* This is a ":m" modifier. */
exp[numexp].X_add_number = TIC80_OPERAND_M_SI | TIC80_OPERAND_M_LI;
}
else if (*p == 's')
{
p++;
/* This is a ":s" modifier. */
exp[numexp].X_add_number = TIC80_OPERAND_SCALED;
}
else
as_bad (_("':' not followed by 'm' or 's'"));
numexp++;
continue;
}
/* Handle leading '(' on operands that use them, by recording that we
have entered a paren nesting level and then continuing. We complain
about multiple nesting. */
if (*p == '(')
{
if (++parens != 1)
as_bad (_("paren nesting"));
p++;
continue;
}
/* Handle trailing ')' on operands that use them, by reducing the
nesting level and then continuing. We complain if there were too
many closures. */
if (*p == ')')
{
/* Record that we have left a paren group and continue. */
if (--parens < 0)
as_bad (_("mismatched parenthesis"));
p++;
continue;
}
/* Begin operand parsing at the current scan point. */
input_line_pointer = p;
expression (&exp[numexp]);
if (exp[numexp].X_op == O_illegal)
as_bad (_("illegal operand"));
else if (exp[numexp].X_op == O_absent)
as_bad (_("missing operand"));
numexp++;
p = input_line_pointer;
}
if (parens)
{
exp[numexp].X_op = O_absent;
exp[numexp++].X_add_number = TIC80_OPERAND_PARENS;
}
/* Mark the end of the valid operands with an illegal expression. */
exp[numexp].X_op = O_illegal;
return numexp;
}
/* find_opcode() gets a pointer to the entry in the opcode table that
matches the instruction being assembled, or returns NULL if no such match
is found.
First it parses all the operands and save them as expressions. Note that
we use O_absent expressions to record additional information about the
previous non-O_absent expression, such as ":m" or ":s" modifiers or
register numbers enclosed in parens like "(r10)".
It then looks at all opcodes with the same name and uses the operands to
choose the correct opcode. */
static struct tic80_opcode *
find_opcode (struct tic80_opcode *opcode, expressionS myops[])
{
int numexp; /* Number of expressions from parsing operands. */
int expi; /* Index of current expression to match. */
int opi; /* Index of current operand to match. */
int match = 0; /* Set to 1 when an operand match is found. */
struct tic80_opcode *opc = opcode; /* Pointer to current opcode table entry. */
const struct tic80_opcode *end; /* Pointer to end of opcode table. */
/* First parse all the operands so we only have to do it once. There may
be more expressions generated than there are operands. */
numexp = get_operands (myops);
/* For each opcode with the same name, try to match it against the parsed
operands. */
end = tic80_opcodes + tic80_num_opcodes;
while (!match && (opc < end) && (strcmp (opc->name, opcode->name) == 0))
{
/* Start off assuming a match. If we find a mismatch, then this is
reset and the operand/expr matching loop terminates with match
equal to zero, which allows us to try the next opcode. */
match = 1;
/* For each expression, try to match it against the current operand
for the current opcode. Upon any mismatch, we abandon further
matching for the current opcode table entry. */
for (expi = 0, opi = -1; (expi < numexp) && match; expi++)
{
int bits, flags, X_op, num;
X_op = myops[expi].X_op;
num = myops[expi].X_add_number;
/* The O_absent expressions apply to the same operand as the most
recent non O_absent expression. So only increment the operand
index when the current expression is not one of these special
expressions. */
if (X_op != O_absent)
opi++;
flags = tic80_operands[opc->operands[opi]].flags;
bits = tic80_operands[opc->operands[opi]].bits;
switch (X_op)
{
case O_register:
/* Also check that registers that are supposed to be
even actually are even. */
if (((flags & TIC80_OPERAND_GPR) != (num & TIC80_OPERAND_GPR)) ||
((flags & TIC80_OPERAND_FPA) != (num & TIC80_OPERAND_FPA)) ||
((flags & TIC80_OPERAND_CR) != (num & TIC80_OPERAND_CR)) ||
((flags & TIC80_OPERAND_EVEN) && (num & 1)) ||
const_overflow (num & ~TIC80_OPERAND_MASK, bits, flags))
match = 0;
break;
case O_constant:
if ((flags & TIC80_OPERAND_ENDMASK) && (num == 32))
/* Endmask values of 0 and 32 give identical
results. */
num = 0;
if ((flags & (TIC80_OPERAND_FPA | TIC80_OPERAND_GPR)) ||
const_overflow (num, bits, flags))
match = 0;
break;
case O_symbol:
if ((bits < 32) && (flags & TIC80_OPERAND_PCREL)
&& !tic80_relax)
{
/* The default is to prefer the short form of PC
relative relocations. This is the only form that
the TI assembler supports. If the -relax option
is given, we never use the short forms.
FIXME: Should be able to choose "best-fit". */
}
else if ((bits == 32))
{
/* The default is to prefer the long form of base
relative relocations. This is the only form that
the TI assembler supports. If the -no-relax
option is given, we always use the long form of
PC relative relocations.
FIXME: Should be able to choose "best-fit". */
}
else
{
/* Symbols that don't match one of the above cases are
rejected as an operand. */
match = 0;
}
break;
case O_absent:
/* If this is an O_absent expression, then it may be an
expression that supplies additional information about
the operand, such as ":m" or ":s" modifiers. Check to
see that the operand matches this requirement. */
if (!((num & flags & TIC80_OPERAND_M_SI)
|| (num & flags & TIC80_OPERAND_M_LI)
|| (num & flags & TIC80_OPERAND_SCALED)))
match = 0;
break;
case O_big:
if ((num > 0) || !(flags & TIC80_OPERAND_FLOAT))
match = 0;
break;
case O_illegal:
case O_symbol_rva:
case O_uminus:
case O_bit_not:
case O_logical_not:
case O_multiply:
case O_divide:
case O_modulus:
case O_left_shift:
case O_right_shift:
case O_bit_inclusive_or:
case O_bit_or_not:
case O_bit_exclusive_or:
case O_bit_and:
case O_add:
case O_subtract:
case O_eq:
case O_ne:
case O_lt:
case O_le:
case O_ge:
case O_gt:
case O_logical_and:
case O_logical_or:
case O_max:
default:
internal_error_a (_("unhandled expression type"), (long) X_op);
}
}
if (!match)
opc++;
}
return match ? opc : NULL;
}
/* build_insn takes a pointer to the opcode entry in the opcode table
and the array of operand expressions and writes out the instruction.
Note that the opcode word and extended word may be written to different
frags, with the opcode at the end of one frag and the extension at the
beginning of the next. */
static void
build_insn (struct tic80_opcode *opcode, expressionS *opers)
{
int expi; /* Index of current expression to match. */
int opi; /* Index of current operand to match. */
unsigned long insn[2]; /* Instruction and long immediate (if any). */
char *f; /* Pointer to frag location for insn[0]. */
fragS *ffrag; /* Frag containing location f. */
char *fx = NULL; /* Pointer to frag location for insn[1]. */
fragS *fxfrag; /* Frag containing location fx. */
/* Start with the raw opcode bits from the opcode table. */
insn[0] = opcode->opcode;
insn[1] = 0;
/* We are going to insert at least one 32 bit opcode so get the
frag now. */
f = frag_more (4);
ffrag = frag_now;
/* For each operand expression, insert the appropriate bits into the
instruction. */
for (expi = 0, opi = -1; opers[expi].X_op != O_illegal; expi++)
{
int bits, shift, flags, X_op, num;
X_op = opers[expi].X_op;
num = opers[expi].X_add_number;
/* The O_absent expressions apply to the same operand as the most
recent non O_absent expression. So only increment the operand
index when the current expression is not one of these special
expressions. */
if (X_op != O_absent)
opi++;
flags = tic80_operands[opcode->operands[opi]].flags;
bits = tic80_operands[opcode->operands[opi]].bits;
shift = tic80_operands[opcode->operands[opi]].shift;
switch (X_op)
{
case O_register:
num &= ~TIC80_OPERAND_MASK;
insn[0] = insn[0] | (num << shift);
break;
case O_constant:
if ((flags & TIC80_OPERAND_ENDMASK) && (num == 32))
/* Endmask values of 0 and 32 give identical results. */
num = 0;
else if ((flags & TIC80_OPERAND_BITNUM))
/* BITNUM values are stored in one's complement form. */
num = (~num & 0x1F);
/* Mask off upper bits, just it case it is signed and is
negative. */
if (bits < 32)
{
num &= (1 << bits) - 1;
insn[0] = insn[0] | (num << shift);
}
else
{
fx = frag_more (4);
fxfrag = frag_now;
insn[1] = num;
}
break;
case O_symbol:
if (bits == 32)
{
fx = frag_more (4);
fxfrag = frag_now;
insn[1] = 0;
if (flags & TIC80_OPERAND_PCREL)
fix_new_exp (fxfrag, fx - (fxfrag->fr_literal),
4, &opers[expi], 1, R_MPPCR);
else
fix_new_exp (fxfrag, fx - (fxfrag->fr_literal),
4, &opers[expi], 0, R_RELLONGX);
}
else if (flags & TIC80_OPERAND_PCREL)
fix_new_exp (ffrag, f - (ffrag->fr_literal),
4, /* FIXME! how is this used? */
&opers[expi], 1, R_MPPCR15W);
else
internal_error (_("symbol reloc that is not PC relative or 32 bits"));
break;
case O_absent:
/* Each O_absent expression can indicate exactly one
possible modifier. */
if ((num & TIC80_OPERAND_M_SI)
&& (flags & TIC80_OPERAND_M_SI))
insn[0] = insn[0] | (1 << 17);
else if ((num & TIC80_OPERAND_M_LI)
&& (flags & TIC80_OPERAND_M_LI))
insn[0] = insn[0] | (1 << 15);
else if ((num & TIC80_OPERAND_SCALED)
&& (flags & TIC80_OPERAND_SCALED))
insn[0] = insn[0] | (1 << 11);
else if ((num & TIC80_OPERAND_PARENS)
&& (flags & TIC80_OPERAND_PARENS))
/* No code to generate, just accept and discard this
expression. */
;
else
internal_error_a (_("unhandled operand modifier"),
(long) opers[expi].X_add_number);
break;
case O_big:
fx = frag_more (4);
fxfrag = frag_now;
{
int precision = 2;
long exponent_bits = 8L;
LITTLENUM_TYPE words[2];
/* Value is still in generic_floating_point_number. */
gen_to_words (words, precision, exponent_bits);
insn[1] = (words[0] << 16) | words[1];
}
break;
case O_illegal:
case O_symbol_rva:
case O_uminus:
case O_bit_not:
case O_logical_not:
case O_multiply:
case O_divide:
case O_modulus:
case O_left_shift:
case O_right_shift:
case O_bit_inclusive_or:
case O_bit_or_not:
case O_bit_exclusive_or:
case O_bit_and:
case O_add:
case O_subtract:
case O_eq:
case O_ne:
case O_lt:
case O_le:
case O_ge:
case O_gt:
case O_logical_and:
case O_logical_or:
case O_max:
default:
internal_error_a (_("unhandled expression"), (long) X_op);
break;
}
}
/* Write out the instruction, either 4 or 8 bytes. */
md_number_to_chars (f, insn[0], 4);
if (fx != NULL)
md_number_to_chars (fx, insn[1], 4);
}
/* This is the main entry point for the machine-dependent assembler. Gas
calls this function for each input line which does not contain a
pseudoop.
STR points to a NULL terminated machine dependent instruction. This
function is supposed to emit the frags/bytes it assembles to. */
void
md_assemble (char *str)
{
char *scan;
char *input_line_save;
struct tic80_opcode *opcode;
expressionS myops[16];
/* Ensure there is something there to assemble. */
assert (str);
/* Drop any leading whitespace. */
while (ISSPACE (*str))
str++;
/* Isolate the mnemonic from the rest of the string by finding the first
whitespace character and zapping it to a null byte. */
for (scan = str; *scan != '\000' && !ISSPACE (*scan); scan++)
;
if (*scan != '\000')
*scan++ = '\000';
/* Try to find this mnemonic in the hash table. */
if ((opcode = (struct tic80_opcode *) hash_find (tic80_hash, str)) == NULL)
{
as_bad (_("Invalid mnemonic: '%s'"), str);
return;
}
str = scan;
while (ISSPACE (*scan))
scan++;
input_line_save = input_line_pointer;
input_line_pointer = str;
opcode = find_opcode (opcode, myops);
if (opcode == NULL)
as_bad (_("Invalid operands: '%s'"), input_line_save);
input_line_pointer = input_line_save;
build_insn (opcode, myops);
}
/* This function is called once at the start of assembly, after the command
line arguments have been parsed and all the machine independent
initializations have been completed.
It should set up all the tables, etc., that the machine dependent part of
the assembler will need. */
void
md_begin (void)
{
char *prev_name = "";
register const struct tic80_opcode *op;
register const struct tic80_opcode *op_end;
const struct predefined_symbol *pdsp;
extern int coff_flags; /* Defined in obj-coff.c */
/* Set F_AR32WR in coff_flags, which will end up in the file header
f_flags field. */
coff_flags |= F_AR32WR; /* TIc80 is 32 bit little endian. */
/* Insert unique names into hash table. The TIc80 instruction set
has many identical opcode names that have different opcodes based
on the operands. This hash table then provides a quick index to
the first opcode with a particular name in the opcode table. */
tic80_hash = hash_new ();
op_end = tic80_opcodes + tic80_num_opcodes;
for (op = tic80_opcodes; op < op_end; op++)
{
if (strcmp (prev_name, op->name) != 0)
{
prev_name = (char *) op->name;
hash_insert (tic80_hash, op->name, (char *) op);
}
}
/* Insert the predefined symbols into the symbol table. We use
symbol_create rather than symbol_new so that these symbols don't
end up in the object files' symbol table. Note that the values
of the predefined symbols include some upper bits that
distinguish the type of the symbol (register, bitnum, condition
code, etc) and these bits must be masked away before actually
inserting the values into the instruction stream. For registers
we put these bits in the symbol table since we use them later and
there is no question that they aren't part of the register
number. For constants we can't do that since the constant can be
any value, so they are masked off before putting them into the
symbol table. */
pdsp = NULL;
while ((pdsp = tic80_next_predefined_symbol (pdsp)) != NULL)
{
segT segment;
valueT valu;
int symtype;
symtype = PDS_VALUE (pdsp) & TIC80_OPERAND_MASK;
switch (symtype)
{
case TIC80_OPERAND_GPR:
case TIC80_OPERAND_FPA:
case TIC80_OPERAND_CR:
segment = reg_section;
valu = PDS_VALUE (pdsp);
break;
case TIC80_OPERAND_CC:
case TIC80_OPERAND_BITNUM:
segment = absolute_section;
valu = PDS_VALUE (pdsp) & ~TIC80_OPERAND_MASK;
break;
default:
internal_error_a (_("unhandled predefined symbol bits"),
(long) symtype);
break;
}
symbol_table_insert (symbol_create (PDS_NAME (pdsp), segment, valu,
&zero_address_frag));
}
}
/* The assembler adds md_shortopts to the string passed to getopt. */
const char *md_shortopts = "";
/* The assembler adds md_longopts to the machine independent long options
that are passed to getopt. */
struct option md_longopts[] =
{
#define OPTION_RELAX (OPTION_MD_BASE)
{"relax", no_argument, NULL, OPTION_RELAX},
#define OPTION_NO_RELAX (OPTION_RELAX + 1)
{"no-relax", no_argument, NULL, OPTION_NO_RELAX},
{NULL, no_argument, NULL, 0}
};
size_t md_longopts_size = sizeof (md_longopts);
/* The md_parse_option function will be called whenever getopt returns an
unrecognized code, presumably indicating a special code value which
appears in md_longopts for machine specific command line options. */
int
md_parse_option (int c, char *arg ATTRIBUTE_UNUSED)
{
switch (c)
{
case OPTION_RELAX:
tic80_relax = 1;
break;
case OPTION_NO_RELAX:
tic80_relax = 0;
break;
default:
return 0;
}
return 1;
}
/* The md_show_usage function will be called whenever a usage message is
printed. It should print a description of the machine specific options
found in md_longopts. */
void
md_show_usage (FILE *stream)
{
fprintf (stream, "\
TIc80 options:\n\
-relax alter PC relative branch instructions to use long form when needed\n\
-no-relax always use short PC relative branch instructions, error on overflow\n");
}
/* Attempt to simplify or even eliminate a fixup. The return value is
ignored; perhaps it was once meaningful, but now it is historical.
To indicate that a fixup has been eliminated, set fixP->fx_done. */
void
md_apply_fix (fixS *fixP, valueT * valP, segT seg ATTRIBUTE_UNUSED)
{
long val = * (long *) valP;
char *dest = fixP->fx_frag->fr_literal + fixP->fx_where;
int overflow;
switch (fixP->fx_r_type)
{
case R_RELLONGX:
md_number_to_chars (dest, (valueT) val, 4);
break;
case R_MPPCR:
val >>= 2;
val += 1; /* Target address computed from inst start. */
md_number_to_chars (dest, (valueT) val, 4);
break;
case R_MPPCR15W:
overflow = (val < -65536L) || (val > 65532L);
if (overflow)
as_bad_where (fixP->fx_file, fixP->fx_line,
_("PC offset 0x%lx outside range 0x%lx-0x%lx"),
val, -65536L, 65532L);
else
{
val >>= 2;
*dest++ = val & 0xFF;
val >>= 8;
*dest = (*dest & 0x80) | (val & 0x7F);
}
break;
case R_ABS:
md_number_to_chars (dest, (valueT) val, fixP->fx_size);
break;
default:
internal_error_a (_("unhandled relocation type in fixup"),
(long) fixP->fx_r_type);
break;
}
if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
fixP->fx_done = 1;
}
/* Functions concerning relocs. */
/* The location from which a PC relative jump should be calculated,
given a PC relative reloc.
For the TIc80, this is the address of the 32 bit opcode containing
the PC relative field. */
long
md_pcrel_from (fixS *fixP)
{
return (fixP->fx_frag->fr_address + fixP->fx_where);
}
/* Called after relax() is finished.
In: Address of frag.
fr_type == rs_machine_dependent.
fr_subtype is what the address relaxed to.
Out: Any fixSs and constants are set up.
Caller will turn frag into a ".space 0". */
void
md_convert_frag (object_headers *headers ATTRIBUTE_UNUSED,
segT seg ATTRIBUTE_UNUSED,
fragS *fragP ATTRIBUTE_UNUSED)
{
internal_error (_("md_convert_frag() not implemented yet"));
abort ();
}
void
tc_coff_symbol_emit_hook (symbolS *ignore ATTRIBUTE_UNUSED)
{
}
#if defined OBJ_COFF
short
tc_coff_fix2rtype (fixS *fixP)
{
return (fixP->fx_r_type);
}
#endif /* OBJ_COFF */

View File

@ -1,61 +0,0 @@
/* This file is tc-tic80.h
Copyright 1996, 1997, 2000, 2002, 2005 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
#define TC_TIC80
#define TARGET_BYTES_BIG_ENDIAN 0
#define TARGET_ARCH bfd_arch_tic80
#define TARGET_FORMAT "coff-tic80"
#define BFD_ARCH TARGET_ARCH
/* We need the extra field in the fixup struct to put the relocation in. */
#define NEED_FX_R_TYPE
/* Define md_number_to_chars as the appropriate standard big endian or
little endian function. Should we someday support endianness as a
runtime decision, this will need to change. */
#define md_number_to_chars number_to_chars_littleendian
/* Define away the call to md_operand in the expression parsing code.
This is called whenever the expression parser can't parse the input
and gives the assembler backend a chance to deal with it instead. */
#define md_operand(x)
#ifdef OBJ_COFF
/* COFF specific definitions. */
#define COFF_MAGIC TIC80_ARCH_MAGIC
/* Whether a reloc should be output. */
#define TC_COUNT_RELOC(fixp) ((fixp) -> fx_addsy != NULL)
/* This macro translates between an internal fix and a coff reloc type. */
#define TC_COFF_FIX2RTYPE(fixP) tc_coff_fix2rtype(fixP)
extern short tc_coff_fix2rtype (struct fix *);
#endif /* OBJ_COFF */

View File

@ -25,10 +25,6 @@
#define TARGET_BYTES_BIG_ENDIAN 0
#ifndef BFD_ASSEMBLER
#error V850 support requires BFD_ASSEMBLER
#endif
/* The target BFD architecture. */
#define TARGET_ARCH bfd_arch_v850

View File

@ -30,10 +30,6 @@
#include "elf/vax.h"
#endif
#if defined (OBJ_AOUT) && !defined (BFD_ASSEMBLER) && defined (TE_NetBSD)
#include <netinet/in.h>
#endif
/* These chars start a comment anywhere in a source file (except inside
another comment */
const char comment_chars[] = "#";
@ -322,12 +318,11 @@ md_apply_fix (fixP, valueP, seg)
segT seg ATTRIBUTE_UNUSED;
{
valueT value = * valueP;
#ifdef BFD_ASSEMBLER
if (((fixP->fx_addsy == NULL && fixP->fx_subsy == NULL)
&& fixP->fx_r_type != BFD_RELOC_32_PLT_PCREL
&& fixP->fx_r_type != BFD_RELOC_32_GOT_PCREL)
|| fixP->fx_r_type == NO_RELOC)
#endif
number_to_chars_littleendian (fixP->fx_where + fixP->fx_frag->fr_literal,
value, fixP->fx_size);
@ -751,13 +746,8 @@ md_assemble (instruction_string)
this_add_number = expP->X_add_number;
this_add_symbol = expP->X_add_symbol;
to_seg = *segP;
#ifdef BFD_ASSEMBLER
is_undefined = (to_seg == undefined_section);
is_absolute = (to_seg == absolute_section);
#else
is_undefined = (to_seg == SEG_UNKNOWN);
is_absolute = (to_seg == SEG_ABSOLUTE);
#endif
at = operandP->vop_mode & 1;
length = (operandP->vop_short == 'b'
? 1 : (operandP->vop_short == 'w'
@ -834,11 +824,7 @@ md_assemble (instruction_string)
p = frag_more (nbytes);
/* Conventional relocation. */
fix_new (frag_now, p - frag_now->fr_literal, nbytes,
#ifdef BFD_ASSEMBLER
section_symbol (absolute_section),
#else
&abs_symbol,
#endif
this_add_number, 1, NO_RELOC);
}
else
@ -922,11 +908,7 @@ md_assemble (instruction_string)
know (!(opcode_as_number & VIT_OPCODE_SYNTHETIC));
p = frag_more (nbytes);
fix_new (frag_now, p - frag_now->fr_literal, nbytes,
#ifdef BFD_ASSEMBLER
section_symbol (absolute_section),
#else
&abs_symbol,
#endif
this_add_number, 1, NO_RELOC);
}
else
@ -1442,19 +1424,11 @@ md_estimate_size_before_relax (fragP, segment)
* Out: Any fixSs and constants are set up.
* Caller will turn frag into a ".space 0".
*/
#ifdef BFD_ASSEMBLER
void
md_convert_frag (headers, seg, fragP)
bfd *headers ATTRIBUTE_UNUSED;
segT seg ATTRIBUTE_UNUSED;
fragS *fragP;
#else
void
md_convert_frag (headers, seg, fragP)
object_headers *headers ATTRIBUTE_UNUSED;
segT seg ATTRIBUTE_UNUSED;
fragS *fragP;
#endif
{
char *addressP; /* -> _var to change. */
char *opcodeP; /* -> opcode char(s) to change. */
@ -1619,42 +1593,6 @@ md_ri_to_chars (the_bytes, ri)
#endif /* comment */
#ifdef OBJ_AOUT
#ifndef BFD_ASSEMBLER
void
tc_aout_fix_to_chars (where, fixP, segment_address_in_file)
char *where;
fixS *fixP;
relax_addressT segment_address_in_file;
{
/*
* In: length of relocation (or of address) in chars: 1, 2 or 4.
* Out: GNU LD relocation length code: 0, 1, or 2.
*/
static const unsigned char nbytes_r_length[] = {42, 0, 1, 42, 2};
long r_symbolnum;
know (fixP->fx_addsy != NULL);
md_number_to_chars (where,
fixP->fx_frag->fr_address + fixP->fx_where - segment_address_in_file,
4);
r_symbolnum = (S_IS_DEFINED (fixP->fx_addsy)
? S_GET_TYPE (fixP->fx_addsy)
: fixP->fx_addsy->sy_number);
where[6] = (r_symbolnum >> 16) & 0x0ff;
where[5] = (r_symbolnum >> 8) & 0x0ff;
where[4] = r_symbolnum & 0x0ff;
where[7] = ((((!S_IS_DEFINED (fixP->fx_addsy)) << 3) & 0x08)
| ((nbytes_r_length[fixP->fx_size] << 1) & 0x06)
| (((fixP->fx_pcrel << 0) & 0x01) & 0x0f));
}
#endif /* !BFD_ASSEMBLER */
#endif /* OBJ_AOUT */
/*
* BUGS, GRIPES, APOLOGIA, etc.
*
@ -3279,7 +3217,6 @@ mumble (text, value)
int md_short_jump_size = 3;
int md_long_jump_size = 6;
const int md_reloc_size = 8; /* Size of relocation record */
void
md_create_short_jump (ptr, from_addr, to_addr, frag, to_symbol)
@ -3462,21 +3399,6 @@ md_pcrel_from (fixP)
return fixP->fx_size + fixP->fx_where + fixP->fx_frag->fr_address;
}
#ifdef OBJ_AOUT
#ifndef BFD_ASSEMBLER
void
tc_headers_hook(headers)
object_headers *headers;
{
#ifdef TE_NetBSD
N_SET_INFO(headers->header, OMAGIC, M_VAX4K_NETBSD, 0);
headers->header.a_info = htonl (headers->header.a_info);
#endif
}
#endif /* !BFD_ASSEMBLER */
#endif /* OBJ_AOUT */
#ifdef BFD_ASSEMBLER
arelent *
tc_gen_reloc (section, fixp)
asection *section ATTRIBUTE_UNUSED;
@ -3552,6 +3474,5 @@ tc_gen_reloc (section, fixp)
return reloc;
}
#endif /* BFD_ASSEMBLER */
/* end of tc-vax.c */

View File

@ -1,5 +1,5 @@
/* tc-vax.h -- Header file for tc-vax.c.
Copyright 1987, 1991, 1992, 1993, 1995, 1996, 1997, 2000, 2002
Copyright 1987, 1991, 1992, 1993, 1995, 1996, 1997, 2000, 2002, 2005
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -40,18 +40,11 @@
#define TARGET_FORMAT "elf32-vax"
#endif
#define BFD_ARCH bfd_arch_vax /* for non-BFD_ASSEMBLER */
#define TARGET_ARCH bfd_arch_vax /* BFD_ASSEMBLER */
#define TARGET_ARCH bfd_arch_vax
#ifdef BFD_ASSEMBLER
#define NO_RELOC BFD_RELOC_NONE
#else
#define NO_RELOC 0
#endif
#define NOP_OPCODE 0x01
#define tc_aout_pre_write_hook(x) {;} /* not used */
#define tc_crawl_symbol_chain(a) {;} /* not used */
#define md_operand(x)
long md_chars_to_number PARAMS ((unsigned char *, int));
@ -59,7 +52,6 @@ long md_chars_to_number PARAMS ((unsigned char *, int));
extern const struct relax_type md_relax_table[];
#define TC_GENERIC_RELAX_TABLE md_relax_table
#ifdef BFD_ASSEMBLER
/* Values passed to md_apply_fix don't include symbol values. */
#define MD_APPLY_SYM_VALUE(FIX) 0
@ -73,7 +65,6 @@ extern const struct relax_type md_relax_table[];
&& (S_GET_SEGMENT ((FIX)->fx_subsy) \
== S_GET_SEGMENT ((FIX)->fx_addsy))) \
|| S_IS_LOCAL ((FIX)->fx_addsy)))
#endif
/*
* Local Variables:

File diff suppressed because it is too large Load Diff

View File

@ -1,60 +0,0 @@
/* This file is tc-w65.h
Copyright 1995, 1997, 1998, 2000, 2001, 2002, 2005
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
#define TC_W65
#define TARGET_BYTES_BIG_ENDIAN 0
struct internal_reloc;
struct fix;
#define WORKING_DOT_WORD
/* This macro translates between an internal fix and a coff reloc type. */
#define TC_COFF_FIX2RTYPE(fixP) tc_coff_fix2rtype (fixP)
#define BFD_ARCH bfd_arch_w65
#define COFF_MAGIC 0x6500
#define IGNORE_NONSTANDARD_ESCAPES
#define TC_RELOC_MANGLE(s,a,b,c) tc_reloc_mangle (a,b,c)
extern void tc_reloc_mangle (struct fix *, struct internal_reloc *, bfd_vma);
#define LISTING_HEADER "W65816 GAS "
#define NEED_FX_R_TYPE 1
#define RELOC_32 1234
#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep (frag)
int tc_coff_sizemachdep (fragS *);
#define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) w65_expression (EXP)
void w65_expression (expressionS *);
#define TC_COUNT_RELOC(x) (1)
#define TC_CONS_RELOC tc_cons_reloc
#define DONT_OVERFLOW
int tc_cons_reloc;
#define md_operand(x)
extern struct relax_type md_relax_table[];
#define TC_GENERIC_RELAX_TABLE md_relax_table

View File

@ -20,11 +20,6 @@
#define TC_XSTORMY16
#ifndef BFD_ASSEMBLER
/* Leading space so will compile with cc. */
#error XSTORMY16 support requires BFD_ASSEMBLER
#endif
#define LISTING_HEADER "XSTORMY16 GAS "
/* The target BFD architecture. */

View File

@ -1,5 +1,5 @@
/* tc-xtensa.h -- Header file for tc-xtensa.c.
Copyright (C) 2003, 2004 Free Software Foundation, Inc.
Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -23,10 +23,6 @@
struct fix;
#ifndef BFD_ASSEMBLER
#error Xtensa support requires BFD_ASSEMBLER
#endif
#ifndef OBJ_ELF
#error Xtensa support requires ELF object format
#endif

View File

@ -36,7 +36,6 @@ const char line_separator_chars[] = ";";
extern int machine;
extern int coff_flags;
int segmented_mode;
const int md_reloc_size;
/* This is non-zero if target was set from the command line. */
static int z8k_target_from_cmdline;
@ -1260,12 +1259,6 @@ md_assemble (char *str)
}
}
void
tc_crawl_symbol_chain (object_headers *headers ATTRIBUTE_UNUSED)
{
printf (_("call to tc_crawl_symbol_chain \n"));
}
/* We have no need to default values of symbols. */
symbolS *
@ -1274,12 +1267,6 @@ md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
return 0;
}
void
tc_headers_hook (object_headers *headers ATTRIBUTE_UNUSED)
{
printf (_("call to tc_headers_hook \n"));
}
/* Various routines to kill one day. */
/* Equal to MAX_PRECISION in atof-ieee.c. */
#define MAX_LITTLENUMS 6

View File

@ -1,6 +1,6 @@
/* This file is tc-z8k.h
Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1997, 1998,
2000, 2002, 2003
2000, 2002, 2003, 2005
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@ -27,16 +27,7 @@ struct internal_reloc;
#define WORKING_DOT_WORD
#ifndef BFD_ASSEMBLER
#define LOCAL_LABEL(x) 0
#endif
/* This macro translates between an internal fix and a coff reloc type. */
#define TC_COFF_FIX2RTYPE(fixP) abort ();
#define BFD_ARCH bfd_arch_z8k
#define COFF_MAGIC 0x8000
#define TC_COUNT_RELOC(x) (1)
#define IGNORE_NONSTANDARD_ESCAPES
#undef WARN_SIGNED_OVERFLOW_WORD
@ -45,7 +36,6 @@ extern void tc_reloc_mangle
PARAMS ((struct fix *, struct internal_reloc *, bfd_vma));
#define LISTING_HEADER "Zilog Z8000 GAS "
#define NEED_FX_R_TYPE 1
#define RELOC_32 1234
#define md_operand(x)

View File

@ -1,17 +0,0 @@
#define TE_AUX
/* From obj-coff.h:
This internal_lineno crap is to stop namespace pollution from the
bfd internal coff headerfile. */
#define internal_lineno bfd_internal_lineno
#include "coff/aux-coff.h" /* override bits in coff/internal.h */
#undef internal_lineno
#define COFF_NOLOAD_PROBLEM
#define KEEP_RELOC_INFO
#include "obj-format.h"
#ifndef LOCAL_LABELS_FB
#define LOCAL_LABELS_FB 1
#endif

View File

@ -1,13 +0,0 @@
/* This file is te-delta88.h. */
#define TE_DELTA88 1
#define COFF_NOLOAD_PROBLEM 1
/* Added these, because if we don't know what we're targeting we may
need an assembler version of libgcc, and that will use local
labels. */
#define LOCAL_LABELS_DOLLAR 1
#define LOCAL_LABELS_FB 1
#include "obj-format.h"

View File

@ -1,14 +0,0 @@
#define TE_DELTA
#include "obj-format.h"
#define COFF_NOLOAD_PROBLEM 1
#define COFF_COMMON_ADDEND 1
/* Added these, because if we don't know what we're targeting we may
need an assembler version of libgcc, and that will use local
labels. */
#define LOCAL_LABELS_DOLLAR 1
#define LOCAL_LABELS_FB 1
/* end of te-delta.h */

View File

@ -1,12 +0,0 @@
/* Machine specific defines for the dpx2 machine. */
/* The magic number is not the usual MC68MAGIC. */
#define COFF_MAGIC MC68KBCSMAGIC
#define REGISTER_PREFIX_OPTIONAL 1
#define TARGET_FORMAT "coff-m68k-un"
#include "obj-format.h"
/* end of te-dpx2.h */

View File

@ -1,27 +0,0 @@
/* te-hp300.h -- hpux 9000/300 target environment declarations.
Copyright 1987, 1990, 1991, 1992, 1993, 1995, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to
the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
#define LOCAL_LABELS_DOLLAR 1
#define LOCAL_LABELS_FB 1
#include "obj-format.h"
/* end of te-hp300.h */

View File

@ -1,37 +0,0 @@
/* This file is te-ic960.h
Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1994, 1995, 1997, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
/* This file is te-ic960.h and is intended to define ic960 environment
specific differences. */
#define OBJ_COFF_OMIT_OPTIONAL_HEADER
#ifndef BFD_ASSEMBLER
#define LOCAL_LABEL(name) ((name[0] =='L') \
|| (name[0] =='.' \
&& (name[1]=='C' \
|| name[1]=='I' \
|| name[1]=='.')))
#endif
#include "obj-format.h"
/* end of te-ic960.h */

Some files were not shown because too many files have changed in this diff Show More