* 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:
parent
f7348dad42
commit
7be1c4891a
140
gas/ChangeLog
140
gas/ChangeLog
|
@ -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
|
||||
|
|
216
gas/Makefile.am
216
gas/Makefile.am
|
@ -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
|
||||
|
|
263
gas/Makefile.in
263
gas/Makefile.in
|
@ -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
|
||||
|
|
77
gas/README
77
gas/README
|
@ -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
|
||||
======================
|
||||
|
||||
|
|
248
gas/README-vms
248
gas/README-vms
|
@ -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.
|
83
gas/as.c
83
gas/as.c
|
@ -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)
|
||||
|
|
69
gas/as.h
69
gas/as.h
|
@ -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 *);
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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__
|
||||
|
||||
|
|
|
@ -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()");
|
||||
}
|
|
@ -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]))
|
|
@ -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[] =
|
||||
{
|
||||
|
|
|
@ -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) {;}
|
||||
|
||||
|
|
|
@ -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}
|
||||
};
|
||||
|
|
@ -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
|
@ -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);
|
||||
|
|
|
@ -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) {;}
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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"
|
|
@ -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
|
||||
|
|
1187
gas/config/tc-a29k.c
1187
gas/config/tc-a29k.c
File diff suppressed because it is too large
Load Diff
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
@ -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 "
|
||||
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
@ -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
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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},
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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")
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
1138
gas/config/tc-m88k.c
1138
gas/config/tc-m88k.c
File diff suppressed because it is too large
Load Diff
|
@ -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 */
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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_"
|
||||
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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 *));
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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) \
|
||||
|
|
|
@ -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
|
@ -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:
|
||||
*/
|
|
@ -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[] = "";
|
||||
|
|
|
@ -48,6 +48,4 @@
|
|||
|
||||
extern int tic30_unrecognized_line (int);
|
||||
|
||||
#define tc_aout_pre_write_hook {}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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. */
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 */
|
|
@ -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 */
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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:
|
||||
|
|
1080
gas/config/tc-w65.c
1080
gas/config/tc-w65.c
File diff suppressed because it is too large
Load Diff
|
@ -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
|
|
@ -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. */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
|
@ -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"
|
|
@ -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 */
|
|
@ -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 */
|
|
@ -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 */
|
|
@ -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
Loading…
Reference in New Issue