Remove m68k-aout and m68k-coff support
include/ * aout/host.h: Remove m68k-aout and m68k-coff support. * aout/hp300hpux.h: Delete. * coff/apollo.h: Delete. * coff/aux-coff.h: Delete. * coff/m68k.h: Delete. bfd/ * Makefile.am: Remove m68k-aout and m68k-coff support. * aoutf1.h: Likewise. * aoutx.h: Likewise. * archive.c: Likewise. * bfd-in.h: Likewise. * bfd.c: Likewise. * coffcode.h: Likewise. * coffswap.h: Likewise. * config.bfd: Likewise. * configure.ac: Likewise. * configure.host: Likewise. * doc/bfd.texinfo: Likewise. * doc/bfdint.texi: Likewise. * freebsd.h: Likewise. * gen-aout.c: Likewise. * hpux-core.c: Likewise. * libaout.h: Likewise. * libbfd-in.h: Likewise. * pdp11.c: Likewise. * peicode.h: Likewise. * riscix.c: Likewise. * targets.c: Likewise. * aout0.c: Delete. * coff-apollo.c: Delete. * coff-aux.c: Delete. * coff-m68k.c: Delete. * coff-svm68k.c: Delete. * coff-u68k.c: Delete. * hosts/delta68.h: Delete. * hosts/hp300bsd.h: Delete. * hosts/m68kaux.h: Delete. * hosts/news.h: Delete. * hp300bsd.c: Delete. * hp300hpux.c: Delete. * liboasys.h: Delete. * m68k4knetbsd.c: Delete. * m68klinux.c: Delete. * m68knetbsd.c: Delete. * oasys.c: Delete. * versados.c: Delete. * Makefile.in: Regenerate. * bfd-in2.h: Regenerate. * configure: Regenerate. * libbfd.h: Regenerate. * po/SRC-POTFILES.in: Regenerate. binutils/ * testsuite/binutils-all/copy-2.d: Remove m68k-aout and m68k-coff support. * testsuite/binutils-all/copy-3.d: Likewise. * testsuite/binutils-all/objcopy.exp: Likewise. * testsuite/lib/binutils-common.exp: Likewise. gas/ * Makefile.am: Remove m68k-aout and m68k-coff support. * config/tc-m68k.c: Likewise. * config/tc-m68k.h: Likewise. * configure.ac: Likewise. * configure.tgt: Likewise. * testsuite/gas/all/weakref1u.d: Likewise. * testsuite/gas/m68k/all.exp: Likewise. * testsuite/gas/m68k/br-isaa.d: Likewise. * testsuite/gas/m68k/br-isab.d: Likewise. * testsuite/gas/m68k/br-isac.d: Likewise. * config/te-psos.h: Delete. * config/te-sun3.h: Delete. * testsuite/gas/m68k-coff/gas.exp: Delete. * testsuite/gas/m68k-coff/p2389.s: Delete. * testsuite/gas/m68k-coff/p2389a.s: Delete. * testsuite/gas/m68k-coff/p2430.s: Delete. * testsuite/gas/m68k-coff/p2430a.s: Delete. * testsuite/gas/m68k-coff/t1.s: Delete. * testsuite/gas/m68k/p3041.d: Delete. * testsuite/gas/m68k/p3041.s: Delete. * testsuite/gas/m68k/p3041data.d: Delete. * testsuite/gas/m68k/p3041data.s: Delete. * testsuite/gas/m68k/p3041pcrel.d: Delete. * testsuite/gas/m68k/p3041pcrel.s: Delete. * testsuite/gas/m68k/t2.d: Delete. * Makefile.in: Regenerate. * config.in: Regenerate. * configure: Regenerate. * po/POTFILES.in: Regenerate. ld/ * Makefile.am: Remove m68k-aout and m68k-coff support. * configure.tgt: Likewise. * emultempl/m68kelf.em: Likewise. * ld.texinfo: Likewise. * mri.c: Likewise. * emulparams/delta68.sh: Delete. * emulparams/hp300bsd.sh: Delete. * emulparams/hp3hpux.sh: Delete. * emulparams/m68k4knbsd.sh: Delete. * emulparams/m68kaout.sh: Delete. * emulparams/m68kaux.sh: Delete. * emulparams/m68kcoff.sh: Delete. * emulparams/m68klinux.sh: Delete. * emulparams/m68knbsd.sh: Delete. * emulparams/m68kpsos.sh: Delete. * emulparams/sun3.sh: Delete. * emultempl/m68kcoff.em: Delete. * scripttempl/delta68.sc: Delete. * scripttempl/m68kaux.sc: Delete. * scripttempl/m68kcoff.sc: Delete. * scripttempl/psos.sc: Delete. * testsuite/ld-versados/t1-1.ro: Delete. * testsuite/ld-versados/t1-2.ro: Delete. * testsuite/ld-versados/t1.ld: Delete. * testsuite/ld-versados/t1.ook: Delete. * testsuite/ld-versados/t2-1.ro: Delete. * testsuite/ld-versados/t2-2.ro: Delete. * testsuite/ld-versados/t2-3.ro: Delete. * testsuite/ld-versados/t2.ld: Delete. * testsuite/ld-versados/t2.ook: Delete. * testsuite/ld-versados/versados.exp: Delete. * Makefile.in: Regenerate. * po/BLD-POTFILES.in: Regenerate.
This commit is contained in:
parent
211dc24b87
commit
dc12032bca
121 changed files with 178 additions and 8254 deletions
|
@ -1,3 +1,51 @@
|
|||
2018-04-16 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* Makefile.am: Remove m68k-aout and m68k-coff support.
|
||||
* aoutf1.h: Likewise.
|
||||
* aoutx.h: Likewise.
|
||||
* archive.c: Likewise.
|
||||
* bfd-in.h: Likewise.
|
||||
* bfd.c: Likewise.
|
||||
* coffcode.h: Likewise.
|
||||
* coffswap.h: Likewise.
|
||||
* config.bfd: Likewise.
|
||||
* configure.ac: Likewise.
|
||||
* configure.host: Likewise.
|
||||
* doc/bfd.texinfo: Likewise.
|
||||
* doc/bfdint.texi: Likewise.
|
||||
* freebsd.h: Likewise.
|
||||
* gen-aout.c: Likewise.
|
||||
* hpux-core.c: Likewise.
|
||||
* libaout.h: Likewise.
|
||||
* libbfd-in.h: Likewise.
|
||||
* pdp11.c: Likewise.
|
||||
* peicode.h: Likewise.
|
||||
* riscix.c: Likewise.
|
||||
* targets.c: Likewise.
|
||||
* aout0.c: Delete.
|
||||
* coff-apollo.c: Delete.
|
||||
* coff-aux.c: Delete.
|
||||
* coff-m68k.c: Delete.
|
||||
* coff-svm68k.c: Delete.
|
||||
* coff-u68k.c: Delete.
|
||||
* hosts/delta68.h: Delete.
|
||||
* hosts/hp300bsd.h: Delete.
|
||||
* hosts/m68kaux.h: Delete.
|
||||
* hosts/news.h: Delete.
|
||||
* hp300bsd.c: Delete.
|
||||
* hp300hpux.c: Delete.
|
||||
* liboasys.h: Delete.
|
||||
* m68k4knetbsd.c: Delete.
|
||||
* m68klinux.c: Delete.
|
||||
* m68knetbsd.c: Delete.
|
||||
* oasys.c: Delete.
|
||||
* versados.c: Delete.
|
||||
* Makefile.in: Regenerate.
|
||||
* bfd-in2.h: Regenerate.
|
||||
* configure: Regenerate.
|
||||
* libbfd.h: Regenerate.
|
||||
* po/SRC-POTFILES.in: Regenerate.
|
||||
|
||||
2018-04-16 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* Makefile.am: Remove sh5 and sh64 support.
|
||||
|
|
|
@ -262,28 +262,22 @@ BFD32_BACKENDS = \
|
|||
aout-ns32k.lo \
|
||||
aout-sparcle.lo \
|
||||
aout-tic30.lo \
|
||||
aout0.lo \
|
||||
aout32.lo \
|
||||
armnetbsd.lo \
|
||||
cf-i386lynx.lo \
|
||||
cf-sparclynx.lo \
|
||||
coff-apollo.lo \
|
||||
coff-arm.lo \
|
||||
coff-aux.lo \
|
||||
coff-go32.lo \
|
||||
coff-i386.lo \
|
||||
coff-m68k.lo \
|
||||
coff-mips.lo \
|
||||
coff-rs6000.lo \
|
||||
coff-sh.lo \
|
||||
coff-sparc.lo \
|
||||
coff-stgo32.lo \
|
||||
coff-svm68k.lo \
|
||||
coff-tic30.lo \
|
||||
coff-tic4x.lo \
|
||||
coff-tic54x.lo \
|
||||
coff-tic80.lo \
|
||||
coff-u68k.lo \
|
||||
coff-z80.lo \
|
||||
coff-z8k.lo \
|
||||
coffgen.lo \
|
||||
|
@ -368,8 +362,6 @@ BFD32_BACKENDS = \
|
|||
elfxx-tilegx.lo \
|
||||
epoc-pe-arm.lo \
|
||||
epoc-pei-arm.lo \
|
||||
hp300bsd.lo \
|
||||
hp300hpux.lo \
|
||||
i386aout.lo \
|
||||
i386bsd.lo \
|
||||
i386dynix.lo \
|
||||
|
@ -380,15 +372,11 @@ BFD32_BACKENDS = \
|
|||
i386msdos.lo \
|
||||
i386netbsd.lo \
|
||||
i386os9k.lo \
|
||||
m68k4knetbsd.lo \
|
||||
m68klinux.lo \
|
||||
m68knetbsd.lo \
|
||||
mach-o.lo \
|
||||
mach-o-i386.lo \
|
||||
mach-o-arm.lo \
|
||||
mipsbsd.lo \
|
||||
ns32knetbsd.lo \
|
||||
oasys.lo \
|
||||
pc532-mach.lo \
|
||||
pdp11.lo \
|
||||
pe-arm-wince.lo \
|
||||
|
@ -418,7 +406,6 @@ BFD32_BACKENDS = \
|
|||
sunos.lo \
|
||||
vax1knetbsd.lo \
|
||||
vaxnetbsd.lo \
|
||||
versados.lo \
|
||||
vms-lib.lo \
|
||||
vms-misc.lo \
|
||||
wasm-module.lo \
|
||||
|
@ -433,28 +420,22 @@ BFD32_BACKENDS_CFILES = \
|
|||
aout-ns32k.c \
|
||||
aout-sparcle.c \
|
||||
aout-tic30.c \
|
||||
aout0.c \
|
||||
aout32.c \
|
||||
armnetbsd.c \
|
||||
cf-i386lynx.c \
|
||||
cf-sparclynx.c \
|
||||
coff-apollo.c \
|
||||
coff-arm.c \
|
||||
coff-aux.c \
|
||||
coff-go32.c \
|
||||
coff-i386.c \
|
||||
coff-m68k.c \
|
||||
coff-mips.c \
|
||||
coff-rs6000.c \
|
||||
coff-sh.c \
|
||||
coff-sparc.c \
|
||||
coff-stgo32.c \
|
||||
coff-svm68k.c \
|
||||
coff-tic30.c \
|
||||
coff-tic4x.c \
|
||||
coff-tic54x.c \
|
||||
coff-tic80.c \
|
||||
coff-u68k.c \
|
||||
coff-z80.c \
|
||||
coff-z8k.c \
|
||||
coffgen.c \
|
||||
|
@ -539,8 +520,6 @@ BFD32_BACKENDS_CFILES = \
|
|||
elfxx-tilegx.c \
|
||||
epoc-pe-arm.c \
|
||||
epoc-pei-arm.c \
|
||||
hp300bsd.c \
|
||||
hp300hpux.c \
|
||||
i386aout.c \
|
||||
i386bsd.c \
|
||||
i386dynix.c \
|
||||
|
@ -551,15 +530,11 @@ BFD32_BACKENDS_CFILES = \
|
|||
i386msdos.c \
|
||||
i386netbsd.c \
|
||||
i386os9k.c \
|
||||
m68k4knetbsd.c \
|
||||
m68klinux.c \
|
||||
m68knetbsd.c \
|
||||
mach-o.c \
|
||||
mach-o-i386.c \
|
||||
mach-o-arm.c \
|
||||
mipsbsd.c \
|
||||
ns32knetbsd.c \
|
||||
oasys.c \
|
||||
pc532-mach.c \
|
||||
pdp11.c \
|
||||
pe-arm-wince.c \
|
||||
|
@ -588,7 +563,6 @@ BFD32_BACKENDS_CFILES = \
|
|||
sunos.c \
|
||||
vax1knetbsd.c \
|
||||
vaxnetbsd.c \
|
||||
versados.c \
|
||||
vms-lib.c \
|
||||
vms-misc.c \
|
||||
wasm-module.c \
|
||||
|
@ -748,7 +722,7 @@ SOURCE_HFILES = \
|
|||
elf64-hppa.h elfcode.h elfcore.h \
|
||||
freebsd.h genlink.h go32stub.h \
|
||||
libaout.h libbfd.h libcoff.h libecoff.h libhppa.h \
|
||||
liboasys.h libpei.h libxcoff.h mach-o.h \
|
||||
libpei.h libxcoff.h mach-o.h \
|
||||
netbsd.h ns32k.h \
|
||||
pef.h pef-traceback.h peicode.h som.h version.h \
|
||||
vms.h xsym.h
|
||||
|
|
|
@ -596,28 +596,22 @@ BFD32_BACKENDS = \
|
|||
aout-ns32k.lo \
|
||||
aout-sparcle.lo \
|
||||
aout-tic30.lo \
|
||||
aout0.lo \
|
||||
aout32.lo \
|
||||
armnetbsd.lo \
|
||||
cf-i386lynx.lo \
|
||||
cf-sparclynx.lo \
|
||||
coff-apollo.lo \
|
||||
coff-arm.lo \
|
||||
coff-aux.lo \
|
||||
coff-go32.lo \
|
||||
coff-i386.lo \
|
||||
coff-m68k.lo \
|
||||
coff-mips.lo \
|
||||
coff-rs6000.lo \
|
||||
coff-sh.lo \
|
||||
coff-sparc.lo \
|
||||
coff-stgo32.lo \
|
||||
coff-svm68k.lo \
|
||||
coff-tic30.lo \
|
||||
coff-tic4x.lo \
|
||||
coff-tic54x.lo \
|
||||
coff-tic80.lo \
|
||||
coff-u68k.lo \
|
||||
coff-z80.lo \
|
||||
coff-z8k.lo \
|
||||
coffgen.lo \
|
||||
|
@ -702,8 +696,6 @@ BFD32_BACKENDS = \
|
|||
elfxx-tilegx.lo \
|
||||
epoc-pe-arm.lo \
|
||||
epoc-pei-arm.lo \
|
||||
hp300bsd.lo \
|
||||
hp300hpux.lo \
|
||||
i386aout.lo \
|
||||
i386bsd.lo \
|
||||
i386dynix.lo \
|
||||
|
@ -714,15 +706,11 @@ BFD32_BACKENDS = \
|
|||
i386msdos.lo \
|
||||
i386netbsd.lo \
|
||||
i386os9k.lo \
|
||||
m68k4knetbsd.lo \
|
||||
m68klinux.lo \
|
||||
m68knetbsd.lo \
|
||||
mach-o.lo \
|
||||
mach-o-i386.lo \
|
||||
mach-o-arm.lo \
|
||||
mipsbsd.lo \
|
||||
ns32knetbsd.lo \
|
||||
oasys.lo \
|
||||
pc532-mach.lo \
|
||||
pdp11.lo \
|
||||
pe-arm-wince.lo \
|
||||
|
@ -752,7 +740,6 @@ BFD32_BACKENDS = \
|
|||
sunos.lo \
|
||||
vax1knetbsd.lo \
|
||||
vaxnetbsd.lo \
|
||||
versados.lo \
|
||||
vms-lib.lo \
|
||||
vms-misc.lo \
|
||||
wasm-module.lo \
|
||||
|
@ -767,28 +754,22 @@ BFD32_BACKENDS_CFILES = \
|
|||
aout-ns32k.c \
|
||||
aout-sparcle.c \
|
||||
aout-tic30.c \
|
||||
aout0.c \
|
||||
aout32.c \
|
||||
armnetbsd.c \
|
||||
cf-i386lynx.c \
|
||||
cf-sparclynx.c \
|
||||
coff-apollo.c \
|
||||
coff-arm.c \
|
||||
coff-aux.c \
|
||||
coff-go32.c \
|
||||
coff-i386.c \
|
||||
coff-m68k.c \
|
||||
coff-mips.c \
|
||||
coff-rs6000.c \
|
||||
coff-sh.c \
|
||||
coff-sparc.c \
|
||||
coff-stgo32.c \
|
||||
coff-svm68k.c \
|
||||
coff-tic30.c \
|
||||
coff-tic4x.c \
|
||||
coff-tic54x.c \
|
||||
coff-tic80.c \
|
||||
coff-u68k.c \
|
||||
coff-z80.c \
|
||||
coff-z8k.c \
|
||||
coffgen.c \
|
||||
|
@ -873,8 +854,6 @@ BFD32_BACKENDS_CFILES = \
|
|||
elfxx-tilegx.c \
|
||||
epoc-pe-arm.c \
|
||||
epoc-pei-arm.c \
|
||||
hp300bsd.c \
|
||||
hp300hpux.c \
|
||||
i386aout.c \
|
||||
i386bsd.c \
|
||||
i386dynix.c \
|
||||
|
@ -885,15 +864,11 @@ BFD32_BACKENDS_CFILES = \
|
|||
i386msdos.c \
|
||||
i386netbsd.c \
|
||||
i386os9k.c \
|
||||
m68k4knetbsd.c \
|
||||
m68klinux.c \
|
||||
m68knetbsd.c \
|
||||
mach-o.c \
|
||||
mach-o-i386.c \
|
||||
mach-o-arm.c \
|
||||
mipsbsd.c \
|
||||
ns32knetbsd.c \
|
||||
oasys.c \
|
||||
pc532-mach.c \
|
||||
pdp11.c \
|
||||
pe-arm-wince.c \
|
||||
|
@ -922,7 +897,6 @@ BFD32_BACKENDS_CFILES = \
|
|||
sunos.c \
|
||||
vax1knetbsd.c \
|
||||
vaxnetbsd.c \
|
||||
versados.c \
|
||||
vms-lib.c \
|
||||
vms-misc.c \
|
||||
wasm-module.c \
|
||||
|
@ -1083,7 +1057,7 @@ SOURCE_HFILES = \
|
|||
elf64-hppa.h elfcode.h elfcore.h \
|
||||
freebsd.h genlink.h go32stub.h \
|
||||
libaout.h libbfd.h libcoff.h libecoff.h libhppa.h \
|
||||
liboasys.h libpei.h libxcoff.h mach-o.h \
|
||||
libpei.h libxcoff.h mach-o.h \
|
||||
netbsd.h ns32k.h \
|
||||
pef.h pef-traceback.h peicode.h som.h version.h \
|
||||
vms.h xsym.h
|
||||
|
@ -1255,7 +1229,6 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout-ns32k.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout-sparcle.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout-tic30.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout0.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout32.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aout64.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/archive.Plo@am__quote@
|
||||
|
@ -1271,24 +1244,19 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cf-sparclynx.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cisco-core.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-alpha.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-apollo.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-arm.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-aux.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-bfd.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-go32.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-i386.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-m68k.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-mips.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-rs6000.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-sh.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-sparc.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-stgo32.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-svm68k.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-tic30.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-tic4x.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-tic54x.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-tic80.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-u68k.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-x86_64.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-z80.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-z8k.Plo@am__quote@
|
||||
|
@ -1487,8 +1455,6 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoc-pei-arm.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/format.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hp300bsd.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hp300hpux.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hpux-core.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386aout.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386bsd.Plo@am__quote@
|
||||
|
@ -1506,9 +1472,6 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libbfd.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linker.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lynx-core.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m68k4knetbsd.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m68klinux.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m68knetbsd.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mach-o-aarch64.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mach-o-arm.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mach-o-i386.Plo@am__quote@
|
||||
|
@ -1519,7 +1482,6 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmo.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netbsd-core.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ns32knetbsd.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oasys.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opncls.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osf-core.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pc532-mach.Plo@am__quote@
|
||||
|
@ -1569,7 +1531,6 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vax1knetbsd.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vaxnetbsd.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/verilog.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/versados.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-alpha.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-lib.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-misc.Plo@am__quote@
|
||||
|
|
38
bfd/aout0.c
38
bfd/aout0.c
|
@ -1,38 +0,0 @@
|
|||
/* BFD backend for SunOS style a.out with flags set to 0
|
||||
Copyright (C) 1990-2018 Free Software Foundation, Inc.
|
||||
Written by Cygnus Support.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#define TARGETNAME "a.out-zero-big"
|
||||
|
||||
/* Do not "beautify" the CONCAT* macro args. Traditional C will not
|
||||
remove whitespace added here, and thus will fail to concatenate
|
||||
the tokens. */
|
||||
#define MY(OP) CONCAT2 (aout0_be_,OP)
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "bfd.h"
|
||||
|
||||
#define MY_exec_hdr_flags 0
|
||||
|
||||
#define MACHTYPE_OK(mtype) \
|
||||
((mtype) == M_UNKNOWN || (mtype) == M_68010 || (mtype) == M_68020)
|
||||
|
||||
/* Include the usual a.out support. */
|
||||
#include "aoutf1.h"
|
48
bfd/aoutf1.h
48
bfd/aoutf1.h
|
@ -36,9 +36,7 @@
|
|||
probably no longer reject a NewsOS object. <ian@cygnus.com>. */
|
||||
#ifndef MACHTYPE_OK
|
||||
#define MACHTYPE_OK(mtype) \
|
||||
(((mtype) == M_SPARC && bfd_lookup_arch (bfd_arch_sparc, 0) != NULL) \
|
||||
|| (((mtype) == M_UNKNOWN || (mtype) == M_68010 || (mtype) == M_68020) \
|
||||
&& bfd_lookup_arch (bfd_arch_m68k, 0) != NULL))
|
||||
((mtype) == M_SPARC && bfd_lookup_arch (bfd_arch_sparc, 0) != NULL)
|
||||
#endif
|
||||
|
||||
/* The file @code{aoutf1.h} contains the code for BFD's
|
||||
|
@ -103,25 +101,6 @@ sunos_set_arch_mach (bfd *abfd, enum machine_type machtype)
|
|||
|
||||
switch (machtype)
|
||||
{
|
||||
case M_UNKNOWN:
|
||||
/* Some Sun3s make magic numbers without cpu types in them, so
|
||||
we'll default to the 68000. */
|
||||
arch = bfd_arch_m68k;
|
||||
machine = bfd_mach_m68000;
|
||||
break;
|
||||
|
||||
case M_68010:
|
||||
case M_HP200:
|
||||
arch = bfd_arch_m68k;
|
||||
machine = bfd_mach_m68010;
|
||||
break;
|
||||
|
||||
case M_68020:
|
||||
case M_HP300:
|
||||
arch = bfd_arch_m68k;
|
||||
machine = bfd_mach_m68020;
|
||||
break;
|
||||
|
||||
case M_SPARC:
|
||||
arch = bfd_arch_sparc;
|
||||
machine = 0;
|
||||
|
@ -143,11 +122,6 @@ sunos_set_arch_mach (bfd *abfd, enum machine_type machtype)
|
|||
machine = 0;
|
||||
break;
|
||||
|
||||
case M_HPUX:
|
||||
arch = bfd_arch_m68k;
|
||||
machine = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
arch = bfd_arch_obscure;
|
||||
machine = 0;
|
||||
|
@ -191,21 +165,6 @@ sunos_write_object_contents (bfd *abfd)
|
|||
/* Magic number, maestro, please! */
|
||||
switch (bfd_get_arch (abfd))
|
||||
{
|
||||
case bfd_arch_m68k:
|
||||
switch (bfd_get_mach (abfd))
|
||||
{
|
||||
case bfd_mach_m68000:
|
||||
N_SET_MACHTYPE (execp, M_UNKNOWN);
|
||||
break;
|
||||
case bfd_mach_m68010:
|
||||
N_SET_MACHTYPE (execp, M_68010);
|
||||
break;
|
||||
default:
|
||||
case bfd_mach_m68020:
|
||||
N_SET_MACHTYPE (execp, M_68020);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case bfd_arch_sparc:
|
||||
switch (bfd_get_mach (abfd))
|
||||
{
|
||||
|
@ -722,11 +681,6 @@ sunos4_set_sizes (bfd *abfd)
|
|||
adata (abfd).segment_size = 0x2000;
|
||||
adata (abfd).exec_bytes_size = EXEC_BYTES_SIZE;
|
||||
return TRUE;
|
||||
case bfd_arch_m68k:
|
||||
adata (abfd).page_size = 0x2000;
|
||||
adata (abfd).segment_size = 0x20000;
|
||||
adata (abfd).exec_bytes_size = EXEC_BYTES_SIZE;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
19
bfd/aoutx.h
19
bfd/aoutx.h
|
@ -467,10 +467,7 @@ NAME (aout, some_aout_object_p) (bfd *abfd,
|
|||
oldrawptr = abfd->tdata.aout_data;
|
||||
abfd->tdata.aout_data = rawptr;
|
||||
|
||||
/* Copy the contents of the old tdata struct.
|
||||
In particular, we want the subformat, since for hpux it was set in
|
||||
hp300hpux.c:swap_exec_header_in and will be used in
|
||||
hp300hpux.c:callback. */
|
||||
/* Copy the contents of the old tdata struct. */
|
||||
if (oldrawptr != NULL)
|
||||
*abfd->tdata.aout_data = *oldrawptr;
|
||||
|
||||
|
@ -751,17 +748,6 @@ NAME (aout, machine_type) (enum bfd_architecture arch,
|
|||
arch_flags = M_SPARCLET;
|
||||
break;
|
||||
|
||||
case bfd_arch_m68k:
|
||||
switch (machine)
|
||||
{
|
||||
case 0: arch_flags = M_68010; break;
|
||||
case bfd_mach_m68000: arch_flags = M_UNKNOWN; *unknown = FALSE; break;
|
||||
case bfd_mach_m68010: arch_flags = M_68010; break;
|
||||
case bfd_mach_m68020: arch_flags = M_68020; break;
|
||||
default: arch_flags = M_UNKNOWN; break;
|
||||
}
|
||||
break;
|
||||
|
||||
case bfd_arch_i386:
|
||||
if (machine == 0
|
||||
|| machine == bfd_mach_i386_i386
|
||||
|
@ -5497,8 +5483,7 @@ NAME (aout, final_link) (bfd *abfd,
|
|||
FIXME: At this point we do not know how much space the symbol
|
||||
table will require. This will not work for any (nonstandard)
|
||||
a.out target that needs to know the symbol table size before it
|
||||
can compute the relocation file positions. This may or may not
|
||||
be the case for the hp300hpux target, for example. */
|
||||
can compute the relocation file positions. */
|
||||
(*callback) (abfd, &aout_info.treloff, &aout_info.dreloff,
|
||||
&aout_info.symoff);
|
||||
obj_textsec (abfd)->rel_filepos = aout_info.treloff;
|
||||
|
|
109
bfd/archive.c
109
bfd/archive.c
|
@ -1182,115 +1182,6 @@ bfd_slurp_armap (bfd *abfd)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/* Returns FALSE on error, TRUE otherwise. */
|
||||
/* Flavor 2 of a bsd armap, similar to bfd_slurp_bsd_armap except the
|
||||
header is in a slightly different order and the map name is '/'.
|
||||
This flavour is used by hp300hpux. */
|
||||
|
||||
#define HPUX_SYMDEF_COUNT_SIZE 2
|
||||
|
||||
bfd_boolean
|
||||
bfd_slurp_bsd_armap_f2 (bfd *abfd)
|
||||
{
|
||||
struct areltdata *mapdata;
|
||||
char nextname[17];
|
||||
unsigned int counter;
|
||||
bfd_byte *raw_armap, *rbase;
|
||||
struct artdata *ardata = bfd_ardata (abfd);
|
||||
char *stringbase;
|
||||
unsigned int stringsize;
|
||||
unsigned int left;
|
||||
bfd_size_type amt;
|
||||
carsym *set;
|
||||
int i = bfd_bread (nextname, 16, abfd);
|
||||
|
||||
if (i == 0)
|
||||
return TRUE;
|
||||
if (i != 16)
|
||||
return FALSE;
|
||||
|
||||
/* The archive has at least 16 bytes in it. */
|
||||
if (bfd_seek (abfd, (file_ptr) -16, SEEK_CUR) != 0)
|
||||
return FALSE;
|
||||
|
||||
if (CONST_STRNEQ (nextname, "__.SYMDEF ")
|
||||
|| CONST_STRNEQ (nextname, "__.SYMDEF/ ")) /* Old Linux archives. */
|
||||
return do_slurp_bsd_armap (abfd);
|
||||
|
||||
if (! CONST_STRNEQ (nextname, "/ "))
|
||||
{
|
||||
bfd_has_map (abfd) = FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
mapdata = (struct areltdata *) _bfd_read_ar_hdr (abfd);
|
||||
if (mapdata == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (mapdata->parsed_size < HPUX_SYMDEF_COUNT_SIZE + BSD_STRING_COUNT_SIZE)
|
||||
{
|
||||
free (mapdata);
|
||||
wrong_format:
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
byebye:
|
||||
return FALSE;
|
||||
}
|
||||
left = mapdata->parsed_size - HPUX_SYMDEF_COUNT_SIZE - BSD_STRING_COUNT_SIZE;
|
||||
|
||||
amt = mapdata->parsed_size;
|
||||
free (mapdata);
|
||||
|
||||
raw_armap = (bfd_byte *) bfd_zalloc (abfd, amt);
|
||||
if (raw_armap == NULL)
|
||||
goto byebye;
|
||||
|
||||
if (bfd_bread (raw_armap, amt, abfd) != amt)
|
||||
{
|
||||
if (bfd_get_error () != bfd_error_system_call)
|
||||
bfd_set_error (bfd_error_malformed_archive);
|
||||
goto byebye;
|
||||
}
|
||||
|
||||
ardata->symdef_count = H_GET_16 (abfd, raw_armap);
|
||||
|
||||
ardata->cache = 0;
|
||||
|
||||
stringsize = H_GET_32 (abfd, raw_armap + HPUX_SYMDEF_COUNT_SIZE);
|
||||
if (stringsize > left)
|
||||
goto wrong_format;
|
||||
left -= stringsize;
|
||||
|
||||
/* Skip sym count and string sz. */
|
||||
stringbase = ((char *) raw_armap
|
||||
+ HPUX_SYMDEF_COUNT_SIZE
|
||||
+ BSD_STRING_COUNT_SIZE);
|
||||
rbase = (bfd_byte *) stringbase + stringsize;
|
||||
amt = ardata->symdef_count * BSD_SYMDEF_SIZE;
|
||||
if (amt > left)
|
||||
goto wrong_format;
|
||||
|
||||
ardata->symdefs = (struct carsym *) bfd_alloc (abfd, amt);
|
||||
if (!ardata->symdefs)
|
||||
return FALSE;
|
||||
|
||||
for (counter = 0, set = ardata->symdefs;
|
||||
counter < ardata->symdef_count;
|
||||
counter++, set++, rbase += BSD_SYMDEF_SIZE)
|
||||
{
|
||||
set->name = H_GET_32 (abfd, rbase) + stringbase;
|
||||
set->file_offset = H_GET_32 (abfd, rbase + BSD_SYMDEF_OFFSET_SIZE);
|
||||
}
|
||||
|
||||
ardata->first_file_filepos = bfd_tell (abfd);
|
||||
/* Pad to an even boundary if you have to. */
|
||||
ardata->first_file_filepos += (ardata->first_file_filepos) % 2;
|
||||
/* FIXME, we should provide some way to free raw_ardata when
|
||||
we are done using the strings from it. For now, it seems
|
||||
to be allocated on an objalloc anyway... */
|
||||
bfd_has_map (abfd) = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/** Extended name table.
|
||||
|
||||
Normally archives support only 14-character filenames.
|
||||
|
|
|
@ -776,8 +776,6 @@ extern bfd_boolean bfd_sunos_size_dynamic_sections
|
|||
|
||||
extern bfd_boolean bfd_i386linux_size_dynamic_sections
|
||||
(bfd *, struct bfd_link_info *);
|
||||
extern bfd_boolean bfd_m68klinux_size_dynamic_sections
|
||||
(bfd *, struct bfd_link_info *);
|
||||
extern bfd_boolean bfd_sparclinux_size_dynamic_sections
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
|
@ -846,9 +844,6 @@ union internal_auxent;
|
|||
extern bfd_boolean bfd_coff_set_symbol_class
|
||||
(bfd *, struct bfd_symbol *, unsigned int);
|
||||
|
||||
extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
|
||||
(bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
|
||||
|
||||
/* ARM VFP11 erratum workaround support. */
|
||||
typedef enum
|
||||
{
|
||||
|
|
|
@ -783,8 +783,6 @@ extern bfd_boolean bfd_sunos_size_dynamic_sections
|
|||
|
||||
extern bfd_boolean bfd_i386linux_size_dynamic_sections
|
||||
(bfd *, struct bfd_link_info *);
|
||||
extern bfd_boolean bfd_m68klinux_size_dynamic_sections
|
||||
(bfd *, struct bfd_link_info *);
|
||||
extern bfd_boolean bfd_sparclinux_size_dynamic_sections
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
|
@ -853,9 +851,6 @@ union internal_auxent;
|
|||
extern bfd_boolean bfd_coff_set_symbol_class
|
||||
(bfd *, struct bfd_symbol *, unsigned int);
|
||||
|
||||
extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
|
||||
(bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
|
||||
|
||||
/* ARM VFP11 erratum workaround support. */
|
||||
typedef enum
|
||||
{
|
||||
|
@ -6994,8 +6989,6 @@ struct bfd
|
|||
{
|
||||
struct aout_data_struct *aout_data;
|
||||
struct artdata *aout_ar_data;
|
||||
struct _oasys_data *oasys_obj_data;
|
||||
struct _oasys_ar_data *oasys_ar_data;
|
||||
struct coff_tdata *coff_obj_data;
|
||||
struct pe_tdata *pe_obj_data;
|
||||
struct xcoff_tdata *xcoff_obj_data;
|
||||
|
@ -7313,7 +7306,6 @@ enum bfd_flavour
|
|||
bfd_target_ecoff_flavour,
|
||||
bfd_target_xcoff_flavour,
|
||||
bfd_target_elf_flavour,
|
||||
bfd_target_oasys_flavour,
|
||||
bfd_target_tekhex_flavour,
|
||||
bfd_target_srec_flavour,
|
||||
bfd_target_verilog_flavour,
|
||||
|
|
|
@ -304,8 +304,6 @@ CODE_FRAGMENT
|
|||
. {
|
||||
. struct aout_data_struct *aout_data;
|
||||
. struct artdata *aout_ar_data;
|
||||
. struct _oasys_data *oasys_obj_data;
|
||||
. struct _oasys_ar_data *oasys_ar_data;
|
||||
. struct coff_tdata *coff_obj_data;
|
||||
. struct pe_tdata *pe_obj_data;
|
||||
. struct xcoff_tdata *xcoff_obj_data;
|
||||
|
|
|
@ -1,120 +0,0 @@
|
|||
/* BFD back-end for Apollo 68000 COFF binaries.
|
||||
Copyright (C) 1990-2018 Free Software Foundation, Inc.
|
||||
By Troy Rollo (troy@cbme.unsw.edu.au)
|
||||
Based on m68k standard COFF version Written by Cygnus Support.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "bfd.h"
|
||||
#include "libbfd.h"
|
||||
#include "coff/apollo.h"
|
||||
#include "coff/internal.h"
|
||||
#include "libcoff.h"
|
||||
|
||||
#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (3)
|
||||
|
||||
#ifdef ONLY_DECLARE_RELOCS
|
||||
extern reloc_howto_type apollocoff_howto_table[];
|
||||
#else
|
||||
reloc_howto_type apollocoff_howto_table[] =
|
||||
{
|
||||
HOWTO (R_RELBYTE, 0, 0, 8, FALSE, 0, complain_overflow_bitfield, 0, "8", TRUE, 0x000000ff,0x000000ff, FALSE),
|
||||
HOWTO (R_RELWORD, 0, 1, 16, FALSE, 0, complain_overflow_bitfield, 0, "16", TRUE, 0x0000ffff,0x0000ffff, FALSE),
|
||||
HOWTO (R_RELLONG, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, 0, "32", TRUE, 0xffffffff,0xffffffff, FALSE),
|
||||
HOWTO (R_PCRBYTE, 0, 0, 8, TRUE, 0, complain_overflow_signed, 0, "DISP8", TRUE, 0x000000ff,0x000000ff, FALSE),
|
||||
HOWTO (R_PCRWORD, 0, 1, 16, TRUE, 0, complain_overflow_signed, 0, "DISP16", TRUE, 0x0000ffff,0x0000ffff, FALSE),
|
||||
HOWTO (R_PCRLONG, 0, 2, 32, TRUE, 0, complain_overflow_signed, 0, "DISP32", TRUE, 0xffffffff,0xffffffff, FALSE),
|
||||
HOWTO (R_RELLONG_NEG, 0, -2, 32, FALSE, 0, complain_overflow_bitfield, 0, "-32", TRUE, 0xffffffff,0xffffffff, FALSE),
|
||||
};
|
||||
#endif /* not ONLY_DECLARE_RELOCS */
|
||||
|
||||
#ifndef BADMAG
|
||||
#define BADMAG(x) M68KBADMAG(x)
|
||||
#endif
|
||||
#define APOLLO_M68 1 /* Customize coffcode.h */
|
||||
|
||||
/* Turn a howto into a reloc number. */
|
||||
|
||||
extern void apollo_rtype2howto (arelent *, int);
|
||||
extern int apollo_howto2rtype (reloc_howto_type *);
|
||||
#ifndef ONLY_DECLARE_RELOCS
|
||||
|
||||
void
|
||||
apollo_rtype2howto (arelent *internal, int relocentry)
|
||||
{
|
||||
switch (relocentry)
|
||||
{
|
||||
case R_RELBYTE: internal->howto = apollocoff_howto_table + 0; break;
|
||||
case R_RELWORD: internal->howto = apollocoff_howto_table + 1; break;
|
||||
case R_RELLONG: internal->howto = apollocoff_howto_table + 2; break;
|
||||
case R_PCRBYTE: internal->howto = apollocoff_howto_table + 3; break;
|
||||
case R_PCRWORD: internal->howto = apollocoff_howto_table + 4; break;
|
||||
case R_PCRLONG: internal->howto = apollocoff_howto_table + 5; break;
|
||||
case R_RELLONG_NEG: internal->howto = apollocoff_howto_table + 6; break;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
apollo_howto2rtype (reloc_howto_type *internal)
|
||||
{
|
||||
if (internal->pc_relative)
|
||||
{
|
||||
switch (internal->bitsize)
|
||||
{
|
||||
case 32: return R_PCRLONG;
|
||||
case 16: return R_PCRWORD;
|
||||
case 8: return R_PCRBYTE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (internal->bitsize)
|
||||
{
|
||||
case 32: return R_RELLONG;
|
||||
case 16: return R_RELWORD;
|
||||
case 8: return R_RELBYTE;
|
||||
}
|
||||
}
|
||||
return R_RELLONG;
|
||||
}
|
||||
#endif /* not ONLY_DECLARE_RELOCS */
|
||||
|
||||
#define RTYPE2HOWTO(internal, relocentry) \
|
||||
apollo_rtype2howto (internal, (relocentry)->r_type)
|
||||
|
||||
#define SELECT_RELOC(external, internal) \
|
||||
external.r_type = apollo_howto2rtype (internal);
|
||||
|
||||
#define bfd_pe_print_pdata NULL
|
||||
|
||||
#include "coffcode.h"
|
||||
|
||||
#ifndef TARGET_SYM
|
||||
#define TARGET_SYM m68k_coff_apollo_vec
|
||||
#endif
|
||||
|
||||
#ifndef TARGET_NAME
|
||||
#define TARGET_NAME "apollo-m68k"
|
||||
#endif
|
||||
|
||||
#ifdef NAMES_HAVE_UNDERSCORE
|
||||
CREATE_BIG_COFF_TARGET_VEC (TARGET_SYM, TARGET_NAME, 0, 0, '_', NULL, COFF_SWAP_TABLE)
|
||||
#else
|
||||
CREATE_BIG_COFF_TARGET_VEC (TARGET_SYM, TARGET_NAME, 0, 0, 0, NULL, COFF_SWAP_TABLE)
|
||||
#endif
|
145
bfd/coff-aux.c
145
bfd/coff-aux.c
|
@ -1,145 +0,0 @@
|
|||
/* BFD back-end for Apple M68K COFF A/UX 3.x files.
|
||||
Copyright (C) 1996-2018 Free Software Foundation, Inc.
|
||||
Written by Richard Henderson <rth@tamu.edu>.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#define TARGET_SYM m68k_coff_aux_vec
|
||||
#define TARGET_NAME "coff-m68k-aux"
|
||||
|
||||
#ifndef TARG_AUX
|
||||
#define TARG_AUX
|
||||
#endif
|
||||
|
||||
#define COFF_LONG_FILENAMES
|
||||
|
||||
/* 4k pages */
|
||||
#define COFF_PAGE_SIZE 0x1000
|
||||
|
||||
/* On AUX, a STYP_NOLOAD|STYP_BSS section is part of a shared library. */
|
||||
#define BSS_NOLOAD_IS_SHARED_LIBRARY
|
||||
|
||||
#define STATIC_RELOCS
|
||||
|
||||
#define COFF_COMMON_ADDEND
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "bfd.h"
|
||||
|
||||
#define coff_link_add_one_symbol coff_m68k_aux_link_add_one_symbol
|
||||
static bfd_boolean
|
||||
coff_m68k_aux_link_add_one_symbol
|
||||
(struct bfd_link_info *, bfd *, const char *, flagword, asection *,
|
||||
bfd_vma, const char *, bfd_boolean, bfd_boolean,
|
||||
struct bfd_link_hash_entry **);
|
||||
|
||||
#ifndef bfd_pe_print_pdata
|
||||
#define bfd_pe_print_pdata NULL
|
||||
#endif
|
||||
|
||||
#include "coff/aux-coff.h" /* override coff/internal.h and coff/m68k.h */
|
||||
#include "coff-m68k.c"
|
||||
|
||||
/* We need non-absolute symbols to override absolute symbols. This
|
||||
mirrors Apple's "solution" to let a static library symbol override
|
||||
a shared library symbol. On the whole not a good thing, given how
|
||||
shared libraries work here, but can work if you are careful with
|
||||
what you include in the shared object. */
|
||||
|
||||
static bfd_boolean
|
||||
coff_m68k_aux_link_add_one_symbol (struct bfd_link_info *info,
|
||||
bfd *abfd,
|
||||
const char *name,
|
||||
flagword flags,
|
||||
asection *section,
|
||||
bfd_vma value,
|
||||
const char *string,
|
||||
bfd_boolean copy,
|
||||
bfd_boolean collect,
|
||||
struct bfd_link_hash_entry **hashp)
|
||||
{
|
||||
struct bfd_link_hash_entry *h, *inh, *t;
|
||||
|
||||
if ((flags & (BSF_WARNING | BSF_CONSTRUCTOR | BSF_WEAK)) == 0
|
||||
&& !bfd_is_und_section (section)
|
||||
&& !bfd_is_com_section (section))
|
||||
{
|
||||
/* The new symbol is a definition or an indirect definition */
|
||||
|
||||
/* This bit copied from linker.c */
|
||||
if (hashp != NULL && *hashp != NULL)
|
||||
h = *hashp;
|
||||
else
|
||||
{
|
||||
h = bfd_link_hash_lookup (info->hash, name, TRUE, copy, FALSE);
|
||||
if (h == NULL)
|
||||
{
|
||||
if (hashp != NULL)
|
||||
*hashp = NULL;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (hashp != (struct bfd_link_hash_entry **) NULL)
|
||||
*hashp = h;
|
||||
/* end duplication from linker.c */
|
||||
|
||||
t = h;
|
||||
inh = NULL;
|
||||
if (h->type == bfd_link_hash_indirect)
|
||||
{
|
||||
inh = h->u.i.link;
|
||||
t = inh;
|
||||
}
|
||||
|
||||
if (t->type == bfd_link_hash_defined)
|
||||
{
|
||||
asection *msec = t->u.def.section;
|
||||
bfd_boolean special = FALSE;
|
||||
|
||||
if (bfd_is_abs_section (msec) && !bfd_is_abs_section (section))
|
||||
{
|
||||
t->u.def.section = section;
|
||||
t->u.def.value = value;
|
||||
special = TRUE;
|
||||
}
|
||||
else if (bfd_is_abs_section (section) && !bfd_is_abs_section (msec))
|
||||
special = TRUE;
|
||||
|
||||
if (special)
|
||||
{
|
||||
if (info->notice_all
|
||||
|| (info->notice_hash != NULL
|
||||
&& bfd_hash_lookup (info->notice_hash, name,
|
||||
FALSE, FALSE) != NULL))
|
||||
{
|
||||
if (!(*info->callbacks->notice) (info, h, inh,
|
||||
abfd, section, value, flags))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* If we didn't exit early, finish processing in the generic routine */
|
||||
return _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section,
|
||||
value, string, copy, collect,
|
||||
hashp);
|
||||
}
|
548
bfd/coff-m68k.c
548
bfd/coff-m68k.c
|
@ -1,548 +0,0 @@
|
|||
/* BFD back-end for Motorola 68000 COFF binaries.
|
||||
Copyright (C) 1990-2018 Free Software Foundation, Inc.
|
||||
Written by Cygnus Support.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "bfd.h"
|
||||
#include "libbfd.h"
|
||||
#include "coff/m68k.h"
|
||||
#include "coff/internal.h"
|
||||
#include "libcoff.h"
|
||||
|
||||
/* This source file is compiled multiple times for various m68k COFF
|
||||
variants. The following macros control its behaviour:
|
||||
|
||||
TARGET_SYM
|
||||
The C name of the BFD target vector. The default is m68k_coff_vec.
|
||||
TARGET_NAME
|
||||
The user visible target name. The default is "coff-m68k".
|
||||
NAMES_HAVE_UNDERSCORE
|
||||
Whether symbol names have an underscore.
|
||||
ONLY_DECLARE_RELOCS
|
||||
Only declare the relocation howto array. Don't actually compile
|
||||
it. The actual array will be picked up in another version of the
|
||||
file.
|
||||
STATIC_RELOCS
|
||||
Make the relocation howto array, and associated functions, static.
|
||||
COFF_COMMON_ADDEND
|
||||
If this is defined, then, for a relocation against a common
|
||||
symbol, the object file holds the value (the size) of the common
|
||||
symbol. If this is not defined, then, for a relocation against a
|
||||
common symbol, the object file holds zero. */
|
||||
|
||||
#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (2)
|
||||
|
||||
#ifndef COFF_PAGE_SIZE
|
||||
/* The page size is a guess based on ELF. */
|
||||
#define COFF_PAGE_SIZE 0x2000
|
||||
#endif
|
||||
|
||||
#ifndef COFF_COMMON_ADDEND
|
||||
#define RELOC_SPECIAL_FN 0
|
||||
#else
|
||||
static bfd_reloc_status_type m68kcoff_common_addend_special_fn
|
||||
(bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
|
||||
|
||||
#define RELOC_SPECIAL_FN m68kcoff_common_addend_special_fn
|
||||
#endif
|
||||
|
||||
static bfd_boolean m68k_coff_is_local_label_name (bfd *, const char *);
|
||||
|
||||
/* On the delta, a symbol starting with L% is local. We won't see
|
||||
such a symbol on other platforms, so it should be safe to always
|
||||
consider it local here. */
|
||||
|
||||
static bfd_boolean
|
||||
m68k_coff_is_local_label_name (bfd *abfd, const char *name)
|
||||
{
|
||||
if (name[0] == 'L' && name[1] == '%')
|
||||
return TRUE;
|
||||
|
||||
return _bfd_coff_is_local_label_name (abfd, name);
|
||||
}
|
||||
|
||||
#ifndef STATIC_RELOCS
|
||||
/* Clean up namespace. */
|
||||
#define m68kcoff_howto_table _bfd_m68kcoff_howto_table
|
||||
#define m68k_rtype2howto _bfd_m68kcoff_rtype2howto
|
||||
#define m68k_howto2rtype _bfd_m68kcoff_howto2rtype
|
||||
#define m68k_reloc_type_lookup _bfd_m68kcoff_reloc_type_lookup
|
||||
#define m68k_reloc_name_lookup _bfd_m68kcoff_reloc_name_lookup
|
||||
#endif
|
||||
|
||||
#ifdef ONLY_DECLARE_RELOCS
|
||||
extern reloc_howto_type m68kcoff_howto_table[];
|
||||
#else
|
||||
#ifdef STATIC_RELOCS
|
||||
static
|
||||
#endif
|
||||
reloc_howto_type m68kcoff_howto_table[] =
|
||||
{
|
||||
HOWTO (R_RELBYTE, 0, 0, 8, FALSE, 0, complain_overflow_bitfield, RELOC_SPECIAL_FN, "8", TRUE, 0x000000ff,0x000000ff, FALSE),
|
||||
HOWTO (R_RELWORD, 0, 1, 16, FALSE, 0, complain_overflow_bitfield, RELOC_SPECIAL_FN, "16", TRUE, 0x0000ffff,0x0000ffff, FALSE),
|
||||
HOWTO (R_RELLONG, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, RELOC_SPECIAL_FN, "32", TRUE, 0xffffffff,0xffffffff, FALSE),
|
||||
HOWTO (R_PCRBYTE, 0, 0, 8, TRUE, 0, complain_overflow_signed, RELOC_SPECIAL_FN, "DISP8", TRUE, 0x000000ff,0x000000ff, FALSE),
|
||||
HOWTO (R_PCRWORD, 0, 1, 16, TRUE, 0, complain_overflow_signed, RELOC_SPECIAL_FN, "DISP16", TRUE, 0x0000ffff,0x0000ffff, FALSE),
|
||||
HOWTO (R_PCRLONG, 0, 2, 32, TRUE, 0, complain_overflow_signed, RELOC_SPECIAL_FN, "DISP32", TRUE, 0xffffffff,0xffffffff, FALSE),
|
||||
HOWTO (R_RELLONG_NEG, 0, -2, 32, FALSE, 0, complain_overflow_bitfield, RELOC_SPECIAL_FN, "-32", TRUE, 0xffffffff,0xffffffff, FALSE),
|
||||
};
|
||||
#endif /* not ONLY_DECLARE_RELOCS */
|
||||
|
||||
#ifndef BADMAG
|
||||
#define BADMAG(x) M68KBADMAG(x)
|
||||
#endif
|
||||
#define M68 1 /* Customize coffcode.h */
|
||||
|
||||
/* Turn a howto into a reloc number */
|
||||
|
||||
#ifdef ONLY_DECLARE_RELOCS
|
||||
extern void m68k_rtype2howto (arelent *internal, int relocentry);
|
||||
extern int m68k_howto2rtype (reloc_howto_type *);
|
||||
extern reloc_howto_type * m68k_reloc_type_lookup
|
||||
(bfd *, bfd_reloc_code_real_type);
|
||||
extern reloc_howto_type * m68k_reloc_name_lookup (bfd *, const char *);
|
||||
#else
|
||||
|
||||
#ifdef STATIC_RELOCS
|
||||
#define STAT_REL static
|
||||
#else
|
||||
#define STAT_REL
|
||||
#endif
|
||||
|
||||
STAT_REL void m68k_rtype2howto (arelent *, int);
|
||||
STAT_REL int m68k_howto2rtype (reloc_howto_type *);
|
||||
STAT_REL reloc_howto_type * m68k_reloc_type_lookup (bfd *, bfd_reloc_code_real_type);
|
||||
STAT_REL reloc_howto_type * m68k_reloc_name_lookup (bfd *, const char *);
|
||||
|
||||
STAT_REL void
|
||||
m68k_rtype2howto (arelent *internal, int relocentry)
|
||||
{
|
||||
switch (relocentry)
|
||||
{
|
||||
case R_RELBYTE: internal->howto = m68kcoff_howto_table + 0; break;
|
||||
case R_RELWORD: internal->howto = m68kcoff_howto_table + 1; break;
|
||||
case R_RELLONG: internal->howto = m68kcoff_howto_table + 2; break;
|
||||
case R_PCRBYTE: internal->howto = m68kcoff_howto_table + 3; break;
|
||||
case R_PCRWORD: internal->howto = m68kcoff_howto_table + 4; break;
|
||||
case R_PCRLONG: internal->howto = m68kcoff_howto_table + 5; break;
|
||||
case R_RELLONG_NEG: internal->howto = m68kcoff_howto_table + 6; break;
|
||||
default: internal->howto = NULL; break;
|
||||
}
|
||||
}
|
||||
|
||||
STAT_REL int
|
||||
m68k_howto2rtype (reloc_howto_type * internal)
|
||||
{
|
||||
if (internal->pc_relative)
|
||||
{
|
||||
switch (internal->bitsize)
|
||||
{
|
||||
case 32: return R_PCRLONG;
|
||||
case 16: return R_PCRWORD;
|
||||
case 8: return R_PCRBYTE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (internal->bitsize)
|
||||
{
|
||||
case 32: return R_RELLONG;
|
||||
case 16: return R_RELWORD;
|
||||
case 8: return R_RELBYTE;
|
||||
}
|
||||
}
|
||||
return R_RELLONG;
|
||||
}
|
||||
|
||||
STAT_REL reloc_howto_type *
|
||||
m68k_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
bfd_reloc_code_real_type code)
|
||||
{
|
||||
switch (code)
|
||||
{
|
||||
default: return NULL;
|
||||
case BFD_RELOC_8: return m68kcoff_howto_table + 0;
|
||||
case BFD_RELOC_16: return m68kcoff_howto_table + 1;
|
||||
case BFD_RELOC_CTOR:
|
||||
case BFD_RELOC_32: return m68kcoff_howto_table + 2;
|
||||
case BFD_RELOC_8_PCREL: return m68kcoff_howto_table + 3;
|
||||
case BFD_RELOC_16_PCREL: return m68kcoff_howto_table + 4;
|
||||
case BFD_RELOC_32_PCREL: return m68kcoff_howto_table + 5;
|
||||
/* FIXME: There doesn't seem to be a code for R_RELLONG_NEG. */
|
||||
}
|
||||
/*NOTREACHED*/
|
||||
}
|
||||
|
||||
STAT_REL reloc_howto_type *
|
||||
m68k_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
const char *r_name)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0;
|
||||
i < sizeof (m68kcoff_howto_table) / sizeof (m68kcoff_howto_table[0]);
|
||||
i++)
|
||||
if (m68kcoff_howto_table[i].name != NULL
|
||||
&& strcasecmp (m68kcoff_howto_table[i].name, r_name) == 0)
|
||||
return &m68kcoff_howto_table[i];
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif /* not ONLY_DECLARE_RELOCS */
|
||||
|
||||
#define RTYPE2HOWTO(internal, relocentry) \
|
||||
m68k_rtype2howto(internal, (relocentry)->r_type)
|
||||
|
||||
#define SELECT_RELOC(external, internal) \
|
||||
external.r_type = m68k_howto2rtype (internal)
|
||||
|
||||
#define coff_bfd_reloc_type_lookup m68k_reloc_type_lookup
|
||||
#define coff_bfd_reloc_name_lookup m68k_reloc_name_lookup
|
||||
|
||||
#ifndef COFF_COMMON_ADDEND
|
||||
#ifndef coff_rtype_to_howto
|
||||
|
||||
#define coff_rtype_to_howto m68kcoff_rtype_to_howto
|
||||
|
||||
static reloc_howto_type *
|
||||
m68kcoff_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
asection *sec,
|
||||
struct internal_reloc *rel,
|
||||
struct coff_link_hash_entry *h ATTRIBUTE_UNUSED,
|
||||
struct internal_syment *sym ATTRIBUTE_UNUSED,
|
||||
bfd_vma *addendp)
|
||||
{
|
||||
arelent relent;
|
||||
reloc_howto_type *howto;
|
||||
|
||||
relent.howto = NULL;
|
||||
RTYPE2HOWTO (&relent, rel);
|
||||
|
||||
howto = relent.howto;
|
||||
|
||||
if (howto != NULL && howto->pc_relative)
|
||||
*addendp += sec->vma;
|
||||
|
||||
return howto;
|
||||
}
|
||||
|
||||
#endif /* ! defined (coff_rtype_to_howto) */
|
||||
#endif /* ! defined (COFF_COMMON_ADDEND) */
|
||||
|
||||
#ifdef COFF_COMMON_ADDEND
|
||||
|
||||
/* If COFF_COMMON_ADDEND is defined, then when using m68k COFF the
|
||||
value stored in the .text section for a reference to a common
|
||||
symbol is the value itself plus any desired offset. (taken from
|
||||
work done by Ian Taylor, Cygnus Support, for I386 COFF). */
|
||||
|
||||
/* If we are producing relocatable output, we need to do some
|
||||
adjustments to the object file that are not done by the
|
||||
bfd_perform_relocation function. This function is called by every
|
||||
reloc type to make any required adjustments. */
|
||||
|
||||
static bfd_reloc_status_type
|
||||
m68kcoff_common_addend_special_fn (bfd *abfd,
|
||||
arelent *reloc_entry,
|
||||
asymbol *symbol,
|
||||
void * data,
|
||||
asection *input_section ATTRIBUTE_UNUSED,
|
||||
bfd *output_bfd,
|
||||
char **error_message ATTRIBUTE_UNUSED)
|
||||
{
|
||||
symvalue diff;
|
||||
|
||||
if (output_bfd == (bfd *) NULL)
|
||||
return bfd_reloc_continue;
|
||||
|
||||
if (bfd_is_com_section (symbol->section))
|
||||
{
|
||||
/* We are relocating a common symbol. The current value in the
|
||||
object file is ORIG + OFFSET, where ORIG is the value of the
|
||||
common symbol as seen by the object file when it was compiled
|
||||
(this may be zero if the symbol was undefined) and OFFSET is
|
||||
the offset into the common symbol (normally zero, but may be
|
||||
non-zero when referring to a field in a common structure).
|
||||
ORIG is the negative of reloc_entry->addend, which is set by
|
||||
the CALC_ADDEND macro below. We want to replace the value in
|
||||
the object file with NEW + OFFSET, where NEW is the value of
|
||||
the common symbol which we are going to put in the final
|
||||
object file. NEW is symbol->value. */
|
||||
diff = symbol->value + reloc_entry->addend;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* For some reason bfd_perform_relocation always effectively
|
||||
ignores the addend for a COFF target when producing
|
||||
relocatable output. This seems to be always wrong for 386
|
||||
COFF, so we handle the addend here instead. */
|
||||
diff = reloc_entry->addend;
|
||||
}
|
||||
|
||||
#define DOIT(x) \
|
||||
x = ((x & ~howto->dst_mask) | (((x & howto->src_mask) + diff) & howto->dst_mask))
|
||||
|
||||
if (diff != 0)
|
||||
{
|
||||
reloc_howto_type *howto = reloc_entry->howto;
|
||||
unsigned char *addr = (unsigned char *) data + reloc_entry->address;
|
||||
|
||||
if (! bfd_reloc_offset_in_range (howto, abfd, input_section,
|
||||
reloc_entry->address
|
||||
* bfd_octets_per_byte (abfd)))
|
||||
return bfd_reloc_outofrange;
|
||||
|
||||
switch (howto->size)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
char x = bfd_get_8 (abfd, addr);
|
||||
DOIT (x);
|
||||
bfd_put_8 (abfd, x, addr);
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
{
|
||||
short x = bfd_get_16 (abfd, addr);
|
||||
DOIT (x);
|
||||
bfd_put_16 (abfd, (bfd_vma) x, addr);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
{
|
||||
long x = bfd_get_32 (abfd, addr);
|
||||
DOIT (x);
|
||||
bfd_put_32 (abfd, (bfd_vma) x, addr);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
}
|
||||
}
|
||||
|
||||
/* Now let bfd_perform_relocation finish everything up. */
|
||||
return bfd_reloc_continue;
|
||||
}
|
||||
|
||||
/* Compute the addend of a reloc. If the reloc is to a common symbol,
|
||||
the object file contains the value of the common symbol. By the
|
||||
time this is called, the linker may be using a different symbol
|
||||
from a different object file with a different value. Therefore, we
|
||||
hack wildly to locate the original symbol from this file so that we
|
||||
can make the correct adjustment. This macro sets coffsym to the
|
||||
symbol from the original file, and uses it to set the addend value
|
||||
correctly. If this is not a common symbol, the usual addend
|
||||
calculation is done, except that an additional tweak is needed for
|
||||
PC relative relocs.
|
||||
FIXME: This macro refers to symbols and asect; these are from the
|
||||
calling function, not the macro arguments. */
|
||||
|
||||
#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr) \
|
||||
{ \
|
||||
coff_symbol_type *coffsym = (coff_symbol_type *) NULL; \
|
||||
if (ptr && bfd_asymbol_bfd (ptr) != abfd) \
|
||||
coffsym = (obj_symbols (abfd) \
|
||||
+ (cache_ptr->sym_ptr_ptr - symbols)); \
|
||||
else if (ptr) \
|
||||
coffsym = coff_symbol_from (ptr); \
|
||||
if (coffsym != (coff_symbol_type *) NULL \
|
||||
&& coffsym->native->u.syment.n_scnum == 0) \
|
||||
cache_ptr->addend = - coffsym->native->u.syment.n_value; \
|
||||
else if (ptr && bfd_asymbol_bfd (ptr) == abfd \
|
||||
&& ptr->section != (asection *) NULL) \
|
||||
cache_ptr->addend = - (ptr->section->vma + ptr->value); \
|
||||
else \
|
||||
cache_ptr->addend = 0; \
|
||||
if (ptr && (reloc.r_type == R_PCRBYTE \
|
||||
|| reloc.r_type == R_PCRWORD \
|
||||
|| reloc.r_type == R_PCRLONG)) \
|
||||
cache_ptr->addend += asect->vma; \
|
||||
}
|
||||
|
||||
#ifndef coff_rtype_to_howto
|
||||
|
||||
/* coff-m68k.c uses the special COFF backend linker. We need to
|
||||
adjust common symbols. */
|
||||
|
||||
static reloc_howto_type *
|
||||
m68kcoff_common_addend_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
asection *sec,
|
||||
struct internal_reloc *rel,
|
||||
struct coff_link_hash_entry *h,
|
||||
struct internal_syment *sym,
|
||||
bfd_vma *addendp)
|
||||
{
|
||||
arelent relent;
|
||||
reloc_howto_type *howto;
|
||||
|
||||
relent.howto = NULL;
|
||||
RTYPE2HOWTO (&relent, rel);
|
||||
|
||||
howto = relent.howto;
|
||||
|
||||
if (howto->pc_relative)
|
||||
*addendp += sec->vma;
|
||||
|
||||
if (sym != NULL && sym->n_scnum == 0 && sym->n_value != 0)
|
||||
{
|
||||
/* This is a common symbol. The section contents include the
|
||||
size (sym->n_value) as an addend. The relocate_section
|
||||
function will be adding in the final value of the symbol. We
|
||||
need to subtract out the current size in order to get the
|
||||
correct result. */
|
||||
BFD_ASSERT (h != NULL);
|
||||
*addendp -= sym->n_value;
|
||||
}
|
||||
|
||||
/* If the output symbol is common (in which case this must be a
|
||||
relocatable link), we need to add in the final size of the
|
||||
common symbol. */
|
||||
if (h != NULL && h->root.type == bfd_link_hash_common)
|
||||
*addendp += h->root.u.c.size;
|
||||
|
||||
return howto;
|
||||
}
|
||||
|
||||
#define coff_rtype_to_howto m68kcoff_common_addend_rtype_to_howto
|
||||
|
||||
#endif /* ! defined (coff_rtype_to_howto) */
|
||||
|
||||
#endif /* COFF_COMMON_ADDEND */
|
||||
|
||||
#if !defined ONLY_DECLARE_RELOCS && ! defined STATIC_RELOCS
|
||||
/* Given a .data section and a .emreloc in-memory section, store
|
||||
relocation information into the .emreloc section which can be
|
||||
used at runtime to relocate the section. This is called by the
|
||||
linker when the --embedded-relocs switch is used. This is called
|
||||
after the add_symbols entry point has been called for all the
|
||||
objects, and before the final_link entry point is called. */
|
||||
|
||||
bfd_boolean
|
||||
bfd_m68k_coff_create_embedded_relocs (bfd *abfd,
|
||||
struct bfd_link_info *info,
|
||||
asection *datasec,
|
||||
asection *relsec,
|
||||
char **errmsg)
|
||||
{
|
||||
char *extsyms;
|
||||
bfd_size_type symesz;
|
||||
struct internal_reloc *irel, *irelend;
|
||||
bfd_byte *p;
|
||||
bfd_size_type amt;
|
||||
|
||||
BFD_ASSERT (! bfd_link_relocatable (info));
|
||||
|
||||
*errmsg = NULL;
|
||||
|
||||
if (datasec->reloc_count == 0)
|
||||
return TRUE;
|
||||
|
||||
extsyms = obj_coff_external_syms (abfd);
|
||||
symesz = bfd_coff_symesz (abfd);
|
||||
|
||||
irel = _bfd_coff_read_internal_relocs (abfd, datasec, TRUE, NULL, FALSE,
|
||||
NULL);
|
||||
irelend = irel + datasec->reloc_count;
|
||||
|
||||
amt = (bfd_size_type) datasec->reloc_count * 12;
|
||||
relsec->contents = (bfd_byte *) bfd_alloc (abfd, amt);
|
||||
if (relsec->contents == NULL)
|
||||
return FALSE;
|
||||
|
||||
p = relsec->contents;
|
||||
|
||||
for (; irel < irelend; irel++, p += 12)
|
||||
{
|
||||
asection *targetsec;
|
||||
|
||||
/* We are going to write a four byte longword into the runtime
|
||||
reloc section. The longword will be the address in the data
|
||||
section which must be relocated. It is followed by the name
|
||||
of the target section NUL-padded or truncated to 8
|
||||
characters. */
|
||||
|
||||
/* We can only relocate absolute longword relocs at run time. */
|
||||
if (irel->r_type != R_RELLONG)
|
||||
{
|
||||
*errmsg = _("unsupported relocation type");
|
||||
bfd_set_error (bfd_error_bad_value);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (irel->r_symndx == -1)
|
||||
targetsec = bfd_abs_section_ptr;
|
||||
else
|
||||
{
|
||||
struct coff_link_hash_entry *h;
|
||||
|
||||
h = obj_coff_sym_hashes (abfd)[irel->r_symndx];
|
||||
if (h == NULL)
|
||||
{
|
||||
struct internal_syment isym;
|
||||
|
||||
bfd_coff_swap_sym_in (abfd, extsyms + symesz * irel->r_symndx,
|
||||
&isym);
|
||||
targetsec = coff_section_from_bfd_index (abfd, isym.n_scnum);
|
||||
}
|
||||
else if (h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak)
|
||||
targetsec = h->root.u.def.section;
|
||||
else
|
||||
targetsec = NULL;
|
||||
}
|
||||
|
||||
bfd_put_32 (abfd,
|
||||
(irel->r_vaddr - datasec->vma + datasec->output_offset), p);
|
||||
memset (p + 4, 0, 8);
|
||||
if (targetsec != NULL)
|
||||
strncpy ((char *) p + 4, targetsec->output_section->name, 8);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
#endif /* neither ONLY_DECLARE_RELOCS not STATIC_RELOCS */
|
||||
|
||||
#define coff_bfd_is_local_label_name m68k_coff_is_local_label_name
|
||||
|
||||
#define coff_relocate_section _bfd_coff_generic_relocate_section
|
||||
|
||||
#ifndef bfd_pe_print_pdata
|
||||
#define bfd_pe_print_pdata NULL
|
||||
#endif
|
||||
|
||||
#include "coffcode.h"
|
||||
|
||||
#ifndef TARGET_SYM
|
||||
#define TARGET_SYM m68k_coff_vec
|
||||
#endif
|
||||
|
||||
#ifndef TARGET_NAME
|
||||
#define TARGET_NAME "coff-m68k"
|
||||
#endif
|
||||
|
||||
#ifdef NAMES_HAVE_UNDERSCORE
|
||||
CREATE_BIG_COFF_TARGET_VEC (TARGET_SYM, TARGET_NAME, D_PAGED, 0, '_', NULL, COFF_SWAP_TABLE)
|
||||
#else
|
||||
CREATE_BIG_COFF_TARGET_VEC (TARGET_SYM, TARGET_NAME, D_PAGED, 0, 0, NULL, COFF_SWAP_TABLE)
|
||||
#endif
|
|
@ -1,27 +0,0 @@
|
|||
/* BFD back-end for Motorola sysv68
|
||||
Copyright (C) 1997-2018 Free Software Foundation, Inc.
|
||||
Written by Philippe De Muyter <phdm@info.ucl.ac.be>.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#define TARGET_SYM m68k_coff_sysv_vec
|
||||
#define TARGET_NAME "coff-m68k-sysv"
|
||||
#define STATIC_RELOCS
|
||||
#define COFF_COMMON_ADDEND
|
||||
|
||||
#include "coff-m68k.c"
|
|
@ -1,36 +0,0 @@
|
|||
/* BFD back-end for Motorola 68000 COFF binaries having underscore with name.
|
||||
Copyright (C) 1990-2018 Free Software Foundation, Inc.
|
||||
Written by Cygnus Support.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#define TARGET_SYM m68k_coff_un_vec
|
||||
#define TARGET_NAME "coff-m68k-un"
|
||||
|
||||
#define NAMES_HAVE_UNDERSCORE
|
||||
|
||||
/* define this to not have multiple copy of m68k_rtype2howto
|
||||
in the executable file */
|
||||
#define ONLY_DECLARE_RELOCS
|
||||
|
||||
/* This magic number indicates that the names have underscores.
|
||||
Other 68k magic numbers indicate that the names do not have
|
||||
underscores. */
|
||||
#define BADMAG(x) ((x).f_magic != MC68KBCSMAGIC)
|
||||
|
||||
#include "coff-m68k.c"
|
|
@ -2103,7 +2103,7 @@ coff_set_arch_mach_hook (bfd *abfd, void * filehdr)
|
|||
case I386MAGIC:
|
||||
case I386PTXMAGIC:
|
||||
case I386AIXMAGIC: /* Danbury PS/2 AIX C Compiler. */
|
||||
case LYNXCOFFMAGIC: /* Shadows the m68k Lynx number below, sigh. */
|
||||
case LYNXCOFFMAGIC:
|
||||
arch = bfd_arch_i386;
|
||||
break;
|
||||
#endif
|
||||
|
@ -2145,22 +2145,6 @@ coff_set_arch_mach_hook (bfd *abfd, void * filehdr)
|
|||
}
|
||||
break;
|
||||
#endif
|
||||
#ifdef MC68MAGIC
|
||||
case MC68MAGIC:
|
||||
case M68MAGIC:
|
||||
#ifdef MC68KBCSMAGIC
|
||||
case MC68KBCSMAGIC:
|
||||
#endif
|
||||
#ifdef APOLLOM68KMAGIC
|
||||
case APOLLOM68KMAGIC:
|
||||
#endif
|
||||
#ifdef LYNXCOFFMAGIC
|
||||
case LYNXCOFFMAGIC:
|
||||
#endif
|
||||
arch = bfd_arch_m68k;
|
||||
machine = bfd_mach_m68020;
|
||||
break;
|
||||
#endif
|
||||
#ifdef Z80MAGIC
|
||||
case Z80MAGIC:
|
||||
arch = bfd_arch_z80;
|
||||
|
@ -2792,25 +2776,6 @@ coff_set_flags (bfd * abfd,
|
|||
return TRUE;
|
||||
#endif
|
||||
|
||||
#ifdef MC68MAGIC
|
||||
case bfd_arch_m68k:
|
||||
#ifdef APOLLOM68KMAGIC
|
||||
*magicp = APOLLO_COFF_VERSION_NUMBER;
|
||||
#else
|
||||
/* NAMES_HAVE_UNDERSCORE may be defined by coff-u68k.c. */
|
||||
#ifdef NAMES_HAVE_UNDERSCORE
|
||||
*magicp = MC68KBCSMAGIC;
|
||||
#else
|
||||
*magicp = MC68MAGIC;
|
||||
#endif
|
||||
#endif
|
||||
#ifdef LYNXOS
|
||||
/* Just overwrite the usual value if we're doing Lynx. */
|
||||
*magicp = LYNXCOFFMAGIC;
|
||||
#endif
|
||||
return TRUE;
|
||||
#endif
|
||||
|
||||
#ifdef SH_ARCH_MAGIC_BIG
|
||||
case bfd_arch_sh:
|
||||
#ifdef COFF_IMAGE_WITH_PE
|
||||
|
@ -3870,28 +3835,6 @@ coff_write_object_contents (bfd * abfd)
|
|||
#define __A_MAGIC_SET__
|
||||
#endif /* TIC80 */
|
||||
|
||||
#if APOLLO_M68
|
||||
#define __A_MAGIC_SET__
|
||||
internal_a.magic = APOLLO_COFF_VERSION_NUMBER;
|
||||
#endif
|
||||
|
||||
#if defined(M68) || defined(M68K)
|
||||
#define __A_MAGIC_SET__
|
||||
#if defined(LYNXOS)
|
||||
internal_a.magic = LYNXCOFFMAGIC;
|
||||
#else
|
||||
#if defined(TARG_AUX)
|
||||
internal_a.magic = (abfd->flags & D_PAGED ? PAGEMAGICPEXECPAGED :
|
||||
abfd->flags & WP_TEXT ? PAGEMAGICPEXECSWAPPED :
|
||||
PAGEMAGICEXECSWAPPED);
|
||||
#else
|
||||
#if defined (PAGEMAGICPEXECPAGED)
|
||||
internal_a.magic = PAGEMAGICPEXECPAGED;
|
||||
#endif
|
||||
#endif /* TARG_AUX */
|
||||
#endif /* LYNXOS */
|
||||
#endif /* M68 || M68K */
|
||||
|
||||
#if defined(ARM)
|
||||
#define __A_MAGIC_SET__
|
||||
internal_a.magic = ZMAGIC;
|
||||
|
|
|
@ -618,13 +618,6 @@ coff_swap_aouthdr_in (bfd * abfd, void * aouthdr_ext1, void * aouthdr_int1)
|
|||
aouthdr_int->data_start =
|
||||
GET_AOUTHDR_DATA_START (abfd, aouthdr_ext->data_start);
|
||||
|
||||
#ifdef APOLLO_M68
|
||||
H_PUT_32 (abfd, aouthdr_int->o_inlib, aouthdr_ext->o_inlib);
|
||||
H_PUT_32 (abfd, aouthdr_int->o_sri, aouthdr_ext->o_sri);
|
||||
H_PUT_32 (abfd, aouthdr_int->vid[0], aouthdr_ext->vid);
|
||||
H_PUT_32 (abfd, aouthdr_int->vid[1], aouthdr_ext->vid + 4);
|
||||
#endif
|
||||
|
||||
#ifdef RS6000COFF_C
|
||||
#ifdef XCOFF64
|
||||
aouthdr_int->o_toc = H_GET_64 (abfd, aouthdr_ext->o_toc);
|
||||
|
|
105
bfd/config.bfd
105
bfd/config.bfd
|
@ -77,16 +77,6 @@ case $targ in
|
|||
i[3-7]86-*-os9k | \
|
||||
i[3-7]86-none-* | \
|
||||
i[3-7]86-*-aout* | i[3-7]86*-*-vsta* | \
|
||||
m68*-motorola-sysv* | m68*-hp-bsd* | m68*-*-aout* | \
|
||||
m68*-*-coff* | m68*-*-sysv* | \
|
||||
m68*-*-hpux* | \
|
||||
m68*-*-linux*aout* | \
|
||||
m68*-hp*-netbsd* | \
|
||||
m68*-*-netbsdaout* | \
|
||||
m68*-*-sunos* | m68*-*-os68k* | m68*-*-vxworks* | m68*-netx-* | \
|
||||
m68*-*-bsd* | m68*-*-vsta* | \
|
||||
m68*-ericsson-* | \
|
||||
m68*-*-psos* | \
|
||||
mips*-big-* | \
|
||||
mips*-dec-* | mips*el-*-ecoff* | \
|
||||
mips*-*-ecoff* | \
|
||||
|
@ -113,6 +103,9 @@ case $targ in
|
|||
esac
|
||||
|
||||
case $targ in
|
||||
m68*-*-netbsdelf*)
|
||||
# Not obsolete
|
||||
;;
|
||||
*-adobe-* | \
|
||||
*-go32-rtems* | \
|
||||
*-sony-* | \
|
||||
|
@ -129,10 +122,24 @@ case $targ in
|
|||
i370-* | \
|
||||
i860-*-* | \
|
||||
i960-*-* | \
|
||||
m68*-*-*bsd* | \
|
||||
m68*-*-aout* | \
|
||||
m68*-*-coff* | \
|
||||
m68*-*-hpux* | \
|
||||
m68*-*-linux*aout* | \
|
||||
m68*-*-lynxos* | \
|
||||
m68*-*-os68k* | \
|
||||
m68*-*-psos* | \
|
||||
m68*-*-sunos* | \
|
||||
m68*-*-sysv* | \
|
||||
m68*-*-vsta* | \
|
||||
m68*-*-vxworks* | \
|
||||
m68*-apollo-* | \
|
||||
m68*-apple-aux* | \
|
||||
m68*-bull-sysv* | \
|
||||
m68*-ericsson-* | \
|
||||
m68*-motorola-sysv* | \
|
||||
m68*-netx-* | \
|
||||
m88*-*-* | \
|
||||
maxq-*-coff | \
|
||||
mips*el-*-rtems* | \
|
||||
|
@ -526,7 +533,6 @@ case "${targ}" in
|
|||
|
||||
fido-*-elf* )
|
||||
targ_defvec=m68k_elf32_vec
|
||||
targ_selvecs="m68k_coff_vec"
|
||||
;;
|
||||
|
||||
fr30-*-elf)
|
||||
|
@ -906,83 +912,8 @@ case "${targ}" in
|
|||
targ_selvecs="m68hc11_elf32_vec m68hc12_elf32_vec"
|
||||
;;
|
||||
|
||||
m68*-motorola-sysv*)
|
||||
targ_defvec=m68k_coff_sysv_vec
|
||||
;;
|
||||
m68*-hp-bsd*)
|
||||
targ_defvec=m68k_aout_hp300bsd_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
m68*-*-aout*)
|
||||
targ_defvec=aout0_be_vec
|
||||
# We include core_cisco_be_vec here, rather than making a separate cisco
|
||||
# configuration, so that cisco-core.c gets routinely tested at
|
||||
# least for compilation.
|
||||
targ_selvecs="core_cisco_be_vec"
|
||||
targ_underscore=yes
|
||||
;;
|
||||
m68*-*-elf* | m68*-*-sysv4* | m68*-*-rtems* | m68*-*-uclinux*)
|
||||
m68*-*-*)
|
||||
targ_defvec=m68k_elf32_vec
|
||||
targ_selvecs="m68k_coff_vec"
|
||||
;;
|
||||
m68*-*-coff* | m68*-*-sysv*)
|
||||
targ_defvec=m68k_coff_vec
|
||||
targ_selvecs="m68k_coff_vec m68k_versados_vec"
|
||||
;;
|
||||
m68*-*-hpux*)
|
||||
targ_defvec=m68k_aout_hp300hpux_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
m68*-*-linux*aout*)
|
||||
targ_defvec=m68k_aout_linux_vec
|
||||
targ_selvecs=m68k_elf32_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
m68*-*-linux-*)
|
||||
targ_defvec=m68k_elf32_vec
|
||||
targ_selvecs=m68k_aout_linux_vec
|
||||
;;
|
||||
m68*-*-gnu*)
|
||||
targ_defvec=m68k_elf32_vec
|
||||
# targ_selvecs=m68kmach3_vec
|
||||
# targ_cflags=-DSTAT_FOR_EXEC
|
||||
;;
|
||||
m68*-hp*-netbsd*)
|
||||
targ_defvec=m68k_aout_4knbsd_vec
|
||||
targ_selvecs="m68k_aout_nbsd_vec m68k_aout_hp300bsd_vec sparc_aout_sunos_be_vec"
|
||||
targ_underscore=yes
|
||||
;;
|
||||
m68*-*-netbsdelf*)
|
||||
targ_defvec=m68k_elf32_vec
|
||||
targ_selvecs="m68k_aout_nbsd_vec m68k_aout_4knbsd_vec m68k_aout_hp300bsd_vec sparc_aout_sunos_be_vec"
|
||||
;;
|
||||
m68*-*-netbsdaout* | m68*-*-netbsd*)
|
||||
targ_defvec=m68k_aout_nbsd_vec
|
||||
targ_selvecs="m68k_aout_4knbsd_vec m68k_elf32_vec m68k_aout_hp300bsd_vec sparc_aout_sunos_be_vec"
|
||||
targ_underscore=yes
|
||||
;;
|
||||
m68*-*-openbsd*)
|
||||
targ_defvec=m68k_aout_nbsd_vec
|
||||
targ_selvecs="m68k_aout_4knbsd_vec m68k_aout_hp300bsd_vec sparc_aout_sunos_be_vec"
|
||||
targ_underscore=yes
|
||||
;;
|
||||
m68*-*-sunos* | m68*-*-os68k* | m68*-*-vxworks* | m68*-netx-* | \
|
||||
m68*-*-bsd* | m68*-*-vsta*)
|
||||
targ_defvec=sparc_aout_sunos_be_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
m68*-ericsson-*)
|
||||
targ_defvec=sparc_aout_sunos_be_vec
|
||||
targ_selvecs="m68k_coff_vec m68k_versados_vec tekhex_vec"
|
||||
targ_underscore=yes
|
||||
;;
|
||||
m68*-cbm-*)
|
||||
targ_defvec=m68k_elf32_vec
|
||||
targ_selvecs=m68k_coff_vec
|
||||
;;
|
||||
m68*-*-psos*)
|
||||
targ_defvec=m68k_elf32_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
|
||||
mcore-*-elf)
|
||||
|
|
30
bfd/configure
vendored
30
bfd/configure
vendored
|
@ -14445,18 +14445,7 @@ do
|
|||
m32r_elf32_linux_le_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
|
||||
m68hc11_elf32_vec) tb="$tb elf32-m68hc11.lo elf32-m68hc1x.lo elf32.lo $elf" ;;
|
||||
m68hc12_elf32_vec) tb="$tb elf32-m68hc12.lo elf32-m68hc1x.lo elf32.lo $elf" ;;
|
||||
m68k_aout_4knbsd_vec) tb="$tb m68k4knetbsd.lo aout32.lo" ;;
|
||||
m68k_aout_hp300bsd_vec) tb="$tb hp300bsd.lo aout32.lo" ;;
|
||||
m68k_aout_hp300hpux_vec) tb="$tb hp300hpux.lo aout32.lo" ;;
|
||||
m68k_aout_linux_vec) tb="$tb m68klinux.lo aout32.lo" ;;
|
||||
m68k_aout_nbsd_vec) tb="$tb m68knetbsd.lo aout32.lo" ;;
|
||||
m68k_coff_vec) tb="$tb coff-m68k.lo $coff" ;;
|
||||
m68k_coff_apollo_vec) tb="$tb coff-apollo.lo $coffgen" ;;
|
||||
m68k_coff_aux_vec) tb="$tb coff-aux.lo coff-m68k.lo $coff" ;;
|
||||
m68k_coff_sysv_vec) tb="$tb coff-svm68k.lo $coff" ;;
|
||||
m68k_coff_un_vec) tb="$tb coff-u68k.lo coff-m68k.lo $coff" ;;
|
||||
m68k_elf32_vec) tb="$tb elf32-m68k.lo elf32.lo $elf" ;;
|
||||
m68k_versados_vec) tb="$tb versados.lo" ;;
|
||||
mach_o_be_vec) tb="$tb mach-o.lo dwarf2.lo" ;;
|
||||
mach_o_le_vec) tb="$tb mach-o.lo dwarf2.lo" ;;
|
||||
mach_o_fat_vec) tb="$tb mach-o.lo dwarf2.lo" ;;
|
||||
|
@ -14862,30 +14851,13 @@ if test "${target}" = "${host}"; then
|
|||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/riscos.h"'
|
||||
;;
|
||||
m68*-bull*-sysv*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/dpx2.h"'
|
||||
;;
|
||||
m68*-hp-hpux*) COREFILE=hpux-core.lo ;;
|
||||
m68*-hp-bsd*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/hp300bsd.h"'
|
||||
;;
|
||||
m68*-*-linux-*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/m68klinux.h"'
|
||||
;;
|
||||
m68*-motorola-sysv*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/delta68.h"'
|
||||
;;
|
||||
m68*-*-netbsd* | m68*-*-openbsd*)
|
||||
m68*-*-netbsd*)
|
||||
COREFILE=netbsd-core.lo
|
||||
;;
|
||||
m68*-apple-aux*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/m68kaux.h"'
|
||||
;;
|
||||
ns32k-pc532-mach)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/pc532mach.h"'
|
||||
|
|
|
@ -522,18 +522,7 @@ do
|
|||
m32r_elf32_linux_le_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
|
||||
m68hc11_elf32_vec) tb="$tb elf32-m68hc11.lo elf32-m68hc1x.lo elf32.lo $elf" ;;
|
||||
m68hc12_elf32_vec) tb="$tb elf32-m68hc12.lo elf32-m68hc1x.lo elf32.lo $elf" ;;
|
||||
m68k_aout_4knbsd_vec) tb="$tb m68k4knetbsd.lo aout32.lo" ;;
|
||||
m68k_aout_hp300bsd_vec) tb="$tb hp300bsd.lo aout32.lo" ;;
|
||||
m68k_aout_hp300hpux_vec) tb="$tb hp300hpux.lo aout32.lo" ;;
|
||||
m68k_aout_linux_vec) tb="$tb m68klinux.lo aout32.lo" ;;
|
||||
m68k_aout_nbsd_vec) tb="$tb m68knetbsd.lo aout32.lo" ;;
|
||||
m68k_coff_vec) tb="$tb coff-m68k.lo $coff" ;;
|
||||
m68k_coff_apollo_vec) tb="$tb coff-apollo.lo $coffgen" ;;
|
||||
m68k_coff_aux_vec) tb="$tb coff-aux.lo coff-m68k.lo $coff" ;;
|
||||
m68k_coff_sysv_vec) tb="$tb coff-svm68k.lo $coff" ;;
|
||||
m68k_coff_un_vec) tb="$tb coff-u68k.lo coff-m68k.lo $coff" ;;
|
||||
m68k_elf32_vec) tb="$tb elf32-m68k.lo elf32.lo $elf" ;;
|
||||
m68k_versados_vec) tb="$tb versados.lo" ;;
|
||||
mach_o_be_vec) tb="$tb mach-o.lo dwarf2.lo" ;;
|
||||
mach_o_le_vec) tb="$tb mach-o.lo dwarf2.lo" ;;
|
||||
mach_o_fat_vec) tb="$tb mach-o.lo dwarf2.lo" ;;
|
||||
|
@ -948,30 +937,13 @@ changequote([,])dnl
|
|||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/riscos.h"'
|
||||
;;
|
||||
m68*-bull*-sysv*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/dpx2.h"'
|
||||
;;
|
||||
m68*-hp-hpux*) COREFILE=hpux-core.lo ;;
|
||||
m68*-hp-bsd*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/hp300bsd.h"'
|
||||
;;
|
||||
m68*-*-linux-*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/m68klinux.h"'
|
||||
;;
|
||||
m68*-motorola-sysv*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/delta68.h"'
|
||||
;;
|
||||
m68*-*-netbsd* | m68*-*-openbsd*)
|
||||
m68*-*-netbsd*)
|
||||
COREFILE=netbsd-core.lo
|
||||
;;
|
||||
m68*-apple-aux*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/m68kaux.h"'
|
||||
;;
|
||||
ns32k-pc532-mach)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/pc532mach.h"'
|
||||
|
|
|
@ -72,8 +72,6 @@ mips*-*-sysv4*) ;;
|
|||
mips*-*-sysv*) HDEFINES="-G 4" ;;
|
||||
mips*-*-riscos*) HDEFINES="-G 4" ;;
|
||||
|
||||
m68*-hp-hpux*) HDEFINES=-DHOST_HP300HPUX ;;
|
||||
|
||||
# Some Solaris systems (osol0906 at least) have a libc that doesn't recognise
|
||||
# the "MS-ANSI" code page name, so we define an override for CP_ACP (sets the
|
||||
# default code page used by windres/windmc when not specified by a commandline
|
||||
|
|
|
@ -293,7 +293,6 @@ structures.
|
|||
* elf :: elf backends
|
||||
* mmo :: mmo backend
|
||||
@ignore
|
||||
* oasys :: oasys backends
|
||||
* srecord :: s-record backend
|
||||
@end ignore
|
||||
@end menu
|
||||
|
|
|
@ -336,8 +336,6 @@ COFF.
|
|||
ECOFF.
|
||||
@item bfd_target_elf_flavour
|
||||
ELF.
|
||||
@item bfd_target_oasys_flavour
|
||||
OASYS.
|
||||
@item bfd_target_tekhex_flavour
|
||||
Tektronix hex format.
|
||||
@item bfd_target_srec_flavour
|
||||
|
|
|
@ -80,12 +80,6 @@ MY (write_object_contents) (bfd *abfd)
|
|||
/* Magic number, maestro, please! */
|
||||
switch (bfd_get_arch(abfd))
|
||||
{
|
||||
case bfd_arch_m68k:
|
||||
if (strcmp (abfd->xvec->name, "a.out-m68k4k-netbsd") == 0)
|
||||
N_SET_MACHTYPE (execp, M_68K4K_NETBSD);
|
||||
else
|
||||
N_SET_MACHTYPE (execp, M_68K_NETBSD);
|
||||
break;
|
||||
case bfd_arch_sparc:
|
||||
N_SET_MACHTYPE (execp, M_SPARC_NETBSD);
|
||||
break;
|
||||
|
|
|
@ -92,9 +92,6 @@ main (int argc, char** argv)
|
|||
|
||||
#ifdef vax
|
||||
arch = "vax";
|
||||
#endif
|
||||
#ifdef m68k
|
||||
arch = "m68k";
|
||||
#endif
|
||||
if (arch[0] == '1')
|
||||
{
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
/* Copyright (C) 2005-2018 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
/* Definitions for a Motorola Delta 3300 box running System V R3.0.
|
||||
Contributed by manfred@lts.sel.alcatel.de. */
|
||||
|
||||
#include <sys/param.h>
|
||||
|
||||
/* Definitions used by trad-core.c. */
|
||||
#define NBPG NBPC
|
||||
#define HOST_DATA_START_ADDR u.u_exdata.ux_datorg
|
||||
#define HOST_TEXT_START_ADDR u.u_exdata.ux_txtorg
|
||||
/* User's stack, copied from sys/param.h */
|
||||
#define HOST_STACK_END_ADDR USRSTACK
|
||||
#define UPAGES USIZE
|
||||
#define TRAD_UNIX_CORE_FILE_FAILING_SIGNAL(abfd) \
|
||||
abfd->tdata.trad_core_data->u.u_abort
|
|
@ -1,32 +0,0 @@
|
|||
/* Copyright (C) 2007-2018 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#include <sys/param.h>
|
||||
#ifdef BSD4_4
|
||||
#define NO_CORE_COMMAND
|
||||
#endif
|
||||
|
||||
#define HOST_PAGE_SIZE NBPG
|
||||
#define HOST_SEGMENT_SIZE NBPG /* Data seg start addr rounds to NBPG */
|
||||
#define HOST_MACHINE_ARCH bfd_arch_m68k
|
||||
/* #define HOST_MACHINE_MACHINE */
|
||||
|
||||
#define HOST_TEXT_START_ADDR 0
|
||||
#define HOST_STACK_END_ADDR 0xfff00000
|
||||
#define HOST_BIG_ENDIAN_P
|
|
@ -1,35 +0,0 @@
|
|||
/* Copyright (C) 2007-2018 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
/* Definitions for an Apple Macintosh running A/UX 3.x. */
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/page.h>
|
||||
|
||||
/* Definitions used by trad-core.c. */
|
||||
#define NBPG NBPP
|
||||
|
||||
#define HOST_DATA_START_ADDR u.u_exdata.ux_datorg
|
||||
#define HOST_TEXT_START_ADDR u.u_exdata.ux_txtorg
|
||||
#define HOST_STACK_END_ADDR 0x100000000
|
||||
|
||||
#define UPAGES USIZE
|
||||
|
||||
#define TRAD_UNIX_CORE_FILE_FAILING_SIGNAL(abfd) \
|
||||
(abfd->tdata.trad_core_data->u.u_arg[0])
|
|
@ -1,28 +0,0 @@
|
|||
/* Copyright (C) 2007-2018 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
/* Sony News running NewsOS 3.2. */
|
||||
|
||||
#include <machine/vmparam.h>
|
||||
|
||||
#define HOST_PAGE_SIZE NBPG
|
||||
#define HOST_SEGMENT_SIZE NBPG
|
||||
#define HOST_MACHINE_ARCH bfd_arch_m68k
|
||||
#define HOST_TEXT_START_ADDR 0
|
||||
#define HOST_STACK_END_ADDR (KERNBASE - (UPAGES * NBPG))
|
|
@ -1,40 +0,0 @@
|
|||
/* BFD back-end for HP 9000/300 (68000-based) machines running BSD Unix.
|
||||
Copyright (C) 1992-2018 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#define TARGET_IS_BIG_ENDIAN_P
|
||||
#define N_HEADER_IN_TEXT(x) 0
|
||||
#define ENTRY_CAN_BE_ZERO
|
||||
#define TEXT_START_ADDR 0
|
||||
#define TARGET_PAGE_SIZE 4096
|
||||
#define SEGMENT_SIZE TARGET_PAGE_SIZE
|
||||
#define DEFAULT_ARCH bfd_arch_m68k
|
||||
|
||||
/* Do not "beautify" the CONCAT* macro args. Traditional C will not
|
||||
remove whitespace added here, and thus will fail to concatenate
|
||||
the tokens. */
|
||||
#define MY(OP) CONCAT2 (m68k_aout_hp300bsd_,OP)
|
||||
#define TARGETNAME "a.out-hp300bsd"
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "bfd.h"
|
||||
#include "libbfd.h"
|
||||
#include "libaout.h"
|
||||
|
||||
#include "aout-target.h"
|
855
bfd/hp300hpux.c
855
bfd/hp300hpux.c
|
@ -1,855 +0,0 @@
|
|||
/* BFD backend for hp-ux 9000/300
|
||||
Copyright (C) 1990-2018 Free Software Foundation, Inc.
|
||||
Written by Glenn Engel.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
|
||||
/* hpux native ------------> | |
|
||||
| hp300hpux bfd | ----------> hpux w/gnu ext
|
||||
hpux w/gnu extension ----> | |
|
||||
|
||||
Support for the 9000/[34]00 has several limitations.
|
||||
1. Shared libraries are not supported.
|
||||
2. The output format from this bfd is not usable by native tools.
|
||||
|
||||
The primary motivation for writing this bfd was to allow use of
|
||||
gdb and gcc for host based debugging and not to mimic the hp-ux tools
|
||||
in every detail. This leads to a significant simplification of the
|
||||
code and a leap in performance. The decision to not output hp native
|
||||
compatible objects was further strengthened by the fact that the richness
|
||||
of the gcc compiled objects could not be represented without loss of
|
||||
information. For example, while the hp format supports the concept of
|
||||
secondary symbols, it does not support indirect symbols. Another
|
||||
reason is to maintain backwards compatibility with older implementations
|
||||
of gcc on hpux which used 'hpxt' to translate .a and .o files into a
|
||||
format which could be readily understood by the gnu linker and gdb.
|
||||
This allows reading hp secondary symbols and converting them into
|
||||
indirect symbols but the reverse it not always possible.
|
||||
|
||||
Another example of differences is that the hp format stores symbol offsets
|
||||
in the object code while the gnu utilities use a field in the
|
||||
relocation record for this. To support the hp native format, the object
|
||||
code would need to be patched with the offsets when producing .o files.
|
||||
|
||||
The basic technique taken in this implementation is to #include the code
|
||||
from aoutx.h and aout-target.h with appropriate #defines to override
|
||||
code where a unique implementation is needed:
|
||||
|
||||
{
|
||||
#define a bunch of stuff
|
||||
#include <aoutx.h>
|
||||
|
||||
implement a bunch of functions
|
||||
|
||||
#include "aout-target.h"
|
||||
}
|
||||
|
||||
The hp symbol table is a bit different than other a.out targets. Instead
|
||||
of having an array of nlist items and an array of strings, hp's format
|
||||
has them mixed together in one structure. In addition, the strings are
|
||||
not null terminated. It looks something like this:
|
||||
|
||||
nlist element 1
|
||||
string1
|
||||
nlist element 2
|
||||
string2
|
||||
...
|
||||
|
||||
The whole symbol table is read as one chunk and then we march thru it
|
||||
and convert it to canonical form. As we march thru the table, we copy
|
||||
the nlist data into the internal form and we compact the strings and null
|
||||
terminate them, using storage from the already allocated symbol table:
|
||||
|
||||
string1
|
||||
null
|
||||
string2
|
||||
null
|
||||
*/
|
||||
|
||||
/* @@ Is this really so different from normal a.out that it needs to include
|
||||
aoutx.h? We should go through this file sometime and see what can be made
|
||||
more dependent on aout32.o and what might need to be broken off and accessed
|
||||
through the backend_data field. Or, maybe we really do need such a
|
||||
completely separate implementation. I don't have time to investigate this
|
||||
much further right now. [raeburn:19930428.2124EST] */
|
||||
/* @@ Also, note that there wind up being two versions of some routines, with
|
||||
different names, only one of which actually gets used. For example:
|
||||
slurp_symbol_table
|
||||
swap_std_reloc_in
|
||||
slurp_reloc_table
|
||||
canonicalize_symtab
|
||||
get_symtab_upper_bound
|
||||
canonicalize_reloc
|
||||
mkobject
|
||||
This should also be fixed. */
|
||||
|
||||
#define TARGETNAME "a.out-hp300hpux"
|
||||
|
||||
/* Do not "beautify" the CONCAT* macro args. Traditional C will not
|
||||
remove whitespace added here, and thus will fail to concatenate
|
||||
the tokens. */
|
||||
#define MY(OP) CONCAT2 (m68k_aout_hp300hpux_,OP)
|
||||
|
||||
#define external_exec hp300hpux_exec_bytes
|
||||
#define external_nlist hp300hpux_nlist_bytes
|
||||
|
||||
#include "aout/hp300hpux.h"
|
||||
|
||||
/* define these so we can compile unused routines in aoutx.h */
|
||||
#define e_strx e_shlib
|
||||
#define e_other e_length
|
||||
#define e_desc e_almod
|
||||
|
||||
#define AR_PAD_CHAR '/'
|
||||
#define TARGET_IS_BIG_ENDIAN_P
|
||||
#define DEFAULT_ARCH bfd_arch_m68k
|
||||
|
||||
#define MY_get_section_contents aout_32_get_section_contents
|
||||
#define MY_slurp_armap bfd_slurp_bsd_armap_f2
|
||||
|
||||
/***********************************************/
|
||||
/* provide overrides for routines in this file */
|
||||
/***********************************************/
|
||||
/* these don't use MY because that causes problems within JUMP_TABLE
|
||||
(CONCAT2 winds up being expanded recursively, which ANSI C compilers
|
||||
will not do). */
|
||||
#define MY_canonicalize_symtab m68k_aout_hp300hpux_canonicalize_symtab
|
||||
#define MY_get_symtab_upper_bound m68k_aout_hp300hpux_get_symtab_upper_bound
|
||||
#define MY_canonicalize_reloc m68k_aout_hp300hpux_canonicalize_reloc
|
||||
#define MY_write_object_contents m68k_aout_hp300hpux_write_object_contents
|
||||
|
||||
#define MY_read_minisymbols _bfd_generic_read_minisymbols
|
||||
#define MY_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol
|
||||
|
||||
#define MY_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
||||
#define MY_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||
#define MY_final_link_callback unused
|
||||
#define MY_bfd_final_link _bfd_generic_final_link
|
||||
|
||||
/* Until and unless we convert the slurp_reloc and slurp_symtab
|
||||
routines in this file, we can not use the default aout
|
||||
free_cached_info routine which assumes that the relocs and symtabs
|
||||
were allocated using malloc. */
|
||||
#define MY_bfd_free_cached_info _bfd_bool_bfd_true
|
||||
|
||||
#define m68k_aout_hp300hpux_write_syms aout_32_write_syms
|
||||
|
||||
#define MY_callback MY(callback)
|
||||
|
||||
#define MY_exec_hdr_flags 0x2
|
||||
|
||||
#define NAME_swap_exec_header_in NAME(hp300hpux_32_,swap_exec_header_in)
|
||||
|
||||
#define HP_SYMTYPE_UNDEFINED 0x00
|
||||
#define HP_SYMTYPE_ABSOLUTE 0x01
|
||||
#define HP_SYMTYPE_TEXT 0x02
|
||||
#define HP_SYMTYPE_DATA 0x03
|
||||
#define HP_SYMTYPE_BSS 0x04
|
||||
#define HP_SYMTYPE_COMMON 0x05
|
||||
|
||||
#define HP_SYMTYPE_TYPE 0x0F
|
||||
#define HP_SYMTYPE_FILENAME 0x1F
|
||||
|
||||
#define HP_SYMTYPE_ALIGN 0x10
|
||||
#define HP_SYMTYPE_EXTERNAL 0x20
|
||||
#define HP_SECONDARY_SYMBOL 0x40
|
||||
|
||||
/* RELOCATION DEFINITIONS */
|
||||
#define HP_RSEGMENT_TEXT 0x00
|
||||
#define HP_RSEGMENT_DATA 0x01
|
||||
#define HP_RSEGMENT_BSS 0x02
|
||||
#define HP_RSEGMENT_EXTERNAL 0x03
|
||||
#define HP_RSEGMENT_PCREL 0x04
|
||||
#define HP_RSEGMENT_RDLT 0x05
|
||||
#define HP_RSEGMENT_RPLT 0x06
|
||||
#define HP_RSEGMENT_NOOP 0x3F
|
||||
|
||||
#define HP_RLENGTH_BYTE 0x00
|
||||
#define HP_RLENGTH_WORD 0x01
|
||||
#define HP_RLENGTH_LONG 0x02
|
||||
#define HP_RLENGTH_ALIGN 0x03
|
||||
|
||||
#define NAME(x,y) CONCAT3 (hp300hpux,_32_,y)
|
||||
#define ARCH_SIZE 32
|
||||
|
||||
/* aoutx.h requires definitions for BMAGIC and QMAGIC. */
|
||||
#define BMAGIC HPUX_DOT_O_MAGIC
|
||||
#define QMAGIC 0314
|
||||
|
||||
#include "aoutx.h"
|
||||
|
||||
static const bfd_target * MY (callback) (bfd *);
|
||||
static bfd_boolean MY (write_object_contents) (bfd *);
|
||||
static void convert_sym_type
|
||||
(struct external_nlist *, aout_symbol_type *, bfd *);
|
||||
|
||||
bfd_boolean MY (slurp_symbol_table) (bfd *);
|
||||
void MY (swap_std_reloc_in)
|
||||
(bfd *, struct hp300hpux_reloc *, arelent *, asymbol **, bfd_size_type);
|
||||
bfd_boolean MY (slurp_reloc_table)
|
||||
(bfd *, sec_ptr, asymbol **);
|
||||
long MY (canonicalize_symtab) (bfd *, asymbol **);
|
||||
long MY (get_symtab_upper_bound) (bfd *);
|
||||
long MY (canonicalize_reloc) (bfd *, sec_ptr, arelent **, asymbol **);
|
||||
|
||||
/* Since the hpux symbol table has nlist elements interspersed with
|
||||
strings and we need to insert som strings for secondary symbols, we
|
||||
give ourselves a little extra padding up front to account for
|
||||
this. Note that for each non-secondary symbol we process, we gain
|
||||
9 bytes of space for the discarded nlist element (one byte used for
|
||||
null). SYM_EXTRA_BYTES is the extra space. */
|
||||
#define SYM_EXTRA_BYTES 1024
|
||||
|
||||
/* Set parameters about this a.out file that are machine-dependent.
|
||||
This routine is called from some_aout_object_p just before it returns. */
|
||||
static const bfd_target *
|
||||
MY (callback) (bfd *abfd)
|
||||
{
|
||||
struct internal_exec *execp = exec_hdr (abfd);
|
||||
|
||||
/* Calculate the file positions of the parts of a newly read aout header */
|
||||
obj_textsec (abfd)->size = N_TXTSIZE (execp);
|
||||
|
||||
/* The virtual memory addresses of the sections */
|
||||
obj_textsec (abfd)->vma = N_TXTADDR (execp);
|
||||
obj_datasec (abfd)->vma = N_DATADDR (execp);
|
||||
obj_bsssec (abfd)->vma = N_BSSADDR (execp);
|
||||
|
||||
obj_textsec (abfd)->lma = obj_textsec (abfd)->vma;
|
||||
obj_datasec (abfd)->lma = obj_datasec (abfd)->vma;
|
||||
obj_bsssec (abfd)->lma = obj_bsssec (abfd)->vma;
|
||||
|
||||
/* The file offsets of the sections */
|
||||
obj_textsec (abfd)->filepos = N_TXTOFF (execp);
|
||||
obj_datasec (abfd)->filepos = N_DATOFF (execp);
|
||||
|
||||
/* The file offsets of the relocation info */
|
||||
obj_textsec (abfd)->rel_filepos = N_TRELOFF (execp);
|
||||
obj_datasec (abfd)->rel_filepos = N_DRELOFF (execp);
|
||||
|
||||
/* The file offsets of the string table and symbol table. */
|
||||
obj_sym_filepos (abfd) = N_SYMOFF (execp);
|
||||
obj_str_filepos (abfd) = N_STROFF (execp);
|
||||
|
||||
/* Determine the architecture and machine type of the object file. */
|
||||
#ifdef SET_ARCH_MACH
|
||||
SET_ARCH_MACH (abfd, execp);
|
||||
#else
|
||||
bfd_default_set_arch_mach (abfd, DEFAULT_ARCH, 0);
|
||||
#endif
|
||||
|
||||
if (obj_aout_subformat (abfd) == gnu_encap_format)
|
||||
{
|
||||
/* The file offsets of the relocation info */
|
||||
obj_textsec (abfd)->rel_filepos = N_GNU_TRELOFF (execp);
|
||||
obj_datasec (abfd)->rel_filepos = N_GNU_DRELOFF (execp);
|
||||
|
||||
/* The file offsets of the string table and symbol table. */
|
||||
obj_sym_filepos (abfd) = N_GNU_SYMOFF (execp);
|
||||
obj_str_filepos (abfd) = (obj_sym_filepos (abfd) + execp->a_syms);
|
||||
|
||||
abfd->flags |= HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS;
|
||||
bfd_get_symcount (abfd) = execp->a_syms / 12;
|
||||
obj_symbol_entry_size (abfd) = 12;
|
||||
obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
|
||||
}
|
||||
|
||||
return abfd->xvec;
|
||||
}
|
||||
|
||||
extern bfd_boolean aout_32_write_syms (bfd *);
|
||||
|
||||
static bfd_boolean
|
||||
MY (write_object_contents) (bfd * abfd)
|
||||
{
|
||||
struct external_exec exec_bytes;
|
||||
struct internal_exec *execp = exec_hdr (abfd);
|
||||
|
||||
memset (&exec_bytes, 0, sizeof (exec_bytes));
|
||||
|
||||
obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
|
||||
|
||||
if (adata (abfd).magic == undecided_magic)
|
||||
NAME (aout,adjust_sizes_and_vmas) (abfd);
|
||||
execp->a_syms = 0;
|
||||
|
||||
execp->a_entry = bfd_get_start_address (abfd);
|
||||
|
||||
execp->a_trsize = ((obj_textsec (abfd)->reloc_count) *
|
||||
obj_reloc_entry_size (abfd));
|
||||
execp->a_drsize = ((obj_datasec (abfd)->reloc_count) *
|
||||
obj_reloc_entry_size (abfd));
|
||||
|
||||
N_SET_MACHTYPE (execp, 0xc);
|
||||
N_SET_FLAGS (execp, aout_backend_info (abfd)->exec_hdr_flags);
|
||||
|
||||
NAME (aout,swap_exec_header_out) (abfd, execp, &exec_bytes);
|
||||
|
||||
/* update fields not covered by default swap_exec_header_out */
|
||||
|
||||
/* this is really the sym table size but we store it in drelocs */
|
||||
H_PUT_32 (abfd, (bfd_get_symcount (abfd) * 12), exec_bytes.e_drelocs);
|
||||
|
||||
if (bfd_seek (abfd, (file_ptr) 0, FALSE) != 0
|
||||
|| (bfd_bwrite (&exec_bytes, (bfd_size_type) EXEC_BYTES_SIZE, abfd)
|
||||
!= EXEC_BYTES_SIZE))
|
||||
return FALSE;
|
||||
|
||||
/* Write out the symbols, and then the relocs. We must write out
|
||||
the symbols first so that we know the symbol indices. */
|
||||
|
||||
if (bfd_get_symcount (abfd) != 0)
|
||||
{
|
||||
/* Skip the relocs to where we want to put the symbols. */
|
||||
if (bfd_seek (abfd, (file_ptr) (N_DRELOFF (execp) + execp->a_drsize),
|
||||
SEEK_SET) != 0)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!MY (write_syms) (abfd))
|
||||
return FALSE;
|
||||
|
||||
if (bfd_get_symcount (abfd) != 0)
|
||||
{
|
||||
if (bfd_seek (abfd, (file_ptr) N_TRELOFF (execp), SEEK_CUR) != 0)
|
||||
return FALSE;
|
||||
if (!NAME (aout,squirt_out_relocs) (abfd, obj_textsec (abfd)))
|
||||
return FALSE;
|
||||
if (bfd_seek (abfd, (file_ptr) N_DRELOFF (execp), SEEK_CUR) != 0)
|
||||
return FALSE;
|
||||
if (!NAME (aout,squirt_out_relocs) (abfd, obj_datasec (abfd)))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Convert the hp symbol type to be the same as aout64.h usage so we
|
||||
can piggyback routines in aoutx.h. */
|
||||
|
||||
static void
|
||||
convert_sym_type (struct external_nlist *sym_pointer ATTRIBUTE_UNUSED,
|
||||
aout_symbol_type *cache_ptr,
|
||||
bfd *abfd ATTRIBUTE_UNUSED)
|
||||
{
|
||||
int name_type;
|
||||
int new_type;
|
||||
|
||||
name_type = (cache_ptr->type);
|
||||
new_type = 0;
|
||||
|
||||
if ((name_type & HP_SYMTYPE_ALIGN) != 0)
|
||||
{
|
||||
/* iou_error ("aligned symbol encountered: %s", name);*/
|
||||
name_type = 0;
|
||||
}
|
||||
|
||||
if (name_type == HP_SYMTYPE_FILENAME)
|
||||
new_type = N_FN;
|
||||
else
|
||||
{
|
||||
switch (name_type & HP_SYMTYPE_TYPE)
|
||||
{
|
||||
case HP_SYMTYPE_UNDEFINED:
|
||||
new_type = N_UNDF;
|
||||
break;
|
||||
|
||||
case HP_SYMTYPE_ABSOLUTE:
|
||||
new_type = N_ABS;
|
||||
break;
|
||||
|
||||
case HP_SYMTYPE_TEXT:
|
||||
new_type = N_TEXT;
|
||||
break;
|
||||
|
||||
case HP_SYMTYPE_DATA:
|
||||
new_type = N_DATA;
|
||||
break;
|
||||
|
||||
case HP_SYMTYPE_BSS:
|
||||
new_type = N_BSS;
|
||||
break;
|
||||
|
||||
case HP_SYMTYPE_COMMON:
|
||||
new_type = N_COMM;
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
break;
|
||||
}
|
||||
if (name_type & HP_SYMTYPE_EXTERNAL)
|
||||
new_type |= N_EXT;
|
||||
|
||||
if (name_type & HP_SECONDARY_SYMBOL)
|
||||
{
|
||||
switch (new_type)
|
||||
{
|
||||
default:
|
||||
abort ();
|
||||
case N_UNDF | N_EXT:
|
||||
/* If the value is nonzero, then just treat this as a
|
||||
common symbol. I don't know if this is correct in
|
||||
all cases, but it is more correct than treating it as
|
||||
a weak undefined symbol. */
|
||||
if (cache_ptr->symbol.value == 0)
|
||||
new_type = N_WEAKU;
|
||||
break;
|
||||
case N_ABS | N_EXT:
|
||||
new_type = N_WEAKA;
|
||||
break;
|
||||
case N_TEXT | N_EXT:
|
||||
new_type = N_WEAKT;
|
||||
break;
|
||||
case N_DATA | N_EXT:
|
||||
new_type = N_WEAKD;
|
||||
break;
|
||||
case N_BSS | N_EXT:
|
||||
new_type = N_WEAKB;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
cache_ptr->type = new_type;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
DESCRIPTION
|
||||
Swaps the information in an executable header taken from a raw
|
||||
byte stream memory image, into the internal exec_header
|
||||
structure.
|
||||
*/
|
||||
|
||||
void
|
||||
NAME (aout,swap_exec_header_in) (bfd *abfd,
|
||||
struct external_exec *raw_bytes,
|
||||
struct internal_exec *execp)
|
||||
{
|
||||
struct external_exec *bytes = (struct external_exec *) raw_bytes;
|
||||
|
||||
/* The internal_exec structure has some fields that are unused in this
|
||||
configuration (IE for i960), so ensure that all such uninitialized
|
||||
fields are zero'd out. There are places where two of these structs
|
||||
are memcmp'd, and thus the contents do matter. */
|
||||
memset (execp, 0, sizeof (struct internal_exec));
|
||||
/* Now fill in fields in the execp, from the bytes in the raw data. */
|
||||
execp->a_info = H_GET_32 (abfd, bytes->e_info);
|
||||
execp->a_text = GET_WORD (abfd, bytes->e_text);
|
||||
execp->a_data = GET_WORD (abfd, bytes->e_data);
|
||||
execp->a_bss = GET_WORD (abfd, bytes->e_bss);
|
||||
execp->a_syms = GET_WORD (abfd, bytes->e_syms);
|
||||
execp->a_entry = GET_WORD (abfd, bytes->e_entry);
|
||||
execp->a_trsize = GET_WORD (abfd, bytes->e_trsize);
|
||||
execp->a_drsize = GET_WORD (abfd, bytes->e_drsize);
|
||||
|
||||
/***************************************************************/
|
||||
/* check the header to see if it was generated by a bfd output */
|
||||
/* this is detected rather bizarrely by requiring a bunch of */
|
||||
/* header fields to be zero and an old unused field (now used) */
|
||||
/* to be set. */
|
||||
/***************************************************************/
|
||||
do
|
||||
{
|
||||
long syms;
|
||||
struct aout_data_struct *rawptr;
|
||||
bfd_size_type amt;
|
||||
|
||||
if (H_GET_32 (abfd, bytes->e_passize) != 0)
|
||||
break;
|
||||
if (H_GET_32 (abfd, bytes->e_syms) != 0)
|
||||
break;
|
||||
if (H_GET_32 (abfd, bytes->e_supsize) != 0)
|
||||
break;
|
||||
|
||||
syms = H_GET_32 (abfd, bytes->e_drelocs);
|
||||
if (syms == 0)
|
||||
break;
|
||||
|
||||
/* OK, we've passed the test as best as we can determine */
|
||||
execp->a_syms = syms;
|
||||
|
||||
/* allocate storage for where we will store this result */
|
||||
amt = sizeof (*rawptr);
|
||||
rawptr = (struct aout_data_struct *) bfd_zalloc (abfd, amt);
|
||||
|
||||
if (rawptr == NULL)
|
||||
return;
|
||||
abfd->tdata.aout_data = rawptr;
|
||||
obj_aout_subformat (abfd) = gnu_encap_format;
|
||||
}
|
||||
while (0);
|
||||
}
|
||||
|
||||
/* The hp symbol table is a bit different than other a.out targets. Instead
|
||||
of having an array of nlist items and an array of strings, hp's format
|
||||
has them mixed together in one structure. In addition, the strings are
|
||||
not null terminated. It looks something like this:
|
||||
|
||||
nlist element 1
|
||||
string1
|
||||
nlist element 2
|
||||
string2
|
||||
...
|
||||
|
||||
The whole symbol table is read as one chunk and then we march thru it
|
||||
and convert it to canonical form. As we march thru the table, we copy
|
||||
the nlist data into the internal form and we compact the strings and null
|
||||
terminate them, using storage from the already allocated symbol table:
|
||||
|
||||
string1
|
||||
null
|
||||
string2
|
||||
null
|
||||
...
|
||||
*/
|
||||
|
||||
bfd_boolean
|
||||
MY (slurp_symbol_table) (bfd *abfd)
|
||||
{
|
||||
bfd_size_type symbol_bytes;
|
||||
struct external_nlist *syms;
|
||||
struct external_nlist *sym_pointer;
|
||||
struct external_nlist *sym_end;
|
||||
char *strings;
|
||||
aout_symbol_type *cached;
|
||||
unsigned num_syms = 0;
|
||||
bfd_size_type amt;
|
||||
|
||||
/* If there's no work to be done, don't do any */
|
||||
if (obj_aout_symbols (abfd) != (aout_symbol_type *) NULL)
|
||||
return TRUE;
|
||||
symbol_bytes = exec_hdr (abfd)->a_syms;
|
||||
|
||||
amt = symbol_bytes + SYM_EXTRA_BYTES;
|
||||
strings = (char *) bfd_alloc (abfd, amt);
|
||||
if (!strings)
|
||||
return FALSE;
|
||||
syms = (struct external_nlist *) (strings + SYM_EXTRA_BYTES);
|
||||
if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0
|
||||
|| bfd_bread (syms, symbol_bytes, abfd) != symbol_bytes)
|
||||
{
|
||||
bfd_release (abfd, syms);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
sym_end = (struct external_nlist *) (((char *) syms) + symbol_bytes);
|
||||
|
||||
/* first, march thru the table and figure out how many symbols there are */
|
||||
for (sym_pointer = syms; sym_pointer < sym_end; sym_pointer++, num_syms++)
|
||||
{
|
||||
/* skip over the embedded symbol. */
|
||||
sym_pointer = (struct external_nlist *) (((char *) sym_pointer) +
|
||||
sym_pointer->e_length[0]);
|
||||
}
|
||||
|
||||
/* now that we know the symbol count, update the bfd header */
|
||||
bfd_get_symcount (abfd) = num_syms;
|
||||
|
||||
amt = num_syms;
|
||||
amt *= sizeof (aout_symbol_type);
|
||||
cached = (aout_symbol_type *) bfd_zalloc (abfd, amt);
|
||||
if (cached == NULL && num_syms != 0)
|
||||
return FALSE;
|
||||
|
||||
/* as we march thru the hp symbol table, convert it into a list of
|
||||
null terminated strings to hold the symbol names. Make sure any
|
||||
assignment to the strings pointer is done after we're thru using
|
||||
the nlist so we don't overwrite anything important. */
|
||||
|
||||
/* OK, now walk the new symtable, caching symbol properties */
|
||||
{
|
||||
aout_symbol_type *cache_ptr = cached;
|
||||
/* Run through table and copy values */
|
||||
for (sym_pointer = syms, cache_ptr = cached;
|
||||
sym_pointer < sym_end; sym_pointer++, cache_ptr++)
|
||||
{
|
||||
unsigned int length;
|
||||
cache_ptr->symbol.the_bfd = abfd;
|
||||
cache_ptr->symbol.value = GET_SWORD (abfd, sym_pointer->e_value);
|
||||
cache_ptr->desc = bfd_get_16 (abfd, sym_pointer->e_almod);
|
||||
cache_ptr->type = bfd_get_8 (abfd, sym_pointer->e_type);
|
||||
cache_ptr->symbol.udata.p = NULL;
|
||||
length = bfd_get_8 (abfd, sym_pointer->e_length);
|
||||
cache_ptr->other = length; /* other not used, save length here */
|
||||
|
||||
convert_sym_type (sym_pointer, cache_ptr, abfd);
|
||||
if (!translate_from_native_sym_flags (abfd, cache_ptr))
|
||||
return FALSE;
|
||||
|
||||
/********************************************************/
|
||||
/* for hpux, the 'length' value indicates the length of */
|
||||
/* the symbol name which follows the nlist entry. */
|
||||
/********************************************************/
|
||||
if (length)
|
||||
{
|
||||
/**************************************************************/
|
||||
/* the hp string is not null terminated so we create a new one*/
|
||||
/* by copying the string to overlap the just vacated nlist */
|
||||
/* structure before it in memory. */
|
||||
/**************************************************************/
|
||||
cache_ptr->symbol.name = strings;
|
||||
memcpy (strings, sym_pointer + 1, length);
|
||||
strings[length] = '\0';
|
||||
strings += length + 1;
|
||||
}
|
||||
else
|
||||
cache_ptr->symbol.name = (char *) NULL;
|
||||
|
||||
/* skip over the embedded symbol. */
|
||||
sym_pointer = (struct external_nlist *) (((char *) sym_pointer) +
|
||||
length);
|
||||
}
|
||||
}
|
||||
|
||||
obj_aout_symbols (abfd) = cached;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
MY (swap_std_reloc_in) (bfd *abfd,
|
||||
struct hp300hpux_reloc *bytes,
|
||||
arelent *cache_ptr,
|
||||
asymbol **symbols,
|
||||
bfd_size_type symcount ATTRIBUTE_UNUSED)
|
||||
{
|
||||
int r_index;
|
||||
int r_extern = 0;
|
||||
unsigned int r_length;
|
||||
int r_pcrel = 0;
|
||||
struct aoutdata *su = &(abfd->tdata.aout_data->a);
|
||||
|
||||
cache_ptr->address = H_GET_32 (abfd, bytes->r_address);
|
||||
r_index = H_GET_16 (abfd, bytes->r_index);
|
||||
|
||||
switch (bytes->r_type[0])
|
||||
{
|
||||
case HP_RSEGMENT_TEXT:
|
||||
r_index = N_TEXT;
|
||||
break;
|
||||
case HP_RSEGMENT_DATA:
|
||||
r_index = N_DATA;
|
||||
break;
|
||||
case HP_RSEGMENT_BSS:
|
||||
r_index = N_BSS;
|
||||
break;
|
||||
case HP_RSEGMENT_EXTERNAL:
|
||||
r_extern = 1;
|
||||
break;
|
||||
case HP_RSEGMENT_PCREL:
|
||||
r_extern = 1;
|
||||
r_pcrel = 1;
|
||||
break;
|
||||
case HP_RSEGMENT_RDLT:
|
||||
break;
|
||||
case HP_RSEGMENT_RPLT:
|
||||
break;
|
||||
case HP_RSEGMENT_NOOP:
|
||||
break;
|
||||
default:
|
||||
abort ();
|
||||
break;
|
||||
}
|
||||
|
||||
switch (bytes->r_length[0])
|
||||
{
|
||||
case HP_RLENGTH_BYTE:
|
||||
r_length = 0;
|
||||
break;
|
||||
case HP_RLENGTH_WORD:
|
||||
r_length = 1;
|
||||
break;
|
||||
case HP_RLENGTH_LONG:
|
||||
r_length = 2;
|
||||
break;
|
||||
default:
|
||||
abort ();
|
||||
break;
|
||||
}
|
||||
|
||||
cache_ptr->howto = howto_table_std + r_length + 4 * r_pcrel;
|
||||
/* FIXME-soon: Roll baserel, jmptable, relative bits into howto setting */
|
||||
|
||||
/* This macro uses the r_index value computed above */
|
||||
if (r_pcrel && r_extern)
|
||||
{
|
||||
/* The GNU linker assumes any offset from beginning of section */
|
||||
/* is already incorporated into the image while the HP linker */
|
||||
/* adds this in later. Add it in now... */
|
||||
MOVE_ADDRESS (-cache_ptr->address);
|
||||
}
|
||||
else
|
||||
{
|
||||
MOVE_ADDRESS (0);
|
||||
}
|
||||
}
|
||||
|
||||
bfd_boolean
|
||||
MY (slurp_reloc_table) (bfd *abfd, sec_ptr asect, asymbol **symbols)
|
||||
{
|
||||
bfd_size_type count;
|
||||
bfd_size_type reloc_size;
|
||||
void * relocs;
|
||||
arelent *reloc_cache;
|
||||
size_t each_size;
|
||||
struct hp300hpux_reloc *rptr;
|
||||
unsigned int counter;
|
||||
arelent *cache_ptr;
|
||||
|
||||
if (asect->relocation)
|
||||
return TRUE;
|
||||
|
||||
if (asect->flags & SEC_CONSTRUCTOR)
|
||||
return TRUE;
|
||||
|
||||
if (asect == obj_datasec (abfd))
|
||||
{
|
||||
reloc_size = exec_hdr (abfd)->a_drsize;
|
||||
goto doit;
|
||||
}
|
||||
|
||||
if (asect == obj_textsec (abfd))
|
||||
{
|
||||
reloc_size = exec_hdr (abfd)->a_trsize;
|
||||
goto doit;
|
||||
}
|
||||
|
||||
bfd_set_error (bfd_error_invalid_operation);
|
||||
return FALSE;
|
||||
|
||||
doit:
|
||||
if (bfd_seek (abfd, asect->rel_filepos, SEEK_SET) != 0)
|
||||
return FALSE;
|
||||
each_size = obj_reloc_entry_size (abfd);
|
||||
|
||||
count = reloc_size / each_size;
|
||||
|
||||
reloc_cache = (arelent *) bfd_zalloc (abfd, count * sizeof (arelent));
|
||||
if (!reloc_cache && count != 0)
|
||||
return FALSE;
|
||||
|
||||
relocs = bfd_alloc (abfd, reloc_size);
|
||||
if (!relocs && reloc_size != 0)
|
||||
{
|
||||
bfd_release (abfd, reloc_cache);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (bfd_bread (relocs, reloc_size, abfd) != reloc_size)
|
||||
{
|
||||
bfd_release (abfd, relocs);
|
||||
bfd_release (abfd, reloc_cache);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
rptr = (struct hp300hpux_reloc *) relocs;
|
||||
counter = 0;
|
||||
cache_ptr = reloc_cache;
|
||||
|
||||
for (; counter < count; counter++, rptr++, cache_ptr++)
|
||||
{
|
||||
MY (swap_std_reloc_in) (abfd, rptr, cache_ptr, symbols,
|
||||
(bfd_size_type) bfd_get_symcount (abfd));
|
||||
}
|
||||
|
||||
bfd_release (abfd, relocs);
|
||||
asect->relocation = reloc_cache;
|
||||
asect->reloc_count = count;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
/* The following functions are identical to functions in aoutx.h except */
|
||||
/* they refer to MY(func) rather than NAME(aout,func) and they also */
|
||||
/* call aout_32 versions if the input file was generated by gcc */
|
||||
/************************************************************************/
|
||||
|
||||
long aout_32_canonicalize_symtab (bfd *, asymbol **);
|
||||
long aout_32_get_symtab_upper_bound (bfd *);
|
||||
long aout_32_canonicalize_reloc (bfd *, sec_ptr, arelent **, asymbol **);
|
||||
|
||||
long
|
||||
MY (canonicalize_symtab) (bfd *abfd, asymbol **location)
|
||||
{
|
||||
unsigned int counter = 0;
|
||||
aout_symbol_type *symbase;
|
||||
|
||||
if (obj_aout_subformat (abfd) == gnu_encap_format)
|
||||
return aout_32_canonicalize_symtab (abfd, location);
|
||||
|
||||
if (!MY (slurp_symbol_table) (abfd))
|
||||
return -1;
|
||||
|
||||
for (symbase = obj_aout_symbols (abfd); counter++ < bfd_get_symcount (abfd);)
|
||||
*(location++) = (asymbol *) (symbase++);
|
||||
*location++ = 0;
|
||||
return bfd_get_symcount (abfd);
|
||||
}
|
||||
|
||||
long
|
||||
MY (get_symtab_upper_bound) (bfd *abfd)
|
||||
{
|
||||
if (obj_aout_subformat (abfd) == gnu_encap_format)
|
||||
return aout_32_get_symtab_upper_bound (abfd);
|
||||
if (!MY (slurp_symbol_table) (abfd))
|
||||
return -1;
|
||||
|
||||
return (bfd_get_symcount (abfd) + 1) * (sizeof (aout_symbol_type *));
|
||||
}
|
||||
|
||||
long
|
||||
MY (canonicalize_reloc) (bfd *abfd,
|
||||
sec_ptr section,
|
||||
arelent **relptr,
|
||||
asymbol **symbols)
|
||||
{
|
||||
arelent *tblptr = section->relocation;
|
||||
unsigned int count;
|
||||
|
||||
if (obj_aout_subformat (abfd) == gnu_encap_format)
|
||||
return aout_32_canonicalize_reloc (abfd, section, relptr, symbols);
|
||||
|
||||
if (!(tblptr || MY (slurp_reloc_table) (abfd, section, symbols)))
|
||||
return -1;
|
||||
|
||||
if (section->flags & SEC_CONSTRUCTOR)
|
||||
{
|
||||
arelent_chain *chain = section->constructor_chain;
|
||||
for (count = 0; count < section->reloc_count; count++)
|
||||
{
|
||||
*relptr++ = &chain->relent;
|
||||
chain = chain->next;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
tblptr = section->relocation;
|
||||
|
||||
for (count = 0; count++ < section->reloc_count;)
|
||||
{
|
||||
*relptr++ = tblptr++;
|
||||
}
|
||||
}
|
||||
*relptr = 0;
|
||||
|
||||
return section->reloc_count;
|
||||
}
|
||||
|
||||
#include "aout-target.h"
|
|
@ -28,7 +28,7 @@
|
|||
#include "bfd.h"
|
||||
#include "libbfd.h"
|
||||
|
||||
#if defined (HOST_HPPAHPUX) || defined (HOST_HP300HPUX) || defined (HOST_HPPAMPEIX)
|
||||
#if defined (HOST_HPPAHPUX) || defined (HOST_HPPAMPEIX)
|
||||
|
||||
/* FIXME: sys/core.h doesn't exist for HPUX version 7. HPUX version
|
||||
5, 6, and 7 core files seem to be standard trad-core.c type core
|
||||
|
|
|
@ -349,7 +349,7 @@ typedef struct aout_symbol
|
|||
|
||||
enum aout_subformat {
|
||||
default_format = 0,
|
||||
/* Used on HP 9000/300 running HP/UX. See hp300hpux.c. */
|
||||
/* Used on HP 9000/300 running HP/UX. */
|
||||
gnu_encap_format,
|
||||
/* Used on Linux, 386BSD, etc. See include/aout/aout64.h. */
|
||||
q_magic_format
|
||||
|
|
|
@ -134,8 +134,6 @@ const bfd_target *bfd_generic_archive_p
|
|||
(bfd *);
|
||||
bfd_boolean bfd_slurp_armap
|
||||
(bfd *);
|
||||
bfd_boolean bfd_slurp_bsd_armap_f2
|
||||
(bfd *);
|
||||
#define bfd_slurp_bsd_armap bfd_slurp_armap
|
||||
#define bfd_slurp_coff_armap bfd_slurp_armap
|
||||
bfd_boolean _bfd_archive_64_bit_slurp_armap
|
||||
|
|
|
@ -139,8 +139,6 @@ const bfd_target *bfd_generic_archive_p
|
|||
(bfd *);
|
||||
bfd_boolean bfd_slurp_armap
|
||||
(bfd *);
|
||||
bfd_boolean bfd_slurp_bsd_armap_f2
|
||||
(bfd *);
|
||||
#define bfd_slurp_bsd_armap bfd_slurp_armap
|
||||
#define bfd_slurp_coff_armap bfd_slurp_armap
|
||||
bfd_boolean _bfd_archive_64_bit_slurp_armap
|
||||
|
|
|
@ -1,83 +0,0 @@
|
|||
/* BFD internal declarations for Oasys file format handling.
|
||||
Copyright (C) 1990-2018 Free Software Foundation, Inc.
|
||||
Scrawled by Steve Chamberlain of Cygnus Support.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
typedef struct _oasys_symbol
|
||||
{
|
||||
asymbol symbol;
|
||||
} oasys_symbol_type;
|
||||
|
||||
typedef struct _oasys_reloc {
|
||||
arelent relent;
|
||||
struct _oasys_reloc *next;
|
||||
unsigned int symbol;
|
||||
} oasys_reloc_type;
|
||||
|
||||
|
||||
#define oasys_symbol(x) ((oasys_symbol_type *)(x))
|
||||
#define oasys_per_section(x) ((oasys_per_section_type *)(x->used_by_bfd))
|
||||
|
||||
typedef struct _oasys_per_section
|
||||
{
|
||||
asection *section;
|
||||
bfd_byte *data;
|
||||
bfd_vma offset;
|
||||
bfd_boolean had_vma;
|
||||
oasys_reloc_type **reloc_tail_ptr;
|
||||
bfd_vma pc;
|
||||
|
||||
|
||||
file_ptr current_pos;
|
||||
unsigned int current_byte;
|
||||
bfd_boolean initialized;
|
||||
} oasys_per_section_type;
|
||||
|
||||
#define NSECTIONS 10
|
||||
|
||||
typedef struct _oasys_ar_obstack {
|
||||
file_ptr file_offset;
|
||||
bfd *abfd;
|
||||
} oasys_ar_obstack_type;
|
||||
|
||||
|
||||
typedef struct _oasys_module_info {
|
||||
file_ptr pos;
|
||||
unsigned int size;
|
||||
bfd *abfd;
|
||||
char *name;
|
||||
} oasys_module_info_type;
|
||||
|
||||
typedef struct _oasys_ar_data {
|
||||
oasys_module_info_type *module;
|
||||
unsigned int module_count;
|
||||
unsigned int module_index;
|
||||
} oasys_ar_data_type;
|
||||
|
||||
typedef struct _oasys_data {
|
||||
char *strings;
|
||||
asymbol *symbols;
|
||||
unsigned int symbol_string_length;
|
||||
asection *sections[OASYS_MAX_SEC_COUNT];
|
||||
file_ptr first_data_record;
|
||||
} oasys_data_type;
|
||||
|
||||
#define OASYS_DATA(abfd) ((abfd)->tdata.oasys_obj_data)
|
||||
#define OASYS_AR_DATA(abfd) ((abfd)->tdata.oasys_ar_data)
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
/* BFD back-end for NetBSD/m68k a.out-ish binaries.
|
||||
Copyright (C) 1990-2018 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#define TARGET_IS_BIG_ENDIAN_P
|
||||
|
||||
#define TARGET_PAGE_SIZE 0x1000
|
||||
|
||||
#define DEFAULT_ARCH bfd_arch_m68k
|
||||
#define DEFAULT_MID M_68K4K_NETBSD
|
||||
|
||||
/* Do not "beautify" the CONCAT* macro args. Traditional C will not
|
||||
remove whitespace added here, and thus will fail to concatenate
|
||||
the tokens. */
|
||||
#define MY(OP) CONCAT2 (m68k_aout_4knbsd_,OP)
|
||||
|
||||
/* This needs to start with a.out so GDB knows it is an a.out variant. */
|
||||
#define TARGETNAME "a.out-m68k4k-netbsd"
|
||||
|
||||
#include "netbsd.h"
|
737
bfd/m68klinux.c
737
bfd/m68klinux.c
|
@ -1,737 +0,0 @@
|
|||
/* BFD back-end for linux flavored m68k a.out binaries.
|
||||
Copyright (C) 1992-2018 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#define TARGET_PAGE_SIZE 4096
|
||||
#define ZMAGIC_DISK_BLOCK_SIZE 1024
|
||||
#define SEGMENT_SIZE TARGET_PAGE_SIZE
|
||||
#define TEXT_START_ADDR 0x0
|
||||
|
||||
#define MACHTYPE_OK(mtype) ((mtype) == M_68020 || (mtype) == M_UNKNOWN)
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "bfd.h"
|
||||
#include "libbfd.h"
|
||||
#include "aout/aout64.h"
|
||||
#include "aout/stab_gnu.h"
|
||||
#include "aout/ar.h"
|
||||
#include "libaout.h" /* BFD a.out internal data structures */
|
||||
|
||||
#define TARGET_IS_BIG_ENDIAN_P
|
||||
#define DEFAULT_ARCH bfd_arch_m68k
|
||||
|
||||
/* Do not "beautify" the CONCAT* macro args. Traditional C will not
|
||||
remove whitespace added here, and thus will fail to concatenate
|
||||
the tokens. */
|
||||
#define MY(OP) CONCAT2 (m68k_aout_linux_,OP)
|
||||
#define TARGETNAME "a.out-m68k-linux"
|
||||
|
||||
extern const bfd_target MY(vec);
|
||||
|
||||
/* We always generate QMAGIC files in preference to ZMAGIC files. It
|
||||
would be possible to make this a linker option, if that ever
|
||||
becomes important. */
|
||||
|
||||
static void MY_final_link_callback
|
||||
(bfd *, file_ptr *, file_ptr *, file_ptr *);
|
||||
|
||||
static bfd_boolean
|
||||
m68klinux_bfd_final_link (bfd *abfd,
|
||||
struct bfd_link_info *info)
|
||||
{
|
||||
obj_aout_subformat (abfd) = q_magic_format;
|
||||
return NAME(aout,final_link) (abfd, info, MY_final_link_callback);
|
||||
}
|
||||
|
||||
#define MY_bfd_final_link m68klinux_bfd_final_link
|
||||
|
||||
/* Set the machine type correctly. */
|
||||
|
||||
static bfd_boolean
|
||||
m68klinux_write_object_contents (bfd *abfd)
|
||||
{
|
||||
struct external_exec exec_bytes;
|
||||
struct internal_exec *execp = exec_hdr (abfd);
|
||||
|
||||
N_SET_MACHTYPE (execp, M_68020);
|
||||
|
||||
obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
|
||||
|
||||
WRITE_HEADERS (abfd, execp);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#define MY_write_object_contents m68klinux_write_object_contents
|
||||
|
||||
/* Code to link against Linux a.out shared libraries. */
|
||||
|
||||
/* See if a symbol name is a reference to the global offset table. */
|
||||
|
||||
#ifndef GOT_REF_PREFIX
|
||||
#define GOT_REF_PREFIX "__GOT_"
|
||||
#endif
|
||||
|
||||
#define IS_GOT_SYM(name) (CONST_STRNEQ (name, GOT_REF_PREFIX))
|
||||
|
||||
/* See if a symbol name is a reference to the procedure linkage table. */
|
||||
|
||||
#ifndef PLT_REF_PREFIX
|
||||
#define PLT_REF_PREFIX "__PLT_"
|
||||
#endif
|
||||
|
||||
#define IS_PLT_SYM(name) (CONST_STRNEQ (name, PLT_REF_PREFIX))
|
||||
|
||||
/* This string is used to generate specialized error messages. */
|
||||
|
||||
#ifndef NEEDS_SHRLIB
|
||||
#define NEEDS_SHRLIB "__NEEDS_SHRLIB_"
|
||||
#endif
|
||||
|
||||
/* This special symbol is a set vector that contains a list of
|
||||
pointers to fixup tables. It will be present in any dynamically
|
||||
linked file. The linker generated fixup table should also be added
|
||||
to the list, and it should always appear in the second slot (the
|
||||
first one is a dummy with a magic number that is defined in
|
||||
crt0.o). */
|
||||
|
||||
#ifndef SHARABLE_CONFLICTS
|
||||
#define SHARABLE_CONFLICTS "__SHARABLE_CONFLICTS__"
|
||||
#endif
|
||||
|
||||
/* We keep a list of fixups. The terminology is a bit strange, but
|
||||
each fixup contains two 32 bit numbers. A regular fixup contains
|
||||
an address and a pointer, and at runtime we should store the
|
||||
address at the location pointed to by the pointer. A builtin fixup
|
||||
contains two pointers, and we should read the address using one
|
||||
pointer and store it at the location pointed to by the other
|
||||
pointer. Builtin fixups come into play when we have duplicate
|
||||
__GOT__ symbols for the same variable. The builtin fixup will copy
|
||||
the GOT pointer from one over into the other. */
|
||||
|
||||
struct fixup
|
||||
{
|
||||
struct fixup *next;
|
||||
struct linux_link_hash_entry *h;
|
||||
bfd_vma value;
|
||||
|
||||
/* Nonzero if this is a jump instruction that needs to be fixed,
|
||||
zero if this is just a pointer */
|
||||
char jump;
|
||||
|
||||
char builtin;
|
||||
};
|
||||
|
||||
/* We don't need a special hash table entry structure, but we do need
|
||||
to keep some information between linker passes, so we use a special
|
||||
hash table. */
|
||||
|
||||
struct linux_link_hash_entry
|
||||
{
|
||||
struct aout_link_hash_entry root;
|
||||
};
|
||||
|
||||
struct linux_link_hash_table
|
||||
{
|
||||
struct aout_link_hash_table root;
|
||||
|
||||
/* First dynamic object found in link. */
|
||||
bfd *dynobj;
|
||||
|
||||
/* Number of fixups. */
|
||||
size_t fixup_count;
|
||||
|
||||
/* Number of builtin fixups. */
|
||||
size_t local_builtins;
|
||||
|
||||
/* List of fixups. */
|
||||
struct fixup *fixup_list;
|
||||
};
|
||||
|
||||
/* Routine to create an entry in an Linux link hash table. */
|
||||
|
||||
static struct bfd_hash_entry *
|
||||
linux_link_hash_newfunc (struct bfd_hash_entry *entry,
|
||||
struct bfd_hash_table *table,
|
||||
const char *string)
|
||||
{
|
||||
struct linux_link_hash_entry *ret = (struct linux_link_hash_entry *) entry;
|
||||
|
||||
/* Allocate the structure if it has not already been allocated by a
|
||||
subclass. */
|
||||
if (ret == (struct linux_link_hash_entry *) NULL)
|
||||
ret = ((struct linux_link_hash_entry *)
|
||||
bfd_hash_allocate (table, sizeof (struct linux_link_hash_entry)));
|
||||
if (ret == NULL)
|
||||
return (struct bfd_hash_entry *) ret;
|
||||
|
||||
/* Call the allocation method of the superclass. */
|
||||
ret = ((struct linux_link_hash_entry *)
|
||||
NAME(aout,link_hash_newfunc) ((struct bfd_hash_entry *) ret,
|
||||
table, string));
|
||||
if (ret != NULL)
|
||||
{
|
||||
/* Set local fields; there aren't any. */
|
||||
}
|
||||
|
||||
return (struct bfd_hash_entry *) ret;
|
||||
}
|
||||
|
||||
/* Create a Linux link hash table. */
|
||||
|
||||
static struct bfd_link_hash_table *
|
||||
linux_link_hash_table_create (bfd *abfd)
|
||||
{
|
||||
struct linux_link_hash_table *ret;
|
||||
bfd_size_type amt = sizeof (struct linux_link_hash_table);
|
||||
|
||||
ret = (struct linux_link_hash_table *) bfd_zmalloc (amt);
|
||||
if (ret == (struct linux_link_hash_table *) NULL)
|
||||
{
|
||||
bfd_set_error (bfd_error_no_memory);
|
||||
return (struct bfd_link_hash_table *) NULL;
|
||||
}
|
||||
if (!NAME(aout,link_hash_table_init) (&ret->root, abfd,
|
||||
linux_link_hash_newfunc,
|
||||
sizeof (struct linux_link_hash_entry)))
|
||||
{
|
||||
free (ret);
|
||||
return (struct bfd_link_hash_table *) NULL;
|
||||
}
|
||||
|
||||
return &ret->root.root;
|
||||
}
|
||||
|
||||
/* Look up an entry in a Linux link hash table. */
|
||||
|
||||
#define linux_link_hash_lookup(table, string, create, copy, follow) \
|
||||
((struct linux_link_hash_entry *) \
|
||||
aout_link_hash_lookup (&(table)->root, (string), (create), (copy),\
|
||||
(follow)))
|
||||
|
||||
/* Traverse a Linux link hash table. */
|
||||
|
||||
#define linux_link_hash_traverse(table, func, info) \
|
||||
(aout_link_hash_traverse \
|
||||
(&(table)->root, \
|
||||
(bfd_boolean (*) (struct aout_link_hash_entry *, void *)) (func), \
|
||||
(info)))
|
||||
|
||||
/* Get the Linux link hash table from the info structure. This is
|
||||
just a cast. */
|
||||
|
||||
#define linux_hash_table(p) ((struct linux_link_hash_table *) ((p)->hash))
|
||||
|
||||
/* Store the information for a new fixup. */
|
||||
|
||||
static struct fixup *
|
||||
new_fixup (struct bfd_link_info *info,
|
||||
struct linux_link_hash_entry *h,
|
||||
bfd_vma value,
|
||||
int builtin)
|
||||
{
|
||||
struct fixup *f;
|
||||
|
||||
f = (struct fixup *) bfd_hash_allocate (&info->hash->table,
|
||||
sizeof (struct fixup));
|
||||
if (f == NULL)
|
||||
return f;
|
||||
f->next = linux_hash_table (info)->fixup_list;
|
||||
linux_hash_table (info)->fixup_list = f;
|
||||
f->h = h;
|
||||
f->value = value;
|
||||
f->builtin = builtin;
|
||||
f->jump = 0;
|
||||
++linux_hash_table (info)->fixup_count;
|
||||
return f;
|
||||
}
|
||||
|
||||
/* We come here once we realize that we are going to link to a shared
|
||||
library. We need to create a special section that contains the
|
||||
fixup table, and we ultimately need to add a pointer to this into
|
||||
the set vector for SHARABLE_CONFLICTS. At this point we do not
|
||||
know the size of the section, but that's OK - we just need to
|
||||
create it for now. */
|
||||
|
||||
static bfd_boolean
|
||||
linux_link_create_dynamic_sections (bfd *abfd,
|
||||
struct bfd_link_info *info ATTRIBUTE_UNUSED)
|
||||
{
|
||||
flagword flags;
|
||||
asection *s;
|
||||
|
||||
/* Note that we set the SEC_IN_MEMORY flag. */
|
||||
flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY;
|
||||
|
||||
/* We choose to use the name ".linux-dynamic" for the fixup table.
|
||||
Why not? */
|
||||
s = bfd_make_section_with_flags (abfd, ".linux-dynamic", flags);
|
||||
if (s == NULL
|
||||
|| ! bfd_set_section_alignment (abfd, s, 2))
|
||||
return FALSE;
|
||||
s->size = 0;
|
||||
s->contents = 0;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Function to add a single symbol to the linker hash table. This is
|
||||
a wrapper around _bfd_generic_link_add_one_symbol which handles the
|
||||
tweaking needed for dynamic linking support. */
|
||||
|
||||
static bfd_boolean
|
||||
linux_add_one_symbol (struct bfd_link_info *info,
|
||||
bfd *abfd,
|
||||
const char *name,
|
||||
flagword flags,
|
||||
asection *section,
|
||||
bfd_vma value,
|
||||
const char *string,
|
||||
bfd_boolean copy,
|
||||
bfd_boolean collect,
|
||||
struct bfd_link_hash_entry **hashp)
|
||||
{
|
||||
struct linux_link_hash_entry *h;
|
||||
bfd_boolean insert;
|
||||
|
||||
/* Look up and see if we already have this symbol in the hash table.
|
||||
If we do, and the defining entry is from a shared library, we
|
||||
need to create the dynamic sections.
|
||||
|
||||
FIXME: What if abfd->xvec != info->output_bfd->xvec? We may
|
||||
want to be able to link Linux a.out and ELF objects together,
|
||||
but serious confusion is possible. */
|
||||
|
||||
insert = FALSE;
|
||||
|
||||
if (! bfd_link_relocatable (info)
|
||||
&& linux_hash_table (info)->dynobj == NULL
|
||||
&& strcmp (name, SHARABLE_CONFLICTS) == 0
|
||||
&& (flags & BSF_CONSTRUCTOR) != 0
|
||||
&& abfd->xvec == info->output_bfd->xvec)
|
||||
{
|
||||
if (! linux_link_create_dynamic_sections (abfd, info))
|
||||
return FALSE;
|
||||
linux_hash_table (info)->dynobj = abfd;
|
||||
insert = TRUE;
|
||||
}
|
||||
|
||||
if (bfd_is_abs_section (section)
|
||||
&& abfd->xvec == info->output_bfd->xvec)
|
||||
{
|
||||
h = linux_link_hash_lookup (linux_hash_table (info), name, FALSE,
|
||||
FALSE, FALSE);
|
||||
if (h != NULL
|
||||
&& (h->root.root.type == bfd_link_hash_defined
|
||||
|| h->root.root.type == bfd_link_hash_defweak))
|
||||
{
|
||||
struct fixup *f;
|
||||
|
||||
if (hashp != NULL)
|
||||
*hashp = (struct bfd_link_hash_entry *) h;
|
||||
|
||||
f = new_fixup (info, h, value, ! IS_PLT_SYM (name));
|
||||
if (f == NULL)
|
||||
return FALSE;
|
||||
f->jump = IS_PLT_SYM (name);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
/* Do the usual procedure for adding a symbol. */
|
||||
if (! _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section,
|
||||
value, string, copy, collect,
|
||||
hashp))
|
||||
return FALSE;
|
||||
|
||||
/* Insert a pointer to our table in the set vector. The dynamic
|
||||
linker requires this information */
|
||||
if (insert)
|
||||
{
|
||||
asection *s;
|
||||
|
||||
/* Here we do our special thing to add the pointer to the
|
||||
dynamic section in the SHARABLE_CONFLICTS set vector. */
|
||||
s = bfd_get_section_by_name (linux_hash_table (info)->dynobj,
|
||||
".linux-dynamic");
|
||||
BFD_ASSERT (s != NULL);
|
||||
|
||||
if (! (_bfd_generic_link_add_one_symbol
|
||||
(info, linux_hash_table (info)->dynobj, SHARABLE_CONFLICTS,
|
||||
BSF_GLOBAL | BSF_CONSTRUCTOR, s, (bfd_vma) 0, NULL,
|
||||
FALSE, FALSE, NULL)))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* We will crawl the hash table and come here for every global symbol.
|
||||
We will examine each entry and see if there are indications that we
|
||||
need to add a fixup. There are two possible cases - one is where
|
||||
you have duplicate definitions of PLT or GOT symbols - these will
|
||||
have already been caught and added as "builtin" fixups. If we find
|
||||
that the corresponding non PLT/GOT symbol is also present, we
|
||||
convert it to a regular fixup instead.
|
||||
|
||||
This function is called via linux_link_hash_traverse. */
|
||||
|
||||
static bfd_boolean
|
||||
linux_tally_symbols (struct linux_link_hash_entry *h,
|
||||
void * data)
|
||||
{
|
||||
struct bfd_link_info *info = (struct bfd_link_info *) data;
|
||||
struct fixup *f, *f1;
|
||||
int is_plt;
|
||||
struct linux_link_hash_entry *h1, *h2;
|
||||
bfd_boolean exists;
|
||||
|
||||
if (h->root.root.type == bfd_link_hash_undefined
|
||||
&& CONST_STRNEQ (h->root.root.root.string, NEEDS_SHRLIB))
|
||||
{
|
||||
const char *name;
|
||||
char *p;
|
||||
char *alloc = NULL;
|
||||
|
||||
name = h->root.root.root.string + sizeof NEEDS_SHRLIB - 1;
|
||||
p = strrchr (name, '_');
|
||||
if (p != NULL)
|
||||
alloc = (char *) bfd_malloc ((bfd_size_type) strlen (name) + 1);
|
||||
|
||||
if (p == NULL || alloc == NULL)
|
||||
_bfd_error_handler (_("output file requires shared library `%s'"),
|
||||
name);
|
||||
else
|
||||
{
|
||||
strcpy (alloc, name);
|
||||
p = strrchr (alloc, '_');
|
||||
*p++ = '\0';
|
||||
_bfd_error_handler
|
||||
/* xgettext:c-format */
|
||||
(_("output file requires shared library `%s.so.%s'"),
|
||||
alloc, p);
|
||||
free (alloc);
|
||||
}
|
||||
|
||||
abort ();
|
||||
}
|
||||
|
||||
/* If this symbol is not a PLT/GOT, we do not even need to look at it */
|
||||
is_plt = IS_PLT_SYM (h->root.root.root.string);
|
||||
|
||||
if (is_plt || IS_GOT_SYM (h->root.root.root.string))
|
||||
{
|
||||
/* Look up this symbol twice. Once just as a regular lookup,
|
||||
and then again following all of the indirect links until we
|
||||
reach a real symbol. */
|
||||
h1 = linux_link_hash_lookup (linux_hash_table (info),
|
||||
(h->root.root.root.string
|
||||
+ sizeof PLT_REF_PREFIX - 1),
|
||||
FALSE, FALSE, TRUE);
|
||||
/* h2 does not follow indirect symbols. */
|
||||
h2 = linux_link_hash_lookup (linux_hash_table (info),
|
||||
(h->root.root.root.string
|
||||
+ sizeof PLT_REF_PREFIX - 1),
|
||||
FALSE, FALSE, FALSE);
|
||||
|
||||
/* The real symbol must exist but if it is also an ABS symbol,
|
||||
there is no need to have a fixup. This is because they both
|
||||
came from the same library. If on the other hand, we had to
|
||||
use an indirect symbol to get to the real symbol, we add the
|
||||
fixup anyway, since there are cases where these symbols come
|
||||
from different shared libraries */
|
||||
if (h1 != NULL
|
||||
&& (((h1->root.root.type == bfd_link_hash_defined
|
||||
|| h1->root.root.type == bfd_link_hash_defweak)
|
||||
&& ! bfd_is_abs_section (h1->root.root.u.def.section))
|
||||
|| h2->root.root.type == bfd_link_hash_indirect))
|
||||
{
|
||||
/* See if there is a "builtin" fixup already present
|
||||
involving this symbol. If so, convert it to a regular
|
||||
fixup. In the end, this relaxes some of the requirements
|
||||
about the order of performing fixups. */
|
||||
exists = FALSE;
|
||||
for (f1 = linux_hash_table (info)->fixup_list;
|
||||
f1 != NULL;
|
||||
f1 = f1->next)
|
||||
{
|
||||
if ((f1->h != h && f1->h != h1)
|
||||
|| (! f1->builtin && ! f1->jump))
|
||||
continue;
|
||||
if (f1->h == h1)
|
||||
exists = TRUE;
|
||||
if (! exists
|
||||
&& bfd_is_abs_section (h->root.root.u.def.section))
|
||||
{
|
||||
f = new_fixup (info, h1, f1->h->root.root.u.def.value, 0);
|
||||
f->jump = is_plt;
|
||||
}
|
||||
f1->h = h1;
|
||||
f1->jump = is_plt;
|
||||
f1->builtin = 0;
|
||||
exists = TRUE;
|
||||
}
|
||||
if (! exists
|
||||
&& bfd_is_abs_section (h->root.root.u.def.section))
|
||||
{
|
||||
f = new_fixup (info, h1, h->root.root.u.def.value, 0);
|
||||
if (f == NULL)
|
||||
{
|
||||
/* FIXME: No way to return error. */
|
||||
abort ();
|
||||
}
|
||||
f->jump = is_plt;
|
||||
}
|
||||
}
|
||||
|
||||
/* Quick and dirty way of stripping these symbols from the
|
||||
symtab. */
|
||||
if (bfd_is_abs_section (h->root.root.u.def.section))
|
||||
h->root.written = TRUE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* This is called to set the size of the .linux-dynamic section is.
|
||||
It is called by the Linux linker emulation before_allocation
|
||||
routine. We have finished reading all of the input files, and now
|
||||
we just scan the hash tables to find out how many additional fixups
|
||||
are required. */
|
||||
|
||||
bfd_boolean
|
||||
bfd_m68klinux_size_dynamic_sections (bfd *output_bfd,
|
||||
struct bfd_link_info *info)
|
||||
{
|
||||
struct fixup *f;
|
||||
asection *s;
|
||||
|
||||
if (output_bfd->xvec != &MY(vec))
|
||||
return TRUE;
|
||||
|
||||
/* First find the fixups... */
|
||||
linux_link_hash_traverse (linux_hash_table (info),
|
||||
linux_tally_symbols,
|
||||
info);
|
||||
|
||||
/* If there are builtin fixups, leave room for a marker. This is
|
||||
used by the dynamic linker so that it knows that all that follow
|
||||
are builtin fixups instead of regular fixups. */
|
||||
for (f = linux_hash_table (info)->fixup_list; f != NULL; f = f->next)
|
||||
{
|
||||
if (f->builtin)
|
||||
{
|
||||
++linux_hash_table (info)->fixup_count;
|
||||
++linux_hash_table (info)->local_builtins;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (linux_hash_table (info)->dynobj == NULL)
|
||||
{
|
||||
if (linux_hash_table (info)->fixup_count > 0)
|
||||
abort ();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Allocate memory for our fixup table. We will fill it in later. */
|
||||
s = bfd_get_section_by_name (linux_hash_table (info)->dynobj,
|
||||
".linux-dynamic");
|
||||
if (s != NULL)
|
||||
{
|
||||
s->size = linux_hash_table (info)->fixup_count + 1;
|
||||
s->size *= 8;
|
||||
s->contents = (bfd_byte *) bfd_zalloc (output_bfd, s->size);
|
||||
if (s->contents == NULL)
|
||||
{
|
||||
bfd_set_error (bfd_error_no_memory);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* We come here once we are ready to actually write the fixup table to
|
||||
the output file. Scan the fixup tables and so forth and generate
|
||||
the stuff we need. */
|
||||
|
||||
static bfd_boolean
|
||||
linux_finish_dynamic_link (bfd *output_bfd, struct bfd_link_info *info)
|
||||
{
|
||||
asection *s, *os, *is;
|
||||
bfd_byte *fixup_table;
|
||||
struct linux_link_hash_entry *h;
|
||||
struct fixup *f;
|
||||
unsigned int new_addr;
|
||||
int section_offset;
|
||||
unsigned int fixups_written;
|
||||
|
||||
if (linux_hash_table (info)->dynobj == NULL)
|
||||
return TRUE;
|
||||
|
||||
s = bfd_get_section_by_name (linux_hash_table (info)->dynobj,
|
||||
".linux-dynamic");
|
||||
BFD_ASSERT (s != NULL);
|
||||
os = s->output_section;
|
||||
fixups_written = 0;
|
||||
|
||||
#ifdef LINUX_LINK_DEBUG
|
||||
printf ("Fixup table file offset: %x VMA: %x\n",
|
||||
os->filepos + s->output_offset,
|
||||
os->vma + s->output_offset);
|
||||
#endif
|
||||
|
||||
fixup_table = s->contents;
|
||||
bfd_put_32 (output_bfd, (bfd_vma) linux_hash_table (info)->fixup_count,
|
||||
fixup_table);
|
||||
fixup_table += 4;
|
||||
|
||||
/* Fill in fixup table. */
|
||||
for (f = linux_hash_table (info)->fixup_list; f != NULL; f = f->next)
|
||||
{
|
||||
if (f->builtin)
|
||||
continue;
|
||||
|
||||
if (f->h->root.root.type != bfd_link_hash_defined
|
||||
&& f->h->root.root.type != bfd_link_hash_defweak)
|
||||
{
|
||||
_bfd_error_handler
|
||||
(_("symbol %s not defined for fixups"),
|
||||
f->h->root.root.root.string);
|
||||
continue;
|
||||
}
|
||||
|
||||
is = f->h->root.root.u.def.section;
|
||||
section_offset = is->output_section->vma + is->output_offset;
|
||||
new_addr = f->h->root.root.u.def.value + section_offset;
|
||||
|
||||
#ifdef LINUX_LINK_DEBUG
|
||||
printf ("Fixup(%d) %s: %x %x\n",f->jump, f->h->root.root.string,
|
||||
new_addr, f->value);
|
||||
#endif
|
||||
|
||||
if (f->jump)
|
||||
{
|
||||
bfd_put_32 (output_bfd, (bfd_vma) new_addr, fixup_table);
|
||||
fixup_table += 4;
|
||||
bfd_put_32 (output_bfd, f->value + 2, fixup_table);
|
||||
fixup_table += 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
bfd_put_32 (output_bfd, (bfd_vma) new_addr, fixup_table);
|
||||
fixup_table += 4;
|
||||
bfd_put_32 (output_bfd, f->value, fixup_table);
|
||||
fixup_table += 4;
|
||||
}
|
||||
++fixups_written;
|
||||
}
|
||||
|
||||
if (linux_hash_table (info)->local_builtins != 0)
|
||||
{
|
||||
/* Special marker so we know to switch to the other type of fixup */
|
||||
bfd_put_32 (output_bfd, (bfd_vma) 0, fixup_table);
|
||||
fixup_table += 4;
|
||||
bfd_put_32 (output_bfd, (bfd_vma) 0, fixup_table);
|
||||
fixup_table += 4;
|
||||
++fixups_written;
|
||||
for (f = linux_hash_table (info)->fixup_list; f != NULL; f = f->next)
|
||||
{
|
||||
if (! f->builtin)
|
||||
continue;
|
||||
|
||||
if (f->h->root.root.type != bfd_link_hash_defined
|
||||
&& f->h->root.root.type != bfd_link_hash_defweak)
|
||||
{
|
||||
_bfd_error_handler
|
||||
(_("symbol %s not defined for fixups"),
|
||||
f->h->root.root.root.string);
|
||||
continue;
|
||||
}
|
||||
|
||||
is = f->h->root.root.u.def.section;
|
||||
section_offset = is->output_section->vma + is->output_offset;
|
||||
new_addr = f->h->root.root.u.def.value + section_offset;
|
||||
|
||||
#ifdef LINUX_LINK_DEBUG
|
||||
printf ("Fixup(B) %s: %x %x\n", f->h->root.root.string,
|
||||
new_addr, f->value);
|
||||
#endif
|
||||
|
||||
bfd_put_32 (output_bfd, (bfd_vma) new_addr, fixup_table);
|
||||
fixup_table += 4;
|
||||
bfd_put_32 (output_bfd, f->value, fixup_table);
|
||||
fixup_table += 4;
|
||||
++fixups_written;
|
||||
}
|
||||
}
|
||||
|
||||
if (linux_hash_table (info)->fixup_count != fixups_written)
|
||||
{
|
||||
_bfd_error_handler (_("warning: fixup count mismatch"));
|
||||
while (linux_hash_table (info)->fixup_count > fixups_written)
|
||||
{
|
||||
bfd_put_32 (output_bfd, (bfd_vma) 0, fixup_table);
|
||||
fixup_table += 4;
|
||||
bfd_put_32 (output_bfd, (bfd_vma) 0, fixup_table);
|
||||
fixup_table += 4;
|
||||
++fixups_written;
|
||||
}
|
||||
}
|
||||
|
||||
h = linux_link_hash_lookup (linux_hash_table (info),
|
||||
"__BUILTIN_FIXUPS__",
|
||||
FALSE, FALSE, FALSE);
|
||||
|
||||
if (h != NULL
|
||||
&& (h->root.root.type == bfd_link_hash_defined
|
||||
|| h->root.root.type == bfd_link_hash_defweak))
|
||||
{
|
||||
is = h->root.root.u.def.section;
|
||||
section_offset = is->output_section->vma + is->output_offset;
|
||||
new_addr = h->root.root.u.def.value + section_offset;
|
||||
|
||||
#ifdef LINUX_LINK_DEBUG
|
||||
printf ("Builtin fixup table at %x\n", new_addr);
|
||||
#endif
|
||||
|
||||
bfd_put_32 (output_bfd, (bfd_vma) new_addr, fixup_table);
|
||||
}
|
||||
else
|
||||
bfd_put_32 (output_bfd, (bfd_vma) 0, fixup_table);
|
||||
|
||||
if (bfd_seek (output_bfd, (file_ptr) (os->filepos + s->output_offset),
|
||||
SEEK_SET) != 0)
|
||||
return FALSE;
|
||||
|
||||
if (bfd_bwrite (s->contents, s->size, output_bfd) != s->size)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#define MY_bfd_link_hash_table_create linux_link_hash_table_create
|
||||
#define MY_add_one_symbol linux_add_one_symbol
|
||||
#define MY_finish_dynamic_link linux_finish_dynamic_link
|
||||
|
||||
#define MY_zmagic_contiguous 1
|
||||
|
||||
#include "aout-target.h"
|
|
@ -1,38 +0,0 @@
|
|||
/* BFD back-end for NetBSD/m68k a.out-ish binaries.
|
||||
Copyright (C) 1990-2018 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#define TARGET_IS_BIG_ENDIAN_P
|
||||
|
||||
/* Our m68k ports use either 4K or 8K pages, but object files always
|
||||
assume 8K page alignment so they will work on all m68k machines. */
|
||||
#define TARGET_PAGE_SIZE 0x2000
|
||||
|
||||
#define DEFAULT_ARCH bfd_arch_m68k
|
||||
#define DEFAULT_MID M_68K_NETBSD
|
||||
|
||||
/* Do not "beautify" the CONCAT* macro args. Traditional C will not
|
||||
remove whitespace added here, and thus will fail to concatenate
|
||||
the tokens. */
|
||||
#define MY(OP) CONCAT2 (m68k_aout_nbsd_,OP)
|
||||
|
||||
/* This needs to start with a.out so GDB knows it is an a.out variant. */
|
||||
#define TARGETNAME "a.out-m68k-netbsd"
|
||||
|
||||
#include "netbsd.h"
|
1254
bfd/oasys.c
1254
bfd/oasys.c
File diff suppressed because it is too large
Load diff
19
bfd/pdp11.c
19
bfd/pdp11.c
|
@ -467,10 +467,7 @@ NAME (aout, some_aout_object_p) (bfd *abfd,
|
|||
oldrawptr = abfd->tdata.aout_data;
|
||||
abfd->tdata.aout_data = rawptr;
|
||||
|
||||
/* Copy the contents of the old tdata struct.
|
||||
In particular, we want the subformat, since for hpux it was set in
|
||||
hp300hpux.c:swap_exec_header_in and will be used in
|
||||
hp300hpux.c:callback. */
|
||||
/* Copy the contents of the old tdata struct. */
|
||||
if (oldrawptr != NULL)
|
||||
*abfd->tdata.aout_data = *oldrawptr;
|
||||
|
||||
|
@ -699,17 +696,6 @@ NAME (aout, machine_type) (enum bfd_architecture arch,
|
|||
arch_flags = M_SPARCLET;
|
||||
break;
|
||||
|
||||
case bfd_arch_m68k:
|
||||
switch (machine)
|
||||
{
|
||||
case 0: arch_flags = M_68010; break;
|
||||
case bfd_mach_m68000: arch_flags = M_UNKNOWN; *unknown = FALSE; break;
|
||||
case bfd_mach_m68010: arch_flags = M_68010; break;
|
||||
case bfd_mach_m68020: arch_flags = M_68020; break;
|
||||
default: arch_flags = M_UNKNOWN; break;
|
||||
}
|
||||
break;
|
||||
|
||||
case bfd_arch_i386:
|
||||
if (machine == 0
|
||||
|| machine == bfd_mach_i386_i386
|
||||
|
@ -3762,8 +3748,7 @@ NAME (aout, final_link) (bfd *abfd,
|
|||
FIXME: At this point we do not know how much space the symbol
|
||||
table will require. This will not work for any (nonstandard)
|
||||
a.out target that needs to know the symbol table size before it
|
||||
can compute the relocation file positions. This may or may not
|
||||
be the case for the hp300hpux target, for example. */
|
||||
can compute the relocation file positions. */
|
||||
(*callback) (abfd, &aout_info.treloff, &aout_info.dreloff,
|
||||
&aout_info.symoff);
|
||||
obj_textsec (abfd)->rel_filepos = aout_info.treloff;
|
||||
|
|
|
@ -1167,12 +1167,6 @@ pe_ILF_object_p (bfd * abfd)
|
|||
#endif
|
||||
break;
|
||||
|
||||
case IMAGE_FILE_MACHINE_M68K:
|
||||
#ifdef MC68AGIC
|
||||
magic = MC68MAGIC;
|
||||
#endif
|
||||
break;
|
||||
|
||||
case IMAGE_FILE_MACHINE_R3000:
|
||||
case IMAGE_FILE_MACHINE_R4000:
|
||||
case IMAGE_FILE_MACHINE_R10000:
|
||||
|
|
|
@ -6,7 +6,6 @@ aout-ns32k.c
|
|||
aout-sparcle.c
|
||||
aout-target.h
|
||||
aout-tic30.c
|
||||
aout0.c
|
||||
aout32.c
|
||||
aout64.c
|
||||
aoutf1.h
|
||||
|
@ -24,24 +23,19 @@ cf-i386lynx.c
|
|||
cf-sparclynx.c
|
||||
cisco-core.c
|
||||
coff-alpha.c
|
||||
coff-apollo.c
|
||||
coff-arm.c
|
||||
coff-aux.c
|
||||
coff-bfd.c
|
||||
coff-go32.c
|
||||
coff-i386.c
|
||||
coff-m68k.c
|
||||
coff-mips.c
|
||||
coff-rs6000.c
|
||||
coff-sh.c
|
||||
coff-sparc.c
|
||||
coff-stgo32.c
|
||||
coff-svm68k.c
|
||||
coff-tic30.c
|
||||
coff-tic4x.c
|
||||
coff-tic54x.c
|
||||
coff-tic80.c
|
||||
coff-u68k.c
|
||||
coff-x86_64.c
|
||||
coff-z80.c
|
||||
coff-z8k.c
|
||||
|
@ -248,8 +242,6 @@ freebsd.h
|
|||
genlink.h
|
||||
go32stub.h
|
||||
hash.c
|
||||
hp300bsd.c
|
||||
hp300hpux.c
|
||||
hpux-core.c
|
||||
i386aout.c
|
||||
i386bsd.c
|
||||
|
@ -270,14 +262,10 @@ libbfd.h
|
|||
libcoff.h
|
||||
libecoff.h
|
||||
libhppa.h
|
||||
liboasys.h
|
||||
libpei.h
|
||||
libxcoff.h
|
||||
linker.c
|
||||
lynx-core.c
|
||||
m68k4knetbsd.c
|
||||
m68klinux.c
|
||||
m68knetbsd.c
|
||||
mach-o-aarch64.c
|
||||
mach-o-arm.c
|
||||
mach-o-i386.c
|
||||
|
@ -291,7 +279,6 @@ netbsd-core.c
|
|||
netbsd.h
|
||||
ns32k.h
|
||||
ns32knetbsd.c
|
||||
oasys.c
|
||||
opncls.c
|
||||
osf-core.c
|
||||
pc532-mach.c
|
||||
|
@ -342,7 +329,6 @@ trad-core.c
|
|||
vax1knetbsd.c
|
||||
vaxnetbsd.c
|
||||
verilog.c
|
||||
versados.c
|
||||
version.h
|
||||
vms-alpha.c
|
||||
vms-lib.c
|
||||
|
|
|
@ -495,10 +495,7 @@ riscix_some_aout_object_p (bfd *abfd,
|
|||
oldrawptr = abfd->tdata.aout_data;
|
||||
abfd->tdata.aout_data = rawptr;
|
||||
|
||||
/* Copy the contents of the old tdata struct.
|
||||
In particular, we want the subformat, since for hpux it was set in
|
||||
hp300hpux.c:swap_exec_header_in and will be used in
|
||||
hp300hpux.c:callback. */
|
||||
/* Copy the contents of the old tdata struct. */
|
||||
if (oldrawptr != NULL)
|
||||
*abfd->tdata.aout_data = *oldrawptr;
|
||||
|
||||
|
|
|
@ -151,7 +151,6 @@ DESCRIPTION
|
|||
. bfd_target_ecoff_flavour,
|
||||
. bfd_target_xcoff_flavour,
|
||||
. bfd_target_elf_flavour,
|
||||
. bfd_target_oasys_flavour,
|
||||
. bfd_target_tekhex_flavour,
|
||||
. bfd_target_srec_flavour,
|
||||
. bfd_target_verilog_flavour,
|
||||
|
@ -595,7 +594,6 @@ extern const bfd_target alpha_elf64_fbsd_vec;
|
|||
extern const bfd_target alpha_vms_vec;
|
||||
extern const bfd_target alpha_vms_lib_txt_vec;
|
||||
extern const bfd_target am33_elf32_linux_vec;
|
||||
extern const bfd_target aout0_be_vec;
|
||||
extern const bfd_target aout64_vec;
|
||||
extern const bfd_target aout_vec;
|
||||
extern const bfd_target arc_elf32_be_vec;
|
||||
|
@ -700,18 +698,7 @@ extern const bfd_target m32r_elf32_linux_vec;
|
|||
extern const bfd_target m32r_elf32_linux_le_vec;
|
||||
extern const bfd_target m68hc11_elf32_vec;
|
||||
extern const bfd_target m68hc12_elf32_vec;
|
||||
extern const bfd_target m68k_aout_4knbsd_vec;
|
||||
extern const bfd_target m68k_aout_hp300bsd_vec;
|
||||
extern const bfd_target m68k_aout_hp300hpux_vec;
|
||||
extern const bfd_target m68k_aout_linux_vec;
|
||||
extern const bfd_target m68k_aout_nbsd_vec;
|
||||
extern const bfd_target m68k_coff_vec;
|
||||
extern const bfd_target m68k_coff_apollo_vec;
|
||||
extern const bfd_target m68k_coff_aux_vec;
|
||||
extern const bfd_target m68k_coff_sysv_vec;
|
||||
extern const bfd_target m68k_coff_un_vec;
|
||||
extern const bfd_target m68k_elf32_vec;
|
||||
extern const bfd_target m68k_versados_vec;
|
||||
extern const bfd_target mach_o_be_vec;
|
||||
extern const bfd_target mach_o_le_vec;
|
||||
extern const bfd_target mach_o_fat_vec;
|
||||
|
@ -770,7 +757,6 @@ extern const bfd_target nios2_elf32_be_vec;
|
|||
extern const bfd_target nios2_elf32_le_vec;
|
||||
extern const bfd_target ns32k_aout_pc532mach_vec;
|
||||
extern const bfd_target ns32k_aout_pc532nbsd_vec;
|
||||
extern const bfd_target oasys_vec;
|
||||
extern const bfd_target or1k_elf32_vec;
|
||||
extern const bfd_target pdp11_aout_vec;
|
||||
extern const bfd_target pef_vec;
|
||||
|
@ -952,7 +938,6 @@ static const bfd_target * const _bfd_target_vector[] =
|
|||
|
||||
&am33_elf32_linux_vec,
|
||||
|
||||
&aout0_be_vec,
|
||||
#ifdef BFD64
|
||||
&aout64_vec, /* Only compiled if host has long-long support. */
|
||||
#endif
|
||||
|
@ -1114,27 +1099,7 @@ static const bfd_target * const _bfd_target_vector[] =
|
|||
&m68hc11_elf32_vec,
|
||||
&m68hc12_elf32_vec,
|
||||
|
||||
#if 0
|
||||
&m68k_aout_4knbsd_vec,
|
||||
/* Clashes with sparc_aout_sunos_be_vec magic no. */
|
||||
&m68k_aout_hp300bsd_vec,
|
||||
#endif
|
||||
&m68k_aout_hp300hpux_vec,
|
||||
#if 0
|
||||
/* Since a.out files lack decent magic numbers, no way to recognize
|
||||
which kind of a.out file it is. */
|
||||
&m68k_aout_linux_vec,
|
||||
#endif
|
||||
&m68k_aout_nbsd_vec,
|
||||
&m68k_coff_vec,
|
||||
#if 0
|
||||
&m68k_coff_apollo_vec,
|
||||
&m68k_coff_aux_vec,
|
||||
#endif
|
||||
&m68k_coff_sysv_vec,
|
||||
&m68k_coff_un_vec,
|
||||
&m68k_elf32_vec,
|
||||
&m68k_versados_vec,
|
||||
|
||||
&mach_o_be_vec,
|
||||
&mach_o_le_vec,
|
||||
|
@ -1213,15 +1178,6 @@ static const bfd_target * const _bfd_target_vector[] =
|
|||
&ns32k_aout_pc532mach_vec,
|
||||
&ns32k_aout_pc532nbsd_vec,
|
||||
|
||||
#if 0
|
||||
/* We have no oasys tools anymore, so we can't test any of this
|
||||
anymore. If you want to test the stuff yourself, go ahead...
|
||||
steve@cygnus.com
|
||||
Worse, since there is no magic number for archives, there
|
||||
can be annoying target mis-matches. */
|
||||
&oasys_vec,
|
||||
#endif
|
||||
|
||||
&or1k_elf32_vec,
|
||||
|
||||
&pdp11_aout_vec,
|
||||
|
@ -1804,7 +1760,6 @@ bfd_flavour_name (enum bfd_flavour flavour)
|
|||
case bfd_target_ecoff_flavour: return "ECOFF";
|
||||
case bfd_target_xcoff_flavour: return "XCOFF";
|
||||
case bfd_target_elf_flavour: return "ELF";
|
||||
case bfd_target_oasys_flavour: return "Oasys";
|
||||
case bfd_target_tekhex_flavour: return "Tekhex";
|
||||
case bfd_target_srec_flavour: return "Srec";
|
||||
case bfd_target_verilog_flavour: return "Verilog";
|
||||
|
|
939
bfd/versados.c
939
bfd/versados.c
|
@ -1,939 +0,0 @@
|
|||
/* BFD back-end for VERSAdos-E objects.
|
||||
Copyright (C) 1995-2018 Free Software Foundation, Inc.
|
||||
Written by Steve Chamberlain of Cygnus Support <sac@cygnus.com>.
|
||||
|
||||
Versados is a Motorola trademark.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
/*
|
||||
SUBSECTION
|
||||
VERSAdos-E relocatable object file format
|
||||
|
||||
DESCRIPTION
|
||||
|
||||
This module supports reading of VERSAdos relocatable
|
||||
object files.
|
||||
|
||||
A VERSAdos file looks like contains
|
||||
|
||||
o Identification Record
|
||||
o External Symbol Definition Record
|
||||
o Object Text Record
|
||||
o End Record. */
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "bfd.h"
|
||||
#include "libbfd.h"
|
||||
#include "libiberty.h"
|
||||
|
||||
|
||||
#define VHEADER '1'
|
||||
#define VESTDEF '2'
|
||||
#define VOTR '3'
|
||||
#define VEND '4'
|
||||
|
||||
#define ES_BASE 17 /* First symbol has esdid 17. */
|
||||
|
||||
/* Per file target dependent information. */
|
||||
|
||||
/* One for each section. */
|
||||
struct esdid
|
||||
{
|
||||
asection *section; /* Ptr to bfd version. */
|
||||
unsigned char *contents; /* Used to build image. */
|
||||
bfd_size_type content_size; /* The size of the contents buffer. */
|
||||
int pc;
|
||||
int relocs; /* Reloc count, valid end of pass 1. */
|
||||
int donerel; /* Have relocs been translated. */
|
||||
};
|
||||
|
||||
typedef struct versados_data_struct
|
||||
{
|
||||
int es_done; /* Count of symbol index, starts at ES_BASE. */
|
||||
asymbol *symbols; /* Pointer to local symbols. */
|
||||
char *strings; /* Strings of all the above. */
|
||||
int stringlen; /* Len of string table (valid end of pass1). */
|
||||
int nsecsyms; /* Number of sections. */
|
||||
|
||||
int ndefs; /* Number of exported symbols (they dont get esdids). */
|
||||
int nrefs; /* Number of imported symbols (valid end of pass1). */
|
||||
|
||||
int ref_idx; /* Current processed value of the above. */
|
||||
int def_idx;
|
||||
|
||||
int pass_2_done;
|
||||
|
||||
struct esdid e[16]; /* Per section info. */
|
||||
int alert; /* To see if we're trampling. */
|
||||
asymbol *rest[256 - 16]; /* Per symbol info. */
|
||||
}
|
||||
tdata_type;
|
||||
|
||||
#define VDATA(abfd) (abfd->tdata.versados_data)
|
||||
#define EDATA(abfd, n) (abfd->tdata.versados_data->e[(n) < 16 ? (n) : 0])
|
||||
#define RDATA(abfd, n) (abfd->tdata.versados_data->rest[(n) < 240 ? (n) : 0])
|
||||
|
||||
struct ext_otr
|
||||
{
|
||||
unsigned char size;
|
||||
char type;
|
||||
unsigned char map[4];
|
||||
unsigned char esdid;
|
||||
unsigned char data[200];
|
||||
};
|
||||
|
||||
struct ext_vheader
|
||||
{
|
||||
unsigned char size;
|
||||
char type; /* Record type. */
|
||||
char name[10]; /* Module name. */
|
||||
char rev; /* Module rev number. */
|
||||
char lang;
|
||||
char vol[4];
|
||||
char user[2];
|
||||
char cat[8];
|
||||
char fname[8];
|
||||
char ext[2];
|
||||
char time[3];
|
||||
char date[3];
|
||||
char rest[211];
|
||||
};
|
||||
|
||||
struct ext_esd
|
||||
{
|
||||
unsigned char size;
|
||||
char type;
|
||||
unsigned char esd_entries[1];
|
||||
};
|
||||
|
||||
#define ESD_ABS 0
|
||||
#define ESD_COMMON 1
|
||||
#define ESD_STD_REL_SEC 2
|
||||
#define ESD_SHRT_REL_SEC 3
|
||||
#define ESD_XDEF_IN_SEC 4
|
||||
#define ESD_XDEF_IN_ABS 5
|
||||
#define ESD_XREF_SEC 6
|
||||
#define ESD_XREF_SYM 7
|
||||
|
||||
union ext_any
|
||||
{
|
||||
unsigned char size;
|
||||
struct ext_vheader header;
|
||||
struct ext_esd esd;
|
||||
struct ext_otr otr;
|
||||
};
|
||||
|
||||
/* Initialize by filling in the hex conversion array. */
|
||||
|
||||
/* Set up the tdata information. */
|
||||
|
||||
static bfd_boolean
|
||||
versados_mkobject (bfd *abfd)
|
||||
{
|
||||
if (abfd->tdata.versados_data == NULL)
|
||||
{
|
||||
bfd_size_type amt = sizeof (tdata_type);
|
||||
tdata_type *tdata = bfd_zalloc (abfd, amt);
|
||||
|
||||
if (tdata == NULL)
|
||||
return FALSE;
|
||||
abfd->tdata.versados_data = tdata;
|
||||
tdata->symbols = NULL;
|
||||
VDATA (abfd)->alert = 0x12345678;
|
||||
}
|
||||
|
||||
bfd_default_set_arch_mach (abfd, bfd_arch_m68k, 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Report a problem in an S record file. FIXME: This probably should
|
||||
not call fprintf, but we really do need some mechanism for printing
|
||||
error messages. */
|
||||
|
||||
static asymbol *
|
||||
versados_new_symbol (bfd *abfd,
|
||||
int snum,
|
||||
const char *name,
|
||||
bfd_vma val,
|
||||
asection *sec)
|
||||
{
|
||||
asymbol *n = VDATA (abfd)->symbols + snum;
|
||||
n->name = name;
|
||||
n->value = val;
|
||||
n->section = sec;
|
||||
n->the_bfd = abfd;
|
||||
n->flags = 0;
|
||||
return n;
|
||||
}
|
||||
|
||||
static bfd_boolean
|
||||
get_record (bfd *abfd, union ext_any *ptr)
|
||||
{
|
||||
if (bfd_bread (&ptr->size, (bfd_size_type) 1, abfd) != 1
|
||||
|| (bfd_bread ((char *) ptr + 1, (bfd_size_type) ptr->size, abfd)
|
||||
!= ptr->size))
|
||||
return FALSE;
|
||||
|
||||
{
|
||||
bfd_size_type amt = ptr->size + 1;
|
||||
|
||||
if (amt < sizeof (* ptr))
|
||||
memset ((char *) ptr + amt, 0, sizeof (* ptr) - amt);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
get_4 (unsigned char **pp)
|
||||
{
|
||||
unsigned char *p = *pp;
|
||||
|
||||
*pp += 4;
|
||||
return (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | (p[3] << 0);
|
||||
}
|
||||
|
||||
static void
|
||||
get_10 (unsigned char **pp, char *name)
|
||||
{
|
||||
char *p = (char *) *pp;
|
||||
int len = 10;
|
||||
|
||||
*pp += len;
|
||||
while (*p != ' ' && len)
|
||||
{
|
||||
*name++ = *p++;
|
||||
len--;
|
||||
}
|
||||
*name = 0;
|
||||
}
|
||||
|
||||
static char *
|
||||
new_symbol_string (bfd *abfd, const char *name)
|
||||
{
|
||||
char *n = VDATA (abfd)->strings;
|
||||
|
||||
strcpy (VDATA (abfd)->strings, name);
|
||||
VDATA (abfd)->strings += strlen (VDATA (abfd)->strings) + 1;
|
||||
return n;
|
||||
}
|
||||
|
||||
static void
|
||||
process_esd (bfd *abfd, struct ext_esd *esd, int pass)
|
||||
{
|
||||
/* Read through the ext def for the est entries. */
|
||||
int togo = esd->size - 2;
|
||||
bfd_vma size;
|
||||
bfd_vma start;
|
||||
asection *sec;
|
||||
char name[11];
|
||||
unsigned char *ptr = esd->esd_entries;
|
||||
unsigned char *end = ptr + togo;
|
||||
|
||||
while (ptr < end)
|
||||
{
|
||||
int scn = *ptr & 0xf;
|
||||
int typ = (*ptr >> 4) & 0xf;
|
||||
|
||||
/* Declare this section. */
|
||||
sprintf (name, "%d", scn);
|
||||
sec = bfd_make_section_old_way (abfd, strdup (name));
|
||||
sec->target_index = scn;
|
||||
EDATA (abfd, scn).section = sec;
|
||||
ptr++;
|
||||
|
||||
switch (typ)
|
||||
{
|
||||
default:
|
||||
abort ();
|
||||
case ESD_XREF_SEC:
|
||||
case ESD_XREF_SYM:
|
||||
{
|
||||
int snum = VDATA (abfd)->ref_idx++;
|
||||
get_10 (&ptr, name);
|
||||
if (pass == 1)
|
||||
VDATA (abfd)->stringlen += strlen (name) + 1;
|
||||
else
|
||||
{
|
||||
int esidx;
|
||||
asymbol *s;
|
||||
char *n = new_symbol_string (abfd, name);
|
||||
|
||||
s = versados_new_symbol (abfd, snum, n, (bfd_vma) 0,
|
||||
bfd_und_section_ptr);
|
||||
esidx = VDATA (abfd)->es_done++;
|
||||
RDATA (abfd, esidx - ES_BASE) = s;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case ESD_ABS:
|
||||
size = get_4 (&ptr);
|
||||
(void) size;
|
||||
start = get_4 (&ptr);
|
||||
(void) start;
|
||||
break;
|
||||
case ESD_STD_REL_SEC:
|
||||
case ESD_SHRT_REL_SEC:
|
||||
sec->size = get_4 (&ptr);
|
||||
sec->flags |= SEC_ALLOC;
|
||||
break;
|
||||
case ESD_XDEF_IN_ABS:
|
||||
sec = bfd_abs_section_ptr;
|
||||
/* Fall through. */
|
||||
case ESD_XDEF_IN_SEC:
|
||||
{
|
||||
int snum = VDATA (abfd)->def_idx++;
|
||||
bfd_vma val;
|
||||
|
||||
get_10 (&ptr, name);
|
||||
val = get_4 (&ptr);
|
||||
if (pass == 1)
|
||||
/* Just remember the symbol. */
|
||||
VDATA (abfd)->stringlen += strlen (name) + 1;
|
||||
else
|
||||
{
|
||||
asymbol *s;
|
||||
char *n = new_symbol_string (abfd, name);
|
||||
|
||||
s = versados_new_symbol (abfd, snum + VDATA (abfd)->nrefs, n,
|
||||
val, sec);
|
||||
s->flags |= BSF_GLOBAL;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#define R_RELWORD 1
|
||||
#define R_RELLONG 2
|
||||
#define R_RELWORD_NEG 3
|
||||
#define R_RELLONG_NEG 4
|
||||
|
||||
reloc_howto_type versados_howto_table[] =
|
||||
{
|
||||
HOWTO (R_RELWORD, 0, 1, 16, FALSE,
|
||||
0, complain_overflow_dont, 0,
|
||||
"+v16", TRUE, 0x0000ffff, 0x0000ffff, FALSE),
|
||||
HOWTO (R_RELLONG, 0, 2, 32, FALSE,
|
||||
0, complain_overflow_dont, 0,
|
||||
"+v32", TRUE, 0xffffffff, 0xffffffff, FALSE),
|
||||
|
||||
HOWTO (R_RELWORD_NEG, 0, -1, 16, FALSE,
|
||||
0, complain_overflow_dont, 0,
|
||||
"-v16", TRUE, 0x0000ffff, 0x0000ffff, FALSE),
|
||||
HOWTO (R_RELLONG_NEG, 0, -2, 32, FALSE,
|
||||
0, complain_overflow_dont, 0,
|
||||
"-v32", TRUE, 0xffffffff, 0xffffffff, FALSE),
|
||||
};
|
||||
|
||||
static int
|
||||
get_offset (unsigned int len, unsigned char *ptr)
|
||||
{
|
||||
int val = 0;
|
||||
|
||||
if (len)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
val = *ptr++;
|
||||
if (val & 0x80)
|
||||
val |= ~0xff;
|
||||
for (i = 1; i < len; i++)
|
||||
val = (val << 8) | *ptr++;
|
||||
}
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
static void
|
||||
process_otr (bfd *abfd, struct ext_otr *otr, int pass)
|
||||
{
|
||||
unsigned long shift;
|
||||
unsigned char *srcp = otr->data;
|
||||
unsigned char *endp = (unsigned char *) otr + otr->size;
|
||||
unsigned int bits = (otr->map[0] << 24)
|
||||
| (otr->map[1] << 16)
|
||||
| (otr->map[2] << 8)
|
||||
| (otr->map[3] << 0);
|
||||
|
||||
struct esdid *esdid;
|
||||
unsigned char *contents;
|
||||
bfd_boolean need_contents = FALSE;
|
||||
unsigned int dst_idx;
|
||||
|
||||
/* PR 17512: file: ac7da425. */
|
||||
if (otr->esdid == 0)
|
||||
return;
|
||||
|
||||
esdid = &EDATA (abfd, otr->esdid - 1);
|
||||
contents = esdid->contents;
|
||||
dst_idx = esdid->pc;
|
||||
|
||||
for (shift = ((unsigned long) 1 << 31); shift && srcp < endp; shift >>= 1)
|
||||
{
|
||||
if (bits & shift)
|
||||
{
|
||||
int flag = *srcp++;
|
||||
int esdids = (flag >> 5) & 0x7;
|
||||
int sizeinwords = ((flag >> 3) & 1) ? 2 : 1;
|
||||
unsigned int offsetlen = flag & 0x7;
|
||||
int j;
|
||||
|
||||
/* PR 21591: Check for invalid lengths. */
|
||||
if (srcp + esdids + offsetlen >= endp)
|
||||
return;
|
||||
|
||||
if (esdids == 0)
|
||||
{
|
||||
/* A zero esdid means the new pc is the offset given. */
|
||||
dst_idx += get_offset (offsetlen, srcp);
|
||||
srcp += offsetlen;
|
||||
}
|
||||
else
|
||||
{
|
||||
int val = get_offset (offsetlen, srcp + esdids);
|
||||
|
||||
if (pass == 1)
|
||||
need_contents = TRUE;
|
||||
else if (contents && dst_idx < esdid->content_size - sizeinwords * 2)
|
||||
for (j = 0; j < sizeinwords * 2; j++)
|
||||
{
|
||||
contents[dst_idx + (sizeinwords * 2) - j - 1] = val;
|
||||
val >>= 8;
|
||||
}
|
||||
|
||||
for (j = 0; j < esdids; j++)
|
||||
{
|
||||
int id = *srcp++;
|
||||
|
||||
if (id)
|
||||
{
|
||||
int rn = EDATA (abfd, otr->esdid - 1).relocs++;
|
||||
|
||||
if (pass == 1)
|
||||
{
|
||||
/* This is the first pass over the data,
|
||||
just remember that we need a reloc. */
|
||||
}
|
||||
else
|
||||
{
|
||||
arelent *n;
|
||||
|
||||
/* PR 17512: file: 54f733e0. */
|
||||
if (EDATA (abfd, otr->esdid - 1).section == NULL)
|
||||
continue;
|
||||
n = EDATA (abfd, otr->esdid - 1).section->relocation + rn;
|
||||
n->address = dst_idx;
|
||||
n->sym_ptr_ptr = (asymbol **) (size_t) id;
|
||||
n->addend = 0;
|
||||
n->howto = versados_howto_table + ((j & 1) * 2) + (sizeinwords - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
srcp += offsetlen;
|
||||
dst_idx += sizeinwords * 2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
need_contents = TRUE;
|
||||
|
||||
if (esdid->section && contents && dst_idx < esdid->content_size - 1)
|
||||
if (pass == 2)
|
||||
{
|
||||
/* Absolute code, comes in 16 bit lumps. */
|
||||
contents[dst_idx] = srcp[0];
|
||||
contents[dst_idx + 1] = srcp[1];
|
||||
}
|
||||
|
||||
dst_idx += 2;
|
||||
srcp += 2;
|
||||
}
|
||||
}
|
||||
|
||||
EDATA (abfd, otr->esdid - 1).pc = dst_idx;
|
||||
|
||||
if (!contents && need_contents)
|
||||
{
|
||||
if (esdid->section)
|
||||
{
|
||||
bfd_size_type size;
|
||||
|
||||
size = esdid->section->size;
|
||||
esdid->contents = bfd_alloc (abfd, size);
|
||||
esdid->content_size = size;
|
||||
}
|
||||
else
|
||||
esdid->contents = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static bfd_boolean
|
||||
versados_scan (bfd *abfd)
|
||||
{
|
||||
bfd_boolean loop = TRUE;
|
||||
int i;
|
||||
int j;
|
||||
int nsecs = 0;
|
||||
bfd_size_type amt;
|
||||
|
||||
VDATA (abfd)->stringlen = 0;
|
||||
VDATA (abfd)->nrefs = 0;
|
||||
VDATA (abfd)->ndefs = 0;
|
||||
VDATA (abfd)->ref_idx = 0;
|
||||
VDATA (abfd)->def_idx = 0;
|
||||
VDATA (abfd)->pass_2_done = 0;
|
||||
|
||||
while (loop)
|
||||
{
|
||||
union ext_any any;
|
||||
|
||||
if (!get_record (abfd, &any))
|
||||
return FALSE;
|
||||
switch (any.header.type)
|
||||
{
|
||||
case VHEADER:
|
||||
break;
|
||||
case VEND:
|
||||
loop = FALSE;
|
||||
break;
|
||||
case VESTDEF:
|
||||
process_esd (abfd, &any.esd, 1);
|
||||
break;
|
||||
case VOTR:
|
||||
process_otr (abfd, &any.otr, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Now allocate space for the relocs and sections. */
|
||||
VDATA (abfd)->nrefs = VDATA (abfd)->ref_idx;
|
||||
VDATA (abfd)->ndefs = VDATA (abfd)->def_idx;
|
||||
VDATA (abfd)->ref_idx = 0;
|
||||
VDATA (abfd)->def_idx = 0;
|
||||
|
||||
abfd->symcount = VDATA (abfd)->nrefs + VDATA (abfd)->ndefs;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
struct esdid *esdid = &EDATA (abfd, i);
|
||||
|
||||
if (esdid->section)
|
||||
{
|
||||
amt = (bfd_size_type) esdid->relocs * sizeof (arelent);
|
||||
esdid->section->relocation = bfd_alloc (abfd, amt);
|
||||
esdid->pc = 0;
|
||||
|
||||
if (esdid->contents)
|
||||
esdid->section->flags |= SEC_HAS_CONTENTS | SEC_LOAD;
|
||||
|
||||
esdid->section->reloc_count = esdid->relocs;
|
||||
if (esdid->relocs)
|
||||
esdid->section->flags |= SEC_RELOC;
|
||||
|
||||
esdid->relocs = 0;
|
||||
|
||||
/* Add an entry into the symbol table for it. */
|
||||
nsecs++;
|
||||
VDATA (abfd)->stringlen += strlen (esdid->section->name) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
abfd->symcount += nsecs;
|
||||
|
||||
amt = abfd->symcount;
|
||||
amt *= sizeof (asymbol);
|
||||
VDATA (abfd)->symbols = bfd_alloc (abfd, amt);
|
||||
|
||||
amt = VDATA (abfd)->stringlen;
|
||||
VDATA (abfd)->strings = bfd_alloc (abfd, amt);
|
||||
|
||||
if ((VDATA (abfd)->symbols == NULL && abfd->symcount > 0)
|
||||
|| (VDATA (abfd)->strings == NULL && VDATA (abfd)->stringlen > 0))
|
||||
return FALSE;
|
||||
|
||||
/* Actually fill in the section symbols,
|
||||
we stick them at the end of the table. */
|
||||
for (j = VDATA (abfd)->nrefs + VDATA (abfd)->ndefs, i = 0; i < 16; i++)
|
||||
{
|
||||
struct esdid *esdid = &EDATA (abfd, i);
|
||||
asection *sec = esdid->section;
|
||||
|
||||
if (sec)
|
||||
{
|
||||
asymbol *s = VDATA (abfd)->symbols + j;
|
||||
s->name = new_symbol_string (abfd, sec->name);
|
||||
s->section = sec;
|
||||
s->flags = BSF_LOCAL;
|
||||
s->value = 0;
|
||||
s->the_bfd = abfd;
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
if (abfd->symcount)
|
||||
abfd->flags |= HAS_SYMS;
|
||||
|
||||
/* Set this to nsecs - since we've already planted the section
|
||||
symbols. */
|
||||
VDATA (abfd)->nsecsyms = nsecs;
|
||||
|
||||
VDATA (abfd)->ref_idx = 0;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Check whether an existing file is a versados file. */
|
||||
|
||||
static const bfd_target *
|
||||
versados_object_p (bfd *abfd)
|
||||
{
|
||||
struct ext_vheader ext;
|
||||
unsigned char len;
|
||||
tdata_type *tdata_save;
|
||||
|
||||
if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
|
||||
return NULL;
|
||||
|
||||
if (bfd_bread (&len, (bfd_size_type) 1, abfd) != 1)
|
||||
{
|
||||
if (bfd_get_error () != bfd_error_system_call)
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* PR 17512: file: 726-2128-0.004. */
|
||||
if (len < 13)
|
||||
{
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (bfd_bread (&ext.type, (bfd_size_type) len, abfd) != len)
|
||||
{
|
||||
if (bfd_get_error () != bfd_error_system_call)
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* We guess that the language field will never be larger than 10.
|
||||
In sample files, it is always either 0 or 1. Checking for this
|
||||
prevents confusion with Intel Hex files. */
|
||||
if (ext.type != VHEADER
|
||||
|| ext.lang > 10)
|
||||
{
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* OK, looks like a record, build the tdata and read in. */
|
||||
tdata_save = abfd->tdata.versados_data;
|
||||
if (!versados_mkobject (abfd) || !versados_scan (abfd))
|
||||
{
|
||||
abfd->tdata.versados_data = tdata_save;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return abfd->xvec;
|
||||
}
|
||||
|
||||
static bfd_boolean
|
||||
versados_pass_2 (bfd *abfd)
|
||||
{
|
||||
union ext_any any;
|
||||
|
||||
if (VDATA (abfd)->pass_2_done)
|
||||
return 1;
|
||||
|
||||
if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
|
||||
return 0;
|
||||
|
||||
VDATA (abfd)->es_done = ES_BASE;
|
||||
|
||||
/* Read records till we get to where we want to be. */
|
||||
while (1)
|
||||
{
|
||||
get_record (abfd, &any);
|
||||
switch (any.header.type)
|
||||
{
|
||||
case VEND:
|
||||
VDATA (abfd)->pass_2_done = 1;
|
||||
return 1;
|
||||
case VESTDEF:
|
||||
process_esd (abfd, &any.esd, 2);
|
||||
break;
|
||||
case VOTR:
|
||||
process_otr (abfd, &any.otr, 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static bfd_boolean
|
||||
versados_get_section_contents (bfd *abfd,
|
||||
asection *section,
|
||||
void * location,
|
||||
file_ptr offset,
|
||||
bfd_size_type count)
|
||||
{
|
||||
struct esdid *esdid;
|
||||
|
||||
if (!versados_pass_2 (abfd))
|
||||
return FALSE;
|
||||
|
||||
esdid = &EDATA (abfd, section->target_index);
|
||||
|
||||
if (esdid->contents == NULL
|
||||
|| offset < 0
|
||||
|| (bfd_size_type) offset > esdid->content_size
|
||||
|| offset + count > esdid->content_size)
|
||||
return FALSE;
|
||||
|
||||
memcpy (location, esdid->contents + offset, (size_t) count);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#define versados_get_section_contents_in_window \
|
||||
_bfd_generic_get_section_contents_in_window
|
||||
|
||||
static bfd_boolean
|
||||
versados_set_section_contents (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
sec_ptr section ATTRIBUTE_UNUSED,
|
||||
const void * location ATTRIBUTE_UNUSED,
|
||||
file_ptr offset ATTRIBUTE_UNUSED,
|
||||
bfd_size_type bytes_to_do ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static int
|
||||
versados_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
struct bfd_link_info *info ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Return the amount of memory needed to read the symbol table. */
|
||||
|
||||
static long
|
||||
versados_get_symtab_upper_bound (bfd *abfd)
|
||||
{
|
||||
return (bfd_get_symcount (abfd) + 1) * sizeof (asymbol *);
|
||||
}
|
||||
|
||||
/* Return the symbol table. */
|
||||
|
||||
static long
|
||||
versados_canonicalize_symtab (bfd *abfd, asymbol **alocation)
|
||||
{
|
||||
unsigned int symcount = bfd_get_symcount (abfd);
|
||||
unsigned int i;
|
||||
asymbol *s;
|
||||
|
||||
versados_pass_2 (abfd);
|
||||
|
||||
for (i = 0, s = VDATA (abfd)->symbols;
|
||||
i < symcount;
|
||||
s++, i++)
|
||||
*alocation++ = s;
|
||||
|
||||
*alocation = NULL;
|
||||
|
||||
return symcount;
|
||||
}
|
||||
|
||||
static void
|
||||
versados_get_symbol_info (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
asymbol *symbol,
|
||||
symbol_info *ret)
|
||||
{
|
||||
bfd_symbol_info (symbol, ret);
|
||||
}
|
||||
|
||||
static void
|
||||
versados_print_symbol (bfd *abfd,
|
||||
void * afile,
|
||||
asymbol *symbol,
|
||||
bfd_print_symbol_type how)
|
||||
{
|
||||
FILE *file = (FILE *) afile;
|
||||
|
||||
switch (how)
|
||||
{
|
||||
case bfd_print_symbol_name:
|
||||
fprintf (file, "%s", symbol->name);
|
||||
break;
|
||||
default:
|
||||
bfd_print_symbol_vandf (abfd, (void *) file, symbol);
|
||||
fprintf (file, " %-5s %s",
|
||||
symbol->section->name,
|
||||
symbol->name);
|
||||
}
|
||||
}
|
||||
|
||||
static long
|
||||
versados_get_reloc_upper_bound (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
sec_ptr asect)
|
||||
{
|
||||
return (asect->reloc_count + 1) * sizeof (arelent *);
|
||||
}
|
||||
|
||||
static long
|
||||
versados_canonicalize_reloc (bfd *abfd,
|
||||
sec_ptr section,
|
||||
arelent **relptr,
|
||||
asymbol **symbols)
|
||||
{
|
||||
unsigned int count;
|
||||
arelent *src;
|
||||
|
||||
versados_pass_2 (abfd);
|
||||
src = section->relocation;
|
||||
|
||||
if (!EDATA (abfd, section->target_index).donerel)
|
||||
{
|
||||
EDATA (abfd, section->target_index).donerel = 1;
|
||||
/* Translate from indexes to symptr ptrs. */
|
||||
for (count = 0; count < section->reloc_count; count++)
|
||||
{
|
||||
int esdid = (int) (size_t) src[count].sym_ptr_ptr;
|
||||
|
||||
if (esdid == 0)
|
||||
src[count].sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
|
||||
else if (esdid < ES_BASE)
|
||||
{
|
||||
/* Section relative thing. */
|
||||
struct esdid *e = &EDATA (abfd, esdid - 1);
|
||||
|
||||
/* PR 17512: file:cd92277c. */
|
||||
if (e->section)
|
||||
src[count].sym_ptr_ptr = e->section->symbol_ptr_ptr;
|
||||
else
|
||||
src[count].sym_ptr_ptr = bfd_und_section_ptr->symbol_ptr_ptr;
|
||||
}
|
||||
/* PR 17512: file:3757-2936-0.004. */
|
||||
else if ((unsigned) (esdid - ES_BASE) >= bfd_get_symcount (abfd))
|
||||
src[count].sym_ptr_ptr = bfd_und_section_ptr->symbol_ptr_ptr;
|
||||
else
|
||||
src[count].sym_ptr_ptr = symbols + esdid - ES_BASE;
|
||||
}
|
||||
}
|
||||
|
||||
for (count = 0; count < section->reloc_count; count++)
|
||||
*relptr++ = src++;
|
||||
|
||||
*relptr = 0;
|
||||
return section->reloc_count;
|
||||
}
|
||||
|
||||
#define versados_close_and_cleanup _bfd_generic_close_and_cleanup
|
||||
#define versados_bfd_free_cached_info _bfd_generic_bfd_free_cached_info
|
||||
#define versados_new_section_hook _bfd_generic_new_section_hook
|
||||
#define versados_bfd_is_target_special_symbol _bfd_bool_bfd_asymbol_false
|
||||
#define versados_bfd_is_local_label_name bfd_generic_is_local_label_name
|
||||
#define versados_get_lineno _bfd_nosymbols_get_lineno
|
||||
#define versados_find_nearest_line _bfd_nosymbols_find_nearest_line
|
||||
#define versados_find_line _bfd_nosymbols_find_line
|
||||
#define versados_find_inliner_info _bfd_nosymbols_find_inliner_info
|
||||
#define versados_get_symbol_version_string _bfd_nosymbols_get_symbol_version_string
|
||||
#define versados_make_empty_symbol _bfd_generic_make_empty_symbol
|
||||
#define versados_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol
|
||||
#define versados_read_minisymbols _bfd_generic_read_minisymbols
|
||||
#define versados_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol
|
||||
#define versados_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_lookup
|
||||
#define versados_bfd_reloc_name_lookup _bfd_norelocs_bfd_reloc_name_lookup
|
||||
#define versados_set_arch_mach bfd_default_set_arch_mach
|
||||
#define versados_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents
|
||||
#define versados_bfd_relax_section bfd_generic_relax_section
|
||||
#define versados_bfd_gc_sections bfd_generic_gc_sections
|
||||
#define versados_bfd_lookup_section_flags bfd_generic_lookup_section_flags
|
||||
#define versados_bfd_merge_sections bfd_generic_merge_sections
|
||||
#define versados_bfd_is_group_section bfd_generic_is_group_section
|
||||
#define versados_bfd_discard_group bfd_generic_discard_group
|
||||
#define versados_section_already_linked _bfd_generic_section_already_linked
|
||||
#define versados_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||
#define versados_bfd_define_start_stop bfd_generic_define_start_stop
|
||||
#define versados_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
||||
#define versados_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||
#define versados_bfd_link_just_syms _bfd_generic_link_just_syms
|
||||
#define versados_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define versados_bfd_final_link _bfd_generic_final_link
|
||||
#define versados_bfd_link_split_section _bfd_generic_link_split_section
|
||||
#define versados_bfd_link_check_relocs _bfd_generic_link_check_relocs
|
||||
#define versados_set_reloc _bfd_generic_set_reloc
|
||||
|
||||
const bfd_target m68k_versados_vec =
|
||||
{
|
||||
"versados", /* Name. */
|
||||
bfd_target_versados_flavour,
|
||||
BFD_ENDIAN_BIG, /* Target byte order. */
|
||||
BFD_ENDIAN_BIG, /* Target headers byte order. */
|
||||
(HAS_RELOC | EXEC_P | /* Object flags. */
|
||||
HAS_LINENO | HAS_DEBUG |
|
||||
HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
|
||||
(SEC_CODE | SEC_DATA | SEC_ROM | SEC_HAS_CONTENTS
|
||||
| SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* Section flags. */
|
||||
0, /* Leading underscore. */
|
||||
' ', /* AR_pad_char. */
|
||||
16, /* AR_max_namelen. */
|
||||
0, /* match priority. */
|
||||
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
|
||||
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
|
||||
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Data. */
|
||||
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
|
||||
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
|
||||
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Headers. */
|
||||
|
||||
{
|
||||
_bfd_dummy_target,
|
||||
versados_object_p, /* bfd_check_format. */
|
||||
_bfd_dummy_target,
|
||||
_bfd_dummy_target,
|
||||
},
|
||||
{
|
||||
_bfd_bool_bfd_false_error,
|
||||
versados_mkobject,
|
||||
_bfd_generic_mkarchive,
|
||||
_bfd_bool_bfd_false_error,
|
||||
},
|
||||
{ /* bfd_write_contents. */
|
||||
_bfd_bool_bfd_false_error,
|
||||
_bfd_bool_bfd_false_error,
|
||||
_bfd_write_archive_contents,
|
||||
_bfd_bool_bfd_false_error,
|
||||
},
|
||||
|
||||
BFD_JUMP_TABLE_GENERIC (versados),
|
||||
BFD_JUMP_TABLE_COPY (_bfd_generic),
|
||||
BFD_JUMP_TABLE_CORE (_bfd_nocore),
|
||||
BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
|
||||
BFD_JUMP_TABLE_SYMBOLS (versados),
|
||||
BFD_JUMP_TABLE_RELOCS (versados),
|
||||
BFD_JUMP_TABLE_WRITE (versados),
|
||||
BFD_JUMP_TABLE_LINK (versados),
|
||||
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
|
||||
|
||||
NULL,
|
||||
|
||||
NULL
|
||||
};
|
|
@ -1,3 +1,11 @@
|
|||
2018-04-16 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* testsuite/binutils-all/copy-2.d: Remove m68k-aout and m68k-coff
|
||||
support.
|
||||
* testsuite/binutils-all/copy-3.d: Likewise.
|
||||
* testsuite/binutils-all/objcopy.exp: Likewise.
|
||||
* testsuite/lib/binutils-common.exp: Likewise.
|
||||
|
||||
2018-04-16 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* testsuite/binutils-all/objcopy.exp: Remove sh5 and sh64 support.
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#objcopy: --set-section-flags foo=contents,alloc,load,code
|
||||
#name: copy with setting section flags 2
|
||||
#source: copytest.s
|
||||
#not-target: *-*-*aout *-*-aix* h8300-*-* hppa*-*-hpux* m68k-*-netbsd m68k-*-openbsd* mips-*-ultrix* mips-*-osf* mips-*-ecoff* mips-*-irix mips-*-irix[2-4] mips-*-riscos* ns32k-*-netbsd
|
||||
#not-target: *-*-*aout *-*-aix* h8300-*-* hppa*-*-hpux* mips-*-ultrix* mips-*-osf* mips-*-ecoff* mips-*-irix mips-*-irix[2-4] mips-*-riscos* ns32k-*-netbsd
|
||||
# Note - we use copytest.s and a section named "foo" rather
|
||||
# than .text because for some file formats (eg PE) the .text
|
||||
# section has a fixed set of flags and these cannot be changed.
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#objcopy: --set-section-flags .text=alloc,data
|
||||
#name: copy with setting section flags 3
|
||||
#source: bintest.s
|
||||
#not-target: *-*-*aout *-*-*coff *-*-cygwin* *-*-darwin *-*-mingw* *-*-go32 *-*-*pe hppa*-*-hpux* m68k-*-netbsd m68k-*-openbsd* ns32k-*-netbsd powerpc-*-aix* rs6000-*-* rx-*-*
|
||||
#not-target: *-*-*aout *-*-*coff *-*-cygwin* *-*-darwin *-*-mingw* *-*-go32 *-*-*pe hppa*-*-hpux* ns32k-*-netbsd powerpc-*-aix* rs6000-*-* rx-*-*
|
||||
# The .text # section in PE/COFF has a fixed set of flags and these
|
||||
# cannot be changed. We skip it for them.
|
||||
|
||||
|
|
|
@ -78,15 +78,12 @@ proc objcopy_test {testname srcfile} {
|
|||
# differently. Those systems should use setup_xfail here.
|
||||
|
||||
setup_xfail "hppa*-*-*"
|
||||
setup_xfail "m68*-*-*coff" "m68*-*-hpux*" "m68*-*-lynxos*"
|
||||
setup_xfail "m68*-*-sysv*" "m68*-apple-aux*"
|
||||
setup_xfail "m8*-*"
|
||||
setup_xfail "sh-*-coff*"
|
||||
setup_xfail "tic80-*-*"
|
||||
|
||||
clear_xfail "hppa*64*-*-hpux*" "hppa*-*-linux*" "hppa*-*-lites*"
|
||||
clear_xfail "hppa*-*-*n*bsd*" "hppa*-*-rtems*" "*-*-*elf*"
|
||||
clear_xfail "m68*-*-sysv4*"
|
||||
|
||||
if [string equal "" $exec_output] then {
|
||||
pass "objcopy ($testname)"
|
||||
|
|
|
@ -68,7 +68,6 @@ proc is_elf_format {} {
|
|||
|| [istarget arm*-*-netbsd*]
|
||||
|| [istarget sparc-*-netbsd*]
|
||||
|| [istarget i*86-*-netbsd*]
|
||||
|| [istarget m68*-*-netbsd*]
|
||||
|| [istarget vax-*-netbsd*]
|
||||
|| [istarget ns32k-*-netbsd*]) } {
|
||||
return 0
|
||||
|
@ -77,7 +76,6 @@ proc is_elf_format {} {
|
|||
if { [istarget arm-*-openbsd*]
|
||||
|| [istarget i386-*-openbsd\[0-2\].*]
|
||||
|| [istarget i386-*-openbsd3.\[0-2\]]
|
||||
|| [istarget m68*-*-openbsd*]
|
||||
|| [istarget ns32k-*-openbsd*]
|
||||
|| [istarget sparc-*-openbsd\[0-2\].*]
|
||||
|| [istarget sparc-*-openbsd3.\[0-1\]]
|
||||
|
@ -109,8 +107,6 @@ proc is_aout_format {} {
|
|||
|| [istarget i?86-*-openbsd3.\[0-2\]*]
|
||||
|| [istarget i?86-*-vsta]
|
||||
|| [istarget i?86-*-mach*]
|
||||
|| [istarget m68*-*-netbsd*]
|
||||
|| [istarget m68*-*-openbsd*]
|
||||
|| [istarget ns32k-*-*]
|
||||
|| [istarget pdp11-*-*]
|
||||
|| [istarget sparc*-*-sunos4*]
|
||||
|
|
|
@ -1,3 +1,35 @@
|
|||
2018-04-16 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* Makefile.am: Remove m68k-aout and m68k-coff support.
|
||||
* config/tc-m68k.c: Likewise.
|
||||
* config/tc-m68k.h: Likewise.
|
||||
* configure.ac: Likewise.
|
||||
* configure.tgt: Likewise.
|
||||
* testsuite/gas/all/weakref1u.d: Likewise.
|
||||
* testsuite/gas/m68k/all.exp: Likewise.
|
||||
* testsuite/gas/m68k/br-isaa.d: Likewise.
|
||||
* testsuite/gas/m68k/br-isab.d: Likewise.
|
||||
* testsuite/gas/m68k/br-isac.d: Likewise.
|
||||
* config/te-psos.h: Delete.
|
||||
* config/te-sun3.h: Delete.
|
||||
* testsuite/gas/m68k-coff/gas.exp: Delete.
|
||||
* testsuite/gas/m68k-coff/p2389.s: Delete.
|
||||
* testsuite/gas/m68k-coff/p2389a.s: Delete.
|
||||
* testsuite/gas/m68k-coff/p2430.s: Delete.
|
||||
* testsuite/gas/m68k-coff/p2430a.s: Delete.
|
||||
* testsuite/gas/m68k-coff/t1.s: Delete.
|
||||
* testsuite/gas/m68k/p3041.d: Delete.
|
||||
* testsuite/gas/m68k/p3041.s: Delete.
|
||||
* testsuite/gas/m68k/p3041data.d: Delete.
|
||||
* testsuite/gas/m68k/p3041data.s: Delete.
|
||||
* testsuite/gas/m68k/p3041pcrel.d: Delete.
|
||||
* testsuite/gas/m68k/p3041pcrel.s: Delete.
|
||||
* testsuite/gas/m68k/t2.d: Delete.
|
||||
* Makefile.in: Regenerate.
|
||||
* config.in: Regenerate.
|
||||
* configure: Regenerate.
|
||||
* po/POTFILES.in: Regenerate.
|
||||
|
||||
2018-04-16 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* Makefile.am: Remove sh5 and sh64 support.
|
||||
|
|
|
@ -325,11 +325,9 @@ TARG_ENV_HFILES = \
|
|||
config/te-nbsd532.h \
|
||||
config/te-pc532mach.h \
|
||||
config/te-pe.h \
|
||||
config/te-psos.h \
|
||||
config/te-riscix.h \
|
||||
config/te-solaris.h \
|
||||
config/te-sparcaout.h \
|
||||
config/te-sun3.h \
|
||||
config/te-svr4.h \
|
||||
config/te-symbian.h \
|
||||
config/te-tmips.h \
|
||||
|
|
|
@ -621,11 +621,9 @@ TARG_ENV_HFILES = \
|
|||
config/te-nbsd532.h \
|
||||
config/te-pc532mach.h \
|
||||
config/te-pe.h \
|
||||
config/te-psos.h \
|
||||
config/te-riscix.h \
|
||||
config/te-solaris.h \
|
||||
config/te-sparcaout.h \
|
||||
config/te-sun3.h \
|
||||
config/te-svr4.h \
|
||||
config/te-symbian.h \
|
||||
config/te-tmips.h \
|
||||
|
|
|
@ -181,9 +181,6 @@
|
|||
*/
|
||||
#undef LT_OBJDIR
|
||||
|
||||
/* Using m68k COFF? */
|
||||
#undef M68KCOFF
|
||||
|
||||
/* Default CPU for MIPS targets. */
|
||||
#undef MIPS_CPU_STRING_DEFAULT
|
||||
|
||||
|
|
|
@ -27,18 +27,9 @@
|
|||
|
||||
#include "opcode/m68k.h"
|
||||
#include "m68k-parse.h"
|
||||
|
||||
#if defined (OBJ_ELF)
|
||||
#include "elf/m68k.h"
|
||||
#endif
|
||||
|
||||
#ifdef M68KCOFF
|
||||
#include "obj-coff.h"
|
||||
#endif
|
||||
|
||||
#ifdef OBJ_ELF
|
||||
static void m68k_elf_cons (int);
|
||||
#endif
|
||||
|
||||
/* This string holds the chars that always start a comment. If the
|
||||
pre-processor is disabled, these aren't very useful. The macro
|
||||
|
@ -384,11 +375,9 @@ struct m68k_it
|
|||
significance of some values (in the branch instruction, for
|
||||
example). */
|
||||
int pcrel_fix;
|
||||
#ifdef OBJ_ELF
|
||||
/* Whether this expression needs special pic relocation, and if
|
||||
so, which. */
|
||||
enum pic_relocation pic_reloc;
|
||||
#endif
|
||||
}
|
||||
reloc[5]; /* Five is enough??? */
|
||||
};
|
||||
|
@ -449,9 +438,7 @@ add_fix (int width, struct m68k_exp *exp, int pc_rel, int pc_fix)
|
|||
the_ins.reloc[the_ins.nrel].exp = exp->exp;
|
||||
the_ins.reloc[the_ins.nrel].wid = width;
|
||||
the_ins.reloc[the_ins.nrel].pcrel_fix = pc_fix;
|
||||
#ifdef OBJ_ELF
|
||||
the_ins.reloc[the_ins.nrel].pic_reloc = exp->pic_reloc;
|
||||
#endif
|
||||
the_ins.reloc[the_ins.nrel++].pcrel = pc_rel;
|
||||
}
|
||||
|
||||
|
@ -894,13 +881,9 @@ const pseudo_typeS md_pseudo_table[] =
|
|||
{"even", s_even, 0},
|
||||
{"skip", s_space, 0},
|
||||
{"proc", s_proc, 0},
|
||||
#if defined (TE_SUN3) || defined (OBJ_ELF)
|
||||
{"align", s_align_bytes, 0},
|
||||
#endif
|
||||
#ifdef OBJ_ELF
|
||||
{"swbeg", s_ignore, 0},
|
||||
{"long", m68k_elf_cons, 4},
|
||||
#endif
|
||||
{"extend", float_cons, 'x'},
|
||||
{"ldouble", float_cons, 'x'},
|
||||
|
||||
|
@ -967,15 +950,7 @@ const pseudo_typeS mote_pseudo_table[] =
|
|||
{"dsb", s_space, 1},
|
||||
|
||||
{"xdef", s_globl, 0},
|
||||
#ifdef OBJ_ELF
|
||||
{"align", s_align_bytes, 0},
|
||||
#else
|
||||
{"align", s_align_ptwo, 0},
|
||||
#endif
|
||||
#ifdef M68KCOFF
|
||||
{"sect", obj_coff_section, 0},
|
||||
{"section", obj_coff_section, 0},
|
||||
#endif
|
||||
{0, 0, 0}
|
||||
};
|
||||
|
||||
|
@ -1000,7 +975,6 @@ static char alt_notend_table[256];
|
|||
|| (*s == ':' \
|
||||
&& alt_notend_table[(unsigned char) s[1]])))
|
||||
|
||||
#ifdef OBJ_ELF
|
||||
|
||||
/* Return zero if the reference to SYMBOL from within the same segment may
|
||||
be relaxed. */
|
||||
|
@ -1226,16 +1200,6 @@ tc_m68k_fix_adjustable (fixS *fixP)
|
|||
}
|
||||
}
|
||||
|
||||
#else /* !OBJ_ELF */
|
||||
|
||||
#define get_reloc_code(SIZE,PCREL,OTHER) NO_RELOC
|
||||
|
||||
/* PR gas/3041 Weak symbols are not relaxable
|
||||
because they must be treated as extern. */
|
||||
#define relaxable_symbol(symbol) (!(S_IS_WEAK (symbol)))
|
||||
|
||||
#endif /* OBJ_ELF */
|
||||
|
||||
arelent *
|
||||
tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
|
||||
{
|
||||
|
@ -1338,39 +1302,6 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
|
|||
reloc->sym_ptr_ptr = XNEW (asymbol *);
|
||||
*reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
|
||||
reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
|
||||
#ifndef OBJ_ELF
|
||||
if (OUTPUT_FLAVOR == bfd_target_aout_flavour
|
||||
&& fixp->fx_addsy
|
||||
&& S_IS_WEAK (fixp->fx_addsy)
|
||||
&& ! bfd_is_und_section (S_GET_SEGMENT (fixp->fx_addsy)))
|
||||
{
|
||||
/* PR gas/3041 References to weak symbols must be treated as extern
|
||||
in order to be overridable by the linker, even if they are defined
|
||||
in the same object file. So the original addend must be written
|
||||
"as is" into the output section without further processing.
|
||||
The addend value must be hacked here in order to force
|
||||
bfd_install_relocation() to write the original value into the
|
||||
output section.
|
||||
1) MD_APPLY_SYM_VALUE() is set to 1 for m68k/a.out, so the symbol
|
||||
value has already been added to the addend in fixup_segment(). We
|
||||
have to remove it.
|
||||
2) bfd_install_relocation() will incorrectly treat this symbol as
|
||||
resolved, so it will write the symbol value plus its addend and
|
||||
section VMA. As a workaround we can tweak the addend value here in
|
||||
order to get the original value in the section after the call to
|
||||
bfd_install_relocation(). */
|
||||
reloc->addend = fixp->fx_addnumber
|
||||
/* Fix because of MD_APPLY_SYM_VALUE() */
|
||||
- S_GET_VALUE (fixp->fx_addsy)
|
||||
/* Fix for bfd_install_relocation() */
|
||||
- (S_GET_VALUE (fixp->fx_addsy)
|
||||
+ S_GET_SEGMENT (fixp->fx_addsy)->vma);
|
||||
}
|
||||
else if (fixp->fx_pcrel)
|
||||
reloc->addend = fixp->fx_addnumber;
|
||||
else
|
||||
reloc->addend = 0;
|
||||
#else
|
||||
if (!fixp->fx_pcrel)
|
||||
reloc->addend = fixp->fx_addnumber;
|
||||
else
|
||||
|
@ -1378,7 +1309,6 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
|
|||
+ fixp->fx_pcrel_adjust
|
||||
+ fixp->fx_addnumber
|
||||
+ md_pcrel_from (fixp));
|
||||
#endif
|
||||
|
||||
reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
|
||||
gas_assert (reloc->howto != 0);
|
||||
|
@ -2670,12 +2600,9 @@ m68k_ip (char *instring)
|
|||
if (opP->reg == PC)
|
||||
{
|
||||
if (opP->disp.size == SIZE_LONG
|
||||
#ifdef OBJ_ELF
|
||||
/* If the displacement needs pic
|
||||
relocation it cannot be relaxed. */
|
||||
|| opP->disp.pic_reloc != pic_none
|
||||
#endif
|
||||
)
|
||||
|| opP->disp.pic_reloc != pic_none)
|
||||
{
|
||||
addword (0x0170);
|
||||
add_fix ('l', &opP->disp, 1, 2);
|
||||
|
@ -2840,12 +2767,9 @@ m68k_ip (char *instring)
|
|||
&& opP->reg == PC
|
||||
&& isvar (&opP->disp)
|
||||
&& subs (&opP->disp) == NULL
|
||||
#ifdef OBJ_ELF
|
||||
/* If the displacement needs pic
|
||||
relocation it cannot be relaxed. */
|
||||
&& opP->disp.pic_reloc == pic_none
|
||||
#endif
|
||||
)
|
||||
&& opP->disp.pic_reloc == pic_none)
|
||||
{
|
||||
/* The code in md_convert_frag_1 needs to be
|
||||
able to adjust nextword. Call frag_grow
|
||||
|
@ -2989,11 +2913,9 @@ m68k_ip (char *instring)
|
|||
if (isvar (&opP->disp)
|
||||
&& !subs (&opP->disp)
|
||||
&& adds (&opP->disp)
|
||||
#ifdef OBJ_ELF
|
||||
/* If the displacement needs pic relocation it
|
||||
cannot be relaxed. */
|
||||
&& opP->disp.pic_reloc == pic_none
|
||||
#endif
|
||||
&& !flag_long_jumps
|
||||
&& !strchr ("~%&$?", s[0]))
|
||||
{
|
||||
|
@ -3160,12 +3082,9 @@ m68k_ip (char *instring)
|
|||
|
||||
var_branch:
|
||||
if (subs (&opP->disp) /* We can't relax it. */
|
||||
#ifdef OBJ_ELF
|
||||
/* If the displacement needs pic relocation it cannot be
|
||||
relaxed. */
|
||||
|| opP->disp.pic_reloc != pic_none
|
||||
#endif
|
||||
|| 0)
|
||||
|| opP->disp.pic_reloc != pic_none)
|
||||
{
|
||||
if (!have_disp)
|
||||
as_warn (_("Can't use long branches on this architecture"));
|
||||
|
@ -4394,10 +4313,8 @@ md_assemble (char *str)
|
|||
current_label = NULL;
|
||||
}
|
||||
|
||||
#ifdef OBJ_ELF
|
||||
/* Tie dwarf2 debug info to the address at the start of the insn. */
|
||||
dwarf2_emit_insn (0);
|
||||
#endif
|
||||
|
||||
if (the_ins.nfrag == 0)
|
||||
{
|
||||
|
@ -4772,11 +4689,9 @@ md_begin (void)
|
|||
|
||||
init_regtable ();
|
||||
|
||||
#ifdef OBJ_ELF
|
||||
record_alignment (text_section, 2);
|
||||
record_alignment (data_section, 2);
|
||||
record_alignment (bss_section, 2);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -4795,9 +4710,7 @@ m68k_frob_label (symbolS *sym)
|
|||
labels = n;
|
||||
current_label = n;
|
||||
|
||||
#ifdef OBJ_ELF
|
||||
dwarf2_emit_label (sym);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* This is called when a value that is not an instruction is emitted. */
|
||||
|
@ -4907,7 +4820,6 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
|
|||
if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
|
||||
fixP->fx_done = 1;
|
||||
|
||||
#ifdef OBJ_ELF
|
||||
if (fixP->fx_addsy)
|
||||
{
|
||||
memset (buf, 0, fixP->fx_size);
|
||||
|
@ -4944,15 +4856,6 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
|
|||
|
||||
return;
|
||||
}
|
||||
#elif defined(OBJ_AOUT)
|
||||
/* PR gas/3041 Do not fix frags referencing a weak symbol. */
|
||||
if (fixP->fx_addsy && S_IS_WEAK (fixP->fx_addsy))
|
||||
{
|
||||
memset (buf, 0, fixP->fx_size);
|
||||
fixP->fx_addnumber = val; /* Remember value for emit_reloc. */
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
|
||||
|| fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
|
||||
|
@ -5405,36 +5308,6 @@ md_estimate_size_before_relax (fragS *fragP, segT segment)
|
|||
return md_relax_table[fragP->fr_subtype].rlx_length;
|
||||
}
|
||||
|
||||
#if defined(OBJ_AOUT)
|
||||
/* the bit-field entries in the relocation_info struct plays hell
|
||||
with the byte-order problems of cross-assembly. So as a hack,
|
||||
I added this mach. dependent ri twiddler. Ugly, but it gets
|
||||
you there. -KWK */
|
||||
/* on m68k: first 4 bytes are normal unsigned long, next three bytes
|
||||
are symbolnum, most sig. byte first. Last byte is broken up with
|
||||
bit 7 as pcrel, bits 6 & 5 as length, bit 4 as pcrel, and the lower
|
||||
nibble as nuthin. (on Sun 3 at least) */
|
||||
/* Translate the internal relocation information into target-specific
|
||||
format. */
|
||||
#ifdef comment
|
||||
void
|
||||
md_ri_to_chars (char *the_bytes, struct reloc_info_generic *ri)
|
||||
{
|
||||
/* This is easy. */
|
||||
md_number_to_chars (the_bytes, ri->r_address, 4);
|
||||
/* Now the fun stuff. */
|
||||
the_bytes[4] = (ri->r_symbolnum >> 16) & 0x0ff;
|
||||
the_bytes[5] = (ri->r_symbolnum >> 8) & 0x0ff;
|
||||
the_bytes[6] = ri->r_symbolnum & 0x0ff;
|
||||
the_bytes[7] = (((ri->r_pcrel << 7) & 0x80)
|
||||
| ((ri->r_length << 5) & 0x60)
|
||||
| ((ri->r_extern << 4) & 0x10));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* OBJ_AOUT */
|
||||
|
||||
#ifndef WORKING_DOT_WORD
|
||||
int md_short_jump_size = 4;
|
||||
int md_long_jump_size = 6;
|
||||
|
@ -7509,11 +7382,7 @@ m68k_set_extension (char const *name, int allow_m, int silent)
|
|||
Invocation line includes a switch not recognized by the base assembler.
|
||||
*/
|
||||
|
||||
#ifdef OBJ_ELF
|
||||
const char *md_shortopts = "lSA:m:kQ:V";
|
||||
#else
|
||||
const char *md_shortopts = "lSA:m:k";
|
||||
#endif
|
||||
|
||||
struct option md_longopts[] = {
|
||||
#define OPTION_PIC (OPTION_MD_BASE)
|
||||
|
@ -7877,18 +7746,6 @@ md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
|
|||
valueT
|
||||
md_section_align (segT segment ATTRIBUTE_UNUSED, valueT size)
|
||||
{
|
||||
#ifdef OBJ_AOUT
|
||||
/* 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
|
||||
easier to fix it here since that is how the other a.out targets
|
||||
work. */
|
||||
int align;
|
||||
|
||||
align = bfd_get_section_alignment (stdoutput, segment);
|
||||
size = ((size + (1 << align) - 1) & (-((valueT) 1 << align)));
|
||||
#endif
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
|
@ -7907,7 +7764,6 @@ md_pcrel_from (fixS *fixP)
|
|||
return fixP->fx_where + fixP->fx_frag->fr_address - adjust;
|
||||
}
|
||||
|
||||
#ifdef OBJ_ELF
|
||||
void
|
||||
m68k_elf_final_processing (void)
|
||||
{
|
||||
|
@ -8095,7 +7951,6 @@ m68k_elf_cons (int nbytes /* 4=.long */)
|
|||
input_line_pointer--;
|
||||
demand_empty_rest_of_line ();
|
||||
}
|
||||
#endif
|
||||
|
||||
int
|
||||
tc_m68k_regname_to_dw2regnum (const char *regname)
|
||||
|
|
|
@ -24,41 +24,7 @@ struct fix;
|
|||
|
||||
#define TARGET_BYTES_BIG_ENDIAN 1
|
||||
|
||||
#ifdef OBJ_AOUT
|
||||
#ifdef TE_SUN3
|
||||
#define TARGET_FORMAT "a.out-sunos-big"
|
||||
#endif
|
||||
#ifdef TE_NetBSD
|
||||
#define TARGET_FORMAT "a.out-m68k-netbsd"
|
||||
#endif
|
||||
#ifdef TE_LINUX
|
||||
#define TARGET_FORMAT "a.out-m68k-linux"
|
||||
#endif
|
||||
#ifndef TARGET_FORMAT
|
||||
#define TARGET_FORMAT "a.out-zero-big"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef OBJ_ELF
|
||||
#define TARGET_FORMAT "elf32-m68k"
|
||||
#endif
|
||||
|
||||
#ifdef TE_APOLLO
|
||||
#define COFF_MAGIC APOLLOM68KMAGIC
|
||||
#define COFF_AOUTHDR_MAGIC APOLLO_COFF_VERSION_NUMBER
|
||||
#undef OBJ_COFF_OMIT_OPTIONAL_HEADER
|
||||
#endif
|
||||
|
||||
#ifdef TE_AUX
|
||||
#define TARGET_FORMAT "coff-m68k-aux"
|
||||
#endif
|
||||
#ifdef TE_DELTA
|
||||
#define TARGET_FORMAT "coff-m68k-sysv"
|
||||
#endif
|
||||
|
||||
#ifndef COFF_MAGIC
|
||||
#define COFF_MAGIC MC68MAGIC
|
||||
#endif
|
||||
#define TARGET_ARCH bfd_arch_m68k
|
||||
|
||||
#define tc_comment_chars m68k_comment_chars
|
||||
|
@ -74,23 +40,8 @@ extern const char *m68k_comment_chars;
|
|||
#define REGISTER_PREFIX '%'
|
||||
#endif
|
||||
|
||||
#if !defined (REGISTER_PREFIX_OPTIONAL)
|
||||
#if defined (M68KCOFF) || defined (OBJ_ELF)
|
||||
#ifndef REGISTER_PREFIX_OPTIONAL
|
||||
#define REGISTER_PREFIX_OPTIONAL 0
|
||||
#else /* ! (COFF || ELF) */
|
||||
#define REGISTER_PREFIX_OPTIONAL 1
|
||||
#endif /* ! (COFF || ELF) */
|
||||
#endif /* not def REGISTER_PREFIX and not def OPTIONAL_REGISTER_PREFIX */
|
||||
|
||||
#ifdef TE_DELTA
|
||||
/* On the Delta, `%' can occur within a label name, but not as the
|
||||
initial character. */
|
||||
#define LEX_PCT LEX_NAME
|
||||
/* On the Delta, `~' can start a label name, but is converted to '.'. */
|
||||
#define LEX_TILDE LEX_BEGIN_NAME
|
||||
#define tc_canonicalize_symbol_name(s) ((*(s) == '~' ? *(s) = '.' : '.'), s)
|
||||
/* On the Delta, dots are not required before pseudo-ops. */
|
||||
#define NO_PSEUDO_DOT 1
|
||||
#endif
|
||||
|
||||
extern void m68k_mri_mode_change (int);
|
||||
|
@ -124,7 +75,6 @@ while (0)
|
|||
#define RELAX_RELOC_PC16 BFD_RELOC_16_PCREL
|
||||
#define RELAX_RELOC_PC32 BFD_RELOC_32_PCREL
|
||||
|
||||
#ifdef OBJ_ELF
|
||||
#define tc_fix_adjustable(X) tc_m68k_fix_adjustable(X)
|
||||
extern int tc_m68k_fix_adjustable (struct fix *);
|
||||
|
||||
|
@ -139,7 +89,6 @@ extern int tc_m68k_fix_adjustable (struct fix *);
|
|||
|
||||
#define elf_tc_final_processing m68k_elf_final_processing
|
||||
extern void m68k_elf_final_processing (void);
|
||||
#endif
|
||||
|
||||
#define DIFF_EXPR_OK
|
||||
|
||||
|
@ -148,8 +97,6 @@ extern int m68k_parse_long_option (char *);
|
|||
|
||||
#define md_operand(x)
|
||||
|
||||
#define TARGET_ARCH bfd_arch_m68k
|
||||
|
||||
extern struct relax_type md_relax_table[];
|
||||
#define TC_GENERIC_RELAX_TABLE md_relax_table
|
||||
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
/* Copyright (C) 2007-2018 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 3,
|
||||
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-psos.h for embedded systems running pSOS.
|
||||
Contributed by Martin Anantharaman (martin@mail.imech.uni-duisburg.de). */
|
||||
|
||||
#define TE_PSOS
|
||||
|
||||
/* 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
|
||||
|
||||
/* This makes GAS more versatile and blocks some ELF'isms in
|
||||
tc-m68k.h. */
|
||||
#define REGISTER_PREFIX_OPTIONAL 1
|
||||
|
||||
#include "obj-format.h"
|
|
@ -1,48 +0,0 @@
|
|||
/* te-sun3.h -- Sun-3 target environment declarations.
|
||||
Copyright (C) 1987-2018 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 3, 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 header file contains the #defines specific
|
||||
to SUN computer SUN 3 series computers. (The only kind
|
||||
we have around here, unfortunately.)
|
||||
|
||||
Rumor has it that this file will work on the Sun-2 if the assembler
|
||||
is called with -m68010 This is not tested. */
|
||||
|
||||
#define TE_SUN3 1
|
||||
|
||||
#define LOCAL_LABELS_DOLLAR 1
|
||||
#define LOCAL_LABELS_FB 1
|
||||
|
||||
/* Could also be :
|
||||
#define S_LOCAL_NAME(s) (S_GET_NAME(s)[0] == '.' &&
|
||||
S_GET_NAME(s)[1] == 'L' ||
|
||||
S_GET_NAME(s)[1] == '.')
|
||||
*/
|
||||
|
||||
#include "obj-format.h"
|
||||
|
||||
/*
|
||||
* Local Variables:
|
||||
* comment-column: 0
|
||||
* fill-column: 131
|
||||
* End:
|
||||
*/
|
||||
|
||||
/* end of te-sun3.h */
|
3
gas/configure
vendored
3
gas/configure
vendored
|
@ -12762,9 +12762,6 @@ case ${obj_format} in
|
|||
case ${target_cpu_type} in
|
||||
i386)
|
||||
$as_echo "#define I386COFF 1" >>confdefs.h
|
||||
;;
|
||||
m68k)
|
||||
$as_echo "#define M68KCOFF 1" >>confdefs.h
|
||||
;;
|
||||
x86_64)
|
||||
$as_echo "#define I386COFF 1" >>confdefs.h
|
||||
|
|
|
@ -684,7 +684,6 @@ case ${obj_format} in
|
|||
coff)
|
||||
case ${target_cpu_type} in
|
||||
i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
|
||||
m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;;
|
||||
x86_64) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
|
||||
esac
|
||||
;;
|
||||
|
|
|
@ -309,16 +309,12 @@ case ${generic_target} in
|
|||
m68hc11-*-* | m6811-*-*) fmt=elf ;;
|
||||
m68hc12-*-* | m6812-*-*) fmt=elf ;;
|
||||
|
||||
m68k-*-aout) fmt=aout bfd_gas=yes ;;
|
||||
m68k-*-elf*) fmt=elf ;;
|
||||
m68k-*-sysv4*) fmt=elf em=svr4 ;;
|
||||
m68k-*-linux-*) fmt=elf em=linux ;;
|
||||
m68k-*-uclinux*) fmt=elf em=uclinux ;;
|
||||
m68k-*-gnu*) fmt=elf ;;
|
||||
m68k-*-netbsdelf*) fmt=elf em=nbsd ;;
|
||||
m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
|
||||
m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
|
||||
m68k-*-psos*) fmt=elf em=psos;;
|
||||
|
||||
mep-*-elf) fmt=elf ;;
|
||||
|
||||
|
|
|
@ -200,11 +200,9 @@ config/te-nbsd.h
|
|||
config/te-nbsd532.h
|
||||
config/te-pc532mach.h
|
||||
config/te-pe.h
|
||||
config/te-psos.h
|
||||
config/te-riscix.h
|
||||
config/te-solaris.h
|
||||
config/te-sparcaout.h
|
||||
config/te-sun3.h
|
||||
config/te-svr4.h
|
||||
config/te-symbian.h
|
||||
config/te-tmips.h
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#source: weakref1.s
|
||||
# aout turns undefined into *ABS* symbols.
|
||||
# see weakref1.d for comments on the other not-targets
|
||||
#not-target: *-*-*aout m68k-*-netbsd m68k-*-openbsd* ns32k-*-netbsd alpha*-*-osf* *-*-ecoff
|
||||
#not-target: *-*-*aout ns32k-*-netbsd alpha*-*-osf* *-*-ecoff
|
||||
|
||||
# the rest of this file is generated with the following script:
|
||||
# # script begin
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
# Copyright (C) 2012-2018 Free Software Foundation, Inc.
|
||||
|
||||
# This program 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 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program 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 this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
#
|
||||
# Some m68k-coff tests
|
||||
#
|
||||
if [istarget m68*-*-coff] then {
|
||||
gas_test "p2430.s" "" $stdoptlist "local branch not in text section"
|
||||
|
||||
gas_test "p2430a.s" "" $stdoptlist "local branch not in text section"
|
||||
|
||||
gas_test "t1.s" "" $stdoptlist "multiple .file directives"
|
||||
|
||||
gas_test "p2389.s" "" $stdoptlist "bss fill"
|
||||
|
||||
setup_xfail m68*-*-coff
|
||||
gas_test_error "p2389a.s" "" "detect bss fill with non-zero data"
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
# I reached a point where the file looks
|
||||
# clean and complies with gas syntax, but it core dumps gas. Here's a
|
||||
# little gdb info:
|
||||
#
|
||||
# Program terminated with signal 11, Segmentation fault.
|
||||
# #0 0x6323c in memcpy ()
|
||||
# (gdb) bt
|
||||
# #0 0x6323c in memcpy ()
|
||||
# #1 0xf2b0 in fill_section (abfd=0xeaee8, filehdr=0x8a7f4,
|
||||
# file_cursor=0xf7fff654) at obj-format.c:534
|
||||
# #2 0x112a8 in write_object_file () at obj-format.c:1786
|
||||
# #3 0x13ef8 in main (argc=5, argv=0xf7fff7bc) at ../../p3/gas/as.c:310
|
||||
# (gdb)
|
||||
#
|
||||
# gas did manage to create the .o file at this point.
|
||||
|
||||
.bss
|
||||
|
||||
_ASIC_INT_TBL: .space 32,0 | keep interrupt routines here
|
|
@ -1,3 +0,0 @@
|
|||
.bss
|
||||
|
||||
_ASIC_INT_TBL: .space 32,1 | keep interrupt routines here
|
|
@ -1,6 +0,0 @@
|
|||
# This differs from p2430a.s (the customer's actual source file) only
|
||||
# in whitespace and comments. Strangely, this file gave no problems...
|
||||
|
||||
.sect foo
|
||||
tag:
|
||||
bra tag
|
|
@ -1,4 +0,0 @@
|
|||
.sect foo
|
||||
|
||||
tag:
|
||||
bra tag
|
|
@ -1,36 +0,0 @@
|
|||
# 1 "libgcc1.S"
|
||||
# 42 "libxyz1.S"
|
||||
# 259 "libgcc1.S"
|
||||
.text
|
||||
.proc
|
||||
|#PROC# 04
|
||||
.globl __mulsi3
|
||||
__mulsi3 :
|
||||
|#PROLOGUE# 0
|
||||
link %a6 ,#0
|
||||
addl #-LF14, %sp
|
||||
moveml #LS14, %sp @
|
||||
|#PROLOGUE# 1
|
||||
movew %a6 @(0x8), %d0
|
||||
muluw %a6 @(0xe), %d0
|
||||
movew %a6 @(0xa), %d1
|
||||
muluw %a6 @(0xc), %d1
|
||||
addw %d1 , %d0
|
||||
lsll #8, %d0
|
||||
lsll #8, %d0
|
||||
movew %a6 @(0xa), %d1
|
||||
muluw %a6 @(0xe), %d1
|
||||
addl %d1 , %d0
|
||||
jra LE14
|
||||
LE14:
|
||||
|#PROLOGUE# 2
|
||||
moveml %sp @, #LS14
|
||||
unlk %a6
|
||||
|#PROLOGUE# 3
|
||||
rts
|
||||
LF14 = 4
|
||||
LS14 = 0x0002
|
||||
LFF14 = 0
|
||||
# 354 "libgcc1.S"
|
||||
LSS14 = 0x0
|
||||
LV14 = 0
|
|
@ -31,9 +31,6 @@ if [istarget "m6812-*-*"] then {
|
|||
}
|
||||
if { [istarget m68*-*-*] || [istarget fido*-*-*] } then {
|
||||
gas_test "t2.s" "" "" "cross-section branch"
|
||||
if [istarget m68*-motorola-sysv] then {
|
||||
run_dump_test t2
|
||||
}
|
||||
|
||||
gas_test "pic1.s" "" "" "PIC generation"
|
||||
|
||||
|
@ -41,9 +38,6 @@ if { [istarget m68*-*-*] || [istarget fido*-*-*] } then {
|
|||
|
||||
gas_test_error "p2410.s" "" "out-of-range 'bras'"
|
||||
|
||||
# Reloc types etc. need changing for aout and coff to pass.
|
||||
setup_xfail "*-*"
|
||||
clear_xfail "*-*-*elf*" "*-*-sysv4*" "*-*-rtems*" "*-*-*linux*" "*-*-*gnu*" "*-*-psos*"
|
||||
run_dump_test pcrel
|
||||
|
||||
# Since fido is basically CPU32, it does not support those
|
||||
|
@ -76,9 +70,7 @@ if { [istarget m68*-*-*] || [istarget fido*-*-*] } then {
|
|||
run_dump_test mcf-fpu
|
||||
run_dump_test mcf-trap
|
||||
run_dump_test mcf-wdebug
|
||||
if { [istarget *-*-elf] || [istarget *-*-linux*] } then {
|
||||
run_dump_test arch-cpu-1
|
||||
}
|
||||
run_dump_test cpu32
|
||||
|
||||
run_dump_test br-isaa
|
||||
|
@ -93,12 +85,6 @@ if { [istarget m68*-*-*] || [istarget fido*-*-*] } then {
|
|||
gas_test_error "p13050-1.s" "-march=isab" "moveb (d8,An,Xi),(d16,An) unsupported on isab"
|
||||
run_dump_test p13050-2
|
||||
|
||||
if { [istarget *-*-*aout] || [istarget *-*-netbsd] || [istarget *-*-openbsd*] } then {
|
||||
run_dump_test p3041
|
||||
run_dump_test p3041data
|
||||
run_dump_test p3041pcrel
|
||||
}
|
||||
|
||||
set testname "68000 operands"
|
||||
gas_run "operands.s" "-m68000" "2>err.out"
|
||||
if ![string match "child process exited abnormally" $comp_output] then {
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
#name: br-isaa.d
|
||||
#objdump: -dr
|
||||
#as: -march=isaa -pcrel
|
||||
#not-target: *-*-*aout m68k-*-netbsd m68k-*-openbsd*
|
||||
|
||||
.*: file format .*
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
#name: br-isab.d
|
||||
#objdump: -dr
|
||||
#as: -march=isab -pcrel
|
||||
#not-target: *-*-*aout m68k-*-netbsd m68k-*-openbsd*
|
||||
|
||||
.*: file format .*
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
#name: br-isac.d
|
||||
#objdump: -dr
|
||||
#as: -march=isac -pcrel
|
||||
#not-target: *-*-*aout m68k-*-netbsd m68k-*-openbsd*
|
||||
|
||||
.*: file format .*
|
||||
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
#name: PR 3041
|
||||
#objdump: -tdr
|
||||
|
||||
.*: file format .*
|
||||
|
||||
SYMBOL TABLE:
|
||||
00000036 w \.text 0000 00 0f mytext
|
||||
0000003e w \.data 0000 00 10 mydata
|
||||
0000004a w \.bss 0000 00 11 mybss
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
00000000 <.*>:
|
||||
0: 41f9 0000 0000 lea 0 <.*>,%a0
|
||||
2: 32 mytext
|
||||
6: 41f9 0000 0002 lea 2 <.*>,%a0
|
||||
8: 32 mytext
|
||||
c: 41f9 ffff fffc lea fffffffc <.*>,%a0
|
||||
e: 32 mytext
|
||||
12: 41f9 0000 0000 lea 0 <.*>,%a0
|
||||
14: 32 mydata
|
||||
18: 41f9 0000 0003 lea 3 <.*>,%a0
|
||||
1a: 32 mydata
|
||||
1e: 41f9 ffff ffff lea ffffffff <.*>,%a0
|
||||
20: 32 mydata
|
||||
24: 41f9 0000 0000 lea 0 <.*>,%a0
|
||||
26: 32 mybss
|
||||
2a: 41f9 0000 0001 lea 1 <.*>,%a0
|
||||
2c: 32 mybss
|
||||
30: 41f9 ffff fffe lea fffffffe <.*>,%a0
|
||||
32: 32 mybss
|
||||
|
||||
00000036 <mytext>:
|
||||
36: 4e71 nop
|
||||
38: 4e71 nop
|
||||
3a: 4e71 nop
|
|
@ -1,27 +0,0 @@
|
|||
lea mytext,%a0
|
||||
lea mytext+2,%a0
|
||||
lea mytext-4,%a0
|
||||
lea mydata,%a0
|
||||
lea mydata+3,%a0
|
||||
lea mydata-1,%a0
|
||||
lea mybss,%a0
|
||||
lea mybss+1,%a0
|
||||
lea mybss-2,%a0
|
||||
.weak mytext
|
||||
mytext:
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
.data
|
||||
.word 0x8081
|
||||
.weak mydata
|
||||
mydata:
|
||||
.word 0x8283
|
||||
.word 0x8485
|
||||
|
||||
.bss
|
||||
.skip 6
|
||||
.weak mybss
|
||||
mybss:
|
||||
.skip 2
|
|
@ -1,28 +0,0 @@
|
|||
#name: PR 3041 data
|
||||
#objdump: -trs
|
||||
|
||||
.*: file format .*
|
||||
|
||||
SYMBOL TABLE:
|
||||
00000006 w \.text 0000 00 0f mytext
|
||||
00000014 w \.data 0000 00 10 mydata
|
||||
00000040 w \.bss 0000 00 11 mybss
|
||||
|
||||
RELOCATION RECORDS FOR \[\.data\]:
|
||||
OFFSET TYPE VALUE
|
||||
00000004 32 mytext
|
||||
00000008 32 mytext
|
||||
0000000c 32 mytext
|
||||
00000010 32 mydata
|
||||
00000014 32 mydata
|
||||
00000018 32 mydata
|
||||
0000001c 32 mybss
|
||||
00000020 32 mybss
|
||||
00000024 32 mybss
|
||||
|
||||
Contents of section .text:
|
||||
0000 4e714e71 4e714e71 .*
|
||||
Contents of section .data:
|
||||
0008 12345678 00000000 00000001 fffffffd .*
|
||||
0018 00000000 00000003 fffffffe 00000000 .*
|
||||
0028 00000002 ffffffff .*
|
|
@ -1,27 +0,0 @@
|
|||
.text
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
.weak mytext
|
||||
mytext:
|
||||
nop
|
||||
|
||||
.data
|
||||
.long 0x12345678
|
||||
.long mytext
|
||||
.long mytext+1
|
||||
.weak mydata
|
||||
mydata:
|
||||
.long mytext-3
|
||||
.long mydata
|
||||
.long mydata+3
|
||||
.long mydata-2
|
||||
.long mybss
|
||||
.long mybss+2
|
||||
.long mybss-1
|
||||
|
||||
.bss
|
||||
.skip 16
|
||||
.weak mybss
|
||||
mybss:
|
||||
.word 1
|
|
@ -1,38 +0,0 @@
|
|||
#name: PR 3041 pcrel
|
||||
#as: -m68000
|
||||
#objdump: -tdr
|
||||
|
||||
.*: file format .*
|
||||
|
||||
SYMBOL TABLE:
|
||||
00000024 w \.text 0000 00 0f mytext
|
||||
0000002e w \.data 0000 00 10 mydata
|
||||
0000003a w \.bss 0000 00 11 mybss
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
00000000 <.*>:
|
||||
0: 41fa fffe lea %pc@\(0 <.*>\),%a0
|
||||
2: DISP16 mytext
|
||||
4: 41fa fffc lea %pc@\(2 <.*>\),%a0
|
||||
6: DISP16 mytext
|
||||
8: 41fa fff2 lea %pc@\(fffffffc <.*>\),%a0
|
||||
a: DISP16 mytext
|
||||
c: 41fa fff2 lea %pc@\(0 <.*>\),%a0
|
||||
e: DISP16 mydata
|
||||
10: 41fa fff1 lea %pc@\(3 <.*>\),%a0
|
||||
12: DISP16 mydata
|
||||
14: 41fa ffe9 lea %pc@\(ffffffff <.*>\),%a0
|
||||
16: DISP16 mydata
|
||||
18: 41fa ffe6 lea %pc@\(0 <.*>\),%a0
|
||||
1a: DISP16 mybss
|
||||
1c: 41fa ffe3 lea %pc@\(1 <.*>\),%a0
|
||||
1e: DISP16 mybss
|
||||
20: 41fa ffdc lea %pc@\(fffffffe <.*>\),%a0
|
||||
22: DISP16 mybss
|
||||
|
||||
00000024 <mytext>:
|
||||
24: 4e71 nop
|
||||
26: 4e71 nop
|
||||
28: 4e71 nop
|
||||
2a: 4e71 nop
|
|
@ -1,28 +0,0 @@
|
|||
lea mytext(%pc),%a0
|
||||
lea mytext+2(%pc),%a0
|
||||
lea mytext-4(%pc),%a0
|
||||
lea mydata(%pc),%a0
|
||||
lea mydata+3(%pc),%a0
|
||||
lea mydata-1(%pc),%a0
|
||||
lea mybss(%pc),%a0
|
||||
lea mybss+1(%pc),%a0
|
||||
lea mybss-2(%pc),%a0
|
||||
.weak mytext
|
||||
mytext:
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
.data
|
||||
.word 0x8081
|
||||
.weak mydata
|
||||
mydata:
|
||||
.word 0x8283
|
||||
.word 0x8485
|
||||
|
||||
.bss
|
||||
.skip 6
|
||||
.weak mybss
|
||||
mybss:
|
||||
.skip 2
|
|
@ -1,8 +0,0 @@
|
|||
#PROG: nm
|
||||
#name: presence of section symbols
|
||||
|
||||
00000012 b .bss
|
||||
0000000e d .data
|
||||
00000000 t .text
|
||||
0000000e d loop1
|
||||
00000000 t loop2
|
|
@ -1,3 +1,11 @@
|
|||
2018-04-16 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* aout/host.h: Remove m68k-aout and m68k-coff support.
|
||||
* aout/hp300hpux.h: Delete.
|
||||
* coff/apollo.h: Delete.
|
||||
* coff/aux-coff.h: Delete.
|
||||
* coff/m68k.h: Delete.
|
||||
|
||||
2018-04-16 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* dis-asm.h: Remove sh5 and sh64 support.
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
It is up to you to define SEGMENT_SIZE on machines not listed here. */
|
||||
#ifndef SEGMENT_SIZE
|
||||
|
||||
#if defined(hp300) || defined(pyr)
|
||||
#if defined(pyr)
|
||||
#define SEGMENT_SIZE page_size
|
||||
#endif
|
||||
|
||||
|
@ -30,10 +30,5 @@
|
|||
#define SEGMENT_SIZE 0x20000
|
||||
#endif
|
||||
|
||||
#if defined(m68k) && defined(PORTAR)
|
||||
#define TARGET_PAGE_SIZE 0x400
|
||||
#define SEGMENT_SIZE TARGET_PAGE_SIZE
|
||||
#endif
|
||||
|
||||
#endif /*!defined(SEGMENT_SIZE)*/
|
||||
|
||||
|
|
|
@ -1,131 +0,0 @@
|
|||
/* Special version of <a.out.h> for use under HP-UX.
|
||||
Copyright (C) 1988-2018 Free Software Foundation, Inc.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
struct hp300hpux_exec_bytes
|
||||
{
|
||||
unsigned char e_info[4]; /* a_machtype/a_magic */
|
||||
unsigned char e_spare1[4];
|
||||
unsigned char e_spare2[4];
|
||||
unsigned char e_text[4]; /* length of text, in bytes */
|
||||
unsigned char e_data[4]; /* length of data, in bytes */
|
||||
unsigned char e_bss[4]; /* length of uninitialized data area , in bytes */
|
||||
unsigned char e_trsize[4]; /* length of relocation info for text, in bytes*/
|
||||
unsigned char e_drsize[4]; /* length of relocation info for data, in bytes*/
|
||||
unsigned char e_passize[4];/* HP = pascal interface size */
|
||||
unsigned char e_syms[4]; /* HP = symbol table size */
|
||||
unsigned char e_spare5[4]; /* HP = debug name table size */
|
||||
unsigned char e_entry[4]; /* start address */
|
||||
unsigned char e_spare6[4]; /* HP = source line table size */
|
||||
unsigned char e_supsize[4];/* HP = value table size */
|
||||
unsigned char e_drelocs[4];
|
||||
unsigned char e_extension[4]; /* file offset of extension */
|
||||
};
|
||||
#define EXEC_BYTES_SIZE 64
|
||||
|
||||
struct hp300hpux_nlist_bytes
|
||||
{
|
||||
unsigned char e_value[4];
|
||||
unsigned char e_type[1];
|
||||
unsigned char e_length[1]; /* Length of ascii symbol name. */
|
||||
unsigned char e_almod[2]; /* Alignment mod. */
|
||||
unsigned char e_shlib[2]; /* Info about dynamic linking. */
|
||||
};
|
||||
#define EXTERNAL_NLIST_SIZE 10
|
||||
|
||||
struct hp300hpux_reloc
|
||||
{
|
||||
unsigned char r_address[4];/* offset of data to relocate */
|
||||
unsigned char r_index[2]; /* symbol table index of symbol */
|
||||
unsigned char r_type[1]; /* relocation type */
|
||||
unsigned char r_length[1]; /* length of item to reloc */
|
||||
};
|
||||
|
||||
struct hp300hpux_header_extension
|
||||
{
|
||||
unsigned char e_syms[4];
|
||||
unsigned char unique_headers[12*4];
|
||||
unsigned char e_header[2]; /* Type of header. */
|
||||
unsigned char e_version[2]; /* Version. */
|
||||
unsigned char e_size[4]; /* Bytes following. */
|
||||
unsigned char e_extension[4];/* File offset of next extension. */
|
||||
};
|
||||
#define EXTERNAL_EXTENSION_HEADER_SIZE (16*4)
|
||||
|
||||
/* HPUX separates object files (0x106) and impure executables (0x107)
|
||||
but the bfd code does not distinguish between them. Since we want to
|
||||
read hpux .o files, we add an special define and use it below in
|
||||
offset and address calculations. */
|
||||
|
||||
#define HPUX_DOT_O_MAGIC 0x106
|
||||
#define OMAGIC 0x107 /* Object file or impure executable. */
|
||||
#define NMAGIC 0x108 /* Code indicating pure executable. */
|
||||
#define ZMAGIC 0x10B /* Demand-paged executable. */
|
||||
|
||||
#define N_HEADER_IN_TEXT(x) 0
|
||||
|
||||
#if 0 /* libaout.h only uses the lower 8 bits. */
|
||||
#define HP98x6_ID 0x20A
|
||||
#define HP9000S200_ID 0x20C
|
||||
#endif
|
||||
#define HP98x6_ID 0x0A
|
||||
#define HP9000S200_ID 0x0C
|
||||
|
||||
#define N_BADMAG(x) ((_N_BADMAG (x)) || (_N_BADMACH (x)))
|
||||
|
||||
#define N_DATADDR(x) \
|
||||
((N_MAGIC (x) == OMAGIC || N_MAGIC (x) == HPUX_DOT_O_MAGIC) \
|
||||
? (N_TXTADDR (x) + N_TXTSIZE (x)) \
|
||||
: (N_SEGSIZE (x) + ((N_TXTADDR (x) + N_TXTSIZE (x) - 1) \
|
||||
& ~ (bfd_vma) (N_SEGSIZE (x) - 1))))
|
||||
|
||||
#define _N_BADMACH(x) \
|
||||
(((N_MACHTYPE (x)) != HP9000S200_ID) && ((N_MACHTYPE (x)) != HP98x6_ID))
|
||||
|
||||
#define _N_BADMAG(x) (N_MAGIC(x) != HPUX_DOT_O_MAGIC \
|
||||
&& N_MAGIC(x) != OMAGIC \
|
||||
&& N_MAGIC(x) != NMAGIC \
|
||||
&& N_MAGIC(x) != ZMAGIC )
|
||||
|
||||
#undef _N_HDROFF
|
||||
#define _N_HDROFF(x) (SEGMENT_SIZE - (sizeof (struct exec)))
|
||||
|
||||
#undef N_DATOFF
|
||||
#undef N_PASOFF
|
||||
#undef N_SYMOFF
|
||||
#undef N_SUPOFF
|
||||
#undef N_TRELOFF
|
||||
#undef N_DRELOFF
|
||||
#undef N_STROFF
|
||||
|
||||
#define N_DATOFF(x) ( N_TXTOFF(x) + N_TXTSIZE(x) )
|
||||
#define N_PASOFF(x) ( N_DATOFF(x) + (x)->a_data)
|
||||
#define N_SYMOFF(x) ( N_PASOFF(x) /* + (x)->a_passize*/ )
|
||||
#define N_SUPOFF(x) ( N_SYMOFF(x) + (x)->a_syms )
|
||||
#define N_TRELOFF(x) ( N_SUPOFF(x) /* + (x)->a_supsize*/ )
|
||||
#define N_DRELOFF(x) ( N_TRELOFF(x) + (x)->a_trsize )
|
||||
#define N_EXTHOFF(x) ( N_DRELOFF(x) /* + (x)->a_drsize */)
|
||||
#define N_STROFF(x) ( 0 /* no string table */ )
|
||||
|
||||
/* Use these when the file has gnu symbol tables. */
|
||||
#define N_GNU_TRELOFF(x) (N_DATOFF(x) + (x)->a_data)
|
||||
#define N_GNU_DRELOFF(x) (N_GNU_TRELOFF(x) + (x)->a_trsize)
|
||||
#define N_GNU_SYMOFF(x) (N_GNU_DRELOFF(x) + (x)->a_drsize)
|
||||
|
||||
#define TARGET_PAGE_SIZE 0x1000
|
||||
#define SEGMENT_SIZE 0x1000
|
||||
#define TEXT_START_ADDR 0
|
|
@ -1,125 +0,0 @@
|
|||
/* coff information for Apollo M68K
|
||||
|
||||
Copyright (C) 2001-2018 Free Software Foundation, Inc.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#define DO_NOT_DEFINE_AOUTHDR
|
||||
#define L_LNNO_SIZE 2
|
||||
#include "coff/external.h"
|
||||
|
||||
/* Motorola 68000/68008/68010/68020 */
|
||||
#define MC68MAGIC 0520
|
||||
#define MC68KWRMAGIC 0520 /* writeable text segments */
|
||||
#define MC68TVMAGIC 0521
|
||||
#define MC68KROMAGIC 0521 /* readonly shareable text segments */
|
||||
#define MC68KPGMAGIC 0522 /* demand paged text segments */
|
||||
#define M68MAGIC 0210
|
||||
#define M68TVMAGIC 0211
|
||||
|
||||
/* Apollo 68000-based machines have a different magic number. This comes
|
||||
* from /usr/include/apollo/filehdr.h
|
||||
*/
|
||||
#define APOLLOM68KMAGIC 0627
|
||||
|
||||
#define OMAGIC M68MAGIC
|
||||
#define M68KBADMAG(x) (((x).f_magic!=MC68MAGIC) && ((x).f_magic!=MC68KWRMAGIC) && ((x).f_magic!=MC68TVMAGIC) && \
|
||||
((x).f_magic!=MC68KROMAGIC) && ((x).f_magic!=MC68KPGMAGIC) && ((x).f_magic!=M68MAGIC) && ((x).f_magic!=M68TVMAGIC) && \
|
||||
((x).f_magic!=APOLLOM68KMAGIC) )
|
||||
|
||||
/********************** AOUT "OPTIONAL HEADER" **********************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char magic[2]; /* type of file */
|
||||
char vstamp[2]; /* version stamp */
|
||||
char tsize[4]; /* text size in bytes, padded to FW bdry*/
|
||||
char dsize[4]; /* initialized data " " */
|
||||
char bsize[4]; /* uninitialized data " " */
|
||||
char entry[4]; /* entry pt. */
|
||||
char text_start[4]; /* base of text used for this file */
|
||||
char data_start[4]; /* base of data used for this file */
|
||||
char o_sri[4]; /* Apollo specific - .sri data pointer */
|
||||
char o_inlib[4]; /* Apollo specific - .inlib data pointer */
|
||||
char vid[8]; /* Apollo specific - 64 bit version ID */
|
||||
}
|
||||
AOUTHDR;
|
||||
|
||||
#define APOLLO_COFF_VERSION_NUMBER 1 /* the value of the aouthdr magic */
|
||||
#define AOUTHDRSZ 44
|
||||
#define AOUTSZ 44
|
||||
|
||||
/* Apollo allowa for larger section names by allowing
|
||||
them to be in the string table. */
|
||||
|
||||
/* If s_zeores is all zeroes, s_offset gives the real
|
||||
location of the name in the string table. */
|
||||
|
||||
#define s_zeroes section_name.s_name
|
||||
#define s_offset (section_name.s_name+4)
|
||||
|
||||
/* More names of "special" sections. */
|
||||
#define _TV ".tv"
|
||||
#define _INIT ".init"
|
||||
#define _FINI ".fini"
|
||||
#define _LINES ".lines"
|
||||
#define _BLOCKS ".blocks"
|
||||
#define _SRI ".sri" /* Static Resource Information (systype,
|
||||
et al.) */
|
||||
#define _MIR ".mir" /* Module Information Records */
|
||||
#define _APTV ".aptv" /* Apollo-style transfer vectors. */
|
||||
#define _INLIB ".inlib" /* Shared Library information */
|
||||
#define _RWDI ".rwdi" /* Read/write data initialization directives for
|
||||
compressed sections */
|
||||
#define _UNWIND ".unwind" /* Stack unwind information */
|
||||
|
||||
/********************** RELOCATION DIRECTIVES **********************/
|
||||
|
||||
struct external_reloc
|
||||
{
|
||||
char r_vaddr[4];
|
||||
char r_symndx[4];
|
||||
char r_type[2];
|
||||
#ifdef M68K_COFF_OFFSET
|
||||
char r_offset[4];
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
#define RELOC struct external_reloc
|
||||
|
||||
#ifdef M68K_COFF_OFFSET
|
||||
#define RELSZ 14
|
||||
#else
|
||||
#define RELSZ 10
|
||||
#endif
|
||||
|
||||
/* Apollo specific STYP flags */
|
||||
|
||||
#define STYP_RELOCATED_NOT_LOADED 0x00010000 /* Section is relocated normally during linking, but need
|
||||
not be loaded during program execution */
|
||||
#define STYP_DEBUG 0x00020000 /* debug section */
|
||||
#define STYP_OVERLAY 0x00040000 /* Section is overlayed */
|
||||
#define STYP_INSTRUCTION 0x00200000 /* Section contains executable code */
|
||||
|
||||
#define STYP_ZERO 0x00800000 /* Section is initialized to zero */
|
||||
#define STYP_INSTALLED 0x02000000 /* Section should be installable in KGT */
|
||||
#define STYP_LOOK_INSTALLED 0x04000000 /* Look for section in KGT */
|
||||
#define STYP_SECALIGN1 0x08000000 /* Specially aligned section */
|
||||
#define STYP_SECALIGN2 0x10000000 /* " " " */
|
||||
#define STYP_COMPRESSED 0x20000000 /* No section data per se (s_scnptr = 0), but there are
|
||||
initialization directives for it in .rwdi section
|
||||
(used in conjunction with STYP_BSS) */
|
|
@ -1,49 +0,0 @@
|
|||
/* Modifications of internal.h and m68k.h needed by A/UX
|
||||
|
||||
Copyright (C) 2001-2018 Free Software Foundation, Inc.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA.
|
||||
|
||||
Suggested by Ian Lance Taylor <ian@cygnus.com> */
|
||||
|
||||
#ifndef GNU_COFF_AUX_H
|
||||
#define GNU_COFF_AUX_H 1
|
||||
|
||||
#include "coff/internal.h"
|
||||
#include "coff/m68k.h"
|
||||
|
||||
/* Section contains 64-byte padded pathnames of shared libraries */
|
||||
#undef STYP_LIB
|
||||
#define STYP_LIB 0x200
|
||||
|
||||
/* Section contains shared library initialization code */
|
||||
#undef STYP_INIT
|
||||
#define STYP_INIT 0x400
|
||||
|
||||
/* Section contains .ident information */
|
||||
#undef STYP_IDENT
|
||||
#define STYP_IDENT 0x800
|
||||
|
||||
/* Section types used by bfd and gas not defined (directly) by A/UX */
|
||||
#undef STYP_OVER
|
||||
#define STYP_OVER 0
|
||||
#undef STYP_INFO
|
||||
#define STYP_INFO STYP_IDENT
|
||||
|
||||
/* Traditional name of the section tagged with STYP_LIB */
|
||||
#define _LIB ".lib"
|
||||
|
||||
#endif /* GNU_COFF_AUX_H */
|
|
@ -1,82 +0,0 @@
|
|||
/* coff information for M68K
|
||||
|
||||
Copyright (C) 2001-2018 Free Software Foundation, Inc.
|
||||
|
||||
This program 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#ifndef GNU_COFF_M68K_H
|
||||
#define GNU_COFF_M68K_H 1
|
||||
|
||||
#define L_LNNO_SIZE 2
|
||||
#include "coff/external.h"
|
||||
|
||||
/* Motorola 68000/68008/68010/68020 */
|
||||
#define MC68MAGIC 0520
|
||||
#define MC68KWRMAGIC 0520 /* writeable text segments */
|
||||
#define MC68TVMAGIC 0521
|
||||
#define MC68KROMAGIC 0521 /* readonly shareable text segments */
|
||||
#define MC68KPGMAGIC 0522 /* demand paged text segments */
|
||||
#define M68MAGIC 0210
|
||||
#define M68TVMAGIC 0211
|
||||
|
||||
/* This is the magic of the Bull dpx/2 */
|
||||
#define MC68KBCSMAGIC 0526
|
||||
|
||||
/* This is Lynx's all-platform magic number for executables. */
|
||||
|
||||
#define LYNXCOFFMAGIC 0415
|
||||
|
||||
#define OMAGIC M68MAGIC
|
||||
|
||||
/* This intentionally does not include MC68KBCSMAGIC; it only includes
|
||||
magic numbers which imply that names do not have underscores. */
|
||||
#define M68KBADMAG(x) (((x).f_magic != MC68MAGIC) \
|
||||
&& ((x).f_magic != MC68KWRMAGIC) \
|
||||
&& ((x).f_magic != MC68TVMAGIC) \
|
||||
&& ((x).f_magic != MC68KROMAGIC) \
|
||||
&& ((x).f_magic != MC68KPGMAGIC) \
|
||||
&& ((x).f_magic != M68MAGIC) \
|
||||
&& ((x).f_magic != M68TVMAGIC) \
|
||||
&& ((x).f_magic != LYNXCOFFMAGIC))
|
||||
|
||||
/* Magic numbers for the a.out header. */
|
||||
|
||||
#define PAGEMAGICEXECSWAPPED 0407 /* executable (swapped) */
|
||||
#define PAGEMAGICPEXECSWAPPED 0410 /* pure executable (swapped) */
|
||||
#define PAGEMAGICPEXECTSHLIB 0443 /* pure executable (target shared library) */
|
||||
#define PAGEMAGICPEXECPAGED 0413 /* pure executable (paged) */
|
||||
|
||||
/********************** RELOCATION DIRECTIVES **********************/
|
||||
|
||||
struct external_reloc
|
||||
{
|
||||
char r_vaddr[4];
|
||||
char r_symndx[4];
|
||||
char r_type[2];
|
||||
#ifdef M68K_COFF_OFFSET
|
||||
char r_offset[4];
|
||||
#endif
|
||||
};
|
||||
|
||||
#define RELOC struct external_reloc
|
||||
|
||||
#ifdef M68K_COFF_OFFSET
|
||||
#define RELSZ 14
|
||||
#else
|
||||
#define RELSZ 10
|
||||
#endif
|
||||
|
||||
#endif /* GNU_COFF_M68K_H */
|
36
ld/ChangeLog
36
ld/ChangeLog
|
@ -1,3 +1,39 @@
|
|||
2018-04-16 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* Makefile.am: Remove m68k-aout and m68k-coff support.
|
||||
* configure.tgt: Likewise.
|
||||
* emultempl/m68kelf.em: Likewise.
|
||||
* ld.texinfo: Likewise.
|
||||
* mri.c: Likewise.
|
||||
* emulparams/delta68.sh: Delete.
|
||||
* emulparams/hp300bsd.sh: Delete.
|
||||
* emulparams/hp3hpux.sh: Delete.
|
||||
* emulparams/m68k4knbsd.sh: Delete.
|
||||
* emulparams/m68kaout.sh: Delete.
|
||||
* emulparams/m68kaux.sh: Delete.
|
||||
* emulparams/m68kcoff.sh: Delete.
|
||||
* emulparams/m68klinux.sh: Delete.
|
||||
* emulparams/m68knbsd.sh: Delete.
|
||||
* emulparams/m68kpsos.sh: Delete.
|
||||
* emulparams/sun3.sh: Delete.
|
||||
* emultempl/m68kcoff.em: Delete.
|
||||
* scripttempl/delta68.sc: Delete.
|
||||
* scripttempl/m68kaux.sc: Delete.
|
||||
* scripttempl/m68kcoff.sc: Delete.
|
||||
* scripttempl/psos.sc: Delete.
|
||||
* testsuite/ld-versados/t1-1.ro: Delete.
|
||||
* testsuite/ld-versados/t1-2.ro: Delete.
|
||||
* testsuite/ld-versados/t1.ld: Delete.
|
||||
* testsuite/ld-versados/t1.ook: Delete.
|
||||
* testsuite/ld-versados/t2-1.ro: Delete.
|
||||
* testsuite/ld-versados/t2-2.ro: Delete.
|
||||
* testsuite/ld-versados/t2-3.ro: Delete.
|
||||
* testsuite/ld-versados/t2.ld: Delete.
|
||||
* testsuite/ld-versados/t2.ook: Delete.
|
||||
* testsuite/ld-versados/versados.exp: Delete.
|
||||
* Makefile.in: Regenerate.
|
||||
* po/BLD-POTFILES.in: Regenerate.
|
||||
|
||||
2018-04-16 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* Makefile.am: Remove sh5 and sh64 support.
|
||||
|
|
|
@ -217,7 +217,6 @@ ALL_EMULATION_SOURCES = \
|
|||
ed30v_e.c \
|
||||
ed30v_o.c \
|
||||
ed30velf.c \
|
||||
edelta68.c \
|
||||
eelf32_dlx.c \
|
||||
eelf32_sparc.c \
|
||||
eelf32_sparc_sol2.c \
|
||||
|
@ -304,8 +303,6 @@ ALL_EMULATION_SOURCES = \
|
|||
eh8300sxelf.c \
|
||||
eh8300sxelf_linux.c \
|
||||
eh8300sxnelf.c \
|
||||
ehp300bsd.c \
|
||||
ehp3hpux.c \
|
||||
ehppaelf.c \
|
||||
ehppalinux.c \
|
||||
ehppanbsd.c \
|
||||
|
@ -332,15 +329,8 @@ ALL_EMULATION_SOURCES = \
|
|||
em68hc11elfb.c \
|
||||
em68hc12elf.c \
|
||||
em68hc12elfb.c \
|
||||
em68k4knbsd.c \
|
||||
em68kaout.c \
|
||||
em68kaux.c \
|
||||
em68kcoff.c \
|
||||
em68kelf.c \
|
||||
em68kelfnbsd.c \
|
||||
em68klinux.c \
|
||||
em68knbsd.c \
|
||||
em68kpsos.c \
|
||||
emcorepe.c \
|
||||
emn10200.c \
|
||||
emn10300.c \
|
||||
|
@ -385,7 +375,6 @@ ALL_EMULATION_SOURCES = \
|
|||
esparcaout.c \
|
||||
esparclinux.c \
|
||||
esparcnbsd.c \
|
||||
esun3.c \
|
||||
esun4.c \
|
||||
etic30aout.c \
|
||||
etic30coff.c \
|
||||
|
@ -914,9 +903,6 @@ ed30v_o.c: $(srcdir)/emulparams/d30v_o.sh \
|
|||
ed30velf.c: $(srcdir)/emulparams/d30velf.sh \
|
||||
$(ELF_GEN_DEPS) $(srcdir)/scripttempl/elfd30v.sc ${GEN_DEPENDS}
|
||||
|
||||
edelta68.c: $(srcdir)/emulparams/delta68.sh \
|
||||
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/delta68.sc ${GEN_DEPENDS}
|
||||
|
||||
eelf32_dlx.c: $(srcdir)/emulparams/elf32_dlx.sh \
|
||||
$(ELF_GEN_DEPS) $(srcdir)/scripttempl/dlx.sc ${GEN_DEPENDS}
|
||||
|
||||
|
@ -1371,12 +1357,6 @@ eh8300sxnelf.c: $(srcdir)/emulparams/h8300sxnelf.sh \
|
|||
$(srcdir)/emulparams/h8300elf.sh \
|
||||
$(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
||||
|
||||
ehp300bsd.c: $(srcdir)/emulparams/hp300bsd.sh \
|
||||
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
ehp3hpux.c: $(srcdir)/emulparams/hp3hpux.sh \
|
||||
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
ehppaelf.c: $(srcdir)/emulparams/hppaelf.sh \
|
||||
$(ELF_DEPS) $(srcdir)/emultempl/hppaelf.em \
|
||||
$(srcdir)/scripttempl/hppaelf.sc ${GEN_DEPENDS}
|
||||
|
@ -1467,18 +1447,6 @@ em68hc12elfb.c: $(srcdir)/emulparams/m68hc12elfb.sh \
|
|||
$(srcdir)/emultempl/m68hc1xelf.em $(ELF_DEPS) \
|
||||
$(srcdir)/scripttempl/elfm68hc12.sc ${GEN_DEPENDS}
|
||||
|
||||
em68k4knbsd.c: $(srcdir)/emulparams/m68k4knbsd.sh \
|
||||
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
em68kaout.c: $(srcdir)/emulparams/m68kaout.sh \
|
||||
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
em68kaux.c: $(srcdir)/emulparams/m68kaux.sh \
|
||||
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/m68kaux.sc ${GEN_DEPENDS}
|
||||
|
||||
em68kcoff.c: $(srcdir)/emulparams/m68kcoff.sh \
|
||||
$(srcdir)/emultempl/m68kcoff.em $(srcdir)/scripttempl/m68kcoff.sc ${GEN_DEPENDS}
|
||||
|
||||
em68kelf.c: $(srcdir)/emulparams/m68kelf.sh \
|
||||
$(ELF_DEPS) $(srcdir)/emultempl/m68kelf.em \
|
||||
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
||||
|
@ -1488,15 +1456,6 @@ em68kelfnbsd.c: $(srcdir)/emulparams/m68kelfnbsd.sh \
|
|||
$(ELF_DEPS) $(srcdir)/emultempl/m68kelf.em \
|
||||
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
||||
|
||||
em68klinux.c: $(srcdir)/emulparams/m68klinux.sh \
|
||||
$(srcdir)/emultempl/linux.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
em68knbsd.c: $(srcdir)/emulparams/m68knbsd.sh \
|
||||
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
em68kpsos.c: $(srcdir)/emulparams/m68kpsos.sh \
|
||||
$(ELF_DEPS) $(srcdir)/scripttempl/psos.sc ${GEN_DEPENDS}
|
||||
|
||||
emcorepe.c: $(srcdir)/emulparams/mcorepe.sh \
|
||||
$(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/pe.sc ${GEN_DEPENDS}
|
||||
|
||||
|
@ -1702,9 +1661,6 @@ esparclinux.c: $(srcdir)/emulparams/sparclinux.sh \
|
|||
esparcnbsd.c: $(srcdir)/emulparams/sparcnbsd.sh \
|
||||
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
esun3.c: $(srcdir)/emulparams/sun3.sh \
|
||||
$(srcdir)/emultempl/sunos.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
esun4.c: $(srcdir)/emulparams/sun4.sh \
|
||||
$(srcdir)/emultempl/sunos.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
|
|
|
@ -586,7 +586,6 @@ ALL_EMULATION_SOURCES = \
|
|||
ed30v_e.c \
|
||||
ed30v_o.c \
|
||||
ed30velf.c \
|
||||
edelta68.c \
|
||||
eelf32_dlx.c \
|
||||
eelf32_sparc.c \
|
||||
eelf32_sparc_sol2.c \
|
||||
|
@ -673,8 +672,6 @@ ALL_EMULATION_SOURCES = \
|
|||
eh8300sxelf.c \
|
||||
eh8300sxelf_linux.c \
|
||||
eh8300sxnelf.c \
|
||||
ehp300bsd.c \
|
||||
ehp3hpux.c \
|
||||
ehppaelf.c \
|
||||
ehppalinux.c \
|
||||
ehppanbsd.c \
|
||||
|
@ -701,15 +698,8 @@ ALL_EMULATION_SOURCES = \
|
|||
em68hc11elfb.c \
|
||||
em68hc12elf.c \
|
||||
em68hc12elfb.c \
|
||||
em68k4knbsd.c \
|
||||
em68kaout.c \
|
||||
em68kaux.c \
|
||||
em68kcoff.c \
|
||||
em68kelf.c \
|
||||
em68kelfnbsd.c \
|
||||
em68klinux.c \
|
||||
em68knbsd.c \
|
||||
em68kpsos.c \
|
||||
emcorepe.c \
|
||||
emn10200.c \
|
||||
emn10300.c \
|
||||
|
@ -754,7 +744,6 @@ ALL_EMULATION_SOURCES = \
|
|||
esparcaout.c \
|
||||
esparclinux.c \
|
||||
esparcnbsd.c \
|
||||
esun3.c \
|
||||
esun4.c \
|
||||
etic30aout.c \
|
||||
etic30coff.c \
|
||||
|
@ -1159,7 +1148,6 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ed30v_e.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ed30v_o.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ed30velf.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/edelta68.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32_dlx.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32_sparc.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32_sparc_sol2.Po@am__quote@
|
||||
|
@ -1303,8 +1291,6 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eh8300sxelf.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eh8300sxelf_linux.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eh8300sxnelf.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehp300bsd.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehp3hpux.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppa64linux.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppaelf.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppalinux.Po@am__quote@
|
||||
|
@ -1333,15 +1319,8 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68hc11elfb.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68hc12elf.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68hc12elfb.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68k4knbsd.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68kaout.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68kaux.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68kcoff.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68kelf.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68kelfnbsd.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68klinux.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68knbsd.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/em68kpsos.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emcorepe.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emmo.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emn10200.Po@am__quote@
|
||||
|
@ -1388,7 +1367,6 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/esparcaout.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/esparclinux.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/esparcnbsd.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/esun3.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/esun4.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/etic30aout.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/etic30coff.Po@am__quote@
|
||||
|
@ -2441,9 +2419,6 @@ ed30v_o.c: $(srcdir)/emulparams/d30v_o.sh \
|
|||
ed30velf.c: $(srcdir)/emulparams/d30velf.sh \
|
||||
$(ELF_GEN_DEPS) $(srcdir)/scripttempl/elfd30v.sc ${GEN_DEPENDS}
|
||||
|
||||
edelta68.c: $(srcdir)/emulparams/delta68.sh \
|
||||
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/delta68.sc ${GEN_DEPENDS}
|
||||
|
||||
eelf32_dlx.c: $(srcdir)/emulparams/elf32_dlx.sh \
|
||||
$(ELF_GEN_DEPS) $(srcdir)/scripttempl/dlx.sc ${GEN_DEPENDS}
|
||||
|
||||
|
@ -2898,12 +2873,6 @@ eh8300sxnelf.c: $(srcdir)/emulparams/h8300sxnelf.sh \
|
|||
$(srcdir)/emulparams/h8300elf.sh \
|
||||
$(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
||||
|
||||
ehp300bsd.c: $(srcdir)/emulparams/hp300bsd.sh \
|
||||
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
ehp3hpux.c: $(srcdir)/emulparams/hp3hpux.sh \
|
||||
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
ehppaelf.c: $(srcdir)/emulparams/hppaelf.sh \
|
||||
$(ELF_DEPS) $(srcdir)/emultempl/hppaelf.em \
|
||||
$(srcdir)/scripttempl/hppaelf.sc ${GEN_DEPENDS}
|
||||
|
@ -2994,18 +2963,6 @@ em68hc12elfb.c: $(srcdir)/emulparams/m68hc12elfb.sh \
|
|||
$(srcdir)/emultempl/m68hc1xelf.em $(ELF_DEPS) \
|
||||
$(srcdir)/scripttempl/elfm68hc12.sc ${GEN_DEPENDS}
|
||||
|
||||
em68k4knbsd.c: $(srcdir)/emulparams/m68k4knbsd.sh \
|
||||
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
em68kaout.c: $(srcdir)/emulparams/m68kaout.sh \
|
||||
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
em68kaux.c: $(srcdir)/emulparams/m68kaux.sh \
|
||||
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/m68kaux.sc ${GEN_DEPENDS}
|
||||
|
||||
em68kcoff.c: $(srcdir)/emulparams/m68kcoff.sh \
|
||||
$(srcdir)/emultempl/m68kcoff.em $(srcdir)/scripttempl/m68kcoff.sc ${GEN_DEPENDS}
|
||||
|
||||
em68kelf.c: $(srcdir)/emulparams/m68kelf.sh \
|
||||
$(ELF_DEPS) $(srcdir)/emultempl/m68kelf.em \
|
||||
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
||||
|
@ -3015,15 +2972,6 @@ em68kelfnbsd.c: $(srcdir)/emulparams/m68kelfnbsd.sh \
|
|||
$(ELF_DEPS) $(srcdir)/emultempl/m68kelf.em \
|
||||
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
||||
|
||||
em68klinux.c: $(srcdir)/emulparams/m68klinux.sh \
|
||||
$(srcdir)/emultempl/linux.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
em68knbsd.c: $(srcdir)/emulparams/m68knbsd.sh \
|
||||
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
em68kpsos.c: $(srcdir)/emulparams/m68kpsos.sh \
|
||||
$(ELF_DEPS) $(srcdir)/scripttempl/psos.sc ${GEN_DEPENDS}
|
||||
|
||||
emcorepe.c: $(srcdir)/emulparams/mcorepe.sh \
|
||||
$(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/pe.sc ${GEN_DEPENDS}
|
||||
|
||||
|
@ -3229,9 +3177,6 @@ esparclinux.c: $(srcdir)/emulparams/sparclinux.sh \
|
|||
esparcnbsd.c: $(srcdir)/emulparams/sparcnbsd.sh \
|
||||
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
esun3.c: $(srcdir)/emulparams/sun3.sh \
|
||||
$(srcdir)/emultempl/sunos.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
esun4.c: $(srcdir)/emulparams/sun4.sh \
|
||||
$(srcdir)/emultempl/sunos.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
||||
|
||||
|
|
|
@ -424,33 +424,8 @@ m68hc11-*-*|m6811-*-*) targ_emul=m68hc11elf
|
|||
targ_extra_emuls="m68hc11elfb m68hc12elf m68hc12elfb" ;;
|
||||
m68hc12-*-*|m6812-*-*) targ_emul=m68hc12elf
|
||||
targ_extra_emuls="m68hc12elfb m68hc11elf m68hc11elfb" ;;
|
||||
m68*-sun-sunos[34]*) targ_emul=sun3 ;;
|
||||
m68*-wrs-vxworks*) targ_emul=sun3 ;;
|
||||
m68*-ericsson-ose) targ_emul=sun3 ;;
|
||||
m68*-apple-aux*) targ_emul=m68kaux ;;
|
||||
m68k-hp-bsd*) targ_emul=hp300bsd ;;
|
||||
m68*-motorola-sysv*) targ_emul=delta68 ;;
|
||||
m68*-*-aout) targ_emul=m68kaout ;;
|
||||
m68*-*-coff) targ_emul=m68kcoff ;;
|
||||
m68*-*-elf | m68*-*-rtems*)
|
||||
targ_emul=m68kelf ;;
|
||||
m68*-*-hpux*) targ_emul=hp3hpux ;;
|
||||
m68k-*-linux*aout*) targ_emul=m68klinux
|
||||
targ_extra_emuls=m68kelf
|
||||
tdir_m68kelf=`echo ${targ_alias} | sed -e 's/aout//'` ;;
|
||||
m68k-*-linux-*) targ_emul=m68kelf
|
||||
targ_extra_emuls=m68klinux
|
||||
tdir_m68klinux=`echo ${targ_alias} | sed -e 's/linux/linuxaout/'` ;;
|
||||
m68k-*-uclinux*) targ_emul=m68kelf ;;
|
||||
m68*-*-gnu*) targ_emul=m68kelf ;;
|
||||
m68*-*-netbsd*4k*) targ_emul=m68k4knbsd
|
||||
targ_extra_emuls="m68knbsd m68kelfnbsd" ;;
|
||||
m68*-*-netbsdelf*) targ_emul=m68kelfnbsd
|
||||
targ_extra_emuls="m68knbsd m68k4knbsd" ;;
|
||||
m68*-*-netbsdaout* | m68*-*-netbsd*)
|
||||
targ_emul=m68knbsd
|
||||
targ_extra_emuls="m68kelfnbsd m68k4knbsd" ;;
|
||||
m68*-*-psos*) targ_emul=m68kpsos ;;
|
||||
m68*-*-netbsdelf*) targ_emul=m68kelfnbsd ;;
|
||||
m68*-*-*) targ_emul=m68kelf ;;
|
||||
mcore-*-pe) targ_emul=mcorepe ;
|
||||
targ_extra_ofiles="deffilep.o pe-dll.o" ;;
|
||||
mcore-*-elf) targ_emul=elf32mcore
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
SCRIPT_NAME=delta68
|
||||
OUTPUT_FORMAT="coff-m68k-sysv"
|
||||
TEXT_START_ADDR=0x2000
|
||||
PAGE_SIZE=0x1000000
|
||||
ARCH=m68k
|
|
@ -1,5 +0,0 @@
|
|||
SCRIPT_NAME=aout
|
||||
OUTPUT_FORMAT="a.out-hp300bsd"
|
||||
TEXT_START_ADDR=0
|
||||
TARGET_PAGE_SIZE=4096
|
||||
ARCH=m68k
|
|
@ -1,8 +0,0 @@
|
|||
SCRIPT_NAME=aout
|
||||
OUTPUT_FORMAT="a.out-hp300hpux"
|
||||
TEXT_START_ADDR=0
|
||||
TARGET_PAGE_SIZE=4096
|
||||
ARCH=m68k
|
||||
STACKZERO="___stack_zero = 0x2000; __DYNAMIC = 0;"
|
||||
# This is needed for HPUX 9.0; it is unnecessary but harmless for 8.0.
|
||||
SHLIB_PATH="___dld_shlib_path = 0;"
|
|
@ -1,9 +0,0 @@
|
|||
SCRIPT_NAME=aout
|
||||
TEXT_START_ADDR=0x1020
|
||||
case ${LD_FLAG} in
|
||||
n|N) TEXT_START_ADDR=0x1000 ;;
|
||||
esac
|
||||
OUTPUT_FORMAT="a.out-m68k4k-netbsd"
|
||||
TARGET_PAGE_SIZE=0x1000
|
||||
ARCH=m68k
|
||||
EXECUTABLE_SYMBOLS='__DYNAMIC = 0;'
|
|
@ -1,6 +0,0 @@
|
|||
SCRIPT_NAME=aout
|
||||
OUTPUT_FORMAT="a.out-zero-big"
|
||||
TEXT_START_ADDR=0x2020
|
||||
TARGET_PAGE_SIZE=0x2000
|
||||
SEGMENT_SIZE=0x20000
|
||||
ARCH=m68k
|
|
@ -1,8 +0,0 @@
|
|||
SCRIPT_NAME=m68kaux
|
||||
OUTPUT_FORMAT="coff-m68k-aux"
|
||||
SEGMENT_SIZE=0x40000
|
||||
TARGET_PAGE_SIZE=0x1000
|
||||
TEXT_START_ADDR="$SEGMENT_SIZE + SIZEOF_HEADERS"
|
||||
NON_PAGED_TEXT_START_ADDR=SIZEOF_HEADERS
|
||||
DATA_ALIGNMENT_="(. & (-$SEGMENT_SIZE | $TARGET_PAGE_SIZE-1)) + $SEGMENT_SIZE"
|
||||
ARCH=m68k
|
|
@ -1,6 +0,0 @@
|
|||
SCRIPT_NAME=m68kcoff
|
||||
OUTPUT_FORMAT="coff-m68k"
|
||||
TEXT_START_ADDR=0x1000000
|
||||
TARGET_PAGE_SIZE=0x1000000
|
||||
ARCH=m68k
|
||||
TEMPLATE_NAME=m68kcoff
|
|
@ -1,9 +0,0 @@
|
|||
SCRIPT_NAME=aout
|
||||
OUTPUT_FORMAT="a.out-m68k-linux"
|
||||
TARGET_PAGE_SIZE=0x1000
|
||||
TEXT_START_ADDR=0x1020
|
||||
case ${LD_FLAG} in
|
||||
n|N) TEXT_START_ADDR=0 ;;
|
||||
esac
|
||||
ARCH=m68k
|
||||
TEMPLATE_NAME=linux
|
|
@ -1,9 +0,0 @@
|
|||
SCRIPT_NAME=aout
|
||||
TEXT_START_ADDR=0x2020
|
||||
case ${LD_FLAG} in
|
||||
n|N) TEXT_START_ADDR=0x2000 ;;
|
||||
esac
|
||||
OUTPUT_FORMAT="a.out-m68k-netbsd"
|
||||
TARGET_PAGE_SIZE=0x2000
|
||||
ARCH=m68k
|
||||
EXECUTABLE_SYMBOLS='__DYNAMIC = 0;'
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue