Import of Binutils from the FSF 2.15 branch (just post-.0 release).
These bits are taken from the FSF anoncvs repo on 23-May-2004 04:41:00 UTC.
This commit is contained in:
+1361
-155
File diff suppressed because it is too large
Load Diff
@@ -4,12 +4,12 @@ Please do not make ChangeLog entries.
|
||||
COPYING, COPYING.LIB, README
|
||||
http://gnu.org.
|
||||
|
||||
Makefile.in; configure; configure.in
|
||||
Makefile.in; configure; configure.in; src-release
|
||||
Please notify the following of any committed patches.
|
||||
binutils@sources.redhat.com
|
||||
gdb-patches@sources.redhat.com
|
||||
|
||||
bfd/; binutils/; gas/; gprof/; ld/; opcodes/; BFD's part of include/
|
||||
bfd/; binutils/; gas/; gprof/; ld/; opcodes/; cpu/; BFD's part of include/
|
||||
binutils: http://sources.redhat.com/binutils/
|
||||
Patches to binutils@sources.redhat.com.
|
||||
Please notify the following of any interface changes:
|
||||
@@ -21,24 +21,25 @@ cgen/; cgen parts of opcodes/, sim/ & include/
|
||||
May need separate opcodes/ or sim/ approval for
|
||||
commits of regenerated files there.
|
||||
|
||||
config.guess; config.sub; dejagnu/config.guess;
|
||||
config.guess; config.sub; dejagnu/config.guess; dejagnu/config.sub;
|
||||
readline/support/config.sub; readline/support/config.guess
|
||||
config: http://savannah.gnu.org/projects/config
|
||||
Patches to config-patches@gnu.org.
|
||||
Changes need to be done in tandem with the official CONFIG
|
||||
sources or submitted to the master file maintainer and brought
|
||||
in via a merge.
|
||||
in via a merge. When updating any of these files, please be
|
||||
sure to update all of them.
|
||||
Please notify the following of any committed patches:
|
||||
binutils@sources.redhat.com
|
||||
gdb-patches@sources.redhat.com
|
||||
|
||||
dejagnu/
|
||||
Send all patches to:
|
||||
http://www.gnu.org/software/dejagnu/
|
||||
mail:bug-dejagnu@gnu.org
|
||||
For changes to the local repostory, send them to
|
||||
gdb-patches@sources.redhat.com when generic; and sid@,
|
||||
binutils@, gcc@, etc. for sub-components.
|
||||
dejagnu: http://www.gnu.org/software/dejagnu/
|
||||
Patches to bug-dejagnu@gnu.org
|
||||
Avoid making changes to the local repository; please send
|
||||
patches upstream. Important and approved patches can be
|
||||
checked into the src repository, otheriwse patches will be
|
||||
imported from the next release.
|
||||
|
||||
gdb/; mmalloc/; readline/; sim/; GDB's part of include/ & dejagnu/
|
||||
gdb: http://sources.redhat.com/gdb/
|
||||
@@ -99,8 +100,7 @@ winsup/
|
||||
General discussion cygwin@sources.redhat.com.
|
||||
See also winsup/MAINTAINERS.
|
||||
|
||||
expect/; config-ml.in; mpw-README; mpw-build.in; mpw-config.in;
|
||||
mpw-configure; mpw-install; setup.com; missing; makefile.vms; utils/;
|
||||
expect/; config-ml.in; setup.com; missing; makefile.vms; utils/;
|
||||
config/; config.if; makefile.vms; missing; ylwrap; mkdep; etc/;
|
||||
install-sh; intl/
|
||||
Ask DJ Delorie <dj@redhat.com> after reading the libiberty entry.
|
||||
|
||||
@@ -0,0 +1,210 @@
|
||||
#! /usr/bin/autogen
|
||||
AutoGen definitions Makefile.tpl;
|
||||
|
||||
// Makefile.in is generated from Makefile.tpl by 'autogen Makefile.def'.
|
||||
// This file was originally written by Nathanael Nerode.
|
||||
//
|
||||
// Copyright 2002, 2003 Free Software Foundation
|
||||
//
|
||||
// This file is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
|
||||
// "missing" indicates that that module doesn't supply
|
||||
// that recursive target in its Makefile.
|
||||
|
||||
build_modules= { module= libiberty; };
|
||||
|
||||
host_modules= { module= ash; };
|
||||
host_modules= { module= autoconf; };
|
||||
host_modules= { module= automake; };
|
||||
host_modules= { module= bash; };
|
||||
host_modules= { module= bfd; };
|
||||
host_modules= { module= opcodes; };
|
||||
host_modules= { module= binutils; };
|
||||
host_modules= { module= bison; no_check_cross= true; };
|
||||
host_modules= { module= byacc; no_check_cross= true; };
|
||||
host_modules= { module= bzip2; };
|
||||
host_modules= { module= dejagnu; };
|
||||
host_modules= { module= diff; };
|
||||
host_modules= { module= dosutils; no_check= true; };
|
||||
host_modules= { module= etc; };
|
||||
host_modules= { module= fastjar; no_check_cross= true; };
|
||||
host_modules= { module= fileutils; };
|
||||
host_modules= { module= findutils; };
|
||||
host_modules= { module= find; };
|
||||
host_modules= { module= flex; no_check_cross= true; };
|
||||
host_modules= { module= gas; };
|
||||
host_modules= { module= gawk; };
|
||||
host_modules= { module= gettext; };
|
||||
host_modules= { module= gnuserv; };
|
||||
host_modules= { module= gprof; };
|
||||
host_modules= { module= gzip; };
|
||||
host_modules= { module= hello; };
|
||||
host_modules= { module= indent; };
|
||||
host_modules= { module= intl; };
|
||||
host_modules= { module= tcl;
|
||||
missing=mostlyclean; };
|
||||
host_modules= { module= itcl; };
|
||||
host_modules= { module= ld; };
|
||||
host_modules= { module= libgui; };
|
||||
host_modules= { module= libiberty; };
|
||||
host_modules= { module= libtool; };
|
||||
host_modules= { module= m4; };
|
||||
host_modules= { module= make; };
|
||||
host_modules= { module= mmalloc; no_check=true; };
|
||||
host_modules= { module= patch; };
|
||||
host_modules= { module= perl; };
|
||||
host_modules= { module= prms; };
|
||||
host_modules= { module= rcs; };
|
||||
host_modules= { module= readline; };
|
||||
host_modules= { module= release; no_install= true; no_check= true; };
|
||||
host_modules= { module= recode; };
|
||||
host_modules= { module= sed; };
|
||||
host_modules= { module= send-pr; };
|
||||
host_modules= { module= shellutils; };
|
||||
host_modules= { module= sid; };
|
||||
host_modules= { module= sim; };
|
||||
host_modules= { module= tar; };
|
||||
host_modules= { module= texinfo; no_install= true; };
|
||||
host_modules= { module= textutils; };
|
||||
host_modules= { module= time; };
|
||||
host_modules= { module= uudecode; };
|
||||
host_modules= { module= wdiff; };
|
||||
host_modules= { module= zip; no_check_cross=true; };
|
||||
host_modules= { module= zlib; no_install=true; no_check=true; };
|
||||
host_modules= { module= gdb; with_x=true; };
|
||||
host_modules= { module= expect; with_x=true; };
|
||||
host_modules= { module= guile; with_x=true; };
|
||||
host_modules= { module= tk; with_x=true; };
|
||||
host_modules= { module= tix; with_x=true; };
|
||||
host_modules= { module= libtermcap; no_check=true;
|
||||
missing=mostlyclean;
|
||||
missing=clean;
|
||||
missing=distclean;
|
||||
missing=maintainer-clean; };
|
||||
host_modules= { module= utils; no_check=true; };
|
||||
|
||||
target_modules = { module= libstdc++-v3; raw_cxx=true; };
|
||||
target_modules = { module= newlib; };
|
||||
target_modules = { module= libf2c; };
|
||||
target_modules = { module= libobjc; };
|
||||
target_modules = { module= libtermcap; no_check=true; stage=true;
|
||||
missing=mostlyclean;
|
||||
missing=clean;
|
||||
missing=distclean;
|
||||
missing=maintainer-clean; };
|
||||
target_modules = { module= winsup; };
|
||||
target_modules = { module= libgloss; no_check=true; };
|
||||
target_modules = { module= libiberty; };
|
||||
target_modules = { module= gperf; };
|
||||
target_modules = { module= examples; no_check=true; no_install=true; };
|
||||
target_modules = { module= libffi; };
|
||||
target_modules = { module= libjava; raw_cxx=true; };
|
||||
target_modules = { module= zlib; stage=true; };
|
||||
target_modules = { module= boehm-gc; };
|
||||
target_modules = { module= qthreads; };
|
||||
target_modules = { module= rda; };
|
||||
target_modules = { module= libada; };
|
||||
|
||||
// These are (some of) the make targets to be done in each subdirectory.
|
||||
// Not all; these are the ones which don't have special options.
|
||||
// "depend" indicates that a target depends on another target uniformly
|
||||
// for each subdirectory. There can be several such lines per target.
|
||||
recursive_targets = { make_target= info;
|
||||
depend=configure; };
|
||||
recursive_targets = { make_target= dvi;
|
||||
depend=configure; };
|
||||
recursive_targets = { make_target= TAGS;
|
||||
depend=configure; };
|
||||
recursive_targets = { make_target= install-info;
|
||||
depend=configure;
|
||||
depend=info; };
|
||||
recursive_targets = { make_target= installcheck;
|
||||
depend=configure; };
|
||||
recursive_targets = { make_target= mostlyclean; };
|
||||
recursive_targets = { make_target= clean; };
|
||||
recursive_targets = { make_target= distclean; };
|
||||
recursive_targets = { make_target= maintainer-clean; };
|
||||
|
||||
// Flags which need to be passed down.
|
||||
|
||||
// Directories etc.
|
||||
flags_to_pass = { flag= DESTDIR ; };
|
||||
flags_to_pass = { flag= RPATH_ENVVAR ; };
|
||||
flags_to_pass = { flag= TARGET_SUBDIR ; };
|
||||
flags_to_pass = { flag= bindir ; };
|
||||
flags_to_pass = { flag= datadir ; };
|
||||
flags_to_pass = { flag= exec_prefix ; };
|
||||
flags_to_pass = { flag= includedir ; };
|
||||
flags_to_pass = { flag= infodir ; };
|
||||
flags_to_pass = { flag= libdir ; };
|
||||
flags_to_pass = { flag= libexecdir ; };
|
||||
flags_to_pass = { flag= lispdir ; };
|
||||
flags_to_pass = { flag= libstdcxx_incdir ; };
|
||||
flags_to_pass = { flag= libsubdir ; };
|
||||
flags_to_pass = { flag= localstatedir ; };
|
||||
flags_to_pass = { flag= mandir ; };
|
||||
flags_to_pass = { flag= oldincludedir ; };
|
||||
flags_to_pass = { flag= prefix ; };
|
||||
flags_to_pass = { flag= sbindir ; };
|
||||
flags_to_pass = { flag= sharedstatedir ; };
|
||||
flags_to_pass = { flag= sysconfdir ; };
|
||||
flags_to_pass = { flag= tooldir ; };
|
||||
flags_to_pass = { flag= build_tooldir ; };
|
||||
flags_to_pass = { flag= gxx_include_dir ; };
|
||||
flags_to_pass = { flag= gcc_version ; };
|
||||
flags_to_pass = { flag= gcc_version_trigger ; };
|
||||
flags_to_pass = { flag= target_alias ; };
|
||||
|
||||
// Build tools
|
||||
flags_to_pass = { flag= BISON ; };
|
||||
flags_to_pass = { flag= CC_FOR_BUILD ; };
|
||||
flags_to_pass = { flag= CXX_FOR_BUILD ; };
|
||||
flags_to_pass = { flag= EXPECT ; };
|
||||
flags_to_pass = { flag= INSTALL ; };
|
||||
flags_to_pass = { flag= INSTALL_DATA ; };
|
||||
flags_to_pass = { flag= INSTALL_PROGRAM ; };
|
||||
flags_to_pass = { flag= INSTALL_SCRIPT ; };
|
||||
flags_to_pass = { flag= LEX ; };
|
||||
flags_to_pass = { flag= M4 ; };
|
||||
flags_to_pass = { flag= MAKE ; };
|
||||
flags_to_pass = { flag= RUNTEST ; };
|
||||
flags_to_pass = { flag= RUNTESTFLAGS ; };
|
||||
flags_to_pass = { flag= SHELL ; };
|
||||
flags_to_pass = { flag= YACC ; };
|
||||
|
||||
// Host tools
|
||||
flags_to_pass = { flag= AR_FLAGS ; };
|
||||
flags_to_pass = { flag= CFLAGS ; };
|
||||
flags_to_pass = { flag= CXXFLAGS ; };
|
||||
flags_to_pass = { flag= LDFLAGS ; };
|
||||
flags_to_pass = { flag= LIBCFLAGS ; };
|
||||
flags_to_pass = { flag= LIBCXXFLAGS ; };
|
||||
|
||||
// Target tools
|
||||
flags_to_pass = { flag= AR_FOR_TARGET ; };
|
||||
flags_to_pass = { flag= AS_FOR_TARGET ; };
|
||||
flags_to_pass = { flag= CC_FOR_TARGET ; };
|
||||
flags_to_pass = { flag= CFLAGS_FOR_TARGET ; };
|
||||
flags_to_pass = { flag= CXX_FOR_TARGET ; };
|
||||
flags_to_pass = { flag= CXXFLAGS_FOR_TARGET ; };
|
||||
flags_to_pass = { flag= DLLTOOL_FOR_TARGET ; };
|
||||
flags_to_pass = { flag= GCJ_FOR_TARGET ; };
|
||||
flags_to_pass = { flag= LD_FOR_TARGET ; };
|
||||
flags_to_pass = { flag= LIBCFLAGS_FOR_TARGET ; };
|
||||
flags_to_pass = { flag= LIBCXXFLAGS_FOR_TARGET ; };
|
||||
flags_to_pass = { flag= NM_FOR_TARGET ; };
|
||||
flags_to_pass = { flag= RANLIB_FOR_TARGET ; };
|
||||
flags_to_pass = { flag= WINDRES_FOR_TARGET ; };
|
||||
+23585
-1688
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,7 @@
|
||||
|
||||
Note that if you configure with --enable-maintainer-mode, you will need
|
||||
special versions of automake, autoconf, libtool and gettext. You will
|
||||
find the sources for these in ftp://sourceware.cygnus.com/pub/binutils.
|
||||
find the sources for these in ftp://sources.redhat.com/pub/binutils.
|
||||
|
||||
Note - "make distclean" does not work with maintainer mode enabled.
|
||||
The Makefiles in the some of the po/ subdirectories depend upon the
|
||||
|
||||
+1155
-4554
File diff suppressed because it is too large
Load Diff
@@ -1514,7 +1514,7 @@
|
||||
|
||||
2001-10-08 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
* bfd/config.bfd (targ_cpu): Add arm9e-*-elf.
|
||||
* config.bfd (targ_cpu): Add arm9e-*-elf.
|
||||
|
||||
2001-10-06 Stephane Carrez <Stephane.Carrez@worldnet.fr>
|
||||
|
||||
@@ -2858,13 +2858,13 @@
|
||||
2001-08-31 Eric Christopher <echristo@redhat.com>
|
||||
Jason Eckhardt <jle@redhat.com>
|
||||
|
||||
* bfd/archures.c: Add mipsisa32 and mipsisa64. Remove mips32,
|
||||
* archures.c: Add mipsisa32 and mipsisa64. Remove mips32,
|
||||
mips32_4k and mips64.
|
||||
* bfd/aoutx.h: Remove bfd_mach_mips32, bfd_mach_mips32_4k,
|
||||
* aoutx.h: Remove bfd_mach_mips32, bfd_mach_mips32_4k,
|
||||
bfd_mach_mips64. Add bfd_mach_mipsisa32, bfd_mach_mipsisa64.
|
||||
* bfd/cpu-mips.c: Ditto.
|
||||
* bfd/elf32-mips.c (_bfd_mips_elf_final_write_processing): Ditto.
|
||||
* bfd/bfd-in2.h: Regenerate.
|
||||
* cpu-mips.c: Ditto.
|
||||
* elf32-mips.c (_bfd_mips_elf_final_write_processing): Ditto.
|
||||
* bfd-in2.h: Regenerate.
|
||||
|
||||
2001-08-31 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
@@ -3726,7 +3726,7 @@
|
||||
|
||||
2001-07-04 H.J. Lu <hjl@gnu.org>
|
||||
|
||||
* bfd/elf32-mips.c (_bfd_mips_elf_final_write_processing):
|
||||
* elf32-mips.c (_bfd_mips_elf_final_write_processing):
|
||||
Handle bfd_mach_mips4400, bfd_mach_mips4600 and
|
||||
bfd_mach_mips5000.
|
||||
|
||||
@@ -4529,7 +4529,7 @@
|
||||
|
||||
* elf32-openrisc.c (openrisc_elf_howto_table): Do not complain
|
||||
about overflow in R_OPENRISC_LO_16_IN_INSN and
|
||||
R_OPENRISC_HI_16_IN_INSN.Index: bfd/elf32-openrisc.c
|
||||
R_OPENRISC_HI_16_IN_INSN.
|
||||
|
||||
2001-04-30 H.J. Lu <hjl@gnu.org>
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+157
-100
@@ -28,20 +28,22 @@ BFD_H = bfd.h
|
||||
# need two copies of the executable, one to download and one for the
|
||||
# debugger).
|
||||
BFD32_LIBS = \
|
||||
archive.lo archures.lo bfd.lo cache.lo coffgen.lo corefile.lo \
|
||||
archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo \
|
||||
cache.lo coffgen.lo corefile.lo \
|
||||
format.lo init.lo libbfd.lo opncls.lo reloc.lo \
|
||||
section.lo syms.lo targets.lo hash.lo linker.lo \
|
||||
srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo \
|
||||
merge.lo dwarf2.lo
|
||||
merge.lo dwarf2.lo simple.lo
|
||||
|
||||
BFD64_LIBS = archive64.lo
|
||||
|
||||
BFD32_LIBS_CFILES = \
|
||||
archive.c archures.c bfd.c cache.c coffgen.c corefile.c \
|
||||
archive.c archures.c bfd.c bfdio.c bfdwin.c \
|
||||
cache.c coffgen.c corefile.c \
|
||||
format.c init.c libbfd.c opncls.c reloc.c \
|
||||
section.c syms.c targets.c hash.c linker.c \
|
||||
srec.c binary.c tekhex.c ihex.c stabs.c stab-syms.c \
|
||||
merge.c dwarf2.c
|
||||
merge.c dwarf2.c simple.c
|
||||
|
||||
BFD64_LIBS_CFILES = archive64.c
|
||||
|
||||
@@ -67,6 +69,8 @@ ALL_MACHINES = \
|
||||
cpu-i386.lo \
|
||||
cpu-i860.lo \
|
||||
cpu-i960.lo \
|
||||
cpu-ip2k.lo \
|
||||
cpu-iq2000.lo \
|
||||
cpu-m32r.lo \
|
||||
cpu-m68hc11.lo \
|
||||
cpu-m68hc12.lo \
|
||||
@@ -77,6 +81,7 @@ ALL_MACHINES = \
|
||||
cpu-mcore.lo \
|
||||
cpu-mips.lo \
|
||||
cpu-mmix.lo \
|
||||
cpu-msp430.lo \
|
||||
cpu-or32.lo \
|
||||
cpu-ns32k.lo \
|
||||
cpu-openrisc.lo \
|
||||
@@ -88,6 +93,7 @@ ALL_MACHINES = \
|
||||
cpu-sh.lo \
|
||||
cpu-sparc.lo \
|
||||
cpu-tic30.lo \
|
||||
cpu-tic4x.lo \
|
||||
cpu-tic54x.lo \
|
||||
cpu-tic80.lo \
|
||||
cpu-v850.lo \
|
||||
@@ -95,6 +101,7 @@ ALL_MACHINES = \
|
||||
cpu-we32k.lo \
|
||||
cpu-w65.lo \
|
||||
cpu-xstormy16.lo \
|
||||
cpu-xtensa.lo \
|
||||
cpu-z8k.lo
|
||||
|
||||
ALL_MACHINES_CFILES = \
|
||||
@@ -117,6 +124,8 @@ ALL_MACHINES_CFILES = \
|
||||
cpu-i386.c \
|
||||
cpu-i860.c \
|
||||
cpu-i960.c \
|
||||
cpu-ip2k.c \
|
||||
cpu-iq2000.c \
|
||||
cpu-m32r.c \
|
||||
cpu-m68hc11.c \
|
||||
cpu-m68hc12.c \
|
||||
@@ -127,6 +136,7 @@ ALL_MACHINES_CFILES = \
|
||||
cpu-mcore.c \
|
||||
cpu-mips.c \
|
||||
cpu-mmix.c \
|
||||
cpu-msp430.c \
|
||||
cpu-or32.c \
|
||||
cpu-ns32k.c \
|
||||
cpu-openrisc.c \
|
||||
@@ -138,6 +148,7 @@ ALL_MACHINES_CFILES = \
|
||||
cpu-sh.c \
|
||||
cpu-sparc.c \
|
||||
cpu-tic30.c \
|
||||
cpu-tic4x.c \
|
||||
cpu-tic54x.c \
|
||||
cpu-tic80.c \
|
||||
cpu-v850.c \
|
||||
@@ -145,6 +156,7 @@ ALL_MACHINES_CFILES = \
|
||||
cpu-we32k.c \
|
||||
cpu-w65.c \
|
||||
cpu-xstormy16.c \
|
||||
cpu-xtensa.c \
|
||||
cpu-z8k.c
|
||||
|
||||
# The .o files needed by all of the 32 bit vectors that are configured into
|
||||
@@ -183,6 +195,7 @@ BFD32_BACKENDS = \
|
||||
coff-stgo32.lo \
|
||||
coff-svm68k.lo \
|
||||
coff-tic30.lo \
|
||||
coff-tic4x.lo \
|
||||
coff-tic54x.lo \
|
||||
coff-tic80.lo \
|
||||
coff-u68k.lo \
|
||||
@@ -195,6 +208,7 @@ BFD32_BACKENDS = \
|
||||
ecofflink.lo \
|
||||
efi-app-ia32.lo \
|
||||
elf.lo \
|
||||
elf32-am33lin.lo \
|
||||
elf32-arc.lo \
|
||||
elfarm-oabi.lo \
|
||||
elfarm-nabi.lo \
|
||||
@@ -210,13 +224,15 @@ BFD32_BACKENDS = \
|
||||
elf32-hppa.lo \
|
||||
elf32-i370.lo \
|
||||
elf32-i386.lo \
|
||||
elf32-i386-fbsd.lo \
|
||||
elf32-i860.lo \
|
||||
elf32-i960.lo \
|
||||
elf32-ia64.lo \
|
||||
elf32-ip2k.lo \
|
||||
elf32-iq2000.lo \
|
||||
elf32-m32r.lo \
|
||||
elf32-m68hc11.lo \
|
||||
elf32-m68hc12.lo \
|
||||
elf32-m68hc1x.lo \
|
||||
elf32-m68k.lo \
|
||||
elf32-m88k.lo \
|
||||
elf-m10200.lo \
|
||||
@@ -224,21 +240,20 @@ BFD32_BACKENDS = \
|
||||
elf32-mcore.lo \
|
||||
elfxx-mips.lo \
|
||||
elf32-mips.lo \
|
||||
elf32-msp430.lo \
|
||||
elf32-openrisc.lo \
|
||||
elf32-or32.lo \
|
||||
elf32-pj.lo \
|
||||
elf32-ppc.lo \
|
||||
elf32-s390.lo \
|
||||
elf32-sh.lo \
|
||||
elf32-sh-lin.lo \
|
||||
elf32-sh64.lo \
|
||||
elf32-sh64-com.lo \
|
||||
elf32-sh-nbsd.lo \
|
||||
elf32-sh64-nbsd.lo \
|
||||
elf32-sparc.lo \
|
||||
elf32-v850.lo \
|
||||
elf32-vax.lo \
|
||||
elf32-xstormy16.lo \
|
||||
elf32-xtensa.lo \
|
||||
elf32.lo \
|
||||
elflink.lo \
|
||||
elf-strtab.lo \
|
||||
@@ -264,6 +279,7 @@ BFD32_BACKENDS = \
|
||||
m68klynx.lo \
|
||||
m68knetbsd.lo \
|
||||
m88kmach3.lo \
|
||||
mach-o.lo \
|
||||
mipsbsd.lo \
|
||||
newsos3.lo \
|
||||
nlm.lo \
|
||||
@@ -275,6 +291,7 @@ BFD32_BACKENDS = \
|
||||
oasys.lo \
|
||||
pc532-mach.lo \
|
||||
pdp11.lo \
|
||||
pef.lo \
|
||||
pe-arm.lo \
|
||||
pei-arm.lo \
|
||||
pe-i386.lo \
|
||||
@@ -304,7 +321,10 @@ BFD32_BACKENDS = \
|
||||
vms-hdr.lo \
|
||||
vms-misc.lo \
|
||||
vms-tir.lo \
|
||||
xcofflink.lo
|
||||
xcofflink.lo \
|
||||
xsym.lo \
|
||||
xtensa-isa.lo \
|
||||
xtensa-modules.lo
|
||||
|
||||
BFD32_BACKENDS_CFILES = \
|
||||
aout-adobe.c \
|
||||
@@ -340,6 +360,7 @@ BFD32_BACKENDS_CFILES = \
|
||||
coff-stgo32.c \
|
||||
coff-svm68k.c \
|
||||
coff-tic30.c \
|
||||
coff-tic4x.c \
|
||||
coff-tic54x.c \
|
||||
coff-tic80.c \
|
||||
coff-u68k.c \
|
||||
@@ -352,6 +373,7 @@ BFD32_BACKENDS_CFILES = \
|
||||
ecofflink.c \
|
||||
efi-app-ia32.c \
|
||||
elf.c \
|
||||
elf32-am33lin.c \
|
||||
elf32-arc.c \
|
||||
elfarm-oabi.c \
|
||||
elfarm-nabi.c \
|
||||
@@ -367,19 +389,22 @@ BFD32_BACKENDS_CFILES = \
|
||||
elf32-hppa.c \
|
||||
elf32-i370.c \
|
||||
elf32-i386.c \
|
||||
elf32-i386-fbsd.c \
|
||||
elf32-i860.c \
|
||||
elf32-i960.c \
|
||||
elf32-ip2k.c \
|
||||
elf32-iq2000.c \
|
||||
elf32-m32r.c \
|
||||
elf32-m68k.c \
|
||||
elf32-m68hc11.c \
|
||||
elf32-m68hc12.c \
|
||||
elf32-m68hc1x.c \
|
||||
elf32-m88k.c \
|
||||
elf-m10200.c \
|
||||
elf-m10300.c \
|
||||
elf32-mcore.c \
|
||||
elfxx-mips.c \
|
||||
elf32-mips.c \
|
||||
elf32-msp430.c \
|
||||
elf32-openrisc.c \
|
||||
elf32-or32.c \
|
||||
elf32-pj.c \
|
||||
@@ -388,13 +413,11 @@ BFD32_BACKENDS_CFILES = \
|
||||
elf32-sh64-com.c \
|
||||
elf32-s390.c \
|
||||
elf32-sh.c \
|
||||
elf32-sh-lin.c \
|
||||
elf32-sh-nbsd.c \
|
||||
elf32-sh64-nbsd.c \
|
||||
elf32-sparc.c \
|
||||
elf32-v850.c \
|
||||
elf32-vax.c \
|
||||
elf32-xstormy16.c \
|
||||
elf32-xtensa.c \
|
||||
elf32.c \
|
||||
elflink.c \
|
||||
elf-strtab.c \
|
||||
@@ -420,6 +443,7 @@ BFD32_BACKENDS_CFILES = \
|
||||
m68klynx.c \
|
||||
m68knetbsd.c \
|
||||
m88kmach3.c \
|
||||
mach-o.c \
|
||||
mipsbsd.c \
|
||||
newsos3.c \
|
||||
nlm.c \
|
||||
@@ -431,6 +455,7 @@ BFD32_BACKENDS_CFILES = \
|
||||
oasys.c \
|
||||
pc532-mach.c \
|
||||
pdp11.c \
|
||||
pef.c \
|
||||
pe-arm.c \
|
||||
pei-arm.c \
|
||||
pe-i386.c \
|
||||
@@ -459,7 +484,10 @@ BFD32_BACKENDS_CFILES = \
|
||||
vms-hdr.c \
|
||||
vms-misc.c \
|
||||
vms-tir.c \
|
||||
xcofflink.c
|
||||
xcofflink.c \
|
||||
xsym.c \
|
||||
xtensa-isa.c \
|
||||
xtensa-modules.c
|
||||
|
||||
# The .o files needed by all of the 64 bit vectors that are configured into
|
||||
# target_vector in targets.c if configured with --enable-targets=all
|
||||
@@ -473,14 +501,13 @@ BFD64_BACKENDS = \
|
||||
efi-app-ia64.lo \
|
||||
elf64-x86-64.lo \
|
||||
elf64-alpha.lo \
|
||||
elf64-alpha-fbsd.lo \
|
||||
elf64-hppa.lo \
|
||||
elf64-ia64.lo \
|
||||
elf64-gen.lo \
|
||||
elfn32-mips.lo \
|
||||
elf64-mips.lo \
|
||||
elf64-mmix.lo \
|
||||
elf64-sh64.lo \
|
||||
elf64-sh64-nbsd.lo \
|
||||
elf64-ppc.lo \
|
||||
elf64-s390.lo \
|
||||
elf64-sparc.lo \
|
||||
@@ -499,15 +526,14 @@ BFD64_BACKENDS_CFILES = \
|
||||
efi-app-ia64.c \
|
||||
elf64-x86-64.c \
|
||||
elf64-alpha.c \
|
||||
elf64-alpha-fbsd.c \
|
||||
elf64-hppa.c \
|
||||
elf64-gen.c \
|
||||
elfn32-mips.c \
|
||||
elf64-mips.c \
|
||||
elf64-mmix.c \
|
||||
elf64-ppc.c \
|
||||
elf64-s390.c \
|
||||
elf64-sh64.c \
|
||||
elf64-sh64-nbsd.c \
|
||||
elf64-sparc.c \
|
||||
elf64.c \
|
||||
mmo.c \
|
||||
@@ -561,16 +587,18 @@ CFILES = $(SOURCE_CFILES) $(BUILD_CFILES)
|
||||
## This is a list of all .h files which are in the source tree.
|
||||
SOURCE_HFILES = \
|
||||
aout-target.h aoutf1.h aoutx.h coffcode.h coffswap.h ecoffswap.h \
|
||||
elf-bfd.h elf-hppa.h elf32-arm.h elf32-hppa.h elf64-hppa.h \
|
||||
elfcode.h elfcore.h elflink.h freebsd.h genlink.h go32stub.h \
|
||||
libaout.h libbfd.h libcoff.h libecoff.h libhppa.h \
|
||||
libieee.h libnlm.h liboasys.h libpei.h netbsd.h nlm-target.h \
|
||||
nlmcode.h nlmswap.h ns32k.h peicode.h som.h vms.h libxcoff.h \
|
||||
xcoff-target.h version.h
|
||||
elf-bfd.h elf-hppa.h elf32-arm.h elf32-hppa.h \
|
||||
elf64-hppa.h elfcode.h elfcore.h \
|
||||
freebsd.h genlink.h go32stub.h \
|
||||
libaout.h libbfd.h libcoff.h libecoff.h libhppa.h libieee.h \
|
||||
libnlm.h liboasys.h libpei.h libxcoff.h mach-o.h \
|
||||
netbsd.h nlm-target.h nlmcode.h nlmswap.h ns32k.h \
|
||||
pef.h pef-traceback.h peicode.h som.h version.h \
|
||||
vms.h xcoff-target.h xsym.h
|
||||
|
||||
## ... and all .h files which are in the build tree.
|
||||
BUILD_HFILES = \
|
||||
elf32-target.h elf64-target.h targmatch.h
|
||||
bfdver.h elf32-target.h elf64-target.h targmatch.h
|
||||
|
||||
HFILES = $(SOURCE_HFILES) $(BUILD_HFILES)
|
||||
|
||||
@@ -578,23 +606,15 @@ SRC_POTFILES = $(SOURCE_CFILES) $(SOURCE_HFILES)
|
||||
BLD_POTFILES = $(BUILD_CFILES) $(BUILD_HFILES)
|
||||
|
||||
po/SRC-POTFILES.in: @MAINT@ Makefile $(SRC_POTFILES)
|
||||
for file in $(SRC_POTFILES); do echo $$file; done | sort > tmp.src \
|
||||
for file in $(SRC_POTFILES); do echo $$file; done \
|
||||
| LC_COLLATE= sort > tmp.src \
|
||||
&& mv tmp.src $(srcdir)/po/SRC-POTFILES.in
|
||||
|
||||
po/BLD-POTFILES.in: @MAINT@ Makefile $(BLD_POTFILES)
|
||||
for file in $(BLD_POTFILES); do echo $$file; done | sort > tmp.bld \
|
||||
for file in $(BLD_POTFILES); do echo $$file; done \
|
||||
| LC_COLLATE= sort > tmp.bld \
|
||||
&& mv tmp.bld $(srcdir)/po/BLD-POTFILES.in
|
||||
|
||||
# The following target is retained for upgrade purposes.
|
||||
# This target used to exist in older versions of this makefile, and was
|
||||
# referenced by <builddir>/po/Makefile (which is created from <srcdir>/po/Make-in)
|
||||
# So old versions of <builddir>/po/Makefile will try to regenerate themselves
|
||||
# when make is next run, but that dependency cannot be completed without a build
|
||||
# of po/POTFILES.in. Hence the presence of this rule. This rule will be deleted
|
||||
# once it is no longer needed - probably in the fall of 2001.
|
||||
po/POTFILES.in:
|
||||
|
||||
|
||||
diststuff: info
|
||||
|
||||
# Various kinds of .o files to put in libbfd.a:
|
||||
@@ -653,10 +673,10 @@ targmatch.h: config.bfd targmatch.sed
|
||||
# When compiling archures.c and targets.c, supply the default target
|
||||
# info from configure.
|
||||
|
||||
targets.lo: targets.c config.status
|
||||
targets.lo: targets.c Makefile
|
||||
$(LIBTOOL) --mode=compile $(COMPILE) -c $(TDEFAULTS) $(srcdir)/targets.c
|
||||
|
||||
archures.lo: archures.c config.status
|
||||
archures.lo: archures.c Makefile
|
||||
$(LIBTOOL) --mode=compile $(COMPILE) -c $(TDEFAULTS) $(srcdir)/archures.c
|
||||
|
||||
elf32-target.h : elfxx-target.h
|
||||
@@ -788,9 +808,11 @@ stmp-bfd-h: bfd-in3.h
|
||||
touch stmp-bfd-h
|
||||
|
||||
BFD_H_FILES = bfd-in.h init.c opncls.c libbfd.c section.c archures.c \
|
||||
reloc.c syms.c bfd.c archive.c corefile.c targets.c format.c version.h
|
||||
reloc.c syms.c bfd.c bfdio.c bfdwin.c \
|
||||
archive.c corefile.c targets.c format.c
|
||||
BFD64_H_FILES = archive64.c
|
||||
LIBBFD_H_FILES = libbfd-in.h init.c libbfd.c cache.c reloc.c archures.c elf.c
|
||||
LIBBFD_H_FILES = libbfd-in.h init.c libbfd.c bfdio.c bfdwin.c \
|
||||
cache.c reloc.c archures.c elf.c
|
||||
LIBCOFF_H_FILES = libcoff-in.h coffcode.h
|
||||
|
||||
# Could really use a "copy-if-change"...
|
||||
@@ -834,8 +856,9 @@ CLEANFILES = bfd.h dep.sed stmp-bfd-h DEP DEPA DEP1 DEP2 libbfd.a stamp-lib \
|
||||
|
||||
DISTCLEANFILES = $(BUILD_CFILES) $(BUILD_HFILES)
|
||||
|
||||
# We want to rerun configure if config.bfd or configure.host change.
|
||||
config.status: $(srcdir)/configure $(srcdir)/config.bfd $(srcdir)/configure.host
|
||||
# We want to rerun configure if config.bfd, configure.host or version.h change.
|
||||
config.status: $(srcdir)/configure $(srcdir)/config.bfd \
|
||||
$(srcdir)/configure.host $(srcdir)/version.h
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
# What appears below is generated by a hacked mkdep using gcc -MM.
|
||||
@@ -845,11 +868,13 @@ config.status: $(srcdir)/configure $(srcdir)/config.bfd $(srcdir)/configure.host
|
||||
archive.lo: archive.c $(INCDIR)/filenames.h $(INCDIR)/aout/ar.h \
|
||||
$(INCDIR)/aout/ranlib.h $(INCDIR)/safe-ctype.h
|
||||
archures.lo: archures.c $(INCDIR)/filenames.h $(INCDIR)/safe-ctype.h
|
||||
bfd.lo: bfd.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||
bfd.lo: bfd.c bfdver.h $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||
$(INCDIR)/safe-ctype.h $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
|
||||
$(INCDIR)/coff/sym.h libcoff.h libecoff.h $(INCDIR)/coff/ecoff.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h
|
||||
bfdio.lo: bfdio.c $(INCDIR)/filenames.h
|
||||
bfdwin.lo: bfdwin.c $(INCDIR)/filenames.h
|
||||
cache.lo: cache.c $(INCDIR)/filenames.h
|
||||
coffgen.lo: coffgen.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \
|
||||
libcoff.h $(INCDIR)/bfdlink.h
|
||||
@@ -857,7 +882,8 @@ corefile.lo: corefile.c $(INCDIR)/filenames.h
|
||||
format.lo: format.c $(INCDIR)/filenames.h
|
||||
init.lo: init.c $(INCDIR)/filenames.h
|
||||
libbfd.lo: libbfd.c $(INCDIR)/filenames.h
|
||||
opncls.lo: opncls.c $(INCDIR)/filenames.h $(INCDIR)/objalloc.h
|
||||
opncls.lo: opncls.c $(INCDIR)/filenames.h $(INCDIR)/objalloc.h \
|
||||
$(INCDIR)/libiberty.h
|
||||
reloc.lo: reloc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h
|
||||
section.lo: section.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h
|
||||
syms.lo: syms.c $(INCDIR)/filenames.h $(INCDIR)/safe-ctype.h \
|
||||
@@ -882,11 +908,12 @@ merge.lo: merge.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
||||
dwarf2.lo: dwarf2.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf2.h
|
||||
simple.lo: simple.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h
|
||||
archive64.lo: archive64.c $(INCDIR)/filenames.h $(INCDIR)/aout/ar.h
|
||||
cpu-a29k.lo: cpu-a29k.c $(INCDIR)/filenames.h
|
||||
cpu-alpha.lo: cpu-alpha.c $(INCDIR)/filenames.h
|
||||
cpu-arc.lo: cpu-arc.c $(INCDIR)/filenames.h
|
||||
cpu-arm.lo: cpu-arm.c $(INCDIR)/filenames.h
|
||||
cpu-arm.lo: cpu-arm.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
|
||||
cpu-avr.lo: cpu-avr.c $(INCDIR)/filenames.h
|
||||
cpu-cris.lo: cpu-cris.c $(INCDIR)/filenames.h
|
||||
cpu-d10v.lo: cpu-d10v.c $(INCDIR)/filenames.h
|
||||
@@ -903,6 +930,8 @@ cpu-i370.lo: cpu-i370.c $(INCDIR)/filenames.h
|
||||
cpu-i386.lo: cpu-i386.c $(INCDIR)/filenames.h
|
||||
cpu-i860.lo: cpu-i860.c $(INCDIR)/filenames.h
|
||||
cpu-i960.lo: cpu-i960.c $(INCDIR)/filenames.h
|
||||
cpu-ip2k.lo: cpu-ip2k.c $(INCDIR)/filenames.h
|
||||
cpu-iq2000.lo: cpu-iq2000.c $(INCDIR)/filenames.h
|
||||
cpu-m32r.lo: cpu-m32r.c $(INCDIR)/filenames.h
|
||||
cpu-m68hc11.lo: cpu-m68hc11.c $(INCDIR)/filenames.h
|
||||
cpu-m68hc12.lo: cpu-m68hc12.c $(INCDIR)/filenames.h
|
||||
@@ -913,6 +942,7 @@ cpu-m10300.lo: cpu-m10300.c $(INCDIR)/filenames.h
|
||||
cpu-mcore.lo: cpu-mcore.c $(INCDIR)/filenames.h
|
||||
cpu-mips.lo: cpu-mips.c $(INCDIR)/filenames.h
|
||||
cpu-mmix.lo: cpu-mmix.c $(INCDIR)/filenames.h
|
||||
cpu-msp430.lo: cpu-msp430.c $(INCDIR)/filenames.h
|
||||
cpu-or32.lo: cpu-or32.c $(INCDIR)/filenames.h
|
||||
cpu-ns32k.lo: cpu-ns32k.c $(INCDIR)/filenames.h ns32k.h
|
||||
cpu-openrisc.lo: cpu-openrisc.c $(INCDIR)/filenames.h
|
||||
@@ -924,6 +954,7 @@ cpu-s390.lo: cpu-s390.c $(INCDIR)/filenames.h
|
||||
cpu-sh.lo: cpu-sh.c $(INCDIR)/filenames.h
|
||||
cpu-sparc.lo: cpu-sparc.c $(INCDIR)/filenames.h
|
||||
cpu-tic30.lo: cpu-tic30.c $(INCDIR)/filenames.h
|
||||
cpu-tic4x.lo: cpu-tic4x.c $(INCDIR)/filenames.h
|
||||
cpu-tic54x.lo: cpu-tic54x.c $(INCDIR)/filenames.h
|
||||
cpu-tic80.lo: cpu-tic80.c $(INCDIR)/filenames.h
|
||||
cpu-v850.lo: cpu-v850.c $(INCDIR)/filenames.h $(INCDIR)/safe-ctype.h
|
||||
@@ -931,6 +962,7 @@ cpu-vax.lo: cpu-vax.c $(INCDIR)/filenames.h
|
||||
cpu-we32k.lo: cpu-we32k.c $(INCDIR)/filenames.h
|
||||
cpu-w65.lo: cpu-w65.c $(INCDIR)/filenames.h
|
||||
cpu-xstormy16.lo: cpu-xstormy16.c $(INCDIR)/filenames.h
|
||||
cpu-xtensa.lo: cpu-xtensa.c $(INCDIR)/filenames.h
|
||||
cpu-z8k.lo: cpu-z8k.c $(INCDIR)/filenames.h
|
||||
aout-adobe.lo: aout-adobe.c $(INCDIR)/filenames.h $(INCDIR)/aout/adobe.h \
|
||||
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def libaout.h \
|
||||
@@ -993,7 +1025,8 @@ coff-aux.lo: coff-aux.c $(INCDIR)/filenames.h $(INCDIR)/coff/aux-coff.h \
|
||||
coffswap.h
|
||||
coff-h8300.lo: coff-h8300.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
genlink.h $(INCDIR)/coff/h8300.h $(INCDIR)/coff/external.h \
|
||||
$(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
|
||||
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/libiberty.h \
|
||||
coffcode.h coffswap.h
|
||||
coff-h8500.lo: coff-h8500.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(INCDIR)/coff/internal.h \
|
||||
libcoff.h coffcode.h coffswap.h
|
||||
@@ -1042,6 +1075,9 @@ coff-svm68k.lo: coff-svm68k.c coff-m68k.c $(INCDIR)/filenames.h \
|
||||
coff-tic30.lo: coff-tic30.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/coff/tic30.h $(INCDIR)/coff/external.h $(INCDIR)/coff/internal.h \
|
||||
libcoff.h coffcode.h coffswap.h
|
||||
coff-tic4x.lo: coff-tic4x.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/coff/tic4x.h $(INCDIR)/coff/ti.h $(INCDIR)/coff/internal.h \
|
||||
libcoff.h coffcode.h coffswap.h
|
||||
coff-tic54x.lo: coff-tic54x.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \
|
||||
$(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
|
||||
@@ -1061,7 +1097,7 @@ coff-z8k.lo: coff-z8k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/coff/z8k.h $(INCDIR)/coff/external.h $(INCDIR)/coff/internal.h \
|
||||
libcoff.h coffcode.h coffswap.h
|
||||
cofflink.lo: cofflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/coff/internal.h libcoff.h
|
||||
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/safe-ctype.h
|
||||
dwarf1.lo: dwarf1.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf.h
|
||||
@@ -1081,6 +1117,10 @@ efi-app-ia32.lo: efi-app-ia32.c $(INCDIR)/filenames.h \
|
||||
elf.lo: elf.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/libiberty.h
|
||||
elf32-am33lin.lo: elf32-am33lin.c elf-m10300.c $(INCDIR)/filenames.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/mn10300.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
elf32-arc.lo: elf32-arc.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h \
|
||||
@@ -1120,7 +1160,7 @@ elf32-fr30.lo: elf32-fr30.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
elf32-frv.lo: elf32-frv.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
$(INCDIR)/hashtab.h elf32-target.h
|
||||
elf32-gen.lo: elf32-gen.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h elf32-target.h
|
||||
@@ -1134,15 +1174,12 @@ elf32-hppa.lo: elf32-hppa.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
libhppa.h elf32-hppa.h elf-hppa.h elf32-target.h
|
||||
elf32-i370.lo: elf32-i370.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/i370.h elf32-target.h
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/i370.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-i386.lo: elf32-i386.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-i386-fbsd.lo: elf32-i386-fbsd.c elf32-i386.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
elf32-i860.lo: elf32-i860.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/elf/i860.h $(INCDIR)/elf/reloc-macros.h \
|
||||
@@ -1151,6 +1188,14 @@ elf32-i960.lo: elf32-i960.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/elf/i960.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-ip2k.lo: elf32-ip2k.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/elf/ip2k.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-iq2000.lo: elf32-iq2000.c $(INCDIR)/filenames.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/iq2000.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
elf32-m32r.lo: elf32-m32r.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/elf/m32r.h $(INCDIR)/elf/reloc-macros.h \
|
||||
@@ -1160,13 +1205,20 @@ elf32-m68k.lo: elf32-m68k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/m68k.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-m68hc11.lo: elf32-m68hc11.c $(INCDIR)/filenames.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/m68hc11.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elf32-m68hc1x.h \
|
||||
$(INCDIR)/elf/m68hc11.h $(INCDIR)/elf/reloc-macros.h \
|
||||
$(INCDIR)/opcode/m68hc11.h elf32-target.h
|
||||
elf32-m68hc12.lo: elf32-m68hc12.c $(INCDIR)/filenames.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/m68hc11.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elf32-m68hc1x.h \
|
||||
$(INCDIR)/elf/m68hc11.h $(INCDIR)/elf/reloc-macros.h \
|
||||
$(INCDIR)/opcode/m68hc11.h elf32-target.h
|
||||
elf32-m68hc1x.lo: elf32-m68hc1x.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elf32-m68hc1x.h \
|
||||
$(INCDIR)/elf/m68hc11.h $(INCDIR)/elf/reloc-macros.h \
|
||||
$(INCDIR)/opcode/m68hc11.h
|
||||
elf32-m88k.lo: elf32-m88k.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h elf32-target.h
|
||||
@@ -1181,17 +1233,23 @@ elf32-mcore.lo: elf32-mcore.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/mcore.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
elfxx-mips.lo: elfxx-mips.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h elfxx-mips.h $(INCDIR)/elf/mips.h \
|
||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
|
||||
$(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h $(INCDIR)/coff/external.h
|
||||
elfxx-mips.lo: elfxx-mips.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h elfxx-mips.h \
|
||||
$(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/sym.h \
|
||||
$(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h \
|
||||
$(INCDIR)/coff/external.h $(INCDIR)/hashtab.h
|
||||
elf32-mips.lo: elf32-mips.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
genlink.h elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h elfxx-mips.h $(INCDIR)/elf/mips.h \
|
||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
|
||||
$(INCDIR)/coff/internal.h $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h \
|
||||
$(INCDIR)/coff/external.h ecoffswap.h elf32-target.h
|
||||
elf32-msp430.lo: elf32-msp430.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/libiberty.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/elf/msp430.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-openrisc.lo: elf32-openrisc.c $(INCDIR)/filenames.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/openrisc.h \
|
||||
@@ -1208,16 +1266,16 @@ elf32-pj.lo: elf32-pj.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf32-ppc.lo: elf32-ppc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-ppc.h elf32-target.h
|
||||
elf32-sh64.lo: elf32-sh64.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(srcdir)/../opcodes/sh64-opc.h \
|
||||
elf32-sh.c $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-sh64.h elf32-sh.c $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-sh64-com.lo: elf32-sh64-com.c $(INCDIR)/filenames.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/sh.h \
|
||||
$(INCDIR)/elf/reloc-macros.h $(srcdir)/../opcodes/sh64-opc.h
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-sh64.h $(srcdir)/../opcodes/sh64-opc.h
|
||||
elf32-s390.lo: elf32-s390.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/s390.h $(INCDIR)/elf/reloc-macros.h \
|
||||
@@ -1226,19 +1284,6 @@ elf32-sh.lo: elf32-sh.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-sh-lin.lo: elf32-sh-lin.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/elf/internal.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h elf32-sh.c \
|
||||
$(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
elf32-sh-nbsd.lo: elf32-sh-nbsd.c elf32-sh.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
elf32-sh64-nbsd.lo: elf32-sh64-nbsd.c elf32-sh64.c \
|
||||
$(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
|
||||
$(srcdir)/../opcodes/sh64-opc.h elf32-sh.c $(INCDIR)/elf/sh.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
elf32-sparc.lo: elf32-sparc.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sparc.h \
|
||||
@@ -1257,13 +1302,18 @@ elf32-xstormy16.lo: elf32-xstormy16.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/xstormy16.h \
|
||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/libiberty.h \
|
||||
elf32-target.h
|
||||
elf32-xtensa.lo: elf32-xtensa.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/xtensa.h \
|
||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/xtensa-isa.h \
|
||||
$(INCDIR)/xtensa-config.h elf32-target.h
|
||||
elf32.lo: elf32.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfcore.h \
|
||||
elflink.h
|
||||
$(INCDIR)/safe-ctype.h
|
||||
elflink.lo: elflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/libiberty.h
|
||||
elf-strtab.lo: elf-strtab.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h
|
||||
@@ -1333,6 +1383,8 @@ m68knetbsd.lo: m68knetbsd.c netbsd.h $(INCDIR)/filenames.h \
|
||||
m88kmach3.lo: m88kmach3.c $(INCDIR)/filenames.h libaout.h \
|
||||
$(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
|
||||
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
|
||||
mach-o.lo: mach-o.c mach-o.h $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/libiberty.h mach-o-target.c
|
||||
mipsbsd.lo: mipsbsd.c $(INCDIR)/filenames.h libaout.h \
|
||||
$(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
|
||||
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
|
||||
@@ -1364,6 +1416,8 @@ pc532-mach.lo: pc532-mach.c $(INCDIR)/filenames.h libaout.h \
|
||||
pdp11.lo: pdp11.c $(INCDIR)/filenames.h libaout.h $(INCDIR)/bfdlink.h \
|
||||
aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
|
||||
$(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h $(INCDIR)/safe-ctype.h
|
||||
pef.lo: pef.c $(INCDIR)/safe-ctype.h pef.h pef-traceback.h \
|
||||
$(INCDIR)/filenames.h $(INCDIR)/libiberty.h
|
||||
pe-arm.lo: pe-arm.c $(INCDIR)/filenames.h coff-arm.c \
|
||||
$(INCDIR)/coff/arm.h $(INCDIR)/coff/external.h $(INCDIR)/coff/internal.h \
|
||||
$(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
|
||||
@@ -1447,8 +1501,8 @@ vms.lo: vms.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
vms.h
|
||||
vms-gsd.lo: vms-gsd.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
vms.h
|
||||
vms-hdr.lo: vms-hdr.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/safe-ctype.h vms.h
|
||||
vms-hdr.lo: vms-hdr.c bfdver.h $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h vms.h
|
||||
vms-misc.lo: vms-misc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
vms.h
|
||||
vms-tir.lo: vms-tir.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
@@ -1456,6 +1510,11 @@ vms-tir.lo: vms-tir.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
xcofflink.lo: xcofflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/coff/internal.h $(INCDIR)/coff/xcoff.h libcoff.h \
|
||||
libxcoff.h
|
||||
xsym.lo: xsym.c xsym.h $(INCDIR)/filenames.h
|
||||
xtensa-isa.lo: xtensa-isa.c $(INCDIR)/xtensa-isa.h \
|
||||
$(INCDIR)/xtensa-isa-internal.h
|
||||
xtensa-modules.lo: xtensa-modules.c $(INCDIR)/xtensa-isa.h \
|
||||
$(INCDIR)/xtensa-isa-internal.h
|
||||
aix5ppc-core.lo: aix5ppc-core.c
|
||||
aout64.lo: aout64.c aoutx.h $(INCDIR)/filenames.h $(INCDIR)/safe-ctype.h \
|
||||
$(INCDIR)/bfdlink.h libaout.h $(INCDIR)/aout/aout64.h \
|
||||
@@ -1487,13 +1546,6 @@ elf64-alpha.lo: elf64-alpha.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
|
||||
$(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h libcoff.h \
|
||||
libecoff.h ecoffswap.h elf64-target.h
|
||||
elf64-alpha-fbsd.lo: elf64-alpha-fbsd.c elf64-alpha.c $(INCDIR)/filenames.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/alpha.h \
|
||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/internal.h \
|
||||
$(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
|
||||
$(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h libcoff.h \
|
||||
libecoff.h ecoffswap.h elf64-target.h
|
||||
elf64-hppa.lo: elf64-hppa.c $(INCDIR)/alloca-conf.h \
|
||||
$(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
|
||||
@@ -1502,6 +1554,13 @@ elf64-hppa.lo: elf64-hppa.c $(INCDIR)/alloca-conf.h \
|
||||
elf64-gen.lo: elf64-gen.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h elf64-target.h
|
||||
elfn32-mips.lo: elfn32-mips.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h genlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfxx-mips.h \
|
||||
$(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/sym.h \
|
||||
$(INCDIR)/coff/symconst.h $(INCDIR)/coff/internal.h \
|
||||
$(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h $(INCDIR)/coff/external.h \
|
||||
ecoffswap.h elf32-target.h
|
||||
elf64-mips.lo: elf64-mips.c $(INCDIR)/filenames.h $(INCDIR)/aout/ar.h \
|
||||
$(INCDIR)/bfdlink.h genlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfxx-mips.h \
|
||||
@@ -1515,7 +1574,7 @@ elf64-mmix.lo: elf64-mmix.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/opcode/mmix.h elf64-target.h
|
||||
elf64-ppc.lo: elf64-ppc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/ppc64.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf64-ppc.h elf64-target.h
|
||||
elf64-s390.lo: elf64-s390.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
@@ -1525,10 +1584,6 @@ elf64-sh64.lo: elf64-sh64.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf64-target.h
|
||||
elf64-sh64-nbsd.lo: elf64-sh64-nbsd.c elf64-sh64.c \
|
||||
$(INCDIR)/filenames.h $(INCDIR)/bfdlink.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h elf64-target.h
|
||||
elf64-sparc.lo: elf64-sparc.c $(INCDIR)/filenames.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/sparc.h \
|
||||
@@ -1537,7 +1592,7 @@ elf64-sparc.lo: elf64-sparc.c $(INCDIR)/filenames.h \
|
||||
elf64.lo: elf64.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfcore.h \
|
||||
elflink.h
|
||||
$(INCDIR)/safe-ctype.h
|
||||
mmo.lo: mmo.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||
$(INCDIR)/elf/mmix.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/mmix.h
|
||||
nlm32-alpha.lo: nlm32-alpha.c $(INCDIR)/filenames.h \
|
||||
@@ -1561,11 +1616,13 @@ cisco-core.lo: cisco-core.c $(INCDIR)/filenames.h
|
||||
elf32-ia64.lo: elf32-ia64.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/objalloc.h $(INCDIR)/hashtab.h \
|
||||
elf32-target.h
|
||||
elf64-ia64.lo: elf64-ia64.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf64-target.h
|
||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/objalloc.h $(INCDIR)/hashtab.h \
|
||||
elf64-target.h
|
||||
peigen.lo: peigen.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \
|
||||
$(INCDIR)/coff/i386.h $(INCDIR)/coff/external.h $(INCDIR)/coff/pe.h \
|
||||
libcoff.h $(INCDIR)/bfdlink.h libpei.h
|
||||
|
||||
+173
-109
@@ -1,6 +1,6 @@
|
||||
# Makefile.in generated automatically by automake 1.4 from Makefile.am
|
||||
# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
@@ -68,6 +68,7 @@ AS = @AS@
|
||||
BFD_HOST_64BIT_LONG = @BFD_HOST_64BIT_LONG@
|
||||
BFD_HOST_64_BIT = @BFD_HOST_64_BIT@
|
||||
BFD_HOST_64_BIT_DEFINED = @BFD_HOST_64_BIT_DEFINED@
|
||||
BFD_HOST_LONG_LONG = @BFD_HOST_LONG_LONG@
|
||||
BFD_HOST_U_64_BIT = @BFD_HOST_U_64_BIT@
|
||||
CATALOGS = @CATALOGS@
|
||||
CATOBJEXT = @CATOBJEXT@
|
||||
@@ -115,10 +116,11 @@ WIN32LIBADD = @WIN32LIBADD@
|
||||
all_backends = @all_backends@
|
||||
bfd_backends = @bfd_backends@
|
||||
bfd_default_target_size = @bfd_default_target_size@
|
||||
bfd_file_ptr = @bfd_file_ptr@
|
||||
bfd_libs = @bfd_libs@
|
||||
bfd_machines = @bfd_machines@
|
||||
bfd_ufile_ptr = @bfd_ufile_ptr@
|
||||
bfd_version = @bfd_version@
|
||||
bfd_version_date = @bfd_version_date@
|
||||
bfd_version_string = @bfd_version_string@
|
||||
l = @l@
|
||||
tdefaults = @tdefaults@
|
||||
@@ -152,21 +154,23 @@ BFD_H = bfd.h
|
||||
# need two copies of the executable, one to download and one for the
|
||||
# debugger).
|
||||
BFD32_LIBS = \
|
||||
archive.lo archures.lo bfd.lo cache.lo coffgen.lo corefile.lo \
|
||||
archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo \
|
||||
cache.lo coffgen.lo corefile.lo \
|
||||
format.lo init.lo libbfd.lo opncls.lo reloc.lo \
|
||||
section.lo syms.lo targets.lo hash.lo linker.lo \
|
||||
srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo \
|
||||
merge.lo dwarf2.lo
|
||||
merge.lo dwarf2.lo simple.lo
|
||||
|
||||
|
||||
BFD64_LIBS = archive64.lo
|
||||
|
||||
BFD32_LIBS_CFILES = \
|
||||
archive.c archures.c bfd.c cache.c coffgen.c corefile.c \
|
||||
archive.c archures.c bfd.c bfdio.c bfdwin.c \
|
||||
cache.c coffgen.c corefile.c \
|
||||
format.c init.c libbfd.c opncls.c reloc.c \
|
||||
section.c syms.c targets.c hash.c linker.c \
|
||||
srec.c binary.c tekhex.c ihex.c stabs.c stab-syms.c \
|
||||
merge.c dwarf2.c
|
||||
merge.c dwarf2.c simple.c
|
||||
|
||||
|
||||
BFD64_LIBS_CFILES = archive64.c
|
||||
@@ -193,6 +197,8 @@ ALL_MACHINES = \
|
||||
cpu-i386.lo \
|
||||
cpu-i860.lo \
|
||||
cpu-i960.lo \
|
||||
cpu-ip2k.lo \
|
||||
cpu-iq2000.lo \
|
||||
cpu-m32r.lo \
|
||||
cpu-m68hc11.lo \
|
||||
cpu-m68hc12.lo \
|
||||
@@ -203,6 +209,7 @@ ALL_MACHINES = \
|
||||
cpu-mcore.lo \
|
||||
cpu-mips.lo \
|
||||
cpu-mmix.lo \
|
||||
cpu-msp430.lo \
|
||||
cpu-or32.lo \
|
||||
cpu-ns32k.lo \
|
||||
cpu-openrisc.lo \
|
||||
@@ -214,6 +221,7 @@ ALL_MACHINES = \
|
||||
cpu-sh.lo \
|
||||
cpu-sparc.lo \
|
||||
cpu-tic30.lo \
|
||||
cpu-tic4x.lo \
|
||||
cpu-tic54x.lo \
|
||||
cpu-tic80.lo \
|
||||
cpu-v850.lo \
|
||||
@@ -221,6 +229,7 @@ ALL_MACHINES = \
|
||||
cpu-we32k.lo \
|
||||
cpu-w65.lo \
|
||||
cpu-xstormy16.lo \
|
||||
cpu-xtensa.lo \
|
||||
cpu-z8k.lo
|
||||
|
||||
|
||||
@@ -244,6 +253,8 @@ ALL_MACHINES_CFILES = \
|
||||
cpu-i386.c \
|
||||
cpu-i860.c \
|
||||
cpu-i960.c \
|
||||
cpu-ip2k.c \
|
||||
cpu-iq2000.c \
|
||||
cpu-m32r.c \
|
||||
cpu-m68hc11.c \
|
||||
cpu-m68hc12.c \
|
||||
@@ -254,6 +265,7 @@ ALL_MACHINES_CFILES = \
|
||||
cpu-mcore.c \
|
||||
cpu-mips.c \
|
||||
cpu-mmix.c \
|
||||
cpu-msp430.c \
|
||||
cpu-or32.c \
|
||||
cpu-ns32k.c \
|
||||
cpu-openrisc.c \
|
||||
@@ -265,6 +277,7 @@ ALL_MACHINES_CFILES = \
|
||||
cpu-sh.c \
|
||||
cpu-sparc.c \
|
||||
cpu-tic30.c \
|
||||
cpu-tic4x.c \
|
||||
cpu-tic54x.c \
|
||||
cpu-tic80.c \
|
||||
cpu-v850.c \
|
||||
@@ -272,6 +285,7 @@ ALL_MACHINES_CFILES = \
|
||||
cpu-we32k.c \
|
||||
cpu-w65.c \
|
||||
cpu-xstormy16.c \
|
||||
cpu-xtensa.c \
|
||||
cpu-z8k.c
|
||||
|
||||
|
||||
@@ -311,6 +325,7 @@ BFD32_BACKENDS = \
|
||||
coff-stgo32.lo \
|
||||
coff-svm68k.lo \
|
||||
coff-tic30.lo \
|
||||
coff-tic4x.lo \
|
||||
coff-tic54x.lo \
|
||||
coff-tic80.lo \
|
||||
coff-u68k.lo \
|
||||
@@ -323,6 +338,7 @@ BFD32_BACKENDS = \
|
||||
ecofflink.lo \
|
||||
efi-app-ia32.lo \
|
||||
elf.lo \
|
||||
elf32-am33lin.lo \
|
||||
elf32-arc.lo \
|
||||
elfarm-oabi.lo \
|
||||
elfarm-nabi.lo \
|
||||
@@ -338,13 +354,15 @@ BFD32_BACKENDS = \
|
||||
elf32-hppa.lo \
|
||||
elf32-i370.lo \
|
||||
elf32-i386.lo \
|
||||
elf32-i386-fbsd.lo \
|
||||
elf32-i860.lo \
|
||||
elf32-i960.lo \
|
||||
elf32-ia64.lo \
|
||||
elf32-ip2k.lo \
|
||||
elf32-iq2000.lo \
|
||||
elf32-m32r.lo \
|
||||
elf32-m68hc11.lo \
|
||||
elf32-m68hc12.lo \
|
||||
elf32-m68hc1x.lo \
|
||||
elf32-m68k.lo \
|
||||
elf32-m88k.lo \
|
||||
elf-m10200.lo \
|
||||
@@ -352,21 +370,20 @@ BFD32_BACKENDS = \
|
||||
elf32-mcore.lo \
|
||||
elfxx-mips.lo \
|
||||
elf32-mips.lo \
|
||||
elf32-msp430.lo \
|
||||
elf32-openrisc.lo \
|
||||
elf32-or32.lo \
|
||||
elf32-pj.lo \
|
||||
elf32-ppc.lo \
|
||||
elf32-s390.lo \
|
||||
elf32-sh.lo \
|
||||
elf32-sh-lin.lo \
|
||||
elf32-sh64.lo \
|
||||
elf32-sh64-com.lo \
|
||||
elf32-sh-nbsd.lo \
|
||||
elf32-sh64-nbsd.lo \
|
||||
elf32-sparc.lo \
|
||||
elf32-v850.lo \
|
||||
elf32-vax.lo \
|
||||
elf32-xstormy16.lo \
|
||||
elf32-xtensa.lo \
|
||||
elf32.lo \
|
||||
elflink.lo \
|
||||
elf-strtab.lo \
|
||||
@@ -392,6 +409,7 @@ BFD32_BACKENDS = \
|
||||
m68klynx.lo \
|
||||
m68knetbsd.lo \
|
||||
m88kmach3.lo \
|
||||
mach-o.lo \
|
||||
mipsbsd.lo \
|
||||
newsos3.lo \
|
||||
nlm.lo \
|
||||
@@ -403,6 +421,7 @@ BFD32_BACKENDS = \
|
||||
oasys.lo \
|
||||
pc532-mach.lo \
|
||||
pdp11.lo \
|
||||
pef.lo \
|
||||
pe-arm.lo \
|
||||
pei-arm.lo \
|
||||
pe-i386.lo \
|
||||
@@ -432,7 +451,10 @@ BFD32_BACKENDS = \
|
||||
vms-hdr.lo \
|
||||
vms-misc.lo \
|
||||
vms-tir.lo \
|
||||
xcofflink.lo
|
||||
xcofflink.lo \
|
||||
xsym.lo \
|
||||
xtensa-isa.lo \
|
||||
xtensa-modules.lo
|
||||
|
||||
|
||||
BFD32_BACKENDS_CFILES = \
|
||||
@@ -469,6 +491,7 @@ BFD32_BACKENDS_CFILES = \
|
||||
coff-stgo32.c \
|
||||
coff-svm68k.c \
|
||||
coff-tic30.c \
|
||||
coff-tic4x.c \
|
||||
coff-tic54x.c \
|
||||
coff-tic80.c \
|
||||
coff-u68k.c \
|
||||
@@ -481,6 +504,7 @@ BFD32_BACKENDS_CFILES = \
|
||||
ecofflink.c \
|
||||
efi-app-ia32.c \
|
||||
elf.c \
|
||||
elf32-am33lin.c \
|
||||
elf32-arc.c \
|
||||
elfarm-oabi.c \
|
||||
elfarm-nabi.c \
|
||||
@@ -496,19 +520,22 @@ BFD32_BACKENDS_CFILES = \
|
||||
elf32-hppa.c \
|
||||
elf32-i370.c \
|
||||
elf32-i386.c \
|
||||
elf32-i386-fbsd.c \
|
||||
elf32-i860.c \
|
||||
elf32-i960.c \
|
||||
elf32-ip2k.c \
|
||||
elf32-iq2000.c \
|
||||
elf32-m32r.c \
|
||||
elf32-m68k.c \
|
||||
elf32-m68hc11.c \
|
||||
elf32-m68hc12.c \
|
||||
elf32-m68hc1x.c \
|
||||
elf32-m88k.c \
|
||||
elf-m10200.c \
|
||||
elf-m10300.c \
|
||||
elf32-mcore.c \
|
||||
elfxx-mips.c \
|
||||
elf32-mips.c \
|
||||
elf32-msp430.c \
|
||||
elf32-openrisc.c \
|
||||
elf32-or32.c \
|
||||
elf32-pj.c \
|
||||
@@ -517,13 +544,11 @@ BFD32_BACKENDS_CFILES = \
|
||||
elf32-sh64-com.c \
|
||||
elf32-s390.c \
|
||||
elf32-sh.c \
|
||||
elf32-sh-lin.c \
|
||||
elf32-sh-nbsd.c \
|
||||
elf32-sh64-nbsd.c \
|
||||
elf32-sparc.c \
|
||||
elf32-v850.c \
|
||||
elf32-vax.c \
|
||||
elf32-xstormy16.c \
|
||||
elf32-xtensa.c \
|
||||
elf32.c \
|
||||
elflink.c \
|
||||
elf-strtab.c \
|
||||
@@ -549,6 +574,7 @@ BFD32_BACKENDS_CFILES = \
|
||||
m68klynx.c \
|
||||
m68knetbsd.c \
|
||||
m88kmach3.c \
|
||||
mach-o.c \
|
||||
mipsbsd.c \
|
||||
newsos3.c \
|
||||
nlm.c \
|
||||
@@ -560,6 +586,7 @@ BFD32_BACKENDS_CFILES = \
|
||||
oasys.c \
|
||||
pc532-mach.c \
|
||||
pdp11.c \
|
||||
pef.c \
|
||||
pe-arm.c \
|
||||
pei-arm.c \
|
||||
pe-i386.c \
|
||||
@@ -588,7 +615,10 @@ BFD32_BACKENDS_CFILES = \
|
||||
vms-hdr.c \
|
||||
vms-misc.c \
|
||||
vms-tir.c \
|
||||
xcofflink.c
|
||||
xcofflink.c \
|
||||
xsym.c \
|
||||
xtensa-isa.c \
|
||||
xtensa-modules.c
|
||||
|
||||
|
||||
# The .o files needed by all of the 64 bit vectors that are configured into
|
||||
@@ -603,14 +633,13 @@ BFD64_BACKENDS = \
|
||||
efi-app-ia64.lo \
|
||||
elf64-x86-64.lo \
|
||||
elf64-alpha.lo \
|
||||
elf64-alpha-fbsd.lo \
|
||||
elf64-hppa.lo \
|
||||
elf64-ia64.lo \
|
||||
elf64-gen.lo \
|
||||
elfn32-mips.lo \
|
||||
elf64-mips.lo \
|
||||
elf64-mmix.lo \
|
||||
elf64-sh64.lo \
|
||||
elf64-sh64-nbsd.lo \
|
||||
elf64-ppc.lo \
|
||||
elf64-s390.lo \
|
||||
elf64-sparc.lo \
|
||||
@@ -630,15 +659,14 @@ BFD64_BACKENDS_CFILES = \
|
||||
efi-app-ia64.c \
|
||||
elf64-x86-64.c \
|
||||
elf64-alpha.c \
|
||||
elf64-alpha-fbsd.c \
|
||||
elf64-hppa.c \
|
||||
elf64-gen.c \
|
||||
elfn32-mips.c \
|
||||
elf64-mips.c \
|
||||
elf64-mmix.c \
|
||||
elf64-ppc.c \
|
||||
elf64-s390.c \
|
||||
elf64-sh64.c \
|
||||
elf64-sh64-nbsd.c \
|
||||
elf64-sparc.c \
|
||||
elf64.c \
|
||||
mmo.c \
|
||||
@@ -696,16 +724,18 @@ CFILES = $(SOURCE_CFILES) $(BUILD_CFILES)
|
||||
|
||||
SOURCE_HFILES = \
|
||||
aout-target.h aoutf1.h aoutx.h coffcode.h coffswap.h ecoffswap.h \
|
||||
elf-bfd.h elf-hppa.h elf32-arm.h elf32-hppa.h elf64-hppa.h \
|
||||
elfcode.h elfcore.h elflink.h freebsd.h genlink.h go32stub.h \
|
||||
libaout.h libbfd.h libcoff.h libecoff.h libhppa.h \
|
||||
libieee.h libnlm.h liboasys.h libpei.h netbsd.h nlm-target.h \
|
||||
nlmcode.h nlmswap.h ns32k.h peicode.h som.h vms.h libxcoff.h \
|
||||
xcoff-target.h version.h
|
||||
elf-bfd.h elf-hppa.h elf32-arm.h elf32-hppa.h \
|
||||
elf64-hppa.h elfcode.h elfcore.h \
|
||||
freebsd.h genlink.h go32stub.h \
|
||||
libaout.h libbfd.h libcoff.h libecoff.h libhppa.h libieee.h \
|
||||
libnlm.h liboasys.h libpei.h libxcoff.h mach-o.h \
|
||||
netbsd.h nlm-target.h nlmcode.h nlmswap.h ns32k.h \
|
||||
pef.h pef-traceback.h peicode.h som.h version.h \
|
||||
vms.h xcoff-target.h xsym.h
|
||||
|
||||
|
||||
BUILD_HFILES = \
|
||||
elf32-target.h elf64-target.h targmatch.h
|
||||
bfdver.h elf32-target.h elf64-target.h targmatch.h
|
||||
|
||||
|
||||
HFILES = $(SOURCE_HFILES) $(BUILD_HFILES)
|
||||
@@ -736,10 +766,13 @@ BFD_H_DEPS = $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
|
||||
LOCAL_H_DEPS = libbfd.h sysdep.h config.h
|
||||
|
||||
BFD_H_FILES = bfd-in.h init.c opncls.c libbfd.c section.c archures.c \
|
||||
reloc.c syms.c bfd.c archive.c corefile.c targets.c format.c version.h
|
||||
reloc.c syms.c bfd.c bfdio.c bfdwin.c \
|
||||
archive.c corefile.c targets.c format.c
|
||||
|
||||
BFD64_H_FILES = archive64.c
|
||||
LIBBFD_H_FILES = libbfd-in.h init.c libbfd.c cache.c reloc.c archures.c elf.c
|
||||
LIBBFD_H_FILES = libbfd-in.h init.c libbfd.c bfdio.c bfdwin.c \
|
||||
cache.c reloc.c archures.c elf.c
|
||||
|
||||
LIBCOFF_H_FILES = libcoff-in.h coffcode.h
|
||||
|
||||
MOSTLYCLEANFILES = ofiles stamp-ofiles
|
||||
@@ -752,7 +785,7 @@ DISTCLEANFILES = $(BUILD_CFILES) $(BUILD_HFILES)
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES = bfd-in3.h
|
||||
CONFIG_CLEAN_FILES = bfd-in3.h bfdver.h
|
||||
LIBRARIES = $(noinst_LIBRARIES)
|
||||
|
||||
|
||||
@@ -764,10 +797,11 @@ libbfd_a_LIBADD =
|
||||
libbfd_a_OBJECTS =
|
||||
LTLIBRARIES = $(bfdlib_LTLIBRARIES)
|
||||
|
||||
libbfd_la_OBJECTS = archive.lo archures.lo bfd.lo cache.lo coffgen.lo \
|
||||
corefile.lo format.lo init.lo libbfd.lo opncls.lo reloc.lo section.lo \
|
||||
syms.lo targets.lo hash.lo linker.lo srec.lo binary.lo tekhex.lo \
|
||||
ihex.lo stabs.lo stab-syms.lo merge.lo dwarf2.lo archive64.lo
|
||||
libbfd_la_OBJECTS = archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo \
|
||||
cache.lo coffgen.lo corefile.lo format.lo init.lo libbfd.lo opncls.lo \
|
||||
reloc.lo section.lo syms.lo targets.lo hash.lo linker.lo srec.lo \
|
||||
binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo merge.lo dwarf2.lo \
|
||||
simple.lo archive64.lo
|
||||
CFLAGS = @CFLAGS@
|
||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
@@ -775,7 +809,7 @@ CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
DIST_COMMON = README ./stamp-h.in COPYING ChangeLog Makefile.am \
|
||||
Makefile.in TODO acinclude.m4 aclocal.m4 bfd-in2.h config.in configure \
|
||||
configure.in
|
||||
configure.in version.h
|
||||
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
@@ -829,6 +863,8 @@ distclean-hdr:
|
||||
maintainer-clean-hdr:
|
||||
bfd-in3.h: $(top_builddir)/config.status bfd-in2.h
|
||||
cd $(top_builddir) && CONFIG_FILES=$@:bfd-in2.h CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
bfdver.h: $(top_builddir)/config.status version.h
|
||||
cd $(top_builddir) && CONFIG_FILES=$@:version.h CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
mostlyclean-noinstLIBRARIES:
|
||||
|
||||
@@ -931,7 +967,7 @@ maintainer-clean-recursive:
|
||||
dot_seen=no; \
|
||||
rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
rev="$$subdir $$rev"; \
|
||||
test "$$subdir" = "." && dot_seen=yes; \
|
||||
test "$$subdir" != "." || dot_seen=yes; \
|
||||
done; \
|
||||
test "$$dot_seen" = "no" && rev=". $$rev"; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
@@ -1144,22 +1180,15 @@ mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
po/SRC-POTFILES.in: @MAINT@ Makefile $(SRC_POTFILES)
|
||||
for file in $(SRC_POTFILES); do echo $$file; done | sort > tmp.src \
|
||||
for file in $(SRC_POTFILES); do echo $$file; done \
|
||||
| LC_COLLATE= sort > tmp.src \
|
||||
&& mv tmp.src $(srcdir)/po/SRC-POTFILES.in
|
||||
|
||||
po/BLD-POTFILES.in: @MAINT@ Makefile $(BLD_POTFILES)
|
||||
for file in $(BLD_POTFILES); do echo $$file; done | sort > tmp.bld \
|
||||
for file in $(BLD_POTFILES); do echo $$file; done \
|
||||
| LC_COLLATE= sort > tmp.bld \
|
||||
&& mv tmp.bld $(srcdir)/po/BLD-POTFILES.in
|
||||
|
||||
# The following target is retained for upgrade purposes.
|
||||
# This target used to exist in older versions of this makefile, and was
|
||||
# referenced by <builddir>/po/Makefile (which is created from <srcdir>/po/Make-in)
|
||||
# So old versions of <builddir>/po/Makefile will try to regenerate themselves
|
||||
# when make is next run, but that dependency cannot be completed without a build
|
||||
# of po/POTFILES.in. Hence the presence of this rule. This rule will be deleted
|
||||
# once it is no longer needed - probably in the fall of 2001.
|
||||
po/POTFILES.in:
|
||||
|
||||
diststuff: info
|
||||
|
||||
stamp-ofiles: Makefile
|
||||
@@ -1199,10 +1228,10 @@ targmatch.h: config.bfd targmatch.sed
|
||||
# When compiling archures.c and targets.c, supply the default target
|
||||
# info from configure.
|
||||
|
||||
targets.lo: targets.c config.status
|
||||
targets.lo: targets.c Makefile
|
||||
$(LIBTOOL) --mode=compile $(COMPILE) -c $(TDEFAULTS) $(srcdir)/targets.c
|
||||
|
||||
archures.lo: archures.c config.status
|
||||
archures.lo: archures.c Makefile
|
||||
$(LIBTOOL) --mode=compile $(COMPILE) -c $(TDEFAULTS) $(srcdir)/archures.c
|
||||
|
||||
elf32-target.h : elfxx-target.h
|
||||
@@ -1364,8 +1393,9 @@ stmp-lcoff-h: $(LIBCOFF_H_FILES)
|
||||
$(SHELL) $(srcdir)/../move-if-change libcoff.h-new $(srcdir)/libcoff.h
|
||||
touch stmp-lcoff-h
|
||||
|
||||
# We want to rerun configure if config.bfd or configure.host change.
|
||||
config.status: $(srcdir)/configure $(srcdir)/config.bfd $(srcdir)/configure.host
|
||||
# We want to rerun configure if config.bfd, configure.host or version.h change.
|
||||
config.status: $(srcdir)/configure $(srcdir)/config.bfd \
|
||||
$(srcdir)/configure.host $(srcdir)/version.h
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
# What appears below is generated by a hacked mkdep using gcc -MM.
|
||||
@@ -1375,11 +1405,13 @@ config.status: $(srcdir)/configure $(srcdir)/config.bfd $(srcdir)/configure.host
|
||||
archive.lo: archive.c $(INCDIR)/filenames.h $(INCDIR)/aout/ar.h \
|
||||
$(INCDIR)/aout/ranlib.h $(INCDIR)/safe-ctype.h
|
||||
archures.lo: archures.c $(INCDIR)/filenames.h $(INCDIR)/safe-ctype.h
|
||||
bfd.lo: bfd.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||
bfd.lo: bfd.c bfdver.h $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||
$(INCDIR)/safe-ctype.h $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
|
||||
$(INCDIR)/coff/sym.h libcoff.h libecoff.h $(INCDIR)/coff/ecoff.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h
|
||||
bfdio.lo: bfdio.c $(INCDIR)/filenames.h
|
||||
bfdwin.lo: bfdwin.c $(INCDIR)/filenames.h
|
||||
cache.lo: cache.c $(INCDIR)/filenames.h
|
||||
coffgen.lo: coffgen.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \
|
||||
libcoff.h $(INCDIR)/bfdlink.h
|
||||
@@ -1387,7 +1419,8 @@ corefile.lo: corefile.c $(INCDIR)/filenames.h
|
||||
format.lo: format.c $(INCDIR)/filenames.h
|
||||
init.lo: init.c $(INCDIR)/filenames.h
|
||||
libbfd.lo: libbfd.c $(INCDIR)/filenames.h
|
||||
opncls.lo: opncls.c $(INCDIR)/filenames.h $(INCDIR)/objalloc.h
|
||||
opncls.lo: opncls.c $(INCDIR)/filenames.h $(INCDIR)/objalloc.h \
|
||||
$(INCDIR)/libiberty.h
|
||||
reloc.lo: reloc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h
|
||||
section.lo: section.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h
|
||||
syms.lo: syms.c $(INCDIR)/filenames.h $(INCDIR)/safe-ctype.h \
|
||||
@@ -1412,11 +1445,12 @@ merge.lo: merge.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
|
||||
dwarf2.lo: dwarf2.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf2.h
|
||||
simple.lo: simple.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h
|
||||
archive64.lo: archive64.c $(INCDIR)/filenames.h $(INCDIR)/aout/ar.h
|
||||
cpu-a29k.lo: cpu-a29k.c $(INCDIR)/filenames.h
|
||||
cpu-alpha.lo: cpu-alpha.c $(INCDIR)/filenames.h
|
||||
cpu-arc.lo: cpu-arc.c $(INCDIR)/filenames.h
|
||||
cpu-arm.lo: cpu-arm.c $(INCDIR)/filenames.h
|
||||
cpu-arm.lo: cpu-arm.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
|
||||
cpu-avr.lo: cpu-avr.c $(INCDIR)/filenames.h
|
||||
cpu-cris.lo: cpu-cris.c $(INCDIR)/filenames.h
|
||||
cpu-d10v.lo: cpu-d10v.c $(INCDIR)/filenames.h
|
||||
@@ -1433,6 +1467,8 @@ cpu-i370.lo: cpu-i370.c $(INCDIR)/filenames.h
|
||||
cpu-i386.lo: cpu-i386.c $(INCDIR)/filenames.h
|
||||
cpu-i860.lo: cpu-i860.c $(INCDIR)/filenames.h
|
||||
cpu-i960.lo: cpu-i960.c $(INCDIR)/filenames.h
|
||||
cpu-ip2k.lo: cpu-ip2k.c $(INCDIR)/filenames.h
|
||||
cpu-iq2000.lo: cpu-iq2000.c $(INCDIR)/filenames.h
|
||||
cpu-m32r.lo: cpu-m32r.c $(INCDIR)/filenames.h
|
||||
cpu-m68hc11.lo: cpu-m68hc11.c $(INCDIR)/filenames.h
|
||||
cpu-m68hc12.lo: cpu-m68hc12.c $(INCDIR)/filenames.h
|
||||
@@ -1443,6 +1479,7 @@ cpu-m10300.lo: cpu-m10300.c $(INCDIR)/filenames.h
|
||||
cpu-mcore.lo: cpu-mcore.c $(INCDIR)/filenames.h
|
||||
cpu-mips.lo: cpu-mips.c $(INCDIR)/filenames.h
|
||||
cpu-mmix.lo: cpu-mmix.c $(INCDIR)/filenames.h
|
||||
cpu-msp430.lo: cpu-msp430.c $(INCDIR)/filenames.h
|
||||
cpu-or32.lo: cpu-or32.c $(INCDIR)/filenames.h
|
||||
cpu-ns32k.lo: cpu-ns32k.c $(INCDIR)/filenames.h ns32k.h
|
||||
cpu-openrisc.lo: cpu-openrisc.c $(INCDIR)/filenames.h
|
||||
@@ -1454,6 +1491,7 @@ cpu-s390.lo: cpu-s390.c $(INCDIR)/filenames.h
|
||||
cpu-sh.lo: cpu-sh.c $(INCDIR)/filenames.h
|
||||
cpu-sparc.lo: cpu-sparc.c $(INCDIR)/filenames.h
|
||||
cpu-tic30.lo: cpu-tic30.c $(INCDIR)/filenames.h
|
||||
cpu-tic4x.lo: cpu-tic4x.c $(INCDIR)/filenames.h
|
||||
cpu-tic54x.lo: cpu-tic54x.c $(INCDIR)/filenames.h
|
||||
cpu-tic80.lo: cpu-tic80.c $(INCDIR)/filenames.h
|
||||
cpu-v850.lo: cpu-v850.c $(INCDIR)/filenames.h $(INCDIR)/safe-ctype.h
|
||||
@@ -1461,6 +1499,7 @@ cpu-vax.lo: cpu-vax.c $(INCDIR)/filenames.h
|
||||
cpu-we32k.lo: cpu-we32k.c $(INCDIR)/filenames.h
|
||||
cpu-w65.lo: cpu-w65.c $(INCDIR)/filenames.h
|
||||
cpu-xstormy16.lo: cpu-xstormy16.c $(INCDIR)/filenames.h
|
||||
cpu-xtensa.lo: cpu-xtensa.c $(INCDIR)/filenames.h
|
||||
cpu-z8k.lo: cpu-z8k.c $(INCDIR)/filenames.h
|
||||
aout-adobe.lo: aout-adobe.c $(INCDIR)/filenames.h $(INCDIR)/aout/adobe.h \
|
||||
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def libaout.h \
|
||||
@@ -1523,7 +1562,8 @@ coff-aux.lo: coff-aux.c $(INCDIR)/filenames.h $(INCDIR)/coff/aux-coff.h \
|
||||
coffswap.h
|
||||
coff-h8300.lo: coff-h8300.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
genlink.h $(INCDIR)/coff/h8300.h $(INCDIR)/coff/external.h \
|
||||
$(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
|
||||
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/libiberty.h \
|
||||
coffcode.h coffswap.h
|
||||
coff-h8500.lo: coff-h8500.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/coff/h8500.h $(INCDIR)/coff/external.h $(INCDIR)/coff/internal.h \
|
||||
libcoff.h coffcode.h coffswap.h
|
||||
@@ -1572,6 +1612,9 @@ coff-svm68k.lo: coff-svm68k.c coff-m68k.c $(INCDIR)/filenames.h \
|
||||
coff-tic30.lo: coff-tic30.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/coff/tic30.h $(INCDIR)/coff/external.h $(INCDIR)/coff/internal.h \
|
||||
libcoff.h coffcode.h coffswap.h
|
||||
coff-tic4x.lo: coff-tic4x.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/coff/tic4x.h $(INCDIR)/coff/ti.h $(INCDIR)/coff/internal.h \
|
||||
libcoff.h coffcode.h coffswap.h
|
||||
coff-tic54x.lo: coff-tic54x.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \
|
||||
$(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
|
||||
@@ -1591,7 +1634,7 @@ coff-z8k.lo: coff-z8k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/coff/z8k.h $(INCDIR)/coff/external.h $(INCDIR)/coff/internal.h \
|
||||
libcoff.h coffcode.h coffswap.h
|
||||
cofflink.lo: cofflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/coff/internal.h libcoff.h
|
||||
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/safe-ctype.h
|
||||
dwarf1.lo: dwarf1.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf.h
|
||||
@@ -1611,6 +1654,10 @@ efi-app-ia32.lo: efi-app-ia32.c $(INCDIR)/filenames.h \
|
||||
elf.lo: elf.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/libiberty.h
|
||||
elf32-am33lin.lo: elf32-am33lin.c elf-m10300.c $(INCDIR)/filenames.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/mn10300.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
elf32-arc.lo: elf32-arc.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h \
|
||||
@@ -1650,7 +1697,7 @@ elf32-fr30.lo: elf32-fr30.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
elf32-frv.lo: elf32-frv.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
$(INCDIR)/elf/dwarf2.h $(INCDIR)/hashtab.h elf32-target.h
|
||||
elf32-gen.lo: elf32-gen.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h elf32-target.h
|
||||
@@ -1664,15 +1711,12 @@ elf32-hppa.lo: elf32-hppa.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
libhppa.h elf32-hppa.h elf-hppa.h elf32-target.h
|
||||
elf32-i370.lo: elf32-i370.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/i370.h elf32-target.h
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/i370.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-i386.lo: elf32-i386.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-i386-fbsd.lo: elf32-i386-fbsd.c elf32-i386.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
elf32-i860.lo: elf32-i860.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/elf/i860.h $(INCDIR)/elf/reloc-macros.h \
|
||||
@@ -1681,6 +1725,14 @@ elf32-i960.lo: elf32-i960.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/elf/i960.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-ip2k.lo: elf32-ip2k.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/elf/ip2k.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-iq2000.lo: elf32-iq2000.c $(INCDIR)/filenames.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/iq2000.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
elf32-m32r.lo: elf32-m32r.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/elf/m32r.h $(INCDIR)/elf/reloc-macros.h \
|
||||
@@ -1690,13 +1742,20 @@ elf32-m68k.lo: elf32-m68k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/m68k.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-m68hc11.lo: elf32-m68hc11.c $(INCDIR)/filenames.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/m68hc11.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elf32-m68hc1x.h \
|
||||
$(INCDIR)/elf/m68hc11.h $(INCDIR)/elf/reloc-macros.h \
|
||||
$(INCDIR)/opcode/m68hc11.h elf32-target.h
|
||||
elf32-m68hc12.lo: elf32-m68hc12.c $(INCDIR)/filenames.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/m68hc11.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elf32-m68hc1x.h \
|
||||
$(INCDIR)/elf/m68hc11.h $(INCDIR)/elf/reloc-macros.h \
|
||||
$(INCDIR)/opcode/m68hc11.h elf32-target.h
|
||||
elf32-m68hc1x.lo: elf32-m68hc1x.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elf32-m68hc1x.h \
|
||||
$(INCDIR)/elf/m68hc11.h $(INCDIR)/elf/reloc-macros.h \
|
||||
$(INCDIR)/opcode/m68hc11.h
|
||||
elf32-m88k.lo: elf32-m88k.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h elf32-target.h
|
||||
@@ -1711,17 +1770,23 @@ elf32-mcore.lo: elf32-mcore.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/mcore.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
elfxx-mips.lo: elfxx-mips.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h elfxx-mips.h $(INCDIR)/elf/mips.h \
|
||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
|
||||
$(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h $(INCDIR)/coff/external.h
|
||||
elfxx-mips.lo: elfxx-mips.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h elfxx-mips.h \
|
||||
$(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/sym.h \
|
||||
$(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h \
|
||||
$(INCDIR)/coff/external.h $(INCDIR)/hashtab.h
|
||||
elf32-mips.lo: elf32-mips.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
genlink.h elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h elfxx-mips.h $(INCDIR)/elf/mips.h \
|
||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
|
||||
$(INCDIR)/coff/internal.h $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h \
|
||||
$(INCDIR)/coff/external.h ecoffswap.h elf32-target.h
|
||||
elf32-msp430.lo: elf32-msp430.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/libiberty.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/elf/msp430.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-openrisc.lo: elf32-openrisc.c $(INCDIR)/filenames.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/openrisc.h \
|
||||
@@ -1738,16 +1803,16 @@ elf32-pj.lo: elf32-pj.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf32-ppc.lo: elf32-ppc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-ppc.h elf32-target.h
|
||||
elf32-sh64.lo: elf32-sh64.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(srcdir)/../opcodes/sh64-opc.h \
|
||||
elf32-sh.c $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-sh64.h elf32-sh.c $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-sh64-com.lo: elf32-sh64-com.c $(INCDIR)/filenames.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/sh.h \
|
||||
$(INCDIR)/elf/reloc-macros.h $(srcdir)/../opcodes/sh64-opc.h
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-sh64.h $(srcdir)/../opcodes/sh64-opc.h
|
||||
elf32-s390.lo: elf32-s390.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/s390.h $(INCDIR)/elf/reloc-macros.h \
|
||||
@@ -1756,19 +1821,6 @@ elf32-sh.lo: elf32-sh.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf32-target.h
|
||||
elf32-sh-lin.lo: elf32-sh-lin.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/elf/internal.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h elf32-sh.c \
|
||||
$(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
elf32-sh-nbsd.lo: elf32-sh-nbsd.c elf32-sh.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
elf32-sh64-nbsd.lo: elf32-sh64-nbsd.c elf32-sh64.c \
|
||||
$(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
|
||||
$(srcdir)/../opcodes/sh64-opc.h elf32-sh.c $(INCDIR)/elf/sh.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
elf32-sparc.lo: elf32-sparc.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sparc.h \
|
||||
@@ -1787,13 +1839,18 @@ elf32-xstormy16.lo: elf32-xstormy16.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/xstormy16.h \
|
||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/libiberty.h \
|
||||
elf32-target.h
|
||||
elf32-xtensa.lo: elf32-xtensa.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/xtensa.h \
|
||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/xtensa-isa.h \
|
||||
$(INCDIR)/xtensa-config.h elf32-target.h
|
||||
elf32.lo: elf32.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfcore.h \
|
||||
elflink.h
|
||||
$(INCDIR)/safe-ctype.h
|
||||
elflink.lo: elflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/libiberty.h
|
||||
elf-strtab.lo: elf-strtab.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h
|
||||
@@ -1863,6 +1920,8 @@ m68knetbsd.lo: m68knetbsd.c netbsd.h $(INCDIR)/filenames.h \
|
||||
m88kmach3.lo: m88kmach3.c $(INCDIR)/filenames.h libaout.h \
|
||||
$(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
|
||||
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
|
||||
mach-o.lo: mach-o.c mach-o.h $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/libiberty.h mach-o-target.c
|
||||
mipsbsd.lo: mipsbsd.c $(INCDIR)/filenames.h libaout.h \
|
||||
$(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
|
||||
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
|
||||
@@ -1894,6 +1953,8 @@ pc532-mach.lo: pc532-mach.c $(INCDIR)/filenames.h libaout.h \
|
||||
pdp11.lo: pdp11.c $(INCDIR)/filenames.h libaout.h $(INCDIR)/bfdlink.h \
|
||||
aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
|
||||
$(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h $(INCDIR)/safe-ctype.h
|
||||
pef.lo: pef.c $(INCDIR)/safe-ctype.h pef.h pef-traceback.h \
|
||||
$(INCDIR)/filenames.h $(INCDIR)/libiberty.h
|
||||
pe-arm.lo: pe-arm.c $(INCDIR)/filenames.h coff-arm.c \
|
||||
$(INCDIR)/coff/arm.h $(INCDIR)/coff/external.h $(INCDIR)/coff/internal.h \
|
||||
$(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
|
||||
@@ -1977,8 +2038,8 @@ vms.lo: vms.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
vms.h
|
||||
vms-gsd.lo: vms-gsd.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
vms.h
|
||||
vms-hdr.lo: vms-hdr.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/safe-ctype.h vms.h
|
||||
vms-hdr.lo: vms-hdr.c bfdver.h $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/safe-ctype.h vms.h
|
||||
vms-misc.lo: vms-misc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
vms.h
|
||||
vms-tir.lo: vms-tir.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
@@ -1986,6 +2047,11 @@ vms-tir.lo: vms-tir.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
xcofflink.lo: xcofflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
$(INCDIR)/coff/internal.h $(INCDIR)/coff/xcoff.h libcoff.h \
|
||||
libxcoff.h
|
||||
xsym.lo: xsym.c xsym.h $(INCDIR)/filenames.h
|
||||
xtensa-isa.lo: xtensa-isa.c $(INCDIR)/xtensa-isa.h \
|
||||
$(INCDIR)/xtensa-isa-internal.h
|
||||
xtensa-modules.lo: xtensa-modules.c $(INCDIR)/xtensa-isa.h \
|
||||
$(INCDIR)/xtensa-isa-internal.h
|
||||
aix5ppc-core.lo: aix5ppc-core.c
|
||||
aout64.lo: aout64.c aoutx.h $(INCDIR)/filenames.h $(INCDIR)/safe-ctype.h \
|
||||
$(INCDIR)/bfdlink.h libaout.h $(INCDIR)/aout/aout64.h \
|
||||
@@ -2017,13 +2083,6 @@ elf64-alpha.lo: elf64-alpha.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
|
||||
$(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h libcoff.h \
|
||||
libecoff.h ecoffswap.h elf64-target.h
|
||||
elf64-alpha-fbsd.lo: elf64-alpha-fbsd.c elf64-alpha.c $(INCDIR)/filenames.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/alpha.h \
|
||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/internal.h \
|
||||
$(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
|
||||
$(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h libcoff.h \
|
||||
libecoff.h ecoffswap.h elf64-target.h
|
||||
elf64-hppa.lo: elf64-hppa.c $(INCDIR)/alloca-conf.h \
|
||||
$(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
|
||||
@@ -2032,6 +2091,13 @@ elf64-hppa.lo: elf64-hppa.c $(INCDIR)/alloca-conf.h \
|
||||
elf64-gen.lo: elf64-gen.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h elf64-target.h
|
||||
elfn32-mips.lo: elfn32-mips.c $(INCDIR)/filenames.h \
|
||||
$(INCDIR)/bfdlink.h genlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfxx-mips.h \
|
||||
$(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/sym.h \
|
||||
$(INCDIR)/coff/symconst.h $(INCDIR)/coff/internal.h \
|
||||
$(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h $(INCDIR)/coff/external.h \
|
||||
ecoffswap.h elf32-target.h
|
||||
elf64-mips.lo: elf64-mips.c $(INCDIR)/filenames.h $(INCDIR)/aout/ar.h \
|
||||
$(INCDIR)/bfdlink.h genlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfxx-mips.h \
|
||||
@@ -2045,7 +2111,7 @@ elf64-mmix.lo: elf64-mmix.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/opcode/mmix.h elf64-target.h
|
||||
elf64-ppc.lo: elf64-ppc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/ppc64.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf64-ppc.h elf64-target.h
|
||||
elf64-s390.lo: elf64-s390.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
@@ -2055,10 +2121,6 @@ elf64-sh64.lo: elf64-sh64.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \
|
||||
elf64-target.h
|
||||
elf64-sh64-nbsd.lo: elf64-sh64-nbsd.c elf64-sh64.c \
|
||||
$(INCDIR)/filenames.h $(INCDIR)/bfdlink.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h elf64-target.h
|
||||
elf64-sparc.lo: elf64-sparc.c $(INCDIR)/filenames.h \
|
||||
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
|
||||
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/sparc.h \
|
||||
@@ -2067,7 +2129,7 @@ elf64-sparc.lo: elf64-sparc.c $(INCDIR)/filenames.h \
|
||||
elf64.lo: elf64.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||
$(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
|
||||
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfcore.h \
|
||||
elflink.h
|
||||
$(INCDIR)/safe-ctype.h
|
||||
mmo.lo: mmo.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
|
||||
$(INCDIR)/elf/mmix.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/mmix.h
|
||||
nlm32-alpha.lo: nlm32-alpha.c $(INCDIR)/filenames.h \
|
||||
@@ -2091,11 +2153,13 @@ cisco-core.lo: cisco-core.c $(INCDIR)/filenames.h
|
||||
elf32-ia64.lo: elf32-ia64.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf32-target.h
|
||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/objalloc.h $(INCDIR)/hashtab.h \
|
||||
elf32-target.h
|
||||
elf64-ia64.lo: elf64-ia64.c $(INCDIR)/filenames.h elf-bfd.h \
|
||||
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
|
||||
$(INCDIR)/bfdlink.h $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h \
|
||||
$(INCDIR)/elf/reloc-macros.h elf64-target.h
|
||||
$(INCDIR)/elf/reloc-macros.h $(INCDIR)/objalloc.h $(INCDIR)/hashtab.h \
|
||||
elf64-target.h
|
||||
peigen.lo: peigen.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \
|
||||
$(INCDIR)/coff/i386.h $(INCDIR)/coff/external.h $(INCDIR)/coff/pe.h \
|
||||
libcoff.h $(INCDIR)/bfdlink.h libpei.h
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
sinclude(../config/accross.m4)
|
||||
|
||||
dnl See whether we need to use fopen-bin.h rather than fopen-same.h.
|
||||
AC_DEFUN(BFD_BINARY_FOPEN,
|
||||
AC_DEFUN([BFD_BINARY_FOPEN],
|
||||
[AC_REQUIRE([AC_CANONICAL_SYSTEM])
|
||||
case "${host}" in
|
||||
changequote(,)dnl
|
||||
@@ -9,7 +11,7 @@ changequote([,])dnl
|
||||
esac])dnl
|
||||
|
||||
dnl Get a default for CC_FOR_BUILD to put into Makefile.
|
||||
AC_DEFUN(BFD_CC_FOR_BUILD,
|
||||
AC_DEFUN([BFD_CC_FOR_BUILD],
|
||||
[# Put a plausible default for CC_FOR_BUILD in Makefile.
|
||||
if test -z "$CC_FOR_BUILD"; then
|
||||
if test "x$cross_compiling" = "xno"; then
|
||||
@@ -42,7 +44,7 @@ fi
|
||||
AC_SUBST(EXEEXT_FOR_BUILD)])dnl
|
||||
|
||||
dnl See whether we need a declaration for a function.
|
||||
AC_DEFUN(BFD_NEED_DECLARATION,
|
||||
AC_DEFUN([BFD_NEED_DECLARATION],
|
||||
[AC_MSG_CHECKING([whether $1 must be declared])
|
||||
AC_CACHE_VAL(bfd_cv_decl_needed_$1,
|
||||
[AC_TRY_COMPILE([
|
||||
@@ -71,7 +73,7 @@ fi
|
||||
|
||||
dnl Check for existence of a type $1 in sys/procfs.h
|
||||
|
||||
AC_DEFUN(BFD_HAVE_SYS_PROCFS_TYPE,
|
||||
AC_DEFUN([BFD_HAVE_SYS_PROCFS_TYPE],
|
||||
[AC_MSG_CHECKING([for $1 in sys/procfs.h])
|
||||
AC_CACHE_VAL(bfd_cv_have_sys_procfs_type_$1,
|
||||
[AC_TRY_COMPILE([
|
||||
@@ -91,7 +93,7 @@ AC_DEFUN(BFD_HAVE_SYS_PROCFS_TYPE,
|
||||
|
||||
dnl Check for existence of member $2 in type $1 in sys/procfs.h
|
||||
|
||||
AC_DEFUN(BFD_HAVE_SYS_PROCFS_TYPE_MEMBER,
|
||||
AC_DEFUN([BFD_HAVE_SYS_PROCFS_TYPE_MEMBER],
|
||||
[AC_MSG_CHECKING([for $1.$2 in sys/procfs.h])
|
||||
AC_CACHE_VAL(bfd_cv_have_sys_procfs_type_member_$1_$2,
|
||||
[AC_TRY_COMPILE([
|
||||
@@ -127,9 +129,9 @@ AC_SUBST(INTLLIBS)
|
||||
AC_DEFUN([AM_INSTALL_LIBBFD],
|
||||
[AC_MSG_CHECKING([whether to install libbfd])
|
||||
AC_ARG_ENABLE(install-libbfd,
|
||||
[ --install-libbfd controls installation of libbfd and related headers],
|
||||
[ --enable-install-libbfd controls installation of libbfd and related headers],
|
||||
install_libbfd_p=$enableval,
|
||||
if test "${host}" = "${target}" -o "$enable_shared" = "yes"; then
|
||||
if test "${host}" = "${target}" || test "$enable_shared" = "yes"; then
|
||||
install_libbfd_p=yes
|
||||
else
|
||||
install_libbfd_p=no
|
||||
|
||||
Vendored
+65
-6
@@ -1,4 +1,4 @@
|
||||
dnl aclocal.m4 generated automatically by aclocal 1.4-p5
|
||||
dnl aclocal.m4 generated automatically by aclocal 1.4-p6
|
||||
|
||||
dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
@@ -10,6 +10,8 @@ dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
dnl PARTICULAR PURPOSE.
|
||||
|
||||
sinclude(../config/accross.m4)
|
||||
|
||||
dnl See whether we need to use fopen-bin.h rather than fopen-same.h.
|
||||
AC_DEFUN(BFD_BINARY_FOPEN,
|
||||
[AC_REQUIRE([AC_CANONICAL_SYSTEM])
|
||||
@@ -139,9 +141,9 @@ AC_SUBST(INTLLIBS)
|
||||
AC_DEFUN([AM_INSTALL_LIBBFD],
|
||||
[AC_MSG_CHECKING([whether to install libbfd])
|
||||
AC_ARG_ENABLE(install-libbfd,
|
||||
[ --install-libbfd controls installation of libbfd and related headers],
|
||||
[ --enable-install-libbfd controls installation of libbfd and related headers],
|
||||
install_libbfd_p=$enableval,
|
||||
if test "${host}" = "${target}" -o "$enable_shared" = "yes"; then
|
||||
if test "${host}" = "${target}" || test "$enable_shared" = "yes"; then
|
||||
install_libbfd_p=yes
|
||||
else
|
||||
install_libbfd_p=no
|
||||
@@ -173,6 +175,33 @@ else
|
||||
$1_FALSE=
|
||||
fi])
|
||||
|
||||
# isc-posix.m4 serial 2 (gettext-0.11.2)
|
||||
dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
|
||||
dnl This file is free software, distributed under the terms of the GNU
|
||||
dnl General Public License. As a special exception to the GNU General
|
||||
dnl Public License, this file may be distributed as part of a program
|
||||
dnl that contains a configuration script generated by Autoconf, under
|
||||
dnl the same distribution terms as the rest of that program.
|
||||
|
||||
# This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
|
||||
|
||||
# This test replaces the one in autoconf.
|
||||
# Currently this macro should have the same name as the autoconf macro
|
||||
# because gettext's gettext.m4 (distributed in the automake package)
|
||||
# still uses it. Otherwise, the use in gettext.m4 makes autoheader
|
||||
# give these diagnostics:
|
||||
# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
|
||||
# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
|
||||
|
||||
undefine([AC_ISC_POSIX])
|
||||
|
||||
AC_DEFUN([AC_ISC_POSIX],
|
||||
[
|
||||
dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
|
||||
AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
|
||||
]
|
||||
)
|
||||
|
||||
# Do all the work for Automake. This macro actually does too much --
|
||||
# some checks are only needed if your package does certain things.
|
||||
# But this isn't really a big deal.
|
||||
@@ -183,7 +212,8 @@ dnl Usage:
|
||||
dnl AM_INIT_AUTOMAKE(package,version, [no-define])
|
||||
|
||||
AC_DEFUN([AM_INIT_AUTOMAKE],
|
||||
[AC_REQUIRE([AC_PROG_INSTALL])
|
||||
[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
|
||||
AC_REQUIRE([AC_PROG_INSTALL])
|
||||
PACKAGE=[$1]
|
||||
AC_SUBST(PACKAGE)
|
||||
VERSION=[$2]
|
||||
@@ -199,13 +229,42 @@ AC_REQUIRE([AM_SANITY_CHECK])
|
||||
AC_REQUIRE([AC_ARG_PROGRAM])
|
||||
dnl FIXME This is truly gross.
|
||||
missing_dir=`cd $ac_aux_dir && pwd`
|
||||
AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
|
||||
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}, $missing_dir)
|
||||
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
|
||||
AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
|
||||
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}, $missing_dir)
|
||||
AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
|
||||
AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])])
|
||||
|
||||
# Copyright 2002 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 2, 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., 59 Temple Place - Suite 330, Boston, MA
|
||||
|
||||
# AM_AUTOMAKE_VERSION(VERSION)
|
||||
# ----------------------------
|
||||
# Automake X.Y traces this macro to ensure aclocal.m4 has been
|
||||
# generated from the m4 files accompanying Automake X.Y.
|
||||
AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.4"])
|
||||
|
||||
# AM_SET_CURRENT_AUTOMAKE_VERSION
|
||||
# -------------------------------
|
||||
# Call AM_AUTOMAKE_VERSION so it can be traced.
|
||||
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
|
||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||
[AM_AUTOMAKE_VERSION([1.4-p6])])
|
||||
|
||||
#
|
||||
# Check to make sure that the build environment is sane.
|
||||
#
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* BFD back-end for raw ARM a.out binaries.
|
||||
Copyright 1994, 1995, 1997, 1998, 1999, 2000, 2001
|
||||
Copyright 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org)
|
||||
|
||||
@@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
#include "bfd.h"
|
||||
#include "sysdep.h"
|
||||
|
||||
/* Avoid multiple defininitions from aoutx if supporting standarad a.out
|
||||
/* Avoid multiple definitions from aoutx if supporting standard a.out
|
||||
as well as our own. */
|
||||
/* Do not "beautify" the CONCAT* macro args. Traditional C will not
|
||||
remove whitespace added here, and thus will fail to concatenate
|
||||
@@ -54,7 +54,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
#include "libaout.h"
|
||||
#include "aout/aout64.h"
|
||||
|
||||
static boolean MY(write_object_contents)
|
||||
static bfd_boolean MY(write_object_contents)
|
||||
PARAMS ((bfd *));
|
||||
static bfd_reloc_status_type MY(fix_pcrel_26_done)
|
||||
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
|
||||
@@ -80,28 +80,28 @@ reloc_howto_type MY(howto_table)[] =
|
||||
{
|
||||
/* Type rs size bsz pcrel bitpos ovrf sf name part_inpl
|
||||
readmask setmask pcdone. */
|
||||
HOWTO (0, 0, 0, 8, false, 0, complain_overflow_bitfield, 0, "8", true,
|
||||
0x000000ff, 0x000000ff, false),
|
||||
HOWTO (1, 0, 1, 16, false, 0, complain_overflow_bitfield, 0, "16", true,
|
||||
0x0000ffff, 0x0000ffff, false),
|
||||
HOWTO (2, 0, 2, 32, false, 0, complain_overflow_bitfield, 0, "32", true,
|
||||
0xffffffff, 0xffffffff, false),
|
||||
HOWTO (3, 2, 2, 26, true, 0, complain_overflow_signed, MY(fix_pcrel_26),
|
||||
"ARM26", true, 0x00ffffff, 0x00ffffff, true),
|
||||
HOWTO (4, 0, 0, 8, true, 0, complain_overflow_signed, 0, "DISP8", true,
|
||||
0x000000ff, 0x000000ff, true),
|
||||
HOWTO (5, 0, 1, 16, true, 0, complain_overflow_signed, 0, "DISP16", true,
|
||||
0x0000ffff, 0x0000ffff, true),
|
||||
HOWTO (6, 0, 2, 32, true, 0, complain_overflow_signed, 0, "DISP32", true,
|
||||
0xffffffff, 0xffffffff, true),
|
||||
HOWTO (7, 2, 2, 26, false, 0, complain_overflow_signed,
|
||||
MY(fix_pcrel_26_done), "ARM26D", true, 0x0, 0x0,
|
||||
false),
|
||||
HOWTO (0, 0, 0, 8, FALSE, 0, complain_overflow_bitfield, 0, "8", TRUE,
|
||||
0x000000ff, 0x000000ff, FALSE),
|
||||
HOWTO (1, 0, 1, 16, FALSE, 0, complain_overflow_bitfield, 0, "16", TRUE,
|
||||
0x0000ffff, 0x0000ffff, FALSE),
|
||||
HOWTO (2, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, 0, "32", TRUE,
|
||||
0xffffffff, 0xffffffff, FALSE),
|
||||
HOWTO (3, 2, 2, 26, TRUE, 0, complain_overflow_signed, MY(fix_pcrel_26),
|
||||
"ARM26", TRUE, 0x00ffffff, 0x00ffffff, TRUE),
|
||||
HOWTO (4, 0, 0, 8, TRUE, 0, complain_overflow_signed, 0, "DISP8", TRUE,
|
||||
0x000000ff, 0x000000ff, TRUE),
|
||||
HOWTO (5, 0, 1, 16, TRUE, 0, complain_overflow_signed, 0, "DISP16", TRUE,
|
||||
0x0000ffff, 0x0000ffff, TRUE),
|
||||
HOWTO (6, 0, 2, 32, TRUE, 0, complain_overflow_signed, 0, "DISP32", TRUE,
|
||||
0xffffffff, 0xffffffff, TRUE),
|
||||
HOWTO (7, 2, 2, 26, FALSE, 0, complain_overflow_signed,
|
||||
MY(fix_pcrel_26_done), "ARM26D", TRUE, 0x0, 0x0,
|
||||
FALSE),
|
||||
EMPTY_HOWTO (-1),
|
||||
HOWTO (9, 0, -1, 16, false, 0, complain_overflow_bitfield, 0, "NEG16", true,
|
||||
0x0000ffff, 0x0000ffff, false),
|
||||
HOWTO (10, 0, -2, 32, false, 0, complain_overflow_bitfield, 0, "NEG32", true,
|
||||
0xffffffff, 0xffffffff, false)
|
||||
HOWTO (9, 0, -1, 16, FALSE, 0, complain_overflow_bitfield, 0, "NEG16", TRUE,
|
||||
0x0000ffff, 0x0000ffff, FALSE),
|
||||
HOWTO (10, 0, -2, 32, FALSE, 0, complain_overflow_bitfield, 0, "NEG32", TRUE,
|
||||
0xffffffff, 0xffffffff, FALSE)
|
||||
};
|
||||
|
||||
#define RELOC_ARM_BITS_NEG_BIG ((unsigned int) 0x08)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* BFD back-end for a.out files encapsulated with COFF headers.
|
||||
Copyright 1990, 1991, 1994, 1995, 2000, 2001
|
||||
Copyright 1990, 1991, 1994, 1995, 2000, 2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@@ -24,7 +24,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
#define TARGET_PAGE_SIZE 4096
|
||||
#define SEGMENT_SIZE TARGET_PAGE_SIZE
|
||||
#define TEXT_START_ADDR 0
|
||||
#define BYTES_IN_WORD 4
|
||||
#endif
|
||||
|
||||
#include "bfd.h"
|
||||
@@ -123,7 +122,7 @@ encap_real_callback (abfd)
|
||||
Section contents have already been written. We write the
|
||||
file header, symbols, and relocation. */
|
||||
|
||||
boolean
|
||||
bfd_boolean
|
||||
encap_write_object_contents (abfd)
|
||||
bfd *abfd;
|
||||
{
|
||||
@@ -230,7 +229,7 @@ encap_write_object_contents (abfd)
|
||||
|
||||
text_size -= N_TXTOFF (outheader);
|
||||
WRITE_HEADERS(abfd, execp);
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#define MY_write_object_content encap_write_object_contents
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Define a target vector and some small routines for a variant of a.out.
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
2000, 2001, 2002
|
||||
2000, 2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@@ -201,21 +201,21 @@ MY(object_p) (abfd)
|
||||
|
||||
#ifndef MY_mkobject
|
||||
|
||||
static boolean MY(mkobject) PARAMS ((bfd *));
|
||||
static bfd_boolean MY(mkobject) PARAMS ((bfd *));
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
MY(mkobject) (abfd)
|
||||
bfd *abfd;
|
||||
{
|
||||
if (! NAME(aout,mkobject) (abfd))
|
||||
return false;
|
||||
return FALSE;
|
||||
#if 0 /* Sizes get set in set_sizes callback, later, after we know
|
||||
the architecture and machine. */
|
||||
adata(abfd).page_size = TARGET_PAGE_SIZE;
|
||||
adata(abfd).segment_size = SEGMENT_SIZE;
|
||||
adata(abfd).exec_bytes_size = EXEC_BYTES_SIZE;
|
||||
#endif
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
#define MY_mkobject MY(mkobject)
|
||||
#endif
|
||||
@@ -228,10 +228,10 @@ MY(mkobject) (abfd)
|
||||
section contents, and copy_private_bfd_data is not called until
|
||||
after the section contents have been set. */
|
||||
|
||||
static boolean MY_bfd_copy_private_section_data
|
||||
static bfd_boolean MY_bfd_copy_private_section_data
|
||||
PARAMS ((bfd *, asection *, bfd *, asection *));
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
MY_bfd_copy_private_section_data (ibfd, isec, obfd, osec)
|
||||
bfd *ibfd;
|
||||
asection *isec ATTRIBUTE_UNUSED;
|
||||
@@ -241,7 +241,7 @@ MY_bfd_copy_private_section_data (ibfd, isec, obfd, osec)
|
||||
if (bfd_get_flavour (ibfd) == bfd_target_aout_flavour
|
||||
&& bfd_get_flavour (obfd) == bfd_target_aout_flavour)
|
||||
obj_aout_subformat (obfd) = obj_aout_subformat (ibfd);
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -251,9 +251,9 @@ MY_bfd_copy_private_section_data (ibfd, isec, obfd, osec)
|
||||
file header, symbols, and relocation. */
|
||||
|
||||
#ifndef MY_write_object_contents
|
||||
static boolean MY(write_object_contents) PARAMS ((bfd *));
|
||||
static bfd_boolean MY(write_object_contents) PARAMS ((bfd *));
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
MY(write_object_contents) (abfd)
|
||||
bfd *abfd;
|
||||
{
|
||||
@@ -264,16 +264,16 @@ MY(write_object_contents) (abfd)
|
||||
|
||||
WRITE_HEADERS(abfd, execp);
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
#define MY_write_object_contents MY(write_object_contents)
|
||||
#endif
|
||||
|
||||
#ifndef MY_set_sizes
|
||||
|
||||
static boolean MY(set_sizes) PARAMS ((bfd *));
|
||||
static bfd_boolean MY(set_sizes) PARAMS ((bfd *));
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
MY(set_sizes) (abfd)
|
||||
bfd *abfd;
|
||||
{
|
||||
@@ -287,7 +287,7 @@ MY(set_sizes) (abfd)
|
||||
#endif
|
||||
|
||||
adata(abfd).exec_bytes_size = EXEC_BYTES_SIZE;
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
#define MY_set_sizes MY(set_sizes)
|
||||
#endif
|
||||
@@ -375,9 +375,9 @@ MY_final_link_callback (abfd, ptreloff, pdreloff, psymoff)
|
||||
/* Final link routine. We need to use a call back to get the correct
|
||||
offsets in the output file. */
|
||||
|
||||
static boolean MY_bfd_final_link PARAMS ((bfd *, struct bfd_link_info *));
|
||||
static bfd_boolean MY_bfd_final_link PARAMS ((bfd *, struct bfd_link_info *));
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
MY_bfd_final_link (abfd, info)
|
||||
bfd *abfd;
|
||||
struct bfd_link_info *info;
|
||||
@@ -443,7 +443,7 @@ MY_bfd_final_link (abfd, info)
|
||||
#endif
|
||||
#ifndef MY_bfd_debug_info_accumulate
|
||||
#define MY_bfd_debug_info_accumulate \
|
||||
(void (*) PARAMS ((bfd*, struct sec *))) bfd_void
|
||||
(void (*) PARAMS ((bfd*, struct bfd_section *))) bfd_void
|
||||
#endif
|
||||
|
||||
#ifndef MY_core_file_failing_command
|
||||
@@ -470,8 +470,8 @@ MY_bfd_final_link (abfd, info)
|
||||
#ifndef MY_get_symtab_upper_bound
|
||||
#define MY_get_symtab_upper_bound NAME(aout,get_symtab_upper_bound)
|
||||
#endif
|
||||
#ifndef MY_get_symtab
|
||||
#define MY_get_symtab NAME(aout,get_symtab)
|
||||
#ifndef MY_canonicalize_symtab
|
||||
#define MY_canonicalize_symtab NAME(aout,canonicalize_symtab)
|
||||
#endif
|
||||
#ifndef MY_get_reloc_upper_bound
|
||||
#define MY_get_reloc_upper_bound NAME(aout,get_reloc_upper_bound)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* A.out "format 1" file handling code for BFD.
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000,
|
||||
2001, 2002
|
||||
2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
Written by Cygnus Support.
|
||||
|
||||
@@ -75,15 +75,24 @@ The name put into the target vector.
|
||||
#define sunos_write_object_contents aout_32_sunos4_write_object_contents
|
||||
#endif
|
||||
|
||||
static boolean sunos_merge_private_bfd_data PARAMS ((bfd *, bfd *));
|
||||
static void sunos_set_arch_mach PARAMS ((bfd *, enum machine_type));
|
||||
static void choose_reloc_size PARAMS ((bfd *));
|
||||
static boolean sunos_write_object_contents PARAMS ((bfd *));
|
||||
static const bfd_target *sunos4_core_file_p PARAMS ((bfd *));
|
||||
static char *sunos4_core_file_failing_command PARAMS ((bfd *));
|
||||
static int sunos4_core_file_failing_signal PARAMS ((bfd *));
|
||||
static boolean sunos4_core_file_matches_executable_p PARAMS ((bfd *, bfd *));
|
||||
static boolean sunos4_set_sizes PARAMS ((bfd *));
|
||||
static bfd_boolean sunos_merge_private_bfd_data
|
||||
PARAMS ((bfd *, bfd *));
|
||||
static void sunos_set_arch_mach
|
||||
PARAMS ((bfd *, enum machine_type));
|
||||
static void choose_reloc_size
|
||||
PARAMS ((bfd *));
|
||||
static bfd_boolean sunos_write_object_contents
|
||||
PARAMS ((bfd *));
|
||||
static const bfd_target *sunos4_core_file_p
|
||||
PARAMS ((bfd *));
|
||||
static char *sunos4_core_file_failing_command
|
||||
PARAMS ((bfd *));
|
||||
static int sunos4_core_file_failing_signal
|
||||
PARAMS ((bfd *));
|
||||
static bfd_boolean sunos4_core_file_matches_executable_p
|
||||
PARAMS ((bfd *, bfd *));
|
||||
static bfd_boolean sunos4_set_sizes
|
||||
PARAMS ((bfd *));
|
||||
|
||||
/* Merge backend data into the output file.
|
||||
This is necessary on sparclet-aout where we want the resultant machine
|
||||
@@ -91,13 +100,13 @@ static boolean sunos4_set_sizes PARAMS ((bfd *));
|
||||
|
||||
#define MY_bfd_merge_private_bfd_data sunos_merge_private_bfd_data
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
sunos_merge_private_bfd_data (ibfd, obfd)
|
||||
bfd *ibfd, *obfd;
|
||||
{
|
||||
if (bfd_get_flavour (ibfd) != bfd_target_aout_flavour
|
||||
|| bfd_get_flavour (obfd) != bfd_target_aout_flavour)
|
||||
return true;
|
||||
return TRUE;
|
||||
|
||||
if (bfd_get_arch (obfd) == bfd_arch_sparc)
|
||||
{
|
||||
@@ -105,7 +114,7 @@ sunos_merge_private_bfd_data (ibfd, obfd)
|
||||
bfd_set_arch_mach (obfd, bfd_arch_sparc, bfd_get_mach (ibfd));
|
||||
}
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* This is either sunos_32_set_arch_mach or sunos_64_set_arch_mach,
|
||||
@@ -207,7 +216,7 @@ choose_reloc_size (abfd)
|
||||
aout_64_sunos4_write_object_contents or
|
||||
aout_32_sunos4_write_object_contents, depending upon ARCH_SIZE. */
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
sunos_write_object_contents (abfd)
|
||||
bfd *abfd;
|
||||
{
|
||||
@@ -264,7 +273,7 @@ sunos_write_object_contents (abfd)
|
||||
|
||||
WRITE_HEADERS (abfd, execp);
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* core files */
|
||||
@@ -731,7 +740,7 @@ sunos4_core_file_failing_signal (abfd)
|
||||
return core_hdr (abfd)->hdr->c_signo;
|
||||
}
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
sunos4_core_file_matches_executable_p (core_bfd, exec_bfd)
|
||||
bfd *core_bfd;
|
||||
bfd *exec_bfd;
|
||||
@@ -739,12 +748,12 @@ sunos4_core_file_matches_executable_p (core_bfd, exec_bfd)
|
||||
if (core_bfd->xvec != exec_bfd->xvec)
|
||||
{
|
||||
bfd_set_error (bfd_error_system_call);
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Solaris core files do not include an aouthdr. */
|
||||
if ((core_hdr (core_bfd)->hdr)->c_len == SOLARIS_BCP_CORE_LEN)
|
||||
return true;
|
||||
return TRUE;
|
||||
|
||||
return (memcmp ((char *) &((core_hdr (core_bfd)->hdr)->c_aouthdr),
|
||||
(char *) exec_hdr (exec_bfd),
|
||||
@@ -752,24 +761,24 @@ sunos4_core_file_matches_executable_p (core_bfd, exec_bfd)
|
||||
}
|
||||
|
||||
#define MY_set_sizes sunos4_set_sizes
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
sunos4_set_sizes (abfd)
|
||||
bfd *abfd;
|
||||
{
|
||||
switch (bfd_get_arch (abfd))
|
||||
{
|
||||
default:
|
||||
return false;
|
||||
return FALSE;
|
||||
case bfd_arch_sparc:
|
||||
adata (abfd).page_size = 0x2000;
|
||||
adata (abfd).segment_size = 0x2000;
|
||||
adata (abfd).exec_bytes_size = EXEC_BYTES_SIZE;
|
||||
return true;
|
||||
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;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -825,7 +834,7 @@ static const struct aout_backend_data sunos4_aout_backend =
|
||||
#define MY_bfd_debug_info_start bfd_void
|
||||
#define MY_bfd_debug_info_end bfd_void
|
||||
#define MY_bfd_debug_info_accumulate \
|
||||
(void (*) PARAMS ((bfd *, struct sec *))) bfd_void
|
||||
(void (*) PARAMS ((bfd *, struct bfd_section *))) bfd_void
|
||||
#define MY_core_file_p sunos4_core_file_p
|
||||
#define MY_write_object_contents NAME(aout,sunos4_write_object_contents)
|
||||
#define MY_backend_data &sunos4_aout_backend
|
||||
|
||||
+513
-472
File diff suppressed because it is too large
Load Diff
+274
-348
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
/* MIPS-specific support for 64-bit ELF
|
||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001
|
||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
Ian Lance Taylor, Cygnus Support
|
||||
Linker support added by Mark Mitchell, CodeSourcery, LLC.
|
||||
@@ -31,15 +31,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
/* Irix 6 defines a 64bit archive map format, so that they can
|
||||
have archives more than 4 GB in size. */
|
||||
|
||||
boolean bfd_elf64_archive_slurp_armap PARAMS ((bfd *));
|
||||
boolean bfd_elf64_archive_write_armap
|
||||
PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int));
|
||||
bfd_boolean bfd_elf64_archive_slurp_armap (bfd *);
|
||||
bfd_boolean bfd_elf64_archive_write_armap
|
||||
(bfd *, unsigned int, struct orl *, unsigned int, int);
|
||||
|
||||
/* Read an Irix 6 armap. */
|
||||
|
||||
boolean
|
||||
bfd_elf64_archive_slurp_armap (abfd)
|
||||
bfd *abfd;
|
||||
bfd_boolean
|
||||
bfd_elf64_archive_slurp_armap (bfd *abfd)
|
||||
{
|
||||
struct artdata *ardata = bfd_ardata (abfd);
|
||||
char nextname[17];
|
||||
@@ -56,14 +55,14 @@ bfd_elf64_archive_slurp_armap (abfd)
|
||||
|
||||
/* Get the name of the first element. */
|
||||
arhdrpos = bfd_tell (abfd);
|
||||
i = bfd_bread ((PTR) nextname, (bfd_size_type) 16, abfd);
|
||||
i = bfd_bread (nextname, 16, abfd);
|
||||
if (i == 0)
|
||||
return true;
|
||||
return TRUE;
|
||||
if (i != 16)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
if (bfd_seek (abfd, (file_ptr) - 16, SEEK_CUR) != 0)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
/* Archives with traditional armaps are still permitted. */
|
||||
if (strncmp (nextname, "/ ", 16) == 0)
|
||||
@@ -71,21 +70,21 @@ bfd_elf64_archive_slurp_armap (abfd)
|
||||
|
||||
if (strncmp (nextname, "/SYM64/ ", 16) != 0)
|
||||
{
|
||||
bfd_has_map (abfd) = false;
|
||||
return true;
|
||||
bfd_has_map (abfd) = FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
mapdata = (struct areltdata *) _bfd_read_ar_hdr (abfd);
|
||||
if (mapdata == NULL)
|
||||
return false;
|
||||
return FALSE;
|
||||
parsed_size = mapdata->parsed_size;
|
||||
bfd_release (abfd, (PTR) mapdata);
|
||||
bfd_release (abfd, mapdata);
|
||||
|
||||
if (bfd_bread (int_buf, (bfd_size_type) 8, abfd) != 8)
|
||||
if (bfd_bread (int_buf, 8, abfd) != 8)
|
||||
{
|
||||
if (bfd_get_error () != bfd_error_system_call)
|
||||
bfd_set_error (bfd_error_malformed_archive);
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
nsymz = bfd_getb64 (int_buf);
|
||||
@@ -95,13 +94,13 @@ bfd_elf64_archive_slurp_armap (abfd)
|
||||
ptrsize = 8 * nsymz;
|
||||
|
||||
amt = carsym_size + stringsize + 1;
|
||||
ardata->symdefs = (carsym *) bfd_zalloc (abfd, amt);
|
||||
ardata->symdefs = bfd_zalloc (abfd, amt);
|
||||
if (ardata->symdefs == NULL)
|
||||
return false;
|
||||
return FALSE;
|
||||
carsyms = ardata->symdefs;
|
||||
stringbase = ((char *) ardata->symdefs) + carsym_size;
|
||||
|
||||
raw_armap = (bfd_byte *) bfd_alloc (abfd, ptrsize);
|
||||
raw_armap = bfd_alloc (abfd, ptrsize);
|
||||
if (raw_armap == NULL)
|
||||
goto release_symdefs;
|
||||
|
||||
@@ -127,29 +126,28 @@ bfd_elf64_archive_slurp_armap (abfd)
|
||||
/* Pad to an even boundary if you have to. */
|
||||
ardata->first_file_filepos += (ardata->first_file_filepos) % 2;
|
||||
|
||||
bfd_has_map (abfd) = true;
|
||||
bfd_has_map (abfd) = TRUE;
|
||||
bfd_release (abfd, raw_armap);
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
|
||||
release_raw_armap:
|
||||
bfd_release (abfd, raw_armap);
|
||||
release_symdefs:
|
||||
bfd_release (abfd, ardata->symdefs);
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Write out an Irix 6 armap. The Irix 6 tools are supposed to be
|
||||
able to handle ordinary ELF armaps, but at least on Irix 6.2 the
|
||||
linker crashes. */
|
||||
|
||||
boolean
|
||||
bfd_elf64_archive_write_armap (arch, elength, map, symbol_count, stridx)
|
||||
bfd *arch;
|
||||
unsigned int elength;
|
||||
struct orl *map;
|
||||
unsigned int symbol_count;
|
||||
int stridx;
|
||||
bfd_boolean
|
||||
bfd_elf64_archive_write_armap (bfd *arch,
|
||||
unsigned int elength,
|
||||
struct orl *map,
|
||||
unsigned int symbol_count,
|
||||
int stridx)
|
||||
{
|
||||
unsigned int ranlibsize = (symbol_count * 8) + 8;
|
||||
unsigned int stringsize = stridx;
|
||||
@@ -171,7 +169,7 @@ bfd_elf64_archive_write_armap (arch, elength, map, symbol_count, stridx)
|
||||
+ sizeof (struct ar_hdr)
|
||||
+ SARMAG);
|
||||
|
||||
memset ((char *) (&hdr), 0, sizeof (struct ar_hdr));
|
||||
memset (&hdr, 0, sizeof (struct ar_hdr));
|
||||
strcpy (hdr.ar_name, "/SYM64/");
|
||||
sprintf (hdr.ar_size, "%-10d", (int) mapsize);
|
||||
sprintf (hdr.ar_date, "%ld", (long) time (NULL));
|
||||
@@ -187,13 +185,13 @@ bfd_elf64_archive_write_armap (arch, elength, map, symbol_count, stridx)
|
||||
|
||||
/* Write the ar header for this item and the number of symbols */
|
||||
|
||||
if (bfd_bwrite ((PTR) &hdr, (bfd_size_type) sizeof (struct ar_hdr), arch)
|
||||
if (bfd_bwrite (&hdr, sizeof (struct ar_hdr), arch)
|
||||
!= sizeof (struct ar_hdr))
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
bfd_putb64 ((bfd_vma) symbol_count, buf);
|
||||
if (bfd_bwrite (buf, (bfd_size_type) 8, arch) != 8)
|
||||
return false;
|
||||
if (bfd_bwrite (buf, 8, arch) != 8)
|
||||
return FALSE;
|
||||
|
||||
/* Two passes, first write the file offsets for each symbol -
|
||||
remembering that each offset is on a two byte boundary. */
|
||||
@@ -203,7 +201,7 @@ bfd_elf64_archive_write_armap (arch, elength, map, symbol_count, stridx)
|
||||
|
||||
current = arch->archive_head;
|
||||
count = 0;
|
||||
while (current != (bfd *) NULL && count < symbol_count)
|
||||
while (current != NULL && count < symbol_count)
|
||||
{
|
||||
/* For each symbol which is used defined in this object, write out
|
||||
the object file's address in the archive */
|
||||
@@ -211,8 +209,8 @@ bfd_elf64_archive_write_armap (arch, elength, map, symbol_count, stridx)
|
||||
while (map[count].u.abfd == current)
|
||||
{
|
||||
bfd_putb64 ((bfd_vma) archive_member_file_ptr, buf);
|
||||
if (bfd_bwrite (buf, (bfd_size_type) 8, arch) != 8)
|
||||
return false;
|
||||
if (bfd_bwrite (buf, 8, arch) != 8)
|
||||
return FALSE;
|
||||
count++;
|
||||
}
|
||||
/* Add size of this archive entry */
|
||||
@@ -228,18 +226,18 @@ bfd_elf64_archive_write_armap (arch, elength, map, symbol_count, stridx)
|
||||
{
|
||||
size_t len = strlen (*map[count].name) + 1;
|
||||
|
||||
if (bfd_bwrite (*map[count].name, (bfd_size_type) len, arch) != len)
|
||||
return false;
|
||||
if (bfd_bwrite (*map[count].name, len, arch) != len)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* The spec says that this should be padded to an 8 byte boundary.
|
||||
However, the Irix 6.2 tools do not appear to do this. */
|
||||
while (padding != 0)
|
||||
{
|
||||
if (bfd_bwrite ("", (bfd_size_type) 1, arch) != 1)
|
||||
return false;
|
||||
if (bfd_bwrite ("", 1, arch) != 1)
|
||||
return FALSE;
|
||||
--padding;
|
||||
}
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+201
-144
@@ -1,24 +1,24 @@
|
||||
/* BFD library support routines for architectures.
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
2000, 2001, 2002
|
||||
2000, 2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
Hacked by John Gilmore and Steve Chamberlain of Cygnus Support.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
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 2 of the License, or
|
||||
(at your option) any later version.
|
||||
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 2 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.
|
||||
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include "bfd.h"
|
||||
#include "sysdep.h"
|
||||
@@ -84,6 +84,7 @@ DESCRIPTION
|
||||
.#define bfd_mach_mcf5206e 10
|
||||
.#define bfd_mach_mcf5307 11
|
||||
.#define bfd_mach_mcf5407 12
|
||||
.#define bfd_mach_mcf528x 13
|
||||
. bfd_arch_vax, {* DEC Vax *}
|
||||
. bfd_arch_i960, {* Intel 960 *}
|
||||
. {* The order of the following is important.
|
||||
@@ -129,12 +130,16 @@ DESCRIPTION
|
||||
.#define bfd_mach_mips4010 4010
|
||||
.#define bfd_mach_mips4100 4100
|
||||
.#define bfd_mach_mips4111 4111
|
||||
.#define bfd_mach_mips4120 4120
|
||||
.#define bfd_mach_mips4300 4300
|
||||
.#define bfd_mach_mips4400 4400
|
||||
.#define bfd_mach_mips4600 4600
|
||||
.#define bfd_mach_mips4650 4650
|
||||
.#define bfd_mach_mips5000 5000
|
||||
.#define bfd_mach_mips5400 5400
|
||||
.#define bfd_mach_mips5500 5500
|
||||
.#define bfd_mach_mips6000 6000
|
||||
.#define bfd_mach_mips7000 7000
|
||||
.#define bfd_mach_mips8000 8000
|
||||
.#define bfd_mach_mips10000 10000
|
||||
.#define bfd_mach_mips12000 12000
|
||||
@@ -142,13 +147,15 @@ DESCRIPTION
|
||||
.#define bfd_mach_mips5 5
|
||||
.#define bfd_mach_mips_sb1 12310201 {* octal 'SB', 01 *}
|
||||
.#define bfd_mach_mipsisa32 32
|
||||
.#define bfd_mach_mipsisa32r2 33
|
||||
.#define bfd_mach_mipsisa64 64
|
||||
.#define bfd_mach_mipsisa64r2 65
|
||||
. bfd_arch_i386, {* Intel 386 *}
|
||||
.#define bfd_mach_i386_i386 0
|
||||
.#define bfd_mach_i386_i8086 1
|
||||
.#define bfd_mach_i386_i386_intel_syntax 2
|
||||
.#define bfd_mach_x86_64 3
|
||||
.#define bfd_mach_x86_64_intel_syntax 4
|
||||
.#define bfd_mach_i386_i386 1
|
||||
.#define bfd_mach_i386_i8086 2
|
||||
.#define bfd_mach_i386_i386_intel_syntax 3
|
||||
.#define bfd_mach_x86_64 64
|
||||
.#define bfd_mach_x86_64_intel_syntax 65
|
||||
. bfd_arch_we32k, {* AT&T WE32xxx *}
|
||||
. bfd_arch_tahoe, {* CCI/Harris Tahoe *}
|
||||
. bfd_arch_i860, {* Intel 860 *}
|
||||
@@ -157,15 +164,20 @@ DESCRIPTION
|
||||
. bfd_arch_alliant, {* Alliant *}
|
||||
. bfd_arch_convex, {* Convex *}
|
||||
. bfd_arch_m88k, {* Motorola 88xxx *}
|
||||
. bfd_arch_m98k, {* Motorola 98xxx *}
|
||||
. bfd_arch_pyramid, {* Pyramid Technology *}
|
||||
. bfd_arch_h8300, {* Hitachi H8/300 *}
|
||||
.#define bfd_mach_h8300 1
|
||||
.#define bfd_mach_h8300h 2
|
||||
.#define bfd_mach_h8300s 3
|
||||
. bfd_arch_h8300, {* Renesas H8/300 (formerly Hitachi H8/300) *}
|
||||
.#define bfd_mach_h8300 1
|
||||
.#define bfd_mach_h8300h 2
|
||||
.#define bfd_mach_h8300s 3
|
||||
.#define bfd_mach_h8300hn 4
|
||||
.#define bfd_mach_h8300sn 5
|
||||
.#define bfd_mach_h8300sx 6
|
||||
.#define bfd_mach_h8300sxn 7
|
||||
. bfd_arch_pdp11, {* DEC PDP-11 *}
|
||||
. bfd_arch_powerpc, {* PowerPC *}
|
||||
.#define bfd_mach_ppc 0
|
||||
.#define bfd_mach_ppc64 1
|
||||
.#define bfd_mach_ppc 32
|
||||
.#define bfd_mach_ppc64 64
|
||||
.#define bfd_mach_ppc_403 403
|
||||
.#define bfd_mach_ppc_403gc 4030
|
||||
.#define bfd_mach_ppc_505 505
|
||||
@@ -182,38 +194,52 @@ DESCRIPTION
|
||||
.#define bfd_mach_ppc_rs64ii 642
|
||||
.#define bfd_mach_ppc_rs64iii 643
|
||||
.#define bfd_mach_ppc_7400 7400
|
||||
.#define bfd_mach_ppc_e500 500
|
||||
. bfd_arch_rs6000, {* IBM RS/6000 *}
|
||||
.#define bfd_mach_rs6k 0
|
||||
.#define bfd_mach_rs6k 6000
|
||||
.#define bfd_mach_rs6k_rs1 6001
|
||||
.#define bfd_mach_rs6k_rsc 6003
|
||||
.#define bfd_mach_rs6k_rs2 6002
|
||||
. bfd_arch_hppa, {* HP PA RISC *}
|
||||
.#define bfd_mach_hppa10 10
|
||||
.#define bfd_mach_hppa11 11
|
||||
.#define bfd_mach_hppa20 20
|
||||
.#define bfd_mach_hppa20w 25
|
||||
. bfd_arch_d10v, {* Mitsubishi D10V *}
|
||||
.#define bfd_mach_d10v 0
|
||||
.#define bfd_mach_d10v 1
|
||||
.#define bfd_mach_d10v_ts2 2
|
||||
.#define bfd_mach_d10v_ts3 3
|
||||
. bfd_arch_d30v, {* Mitsubishi D30V *}
|
||||
. bfd_arch_dlx, {* DLX *}
|
||||
. bfd_arch_m68hc11, {* Motorola 68HC11 *}
|
||||
. bfd_arch_m68hc12, {* Motorola 68HC12 *}
|
||||
.#define bfd_mach_m6812_default 0
|
||||
.#define bfd_mach_m6812 1
|
||||
.#define bfd_mach_m6812s 2
|
||||
. bfd_arch_z8k, {* Zilog Z8000 *}
|
||||
.#define bfd_mach_z8001 1
|
||||
.#define bfd_mach_z8002 2
|
||||
. bfd_arch_h8500, {* Hitachi H8/500 *}
|
||||
. bfd_arch_sh, {* Hitachi SH *}
|
||||
.#define bfd_mach_sh 0
|
||||
. bfd_arch_h8500, {* Renesas H8/500 (formerly Hitachi H8/500) *}
|
||||
. bfd_arch_sh, {* Renesas / SuperH SH (formerly Hitachi SH) *}
|
||||
.#define bfd_mach_sh 1
|
||||
.#define bfd_mach_sh2 0x20
|
||||
.#define bfd_mach_sh_dsp 0x2d
|
||||
.#define bfd_mach_sh2e 0x2e
|
||||
.#define bfd_mach_sh3 0x30
|
||||
.#define bfd_mach_sh3_dsp 0x3d
|
||||
.#define bfd_mach_sh3e 0x3e
|
||||
.#define bfd_mach_sh4 0x40
|
||||
.#define bfd_mach_sh4_nofpu 0x41
|
||||
.#define bfd_mach_sh4a 0x4a
|
||||
.#define bfd_mach_sh4a_nofpu 0x4b
|
||||
.#define bfd_mach_sh4al_dsp 0x4d
|
||||
.#define bfd_mach_sh5 0x50
|
||||
. bfd_arch_alpha, {* Dec Alpha *}
|
||||
.#define bfd_mach_alpha_ev4 0x10
|
||||
.#define bfd_mach_alpha_ev5 0x20
|
||||
.#define bfd_mach_alpha_ev6 0x30
|
||||
. bfd_arch_arm, {* Advanced Risc Machines ARM. *}
|
||||
.#define bfd_mach_arm_unknown 0
|
||||
.#define bfd_mach_arm_2 1
|
||||
.#define bfd_mach_arm_2a 2
|
||||
.#define bfd_mach_arm_3 3
|
||||
@@ -224,40 +250,54 @@ DESCRIPTION
|
||||
.#define bfd_mach_arm_5T 8
|
||||
.#define bfd_mach_arm_5TE 9
|
||||
.#define bfd_mach_arm_XScale 10
|
||||
.#define bfd_mach_arm_ep9312 11
|
||||
.#define bfd_mach_arm_iWMMXt 12
|
||||
. bfd_arch_ns32k, {* National Semiconductors ns32000 *}
|
||||
. bfd_arch_w65, {* WDC 65816 *}
|
||||
. bfd_arch_tic30, {* Texas Instruments TMS320C30 *}
|
||||
. bfd_arch_tic4x, {* Texas Instruments TMS320C3X/4X *}
|
||||
.#define bfd_mach_tic3x 30
|
||||
.#define bfd_mach_tic4x 40
|
||||
. bfd_arch_tic54x, {* Texas Instruments TMS320C54X *}
|
||||
. bfd_arch_tic80, {* TI TMS320c80 (MVP) *}
|
||||
. bfd_arch_v850, {* NEC V850 *}
|
||||
.#define bfd_mach_v850 0
|
||||
.#define bfd_mach_v850 1
|
||||
.#define bfd_mach_v850e 'E'
|
||||
.#define bfd_mach_v850ea 'A'
|
||||
.#define bfd_mach_v850e1 '1'
|
||||
. bfd_arch_arc, {* ARC Cores *}
|
||||
.#define bfd_mach_arc_5 0
|
||||
.#define bfd_mach_arc_6 1
|
||||
.#define bfd_mach_arc_7 2
|
||||
.#define bfd_mach_arc_8 3
|
||||
. bfd_arch_m32r, {* Mitsubishi M32R/D *}
|
||||
.#define bfd_mach_m32r 0 {* For backwards compatibility. *}
|
||||
.#define bfd_mach_arc_5 5
|
||||
.#define bfd_mach_arc_6 6
|
||||
.#define bfd_mach_arc_7 7
|
||||
.#define bfd_mach_arc_8 8
|
||||
. bfd_arch_m32r, {* Renesas M32R (formerly Mitsubishi M32R/D) *}
|
||||
.#define bfd_mach_m32r 1 {* For backwards compatibility. *}
|
||||
.#define bfd_mach_m32rx 'x'
|
||||
.#define bfd_mach_m32r2 '2'
|
||||
. bfd_arch_mn10200, {* Matsushita MN10200 *}
|
||||
. bfd_arch_mn10300, {* Matsushita MN10300 *}
|
||||
.#define bfd_mach_mn10300 300
|
||||
.#define bfd_mach_am33 330
|
||||
.#define bfd_mach_am33_2 332
|
||||
. bfd_arch_fr30,
|
||||
.#define bfd_mach_fr30 0x46523330
|
||||
. bfd_arch_frv,
|
||||
.#define bfd_mach_frv 0
|
||||
.#define bfd_mach_frvsimple 1
|
||||
.#define bfd_mach_frv 1
|
||||
.#define bfd_mach_frvsimple 2
|
||||
.#define bfd_mach_fr300 300
|
||||
.#define bfd_mach_fr400 400
|
||||
.#define bfd_mach_frvtomcat 499 {* fr500 prototype *}
|
||||
.#define bfd_mach_fr500 500
|
||||
.#define bfd_mach_fr550 550
|
||||
. bfd_arch_mcore,
|
||||
. bfd_arch_ia64, {* HP/Intel ia64 *}
|
||||
.#define bfd_mach_ia64_elf64 0
|
||||
.#define bfd_mach_ia64_elf32 1
|
||||
.#define bfd_mach_ia64_elf64 64
|
||||
.#define bfd_mach_ia64_elf32 32
|
||||
. bfd_arch_ip2k, {* Ubicom IP2K microcontrollers. *}
|
||||
.#define bfd_mach_ip2022 1
|
||||
.#define bfd_mach_ip2022ext 2
|
||||
. bfd_arch_iq2000, {* Vitesse IQ2000. *}
|
||||
.#define bfd_mach_iq2000 1
|
||||
.#define bfd_mach_iq10 2
|
||||
. bfd_arch_pj,
|
||||
. bfd_arch_avr, {* Atmel AVR microcontrollers. *}
|
||||
.#define bfd_mach_avr1 1
|
||||
@@ -267,12 +307,29 @@ DESCRIPTION
|
||||
.#define bfd_mach_avr5 5
|
||||
. bfd_arch_cris, {* Axis CRIS *}
|
||||
. bfd_arch_s390, {* IBM s390 *}
|
||||
.#define bfd_mach_s390_31 0
|
||||
.#define bfd_mach_s390_64 1
|
||||
.#define bfd_mach_s390_31 31
|
||||
.#define bfd_mach_s390_64 64
|
||||
. bfd_arch_openrisc, {* OpenRISC *}
|
||||
. bfd_arch_mmix, {* Donald Knuth's educational processor. *}
|
||||
. bfd_arch_xstormy16,
|
||||
.#define bfd_mach_xstormy16 0
|
||||
.#define bfd_mach_xstormy16 1
|
||||
. bfd_arch_msp430, {* Texas Instruments MSP430 architecture. *}
|
||||
.#define bfd_mach_msp11 11
|
||||
.#define bfd_mach_msp110 110
|
||||
.#define bfd_mach_msp12 12
|
||||
.#define bfd_mach_msp13 13
|
||||
.#define bfd_mach_msp14 14
|
||||
.#define bfd_mach_msp15 15
|
||||
.#define bfd_mach_msp16 16
|
||||
.#define bfd_mach_msp31 31
|
||||
.#define bfd_mach_msp32 32
|
||||
.#define bfd_mach_msp33 33
|
||||
.#define bfd_mach_msp41 41
|
||||
.#define bfd_mach_msp42 42
|
||||
.#define bfd_mach_msp43 43
|
||||
.#define bfd_mach_msp44 44
|
||||
. bfd_arch_xtensa, {* Tensilica's Xtensa cores. *}
|
||||
.#define bfd_mach_xtensa 1
|
||||
. bfd_arch_last
|
||||
. };
|
||||
*/
|
||||
@@ -296,15 +353,14 @@ DESCRIPTION
|
||||
. const char *arch_name;
|
||||
. const char *printable_name;
|
||||
. unsigned int section_align_power;
|
||||
. {* True if this is the default machine for the architecture.
|
||||
. {* TRUE if this is the default machine for the architecture.
|
||||
. The default arch should be the first entry for an arch so that
|
||||
. all the entries for that arch can be accessed via <<next>>. *}
|
||||
. boolean the_default;
|
||||
. bfd_boolean the_default;
|
||||
. const struct bfd_arch_info * (*compatible)
|
||||
. PARAMS ((const struct bfd_arch_info *a,
|
||||
. const struct bfd_arch_info *b));
|
||||
. (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
|
||||
.
|
||||
. boolean (*scan) PARAMS ((const struct bfd_arch_info *, const char *));
|
||||
. bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
|
||||
.
|
||||
. const struct bfd_arch_info *next;
|
||||
.}
|
||||
@@ -331,6 +387,8 @@ extern const bfd_arch_info_type bfd_i386_arch;
|
||||
extern const bfd_arch_info_type bfd_i860_arch;
|
||||
extern const bfd_arch_info_type bfd_i960_arch;
|
||||
extern const bfd_arch_info_type bfd_ia64_arch;
|
||||
extern const bfd_arch_info_type bfd_ip2k_arch;
|
||||
extern const bfd_arch_info_type bfd_iq2000_arch;
|
||||
extern const bfd_arch_info_type bfd_m32r_arch;
|
||||
extern const bfd_arch_info_type bfd_m68hc11_arch;
|
||||
extern const bfd_arch_info_type bfd_m68hc12_arch;
|
||||
@@ -341,6 +399,7 @@ extern const bfd_arch_info_type bfd_mips_arch;
|
||||
extern const bfd_arch_info_type bfd_mmix_arch;
|
||||
extern const bfd_arch_info_type bfd_mn10200_arch;
|
||||
extern const bfd_arch_info_type bfd_mn10300_arch;
|
||||
extern const bfd_arch_info_type bfd_msp430_arch;
|
||||
extern const bfd_arch_info_type bfd_ns32k_arch;
|
||||
extern const bfd_arch_info_type bfd_openrisc_arch;
|
||||
extern const bfd_arch_info_type bfd_or32_arch;
|
||||
@@ -353,6 +412,7 @@ extern const bfd_arch_info_type bfd_s390_arch;
|
||||
extern const bfd_arch_info_type bfd_sh_arch;
|
||||
extern const bfd_arch_info_type bfd_sparc_arch;
|
||||
extern const bfd_arch_info_type bfd_tic30_arch;
|
||||
extern const bfd_arch_info_type bfd_tic4x_arch;
|
||||
extern const bfd_arch_info_type bfd_tic54x_arch;
|
||||
extern const bfd_arch_info_type bfd_tic80_arch;
|
||||
extern const bfd_arch_info_type bfd_v850_arch;
|
||||
@@ -360,6 +420,7 @@ extern const bfd_arch_info_type bfd_vax_arch;
|
||||
extern const bfd_arch_info_type bfd_we32k_arch;
|
||||
extern const bfd_arch_info_type bfd_w65_arch;
|
||||
extern const bfd_arch_info_type bfd_xstormy16_arch;
|
||||
extern const bfd_arch_info_type bfd_xtensa_arch;
|
||||
extern const bfd_arch_info_type bfd_z8k_arch;
|
||||
|
||||
static const bfd_arch_info_type * const bfd_archures_list[] =
|
||||
@@ -386,6 +447,8 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
|
||||
&bfd_i860_arch,
|
||||
&bfd_i960_arch,
|
||||
&bfd_ia64_arch,
|
||||
&bfd_ip2k_arch,
|
||||
&bfd_iq2000_arch,
|
||||
&bfd_m32r_arch,
|
||||
&bfd_m68hc11_arch,
|
||||
&bfd_m68hc12_arch,
|
||||
@@ -396,6 +459,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
|
||||
&bfd_mmix_arch,
|
||||
&bfd_mn10200_arch,
|
||||
&bfd_mn10300_arch,
|
||||
&bfd_msp430_arch,
|
||||
&bfd_ns32k_arch,
|
||||
&bfd_openrisc_arch,
|
||||
&bfd_or32_arch,
|
||||
@@ -406,6 +470,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
|
||||
&bfd_sh_arch,
|
||||
&bfd_sparc_arch,
|
||||
&bfd_tic30_arch,
|
||||
&bfd_tic4x_arch,
|
||||
&bfd_tic54x_arch,
|
||||
&bfd_tic80_arch,
|
||||
&bfd_v850_arch,
|
||||
@@ -413,6 +478,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
|
||||
&bfd_w65_arch,
|
||||
&bfd_we32k_arch,
|
||||
&bfd_xstormy16_arch,
|
||||
&bfd_xtensa_arch,
|
||||
&bfd_z8k_arch,
|
||||
#endif
|
||||
0
|
||||
@@ -423,7 +489,7 @@ FUNCTION
|
||||
bfd_printable_name
|
||||
|
||||
SYNOPSIS
|
||||
const char *bfd_printable_name(bfd *abfd);
|
||||
const char *bfd_printable_name (bfd *abfd);
|
||||
|
||||
DESCRIPTION
|
||||
Return a printable string representing the architecture and machine
|
||||
@@ -432,8 +498,7 @@ DESCRIPTION
|
||||
*/
|
||||
|
||||
const char *
|
||||
bfd_printable_name (abfd)
|
||||
bfd *abfd;
|
||||
bfd_printable_name (bfd *abfd)
|
||||
{
|
||||
return abfd->arch_info->printable_name;
|
||||
}
|
||||
@@ -443,7 +508,7 @@ FUNCTION
|
||||
bfd_scan_arch
|
||||
|
||||
SYNOPSIS
|
||||
const bfd_arch_info_type *bfd_scan_arch(const char *string);
|
||||
const bfd_arch_info_type *bfd_scan_arch (const char *string);
|
||||
|
||||
DESCRIPTION
|
||||
Figure out if BFD supports any cpu which could be described with
|
||||
@@ -452,8 +517,7 @@ DESCRIPTION
|
||||
*/
|
||||
|
||||
const bfd_arch_info_type *
|
||||
bfd_scan_arch (string)
|
||||
const char *string;
|
||||
bfd_scan_arch (const char *string)
|
||||
{
|
||||
const bfd_arch_info_type * const *app, *ap;
|
||||
|
||||
@@ -475,7 +539,7 @@ FUNCTION
|
||||
bfd_arch_list
|
||||
|
||||
SYNOPSIS
|
||||
const char **bfd_arch_list(void);
|
||||
const char **bfd_arch_list (void);
|
||||
|
||||
DESCRIPTION
|
||||
Return a freshly malloced NULL-terminated vector of the names
|
||||
@@ -483,7 +547,7 @@ DESCRIPTION
|
||||
*/
|
||||
|
||||
const char **
|
||||
bfd_arch_list ()
|
||||
bfd_arch_list (void)
|
||||
{
|
||||
int vec_length = 0;
|
||||
const char **name_ptr;
|
||||
@@ -503,7 +567,7 @@ bfd_arch_list ()
|
||||
}
|
||||
|
||||
amt = (vec_length + 1) * sizeof (char **);
|
||||
name_list = (const char **) bfd_malloc (amt);
|
||||
name_list = bfd_malloc (amt);
|
||||
if (name_list == NULL)
|
||||
return NULL;
|
||||
|
||||
@@ -528,29 +592,38 @@ FUNCTION
|
||||
bfd_arch_get_compatible
|
||||
|
||||
SYNOPSIS
|
||||
const bfd_arch_info_type *bfd_arch_get_compatible(
|
||||
const bfd *abfd,
|
||||
const bfd *bbfd);
|
||||
const bfd_arch_info_type *bfd_arch_get_compatible
|
||||
(const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
|
||||
|
||||
DESCRIPTION
|
||||
Determine whether two BFDs'
|
||||
architectures and machine types are compatible. Calculates
|
||||
the lowest common denominator between the two architectures
|
||||
and machine types implied by the BFDs and returns a pointer to
|
||||
an <<arch_info>> structure describing the compatible machine.
|
||||
Determine whether two BFDs' architectures and machine types
|
||||
are compatible. Calculates the lowest common denominator
|
||||
between the two architectures and machine types implied by
|
||||
the BFDs and returns a pointer to an <<arch_info>> structure
|
||||
describing the compatible machine.
|
||||
*/
|
||||
|
||||
const bfd_arch_info_type *
|
||||
bfd_arch_get_compatible (abfd, bbfd)
|
||||
const bfd *abfd;
|
||||
const bfd *bbfd;
|
||||
bfd_arch_get_compatible (const bfd *abfd,
|
||||
const bfd *bbfd,
|
||||
bfd_boolean accept_unknowns)
|
||||
{
|
||||
/* If either architecture is unknown, then all we can do is assume
|
||||
the user knows what he's doing. */
|
||||
if (abfd->arch_info->arch == bfd_arch_unknown)
|
||||
return bbfd->arch_info;
|
||||
if (bbfd->arch_info->arch == bfd_arch_unknown)
|
||||
return abfd->arch_info;
|
||||
const bfd * ubfd = NULL;
|
||||
|
||||
/* Look for an unknown architecture. */
|
||||
if (((ubfd = abfd) && ubfd->arch_info->arch == bfd_arch_unknown)
|
||||
|| ((ubfd = bbfd) && ubfd->arch_info->arch == bfd_arch_unknown))
|
||||
{
|
||||
/* We can allow an unknown architecture if accept_unknowns
|
||||
is true, or if the target is the "binary" format, which
|
||||
has an unknown architecture. Since the binary format can
|
||||
only be set by explicit request from the user, it is safe
|
||||
to assume that they know what they are doing. */
|
||||
if (accept_unknowns
|
||||
|| strcmp (bfd_get_target (ubfd), "binary") == 0)
|
||||
return ubfd->arch_info;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Otherwise architecture-specific code has to decide. */
|
||||
return abfd->arch_info->compatible (abfd->arch_info, bbfd->arch_info);
|
||||
@@ -571,7 +644,7 @@ DESCRIPTION
|
||||
*/
|
||||
|
||||
const bfd_arch_info_type bfd_default_arch_struct = {
|
||||
32, 32, 8, bfd_arch_unknown, 0, "unknown", "unknown", 2, true,
|
||||
32, 32, 8, bfd_arch_unknown, 0, "unknown", "unknown", 2, TRUE,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
0,
|
||||
@@ -582,16 +655,14 @@ FUNCTION
|
||||
bfd_set_arch_info
|
||||
|
||||
SYNOPSIS
|
||||
void bfd_set_arch_info(bfd *abfd, const bfd_arch_info_type *arg);
|
||||
void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
|
||||
|
||||
DESCRIPTION
|
||||
Set the architecture info of @var{abfd} to @var{arg}.
|
||||
*/
|
||||
|
||||
void
|
||||
bfd_set_arch_info (abfd, arg)
|
||||
bfd *abfd;
|
||||
const bfd_arch_info_type *arg;
|
||||
bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg)
|
||||
{
|
||||
abfd->arch_info = arg;
|
||||
}
|
||||
@@ -601,9 +672,8 @@ INTERNAL_FUNCTION
|
||||
bfd_default_set_arch_mach
|
||||
|
||||
SYNOPSIS
|
||||
boolean bfd_default_set_arch_mach(bfd *abfd,
|
||||
enum bfd_architecture arch,
|
||||
unsigned long mach);
|
||||
bfd_boolean bfd_default_set_arch_mach
|
||||
(bfd *abfd, enum bfd_architecture arch, unsigned long mach);
|
||||
|
||||
DESCRIPTION
|
||||
Set the architecture and machine type in BFD @var{abfd}
|
||||
@@ -612,19 +682,18 @@ DESCRIPTION
|
||||
pointer.
|
||||
*/
|
||||
|
||||
boolean
|
||||
bfd_default_set_arch_mach (abfd, arch, mach)
|
||||
bfd *abfd;
|
||||
enum bfd_architecture arch;
|
||||
unsigned long mach;
|
||||
bfd_boolean
|
||||
bfd_default_set_arch_mach (bfd *abfd,
|
||||
enum bfd_architecture arch,
|
||||
unsigned long mach)
|
||||
{
|
||||
abfd->arch_info = bfd_lookup_arch (arch, mach);
|
||||
if (abfd->arch_info != NULL)
|
||||
return true;
|
||||
return TRUE;
|
||||
|
||||
abfd->arch_info = &bfd_default_arch_struct;
|
||||
bfd_set_error (bfd_error_bad_value);
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -632,7 +701,7 @@ FUNCTION
|
||||
bfd_get_arch
|
||||
|
||||
SYNOPSIS
|
||||
enum bfd_architecture bfd_get_arch(bfd *abfd);
|
||||
enum bfd_architecture bfd_get_arch (bfd *abfd);
|
||||
|
||||
DESCRIPTION
|
||||
Return the enumerated type which describes the BFD @var{abfd}'s
|
||||
@@ -640,8 +709,7 @@ DESCRIPTION
|
||||
*/
|
||||
|
||||
enum bfd_architecture
|
||||
bfd_get_arch (abfd)
|
||||
bfd *abfd;
|
||||
bfd_get_arch (bfd *abfd)
|
||||
{
|
||||
return abfd->arch_info->arch;
|
||||
}
|
||||
@@ -651,7 +719,7 @@ FUNCTION
|
||||
bfd_get_mach
|
||||
|
||||
SYNOPSIS
|
||||
unsigned long bfd_get_mach(bfd *abfd);
|
||||
unsigned long bfd_get_mach (bfd *abfd);
|
||||
|
||||
DESCRIPTION
|
||||
Return the long type which describes the BFD @var{abfd}'s
|
||||
@@ -659,8 +727,7 @@ DESCRIPTION
|
||||
*/
|
||||
|
||||
unsigned long
|
||||
bfd_get_mach (abfd)
|
||||
bfd *abfd;
|
||||
bfd_get_mach (bfd *abfd)
|
||||
{
|
||||
return abfd->arch_info->mach;
|
||||
}
|
||||
@@ -670,7 +737,7 @@ FUNCTION
|
||||
bfd_arch_bits_per_byte
|
||||
|
||||
SYNOPSIS
|
||||
unsigned int bfd_arch_bits_per_byte(bfd *abfd);
|
||||
unsigned int bfd_arch_bits_per_byte (bfd *abfd);
|
||||
|
||||
DESCRIPTION
|
||||
Return the number of bits in one of the BFD @var{abfd}'s
|
||||
@@ -678,8 +745,7 @@ DESCRIPTION
|
||||
*/
|
||||
|
||||
unsigned int
|
||||
bfd_arch_bits_per_byte (abfd)
|
||||
bfd *abfd;
|
||||
bfd_arch_bits_per_byte (bfd *abfd)
|
||||
{
|
||||
return abfd->arch_info->bits_per_byte;
|
||||
}
|
||||
@@ -689,7 +755,7 @@ FUNCTION
|
||||
bfd_arch_bits_per_address
|
||||
|
||||
SYNOPSIS
|
||||
unsigned int bfd_arch_bits_per_address(bfd *abfd);
|
||||
unsigned int bfd_arch_bits_per_address (bfd *abfd);
|
||||
|
||||
DESCRIPTION
|
||||
Return the number of bits in one of the BFD @var{abfd}'s
|
||||
@@ -697,8 +763,7 @@ DESCRIPTION
|
||||
*/
|
||||
|
||||
unsigned int
|
||||
bfd_arch_bits_per_address (abfd)
|
||||
bfd *abfd;
|
||||
bfd_arch_bits_per_address (bfd *abfd)
|
||||
{
|
||||
return abfd->arch_info->bits_per_address;
|
||||
}
|
||||
@@ -709,17 +774,15 @@ INTERNAL_FUNCTION
|
||||
|
||||
SYNOPSIS
|
||||
const bfd_arch_info_type *bfd_default_compatible
|
||||
(const bfd_arch_info_type *a,
|
||||
const bfd_arch_info_type *b);
|
||||
(const bfd_arch_info_type *a, const bfd_arch_info_type *b);
|
||||
|
||||
DESCRIPTION
|
||||
The default function for testing for compatibility.
|
||||
*/
|
||||
|
||||
const bfd_arch_info_type *
|
||||
bfd_default_compatible (a, b)
|
||||
const bfd_arch_info_type *a;
|
||||
const bfd_arch_info_type *b;
|
||||
bfd_default_compatible (const bfd_arch_info_type *a,
|
||||
const bfd_arch_info_type *b)
|
||||
{
|
||||
if (a->arch != b->arch)
|
||||
return NULL;
|
||||
@@ -741,17 +804,16 @@ INTERNAL_FUNCTION
|
||||
bfd_default_scan
|
||||
|
||||
SYNOPSIS
|
||||
boolean bfd_default_scan(const struct bfd_arch_info *info, const char *string);
|
||||
bfd_boolean bfd_default_scan
|
||||
(const struct bfd_arch_info *info, const char *string);
|
||||
|
||||
DESCRIPTION
|
||||
The default function for working out whether this is an
|
||||
architecture hit and a machine hit.
|
||||
*/
|
||||
|
||||
boolean
|
||||
bfd_default_scan (info, string)
|
||||
const bfd_arch_info_type *info;
|
||||
const char *string;
|
||||
bfd_boolean
|
||||
bfd_default_scan (const bfd_arch_info_type *info, const char *string)
|
||||
{
|
||||
const char *ptr_src;
|
||||
const char *ptr_tst;
|
||||
@@ -763,11 +825,11 @@ bfd_default_scan (info, string)
|
||||
default architecture? */
|
||||
if (strcasecmp (string, info->arch_name) == 0
|
||||
&& info->the_default)
|
||||
return true;
|
||||
return TRUE;
|
||||
|
||||
/* Exact match of the machine name (PRINTABLE_NAME)? */
|
||||
if (strcasecmp (string, info->printable_name) == 0)
|
||||
return true;
|
||||
return TRUE;
|
||||
|
||||
/* Given that printable_name contains no colon, attempt to match:
|
||||
ARCH_NAME [ ":" ] PRINTABLE_NAME? */
|
||||
@@ -781,13 +843,13 @@ bfd_default_scan (info, string)
|
||||
{
|
||||
if (strcasecmp (string + strlen_arch_name + 1,
|
||||
info->printable_name) == 0)
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (strcasecmp (string + strlen_arch_name,
|
||||
info->printable_name) == 0)
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -800,11 +862,11 @@ bfd_default_scan (info, string)
|
||||
if (strncasecmp (string, info->printable_name, colon_index) == 0
|
||||
&& strcasecmp (string + colon_index,
|
||||
info->printable_name + colon_index + 1) == 0)
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Given that PRINTABLE_NAME has the form: <arch> ":" <mach>; Do not
|
||||
attempt to match just <mach>, it could be ambigious. This test
|
||||
attempt to match just <mach>, it could be ambiguous. This test
|
||||
is left until later. */
|
||||
|
||||
/* NOTE: The below is retained for compatibility only. Please do
|
||||
@@ -903,6 +965,10 @@ bfd_default_scan (info, string)
|
||||
arch = bfd_arch_m68k;
|
||||
number = bfd_mach_mcf5407;
|
||||
break;
|
||||
case 5282:
|
||||
arch = bfd_arch_m68k;
|
||||
number = bfd_mach_mcf528x;
|
||||
break;
|
||||
|
||||
case 32000:
|
||||
arch = bfd_arch_we32k;
|
||||
@@ -943,16 +1009,16 @@ bfd_default_scan (info, string)
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (arch != info->arch)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
if (number != info->mach)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -960,15 +1026,14 @@ FUNCTION
|
||||
bfd_get_arch_info
|
||||
|
||||
SYNOPSIS
|
||||
const bfd_arch_info_type * bfd_get_arch_info(bfd *abfd);
|
||||
const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
|
||||
|
||||
DESCRIPTION
|
||||
Return the architecture info struct in @var{abfd}.
|
||||
*/
|
||||
|
||||
const bfd_arch_info_type *
|
||||
bfd_get_arch_info (abfd)
|
||||
bfd *abfd;
|
||||
bfd_get_arch_info (bfd *abfd)
|
||||
{
|
||||
return abfd->arch_info;
|
||||
}
|
||||
@@ -979,21 +1044,17 @@ FUNCTION
|
||||
|
||||
SYNOPSIS
|
||||
const bfd_arch_info_type *bfd_lookup_arch
|
||||
(enum bfd_architecture
|
||||
arch,
|
||||
unsigned long machine);
|
||||
(enum bfd_architecture arch, unsigned long machine);
|
||||
|
||||
DESCRIPTION
|
||||
Look for the architecure info structure which matches the
|
||||
Look for the architecture info structure which matches the
|
||||
arguments @var{arch} and @var{machine}. A machine of 0 matches the
|
||||
machine/architecture structure which marks itself as the
|
||||
default.
|
||||
*/
|
||||
|
||||
const bfd_arch_info_type *
|
||||
bfd_lookup_arch (arch, machine)
|
||||
enum bfd_architecture arch;
|
||||
unsigned long machine;
|
||||
bfd_lookup_arch (enum bfd_architecture arch, unsigned long machine)
|
||||
{
|
||||
const bfd_arch_info_type * const *app, *ap;
|
||||
|
||||
@@ -1017,7 +1078,7 @@ FUNCTION
|
||||
|
||||
SYNOPSIS
|
||||
const char *bfd_printable_arch_mach
|
||||
(enum bfd_architecture arch, unsigned long machine);
|
||||
(enum bfd_architecture arch, unsigned long machine);
|
||||
|
||||
DESCRIPTION
|
||||
Return a printable string representing the architecture and
|
||||
@@ -1027,9 +1088,7 @@ DESCRIPTION
|
||||
*/
|
||||
|
||||
const char *
|
||||
bfd_printable_arch_mach (arch, machine)
|
||||
enum bfd_architecture arch;
|
||||
unsigned long machine;
|
||||
bfd_printable_arch_mach (enum bfd_architecture arch, unsigned long machine)
|
||||
{
|
||||
const bfd_arch_info_type *ap = bfd_lookup_arch (arch, machine);
|
||||
|
||||
@@ -1043,7 +1102,7 @@ FUNCTION
|
||||
bfd_octets_per_byte
|
||||
|
||||
SYNOPSIS
|
||||
unsigned int bfd_octets_per_byte(bfd *abfd);
|
||||
unsigned int bfd_octets_per_byte (bfd *abfd);
|
||||
|
||||
DESCRIPTION
|
||||
Return the number of octets (8-bit quantities) per target byte
|
||||
@@ -1052,8 +1111,7 @@ DESCRIPTION
|
||||
*/
|
||||
|
||||
unsigned int
|
||||
bfd_octets_per_byte (abfd)
|
||||
bfd *abfd;
|
||||
bfd_octets_per_byte (bfd *abfd)
|
||||
{
|
||||
return bfd_arch_mach_octets_per_byte (bfd_get_arch (abfd),
|
||||
bfd_get_mach (abfd));
|
||||
@@ -1064,8 +1122,8 @@ FUNCTION
|
||||
bfd_arch_mach_octets_per_byte
|
||||
|
||||
SYNOPSIS
|
||||
unsigned int bfd_arch_mach_octets_per_byte(enum bfd_architecture arch,
|
||||
unsigned long machine);
|
||||
unsigned int bfd_arch_mach_octets_per_byte
|
||||
(enum bfd_architecture arch, unsigned long machine);
|
||||
|
||||
DESCRIPTION
|
||||
See bfd_octets_per_byte.
|
||||
@@ -1075,9 +1133,8 @@ DESCRIPTION
|
||||
*/
|
||||
|
||||
unsigned int
|
||||
bfd_arch_mach_octets_per_byte (arch, mach)
|
||||
enum bfd_architecture arch;
|
||||
unsigned long mach;
|
||||
bfd_arch_mach_octets_per_byte (enum bfd_architecture arch,
|
||||
unsigned long mach)
|
||||
{
|
||||
const bfd_arch_info_type *ap = bfd_lookup_arch (arch, mach);
|
||||
|
||||
|
||||
+303
-296
@@ -1,7 +1,8 @@
|
||||
/* Main header file for the bfd library -- portable access to object files.
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
2000, 2001, 2002
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
||||
1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
Contributed by Cygnus Support.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@@ -41,10 +42,6 @@ extern "C" {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define BFD_VERSION @bfd_version@
|
||||
#define BFD_VERSION_DATE @bfd_version_date@
|
||||
#define BFD_VERSION_STRING @bfd_version_string@
|
||||
|
||||
/* The word size used by BFD on the host. This may be 64 with a 32
|
||||
bit target if the host is 64 bit, or if other 64 bit targets have
|
||||
been selected with --enable-targets, or if --enable-64-bit-bfd. */
|
||||
@@ -54,9 +51,12 @@ extern "C" {
|
||||
#define BFD_DEFAULT_TARGET_SIZE @bfd_default_target_size@
|
||||
|
||||
#define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@
|
||||
#define BFD_HOST_LONG_LONG @BFD_HOST_LONG_LONG@
|
||||
#if @BFD_HOST_64_BIT_DEFINED@
|
||||
#define BFD_HOST_64_BIT @BFD_HOST_64_BIT@
|
||||
#define BFD_HOST_U_64_BIT @BFD_HOST_U_64_BIT@
|
||||
typedef BFD_HOST_64_BIT bfd_int64_t;
|
||||
typedef BFD_HOST_U_64_BIT bfd_uint64_t;
|
||||
#endif
|
||||
|
||||
#if BFD_ARCH_SIZE >= 64
|
||||
@@ -72,65 +72,30 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/* Forward declaration. */
|
||||
typedef struct _bfd bfd;
|
||||
typedef struct bfd bfd;
|
||||
|
||||
/* To squelch erroneous compiler warnings ("illegal pointer
|
||||
combination") from the SVR3 compiler, we would like to typedef
|
||||
boolean to int (it doesn't like functions which return boolean.
|
||||
Making sure they are never implicitly declared to return int
|
||||
doesn't seem to help). But this file is not configured based on
|
||||
the host. */
|
||||
/* General rules: functions which are boolean return true on success
|
||||
and false on failure (unless they're a predicate). -- bfd.doc */
|
||||
/* I'm sure this is going to break something and someone is going to
|
||||
force me to change it. */
|
||||
/* typedef enum boolean {false, true} boolean; */
|
||||
/* Yup, SVR4 has a "typedef enum boolean" in <sys/types.h> -fnf */
|
||||
/* It gets worse if the host also defines a true/false enum... -sts */
|
||||
/* And even worse if your compiler has built-in boolean types... -law */
|
||||
/* And even worse if your compiler provides a stdbool.h that conflicts
|
||||
with these definitions... gcc 2.95 and later do. If so, it must
|
||||
be included first. -drow */
|
||||
#if defined (__GNUG__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6))
|
||||
#define TRUE_FALSE_ALREADY_DEFINED
|
||||
#else
|
||||
#if defined (__bool_true_false_are_defined)
|
||||
/* We have <stdbool.h>. */
|
||||
#define TRUE_FALSE_ALREADY_DEFINED
|
||||
#endif
|
||||
#endif
|
||||
#ifdef MPW
|
||||
/* Pre-emptive strike - get the file with the enum. */
|
||||
#include <Types.h>
|
||||
#define TRUE_FALSE_ALREADY_DEFINED
|
||||
#endif /* MPW */
|
||||
#ifndef TRUE_FALSE_ALREADY_DEFINED
|
||||
typedef enum bfd_boolean {false, true} boolean;
|
||||
#define BFD_TRUE_FALSE
|
||||
#else
|
||||
/* Use enum names that will appear nowhere else. */
|
||||
typedef enum bfd_boolean {bfd_fffalse, bfd_tttrue} boolean;
|
||||
#endif
|
||||
/* Boolean type used in bfd. Too many systems define their own
|
||||
versions of "boolean" for us to safely typedef a "boolean" of
|
||||
our own. Using an enum for "bfd_boolean" has its own set of
|
||||
problems, with strange looking casts required to avoid warnings
|
||||
on some older compilers. Thus we just use an int.
|
||||
|
||||
/* Support for different sizes of target format ints and addresses.
|
||||
If the type `long' is at least 64 bits, BFD_HOST_64BIT_LONG will be
|
||||
set to 1 above. Otherwise, if gcc is being used, this code will
|
||||
use gcc's "long long" type. Otherwise, BFD_HOST_64_BIT must be
|
||||
defined above. */
|
||||
General rule: Functions which are bfd_boolean return TRUE on
|
||||
success and FALSE on failure (unless they're a predicate). */
|
||||
|
||||
#ifndef BFD_HOST_64_BIT
|
||||
# if BFD_HOST_64BIT_LONG
|
||||
# define BFD_HOST_64_BIT long
|
||||
# define BFD_HOST_U_64_BIT unsigned long
|
||||
# else
|
||||
# ifdef __GNUC__
|
||||
# if __GNUC__ >= 2
|
||||
# define BFD_HOST_64_BIT long long
|
||||
# define BFD_HOST_U_64_BIT unsigned long long
|
||||
# endif /* __GNUC__ >= 2 */
|
||||
# endif /* ! defined (__GNUC__) */
|
||||
# endif /* ! BFD_HOST_64BIT_LONG */
|
||||
#endif /* ! defined (BFD_HOST_64_BIT) */
|
||||
typedef int bfd_boolean;
|
||||
#undef FALSE
|
||||
#undef TRUE
|
||||
#define FALSE 0
|
||||
#define TRUE 1
|
||||
|
||||
#if 0
|
||||
/* Poison. */
|
||||
#undef false
|
||||
#undef true
|
||||
#define false dont_use_false_in_bfd
|
||||
#define true dont_use_true_in_bfd
|
||||
#endif
|
||||
|
||||
#ifdef BFD64
|
||||
|
||||
@@ -179,19 +144,22 @@ typedef unsigned long bfd_size_type;
|
||||
|
||||
#endif /* not BFD64 */
|
||||
|
||||
/* A pointer to a position in a file. */
|
||||
/* FIXME: This should be using off_t from <sys/types.h>.
|
||||
For now, try to avoid breaking stuff by not including <sys/types.h> here.
|
||||
This will break on systems with 64-bit file offsets (e.g. 4.4BSD).
|
||||
Probably the best long-term answer is to avoid using file_ptr AND off_t
|
||||
in this header file, and to handle this in the BFD implementation
|
||||
rather than in its interface. */
|
||||
/* typedef off_t file_ptr; */
|
||||
typedef bfd_signed_vma file_ptr;
|
||||
typedef bfd_vma ufile_ptr;
|
||||
#ifndef BFD_HOST_64_BIT
|
||||
/* Fall back on a 32 bit type. The idea is to make these types always
|
||||
available for function return types, but in the case that
|
||||
BFD_HOST_64_BIT is undefined such a function should abort or
|
||||
otherwise signal an error. */
|
||||
typedef bfd_signed_vma bfd_int64_t;
|
||||
typedef bfd_vma bfd_uint64_t;
|
||||
#endif
|
||||
|
||||
extern void bfd_sprintf_vma PARAMS ((bfd *, char *, bfd_vma));
|
||||
extern void bfd_fprintf_vma PARAMS ((bfd *, PTR, bfd_vma));
|
||||
/* An offset into a file. BFD always uses the largest possible offset
|
||||
based on the build time availability of fseek, fseeko, or fseeko64. */
|
||||
typedef @bfd_file_ptr@ file_ptr;
|
||||
typedef unsigned @bfd_file_ptr@ ufile_ptr;
|
||||
|
||||
extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
|
||||
extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
|
||||
|
||||
#define printf_vma(x) fprintf_vma(stdout,x)
|
||||
#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
|
||||
@@ -204,7 +172,7 @@ typedef unsigned char bfd_byte;
|
||||
typedef enum bfd_format
|
||||
{
|
||||
bfd_unknown = 0, /* File format is unknown. */
|
||||
bfd_object, /* Linker/assember/compiler output. */
|
||||
bfd_object, /* Linker/assembler/compiler output. */
|
||||
bfd_archive, /* Object archive file. */
|
||||
bfd_core, /* Core dump. */
|
||||
bfd_type_end /* Marks the end; don't use it! */
|
||||
@@ -267,6 +235,9 @@ bfd_format;
|
||||
/* This flag indicates that the BFD contents are actually cached in
|
||||
memory. If this is set, iostream points to a bfd_in_memory struct. */
|
||||
#define BFD_IN_MEMORY 0x800
|
||||
|
||||
/* The sections in this BFD specify a memory page. */
|
||||
#define HAS_LOAD_PAGE 0x1000
|
||||
|
||||
/* Symbols and relocation. */
|
||||
|
||||
@@ -319,7 +290,7 @@ typedef struct lineno_cache_entry
|
||||
unsigned int line_number; /* Linenumber from start of function. */
|
||||
union
|
||||
{
|
||||
struct symbol_cache_entry *sym; /* Function name. */
|
||||
struct bfd_symbol *sym; /* Function name. */
|
||||
bfd_vma offset; /* Offset into section. */
|
||||
} u;
|
||||
}
|
||||
@@ -330,7 +301,7 @@ alent;
|
||||
#define align_power(addr, align) \
|
||||
(((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
|
||||
|
||||
typedef struct sec *sec_ptr;
|
||||
typedef struct bfd_section *sec_ptr;
|
||||
|
||||
#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
|
||||
#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
|
||||
@@ -346,9 +317,9 @@ typedef struct sec *sec_ptr;
|
||||
|
||||
#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
|
||||
|
||||
#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = (unsigned int)true), true)
|
||||
#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),true)
|
||||
#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),true)
|
||||
#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
|
||||
#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
|
||||
#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
|
||||
|
||||
typedef struct stat stat_type;
|
||||
|
||||
@@ -374,7 +345,7 @@ typedef struct _symbol_info
|
||||
|
||||
/* Get the name of a stabs type code. */
|
||||
|
||||
extern const char *bfd_get_stab_name PARAMS ((int));
|
||||
extern const char *bfd_get_stab_name (int);
|
||||
|
||||
/* Hash table routines. There is no way to free up a hash table. */
|
||||
|
||||
@@ -407,75 +378,74 @@ struct bfd_hash_table
|
||||
built each of which calls the function in the superclass. Thus
|
||||
each function should be written to allocate a new block of memory
|
||||
only if the argument is NULL. */
|
||||
struct bfd_hash_entry *(*newfunc) PARAMS ((struct bfd_hash_entry *,
|
||||
struct bfd_hash_table *,
|
||||
const char *));
|
||||
struct bfd_hash_entry *(*newfunc)
|
||||
(struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
|
||||
/* An objalloc for this hash table. This is a struct objalloc *,
|
||||
but we use PTR to avoid requiring the inclusion of objalloc.h. */
|
||||
PTR memory;
|
||||
but we use void * to avoid requiring the inclusion of objalloc.h. */
|
||||
void *memory;
|
||||
};
|
||||
|
||||
/* Initialize a hash table. */
|
||||
extern boolean bfd_hash_table_init
|
||||
PARAMS ((struct bfd_hash_table *,
|
||||
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
||||
struct bfd_hash_table *,
|
||||
const char *)));
|
||||
extern bfd_boolean bfd_hash_table_init
|
||||
(struct bfd_hash_table *,
|
||||
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
||||
struct bfd_hash_table *,
|
||||
const char *));
|
||||
|
||||
/* Initialize a hash table specifying a size. */
|
||||
extern boolean bfd_hash_table_init_n
|
||||
PARAMS ((struct bfd_hash_table *,
|
||||
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
||||
struct bfd_hash_table *,
|
||||
const char *),
|
||||
unsigned int size));
|
||||
extern bfd_boolean bfd_hash_table_init_n
|
||||
(struct bfd_hash_table *,
|
||||
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
||||
struct bfd_hash_table *,
|
||||
const char *),
|
||||
unsigned int size);
|
||||
|
||||
/* Free up a hash table. */
|
||||
extern void bfd_hash_table_free PARAMS ((struct bfd_hash_table *));
|
||||
extern void bfd_hash_table_free
|
||||
(struct bfd_hash_table *);
|
||||
|
||||
/* Look up a string in a hash table. If CREATE is true, a new entry
|
||||
/* Look up a string in a hash table. If CREATE is TRUE, a new entry
|
||||
will be created for this string if one does not already exist. The
|
||||
COPY argument must be true if this routine should copy the string
|
||||
COPY argument must be TRUE if this routine should copy the string
|
||||
into newly allocated memory when adding an entry. */
|
||||
extern struct bfd_hash_entry *bfd_hash_lookup
|
||||
PARAMS ((struct bfd_hash_table *, const char *, boolean create,
|
||||
boolean copy));
|
||||
(struct bfd_hash_table *, const char *, bfd_boolean create,
|
||||
bfd_boolean copy);
|
||||
|
||||
/* Replace an entry in a hash table. */
|
||||
extern void bfd_hash_replace
|
||||
PARAMS ((struct bfd_hash_table *, struct bfd_hash_entry *old,
|
||||
struct bfd_hash_entry *nw));
|
||||
(struct bfd_hash_table *, struct bfd_hash_entry *old,
|
||||
struct bfd_hash_entry *nw);
|
||||
|
||||
/* Base method for creating a hash table entry. */
|
||||
extern struct bfd_hash_entry *bfd_hash_newfunc
|
||||
PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *,
|
||||
const char *));
|
||||
(struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
|
||||
|
||||
/* Grab some space for a hash table entry. */
|
||||
extern PTR bfd_hash_allocate PARAMS ((struct bfd_hash_table *,
|
||||
unsigned int));
|
||||
extern void *bfd_hash_allocate
|
||||
(struct bfd_hash_table *, unsigned int);
|
||||
|
||||
/* Traverse a hash table in a random order, calling a function on each
|
||||
element. If the function returns false, the traversal stops. The
|
||||
element. If the function returns FALSE, the traversal stops. The
|
||||
INFO argument is passed to the function. */
|
||||
extern void bfd_hash_traverse PARAMS ((struct bfd_hash_table *,
|
||||
boolean (*) (struct bfd_hash_entry *,
|
||||
PTR),
|
||||
PTR info));
|
||||
extern void bfd_hash_traverse
|
||||
(struct bfd_hash_table *,
|
||||
bfd_boolean (*) (struct bfd_hash_entry *, void *),
|
||||
void *info);
|
||||
|
||||
#define COFF_SWAP_TABLE (PTR) &bfd_coff_std_swap_table
|
||||
#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
|
||||
|
||||
/* User program access to BFD facilities. */
|
||||
|
||||
/* Direct I/O routines, for programs which know more about the object
|
||||
file than BFD does. Use higher level routines if possible. */
|
||||
|
||||
extern bfd_size_type bfd_bread PARAMS ((PTR, bfd_size_type, bfd *));
|
||||
extern bfd_size_type bfd_bwrite PARAMS ((const PTR, bfd_size_type, bfd *));
|
||||
extern int bfd_seek PARAMS ((bfd *, file_ptr, int));
|
||||
extern ufile_ptr bfd_tell PARAMS ((bfd *));
|
||||
extern int bfd_flush PARAMS ((bfd *));
|
||||
extern int bfd_stat PARAMS ((bfd *, struct stat *));
|
||||
extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
|
||||
extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
|
||||
extern int bfd_seek (bfd *, file_ptr, int);
|
||||
extern file_ptr bfd_tell (bfd *);
|
||||
extern int bfd_flush (bfd *);
|
||||
extern int bfd_stat (bfd *, struct stat *);
|
||||
|
||||
/* Deprecated old routines. */
|
||||
#if __GNUC__
|
||||
@@ -493,8 +463,7 @@ extern int bfd_stat PARAMS ((bfd *, struct stat *));
|
||||
(warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
|
||||
bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
|
||||
#endif
|
||||
extern void warn_deprecated
|
||||
PARAMS ((const char *, const char *, int, const char *));
|
||||
extern void warn_deprecated (const char *, const char *, int, const char *);
|
||||
|
||||
/* Cast from const char * to char * so that caller can assign to
|
||||
a char * without a warning. */
|
||||
@@ -530,40 +499,41 @@ extern void warn_deprecated
|
||||
|
||||
#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
|
||||
|
||||
#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = (boolean) (bool)), true)
|
||||
#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
|
||||
|
||||
extern boolean bfd_cache_close PARAMS ((bfd *abfd));
|
||||
extern bfd_boolean bfd_cache_close
|
||||
(bfd *abfd);
|
||||
/* NB: This declaration should match the autogenerated one in libbfd.h. */
|
||||
|
||||
extern boolean bfd_record_phdr
|
||||
PARAMS ((bfd *, unsigned long, boolean, flagword, boolean, bfd_vma,
|
||||
boolean, boolean, unsigned int, struct sec **));
|
||||
extern bfd_boolean bfd_record_phdr
|
||||
(bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
|
||||
bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
|
||||
|
||||
/* Byte swapping routines. */
|
||||
|
||||
bfd_vma bfd_getb64 PARAMS ((const unsigned char *));
|
||||
bfd_vma bfd_getl64 PARAMS ((const unsigned char *));
|
||||
bfd_signed_vma bfd_getb_signed_64 PARAMS ((const unsigned char *));
|
||||
bfd_signed_vma bfd_getl_signed_64 PARAMS ((const unsigned char *));
|
||||
bfd_vma bfd_getb32 PARAMS ((const unsigned char *));
|
||||
bfd_vma bfd_getl32 PARAMS ((const unsigned char *));
|
||||
bfd_signed_vma bfd_getb_signed_32 PARAMS ((const unsigned char *));
|
||||
bfd_signed_vma bfd_getl_signed_32 PARAMS ((const unsigned char *));
|
||||
bfd_vma bfd_getb16 PARAMS ((const unsigned char *));
|
||||
bfd_vma bfd_getl16 PARAMS ((const unsigned char *));
|
||||
bfd_signed_vma bfd_getb_signed_16 PARAMS ((const unsigned char *));
|
||||
bfd_signed_vma bfd_getl_signed_16 PARAMS ((const unsigned char *));
|
||||
void bfd_putb64 PARAMS ((bfd_vma, unsigned char *));
|
||||
void bfd_putl64 PARAMS ((bfd_vma, unsigned char *));
|
||||
void bfd_putb32 PARAMS ((bfd_vma, unsigned char *));
|
||||
void bfd_putl32 PARAMS ((bfd_vma, unsigned char *));
|
||||
void bfd_putb16 PARAMS ((bfd_vma, unsigned char *));
|
||||
void bfd_putl16 PARAMS ((bfd_vma, unsigned char *));
|
||||
bfd_uint64_t bfd_getb64 (const void *);
|
||||
bfd_uint64_t bfd_getl64 (const void *);
|
||||
bfd_int64_t bfd_getb_signed_64 (const void *);
|
||||
bfd_int64_t bfd_getl_signed_64 (const void *);
|
||||
bfd_vma bfd_getb32 (const void *);
|
||||
bfd_vma bfd_getl32 (const void *);
|
||||
bfd_signed_vma bfd_getb_signed_32 (const void *);
|
||||
bfd_signed_vma bfd_getl_signed_32 (const void *);
|
||||
bfd_vma bfd_getb16 (const void *);
|
||||
bfd_vma bfd_getl16 (const void *);
|
||||
bfd_signed_vma bfd_getb_signed_16 (const void *);
|
||||
bfd_signed_vma bfd_getl_signed_16 (const void *);
|
||||
void bfd_putb64 (bfd_uint64_t, void *);
|
||||
void bfd_putl64 (bfd_uint64_t, void *);
|
||||
void bfd_putb32 (bfd_vma, void *);
|
||||
void bfd_putl32 (bfd_vma, void *);
|
||||
void bfd_putb16 (bfd_vma, void *);
|
||||
void bfd_putl16 (bfd_vma, void *);
|
||||
|
||||
/* Byte swapping routines which take size and endiannes as arguments. */
|
||||
|
||||
bfd_vma bfd_get_bits PARAMS ((bfd_byte *, int, boolean));
|
||||
void bfd_put_bits PARAMS ((bfd_vma, bfd_byte *, int, boolean));
|
||||
bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
|
||||
void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
|
||||
|
||||
/* Externally visible ECOFF routines. */
|
||||
|
||||
@@ -571,59 +541,54 @@ void bfd_put_bits PARAMS ((bfd_vma, bfd_byte *, int, boolean));
|
||||
struct ecoff_debug_info;
|
||||
struct ecoff_debug_swap;
|
||||
struct ecoff_extr;
|
||||
struct symbol_cache_entry;
|
||||
struct bfd_symbol;
|
||||
struct bfd_link_info;
|
||||
struct bfd_link_hash_entry;
|
||||
struct bfd_elf_version_tree;
|
||||
#endif
|
||||
extern bfd_vma bfd_ecoff_get_gp_value PARAMS ((bfd * abfd));
|
||||
extern boolean bfd_ecoff_set_gp_value PARAMS ((bfd *abfd, bfd_vma gp_value));
|
||||
extern boolean bfd_ecoff_set_regmasks
|
||||
PARAMS ((bfd *abfd, unsigned long gprmask, unsigned long fprmask,
|
||||
unsigned long *cprmask));
|
||||
extern PTR bfd_ecoff_debug_init
|
||||
PARAMS ((bfd *output_bfd, struct ecoff_debug_info *output_debug,
|
||||
const struct ecoff_debug_swap *output_swap,
|
||||
struct bfd_link_info *));
|
||||
extern bfd_vma bfd_ecoff_get_gp_value
|
||||
(bfd * abfd);
|
||||
extern bfd_boolean bfd_ecoff_set_gp_value
|
||||
(bfd *abfd, bfd_vma gp_value);
|
||||
extern bfd_boolean bfd_ecoff_set_regmasks
|
||||
(bfd *abfd, unsigned long gprmask, unsigned long fprmask,
|
||||
unsigned long *cprmask);
|
||||
extern void *bfd_ecoff_debug_init
|
||||
(bfd *output_bfd, struct ecoff_debug_info *output_debug,
|
||||
const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
|
||||
extern void bfd_ecoff_debug_free
|
||||
PARAMS ((PTR handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
|
||||
const struct ecoff_debug_swap *output_swap,
|
||||
struct bfd_link_info *));
|
||||
extern boolean bfd_ecoff_debug_accumulate
|
||||
PARAMS ((PTR handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
|
||||
const struct ecoff_debug_swap *output_swap,
|
||||
bfd *input_bfd, struct ecoff_debug_info *input_debug,
|
||||
const struct ecoff_debug_swap *input_swap,
|
||||
struct bfd_link_info *));
|
||||
extern boolean bfd_ecoff_debug_accumulate_other
|
||||
PARAMS ((PTR handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
|
||||
const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
|
||||
struct bfd_link_info *));
|
||||
extern boolean bfd_ecoff_debug_externals
|
||||
PARAMS ((bfd *abfd, struct ecoff_debug_info *debug,
|
||||
const struct ecoff_debug_swap *swap,
|
||||
boolean relocateable,
|
||||
boolean (*get_extr) (struct symbol_cache_entry *,
|
||||
struct ecoff_extr *),
|
||||
void (*set_index) (struct symbol_cache_entry *,
|
||||
bfd_size_type)));
|
||||
extern boolean bfd_ecoff_debug_one_external
|
||||
PARAMS ((bfd *abfd, struct ecoff_debug_info *debug,
|
||||
const struct ecoff_debug_swap *swap,
|
||||
const char *name, struct ecoff_extr *esym));
|
||||
(void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
|
||||
const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
|
||||
extern bfd_boolean bfd_ecoff_debug_accumulate
|
||||
(void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
|
||||
const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
|
||||
struct ecoff_debug_info *input_debug,
|
||||
const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
|
||||
extern bfd_boolean bfd_ecoff_debug_accumulate_other
|
||||
(void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
|
||||
const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
|
||||
struct bfd_link_info *);
|
||||
extern bfd_boolean bfd_ecoff_debug_externals
|
||||
(bfd *abfd, struct ecoff_debug_info *debug,
|
||||
const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
|
||||
bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
|
||||
void (*set_index) (struct bfd_symbol *, bfd_size_type));
|
||||
extern bfd_boolean bfd_ecoff_debug_one_external
|
||||
(bfd *abfd, struct ecoff_debug_info *debug,
|
||||
const struct ecoff_debug_swap *swap, const char *name,
|
||||
struct ecoff_extr *esym);
|
||||
extern bfd_size_type bfd_ecoff_debug_size
|
||||
PARAMS ((bfd *abfd, struct ecoff_debug_info *debug,
|
||||
const struct ecoff_debug_swap *swap));
|
||||
extern boolean bfd_ecoff_write_debug
|
||||
PARAMS ((bfd *abfd, struct ecoff_debug_info *debug,
|
||||
const struct ecoff_debug_swap *swap, file_ptr where));
|
||||
extern boolean bfd_ecoff_write_accumulated_debug
|
||||
PARAMS ((PTR handle, bfd *abfd, struct ecoff_debug_info *debug,
|
||||
const struct ecoff_debug_swap *swap,
|
||||
struct bfd_link_info *info, file_ptr where));
|
||||
extern boolean bfd_mips_ecoff_create_embedded_relocs
|
||||
PARAMS ((bfd *, struct bfd_link_info *, struct sec *, struct sec *,
|
||||
char **));
|
||||
(bfd *abfd, struct ecoff_debug_info *debug,
|
||||
const struct ecoff_debug_swap *swap);
|
||||
extern bfd_boolean bfd_ecoff_write_debug
|
||||
(bfd *abfd, struct ecoff_debug_info *debug,
|
||||
const struct ecoff_debug_swap *swap, file_ptr where);
|
||||
extern bfd_boolean bfd_ecoff_write_accumulated_debug
|
||||
(void *handle, bfd *abfd, struct ecoff_debug_info *debug,
|
||||
const struct ecoff_debug_swap *swap,
|
||||
struct bfd_link_info *info, file_ptr where);
|
||||
extern bfd_boolean bfd_mips_ecoff_create_embedded_relocs
|
||||
(bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
|
||||
|
||||
/* Externally visible ELF routines. */
|
||||
|
||||
@@ -634,36 +599,37 @@ struct bfd_link_needed_list
|
||||
const char *name;
|
||||
};
|
||||
|
||||
extern boolean bfd_elf32_record_link_assignment
|
||||
PARAMS ((bfd *, struct bfd_link_info *, const char *, boolean));
|
||||
extern boolean bfd_elf64_record_link_assignment
|
||||
PARAMS ((bfd *, struct bfd_link_info *, const char *, boolean));
|
||||
enum dynamic_lib_link_class {
|
||||
DYN_NORMAL = 0,
|
||||
DYN_AS_NEEDED = 1,
|
||||
DYN_DT_NEEDED = 2
|
||||
};
|
||||
|
||||
extern bfd_boolean bfd_elf_record_link_assignment
|
||||
(bfd *, struct bfd_link_info *, const char *, bfd_boolean);
|
||||
extern struct bfd_link_needed_list *bfd_elf_get_needed_list
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
extern boolean bfd_elf_get_bfd_needed_list
|
||||
PARAMS ((bfd *, struct bfd_link_needed_list **));
|
||||
extern boolean bfd_elf32_size_dynamic_sections
|
||||
PARAMS ((bfd *, const char *, const char *, const char *,
|
||||
const char * const *, struct bfd_link_info *, struct sec **,
|
||||
struct bfd_elf_version_tree *));
|
||||
extern boolean bfd_elf64_size_dynamic_sections
|
||||
PARAMS ((bfd *, const char *, const char *, const char *,
|
||||
const char * const *, struct bfd_link_info *, struct sec **,
|
||||
struct bfd_elf_version_tree *));
|
||||
extern void bfd_elf_set_dt_needed_name PARAMS ((bfd *, const char *));
|
||||
extern void bfd_elf_set_dt_needed_soname PARAMS ((bfd *, const char *));
|
||||
extern const char *bfd_elf_get_dt_soname PARAMS ((bfd *));
|
||||
(bfd *, struct bfd_link_info *);
|
||||
extern bfd_boolean bfd_elf_get_bfd_needed_list
|
||||
(bfd *, struct bfd_link_needed_list **);
|
||||
extern bfd_boolean bfd_elf_size_dynamic_sections
|
||||
(bfd *, const char *, const char *, const char *, const char * const *,
|
||||
struct bfd_link_info *, struct bfd_section **, struct bfd_elf_version_tree *);
|
||||
extern void bfd_elf_set_dt_needed_name
|
||||
(bfd *, const char *);
|
||||
extern const char *bfd_elf_get_dt_soname
|
||||
(bfd *);
|
||||
extern void bfd_elf_set_dyn_lib_class
|
||||
(bfd *, int);
|
||||
extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
extern boolean bfd_elf32_discard_info
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
extern boolean bfd_elf64_discard_info
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
(bfd *, struct bfd_link_info *);
|
||||
extern bfd_boolean bfd_elf_discard_info
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
/* Return an upper bound on the number of bytes required to store a
|
||||
copy of ABFD's program header table entries. Return -1 if an error
|
||||
occurs; bfd_get_error will return an appropriate code. */
|
||||
extern long bfd_get_elf_phdr_upper_bound PARAMS ((bfd *abfd));
|
||||
extern long bfd_get_elf_phdr_upper_bound
|
||||
(bfd *abfd);
|
||||
|
||||
/* Copy ABFD's program header table entries to *PHDRS. The entries
|
||||
will be stored as an array of Elf_Internal_Phdr structures, as
|
||||
@@ -672,39 +638,58 @@ extern long bfd_get_elf_phdr_upper_bound PARAMS ((bfd *abfd));
|
||||
|
||||
Return the number of program header table entries read, or -1 if an
|
||||
error occurs; bfd_get_error will return an appropriate code. */
|
||||
extern int bfd_get_elf_phdrs PARAMS ((bfd *abfd, void *phdrs));
|
||||
extern int bfd_get_elf_phdrs
|
||||
(bfd *abfd, void *phdrs);
|
||||
|
||||
/* Create a new BFD as if by bfd_openr. Rather than opening a file,
|
||||
reconstruct an ELF file by reading the segments out of remote memory
|
||||
based on the ELF file header at EHDR_VMA and the ELF program headers it
|
||||
points to. If not null, *LOADBASEP is filled in with the difference
|
||||
between the VMAs from which the segments were read, and the VMAs the
|
||||
file headers (and hence BFD's idea of each section's VMA) put them at.
|
||||
|
||||
The function TARGET_READ_MEMORY is called to copy LEN bytes from the
|
||||
remote memory at target address VMA into the local buffer at MYADDR; it
|
||||
should return zero on success or an `errno' code on failure. TEMPL must
|
||||
be a BFD for an ELF target with the word size and byte order found in
|
||||
the remote memory. */
|
||||
extern bfd *bfd_elf_bfd_from_remote_memory
|
||||
(bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
|
||||
int (*target_read_memory) (bfd_vma vma, char *myaddr, int len));
|
||||
|
||||
/* Return the arch_size field of an elf bfd, or -1 if not elf. */
|
||||
extern int bfd_get_arch_size PARAMS ((bfd *));
|
||||
extern int bfd_get_arch_size
|
||||
(bfd *);
|
||||
|
||||
/* Return true if address "naturally" sign extends, or -1 if not elf. */
|
||||
extern int bfd_get_sign_extend_vma PARAMS ((bfd *));
|
||||
/* Return TRUE if address "naturally" sign extends, or -1 if not elf. */
|
||||
extern int bfd_get_sign_extend_vma
|
||||
(bfd *);
|
||||
|
||||
extern boolean bfd_m68k_elf32_create_embedded_relocs
|
||||
PARAMS ((bfd *, struct bfd_link_info *, struct sec *, struct sec *,
|
||||
char **));
|
||||
extern boolean bfd_mips_elf32_create_embedded_relocs
|
||||
PARAMS ((bfd *, struct bfd_link_info *, struct sec *, struct sec *,
|
||||
char **));
|
||||
extern struct bfd_section *_bfd_elf_tls_setup
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
|
||||
(bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
|
||||
extern bfd_boolean bfd_mips_elf32_create_embedded_relocs
|
||||
(bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
|
||||
|
||||
/* SunOS shared library support routines for the linker. */
|
||||
|
||||
extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
extern boolean bfd_sunos_record_link_assignment
|
||||
PARAMS ((bfd *, struct bfd_link_info *, const char *));
|
||||
extern boolean bfd_sunos_size_dynamic_sections
|
||||
PARAMS ((bfd *, struct bfd_link_info *, struct sec **, struct sec **,
|
||||
struct sec **));
|
||||
(bfd *, struct bfd_link_info *);
|
||||
extern bfd_boolean bfd_sunos_record_link_assignment
|
||||
(bfd *, struct bfd_link_info *, const char *);
|
||||
extern bfd_boolean bfd_sunos_size_dynamic_sections
|
||||
(bfd *, struct bfd_link_info *, struct bfd_section **, struct bfd_section **, struct bfd_section **);
|
||||
|
||||
/* Linux shared library support routines for the linker. */
|
||||
|
||||
extern boolean bfd_i386linux_size_dynamic_sections
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
extern boolean bfd_m68klinux_size_dynamic_sections
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
extern boolean bfd_sparclinux_size_dynamic_sections
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
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 *);
|
||||
|
||||
/* mmap hacks */
|
||||
|
||||
@@ -714,7 +699,7 @@ typedef struct _bfd_window_internal bfd_window_internal;
|
||||
typedef struct _bfd_window
|
||||
{
|
||||
/* What the user asked for. */
|
||||
PTR data;
|
||||
void *data;
|
||||
bfd_size_type size;
|
||||
/* The actual window used by BFD. Small user-requested read-only
|
||||
regions sharing a page may share a single window into the object
|
||||
@@ -726,34 +711,36 @@ typedef struct _bfd_window
|
||||
}
|
||||
bfd_window;
|
||||
|
||||
extern void bfd_init_window PARAMS ((bfd_window *));
|
||||
extern void bfd_free_window PARAMS ((bfd_window *));
|
||||
extern boolean bfd_get_file_window
|
||||
PARAMS ((bfd *, file_ptr, bfd_size_type, bfd_window *, boolean));
|
||||
extern void bfd_init_window
|
||||
(bfd_window *);
|
||||
extern void bfd_free_window
|
||||
(bfd_window *);
|
||||
extern bfd_boolean bfd_get_file_window
|
||||
(bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
|
||||
|
||||
/* XCOFF support routines for the linker. */
|
||||
|
||||
extern boolean bfd_xcoff_link_record_set
|
||||
PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *,
|
||||
bfd_size_type));
|
||||
extern boolean bfd_xcoff_import_symbol
|
||||
PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *,
|
||||
bfd_vma, const char *, const char *, const char *, unsigned int));
|
||||
extern boolean bfd_xcoff_export_symbol
|
||||
PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *));
|
||||
extern boolean bfd_xcoff_link_count_reloc
|
||||
PARAMS ((bfd *, struct bfd_link_info *, const char *));
|
||||
extern boolean bfd_xcoff_record_link_assignment
|
||||
PARAMS ((bfd *, struct bfd_link_info *, const char *));
|
||||
extern boolean bfd_xcoff_size_dynamic_sections
|
||||
PARAMS ((bfd *, struct bfd_link_info *, const char *, const char *,
|
||||
unsigned long, unsigned long, unsigned long, boolean,
|
||||
int, boolean, boolean, struct sec **, boolean));
|
||||
extern boolean bfd_xcoff_link_generate_rtinit
|
||||
PARAMS ((bfd *, const char *, const char *, boolean));
|
||||
extern bfd_boolean bfd_xcoff_link_record_set
|
||||
(bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
|
||||
extern bfd_boolean bfd_xcoff_import_symbol
|
||||
(bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
|
||||
const char *, const char *, const char *, unsigned int);
|
||||
extern bfd_boolean bfd_xcoff_export_symbol
|
||||
(bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
|
||||
extern bfd_boolean bfd_xcoff_link_count_reloc
|
||||
(bfd *, struct bfd_link_info *, const char *);
|
||||
extern bfd_boolean bfd_xcoff_record_link_assignment
|
||||
(bfd *, struct bfd_link_info *, const char *);
|
||||
extern bfd_boolean bfd_xcoff_size_dynamic_sections
|
||||
(bfd *, struct bfd_link_info *, const char *, const char *,
|
||||
unsigned long, unsigned long, unsigned long, bfd_boolean,
|
||||
int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
|
||||
extern bfd_boolean bfd_xcoff_link_generate_rtinit
|
||||
(bfd *, const char *, const char *, bfd_boolean);
|
||||
|
||||
/* XCOFF support routines for ar. */
|
||||
extern boolean bfd_xcoff_ar_archive_set_magic PARAMS ((bfd *, char *));
|
||||
extern bfd_boolean bfd_xcoff_ar_archive_set_magic
|
||||
(bfd *, char *);
|
||||
|
||||
/* Externally visible COFF routines. */
|
||||
|
||||
@@ -762,56 +749,76 @@ struct internal_syment;
|
||||
union internal_auxent;
|
||||
#endif
|
||||
|
||||
extern boolean bfd_coff_get_syment
|
||||
PARAMS ((bfd *, struct symbol_cache_entry *, struct internal_syment *));
|
||||
extern bfd_boolean bfd_coff_get_syment
|
||||
(bfd *, struct bfd_symbol *, struct internal_syment *);
|
||||
|
||||
extern boolean bfd_coff_get_auxent
|
||||
PARAMS ((bfd *, struct symbol_cache_entry *, int, union internal_auxent *));
|
||||
extern bfd_boolean bfd_coff_get_auxent
|
||||
(bfd *, struct bfd_symbol *, int, union internal_auxent *);
|
||||
|
||||
extern boolean bfd_coff_set_symbol_class
|
||||
PARAMS ((bfd *, struct symbol_cache_entry *, unsigned int));
|
||||
extern bfd_boolean bfd_coff_set_symbol_class
|
||||
(bfd *, struct bfd_symbol *, unsigned int);
|
||||
|
||||
extern boolean bfd_m68k_coff_create_embedded_relocs
|
||||
PARAMS ((bfd *, struct bfd_link_info *, struct sec *, struct sec *,
|
||||
char **));
|
||||
extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
|
||||
(bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
|
||||
|
||||
/* ARM Interworking support. Called from linker. */
|
||||
extern boolean bfd_arm_allocate_interworking_sections
|
||||
PARAMS ((struct bfd_link_info *));
|
||||
extern bfd_boolean bfd_arm_allocate_interworking_sections
|
||||
(struct bfd_link_info *);
|
||||
|
||||
extern boolean bfd_arm_process_before_allocation
|
||||
PARAMS ((bfd *, struct bfd_link_info *, int));
|
||||
extern bfd_boolean bfd_arm_process_before_allocation
|
||||
(bfd *, struct bfd_link_info *, int);
|
||||
|
||||
extern boolean bfd_arm_get_bfd_for_interworking
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
extern bfd_boolean bfd_arm_get_bfd_for_interworking
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
/* PE ARM Interworking support. Called from linker. */
|
||||
extern boolean bfd_arm_pe_allocate_interworking_sections
|
||||
PARAMS ((struct bfd_link_info *));
|
||||
extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
|
||||
(struct bfd_link_info *);
|
||||
|
||||
extern boolean bfd_arm_pe_process_before_allocation
|
||||
PARAMS ((bfd *, struct bfd_link_info *, int));
|
||||
extern bfd_boolean bfd_arm_pe_process_before_allocation
|
||||
(bfd *, struct bfd_link_info *, int);
|
||||
|
||||
extern boolean bfd_arm_pe_get_bfd_for_interworking
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
/* ELF ARM Interworking support. Called from linker. */
|
||||
extern boolean bfd_elf32_arm_allocate_interworking_sections
|
||||
PARAMS ((struct bfd_link_info *));
|
||||
extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
|
||||
(struct bfd_link_info *);
|
||||
|
||||
extern boolean bfd_elf32_arm_process_before_allocation
|
||||
PARAMS ((bfd *, struct bfd_link_info *, int));
|
||||
extern bfd_boolean bfd_elf32_arm_process_before_allocation
|
||||
(bfd *, struct bfd_link_info *, int);
|
||||
|
||||
extern boolean bfd_elf32_arm_get_bfd_for_interworking
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
extern boolean bfd_elf32_arm_add_glue_sections_to_bfd
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
/* ARM Note section processing. */
|
||||
extern bfd_boolean bfd_arm_merge_machines
|
||||
(bfd *, bfd *);
|
||||
|
||||
extern bfd_boolean bfd_arm_update_notes
|
||||
(bfd *, const char *);
|
||||
|
||||
extern unsigned int bfd_arm_get_mach_from_notes
|
||||
(bfd *, const char *);
|
||||
|
||||
/* TI COFF load page support. */
|
||||
extern void bfd_ticoff_set_section_load_page
|
||||
PARAMS ((struct sec *, int));
|
||||
(struct bfd_section *, int);
|
||||
|
||||
extern int bfd_ticoff_get_section_load_page
|
||||
PARAMS ((struct sec *));
|
||||
(struct bfd_section *);
|
||||
|
||||
/* H8/300 functions. */
|
||||
extern bfd_vma bfd_h8300_pad_address
|
||||
(bfd *, bfd_vma);
|
||||
|
||||
/* IA64 Itanium code generation. Called from linker. */
|
||||
extern void bfd_elf32_ia64_after_parse
|
||||
(int);
|
||||
|
||||
extern void bfd_elf64_ia64_after_parse
|
||||
(int);
|
||||
|
||||
|
||||
+1246
-882
File diff suppressed because it is too large
Load Diff
+295
-291
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,442 @@
|
||||
/* Low-level I/O routines for BFDs.
|
||||
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
||||
1999, 2000, 2001, 2002, 2003, 2004 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include "sysdep.h"
|
||||
|
||||
#include "bfd.h"
|
||||
#include "libbfd.h"
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#ifndef S_IXUSR
|
||||
#define S_IXUSR 0100 /* Execute by owner. */
|
||||
#endif
|
||||
#ifndef S_IXGRP
|
||||
#define S_IXGRP 0010 /* Execute by group. */
|
||||
#endif
|
||||
#ifndef S_IXOTH
|
||||
#define S_IXOTH 0001 /* Execute by others. */
|
||||
#endif
|
||||
|
||||
file_ptr
|
||||
real_ftell (FILE *file)
|
||||
{
|
||||
#if defined (HAVE_FTELLO64)
|
||||
return ftello64 (file);
|
||||
#elif defined (HAVE_FTELLO)
|
||||
return ftello (file);
|
||||
#else
|
||||
return ftell (file);
|
||||
#endif
|
||||
}
|
||||
|
||||
int
|
||||
real_fseek (FILE *file, file_ptr offset, int whence)
|
||||
{
|
||||
#if defined (HAVE_FSEEKO64)
|
||||
return fseeko64 (file, offset, whence);
|
||||
#elif defined (HAVE_FSEEKO)
|
||||
return fseeko (file, offset, whence);
|
||||
#else
|
||||
return fseek (file, offset, whence);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Note that archive entries don't have streams; they share their parent's.
|
||||
This allows someone to play with the iostream behind BFD's back.
|
||||
|
||||
Also, note that the origin pointer points to the beginning of a file's
|
||||
contents (0 for non-archive elements). For archive entries this is the
|
||||
first octet in the file, NOT the beginning of the archive header. */
|
||||
|
||||
static size_t
|
||||
real_read (void *where, size_t a, size_t b, FILE *file)
|
||||
{
|
||||
/* FIXME - this looks like an optimization, but it's really to cover
|
||||
up for a feature of some OSs (not solaris - sigh) that
|
||||
ld/pe-dll.c takes advantage of (apparently) when it creates BFDs
|
||||
internally and tries to link against them. BFD seems to be smart
|
||||
enough to realize there are no symbol records in the "file" that
|
||||
doesn't exist but attempts to read them anyway. On Solaris,
|
||||
attempting to read zero bytes from a NULL file results in a core
|
||||
dump, but on other platforms it just returns zero bytes read.
|
||||
This makes it to something reasonable. - DJ */
|
||||
if (a == 0 || b == 0)
|
||||
return 0;
|
||||
|
||||
|
||||
#if defined (__VAX) && defined (VMS)
|
||||
/* Apparently fread on Vax VMS does not keep the record length
|
||||
information. */
|
||||
return read (fileno (file), where, a * b);
|
||||
#else
|
||||
return fread (where, a, b, file);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Return value is amount read. */
|
||||
|
||||
bfd_size_type
|
||||
bfd_bread (void *ptr, bfd_size_type size, bfd *abfd)
|
||||
{
|
||||
size_t nread;
|
||||
|
||||
if ((abfd->flags & BFD_IN_MEMORY) != 0)
|
||||
{
|
||||
struct bfd_in_memory *bim;
|
||||
bfd_size_type get;
|
||||
|
||||
bim = abfd->iostream;
|
||||
get = size;
|
||||
if (abfd->where + get > bim->size)
|
||||
{
|
||||
if (bim->size < (bfd_size_type) abfd->where)
|
||||
get = 0;
|
||||
else
|
||||
get = bim->size - abfd->where;
|
||||
bfd_set_error (bfd_error_file_truncated);
|
||||
}
|
||||
memcpy (ptr, bim->buffer + abfd->where, (size_t) get);
|
||||
abfd->where += get;
|
||||
return get;
|
||||
}
|
||||
|
||||
nread = real_read (ptr, 1, (size_t) size, bfd_cache_lookup (abfd));
|
||||
if (nread != (size_t) -1)
|
||||
abfd->where += nread;
|
||||
|
||||
/* Set bfd_error if we did not read as much data as we expected.
|
||||
|
||||
If the read failed due to an error set the bfd_error_system_call,
|
||||
else set bfd_error_file_truncated.
|
||||
|
||||
A BFD backend may wish to override bfd_error_file_truncated to
|
||||
provide something more useful (eg. no_symbols or wrong_format). */
|
||||
if (nread != size)
|
||||
{
|
||||
if (ferror (bfd_cache_lookup (abfd)))
|
||||
bfd_set_error (bfd_error_system_call);
|
||||
else
|
||||
bfd_set_error (bfd_error_file_truncated);
|
||||
}
|
||||
|
||||
return nread;
|
||||
}
|
||||
|
||||
bfd_size_type
|
||||
bfd_bwrite (const void *ptr, bfd_size_type size, bfd *abfd)
|
||||
{
|
||||
size_t nwrote;
|
||||
|
||||
if ((abfd->flags & BFD_IN_MEMORY) != 0)
|
||||
{
|
||||
struct bfd_in_memory *bim = abfd->iostream;
|
||||
size = (size_t) size;
|
||||
if (abfd->where + size > bim->size)
|
||||
{
|
||||
bfd_size_type newsize, oldsize;
|
||||
|
||||
oldsize = (bim->size + 127) & ~(bfd_size_type) 127;
|
||||
bim->size = abfd->where + size;
|
||||
/* Round up to cut down on memory fragmentation */
|
||||
newsize = (bim->size + 127) & ~(bfd_size_type) 127;
|
||||
if (newsize > oldsize)
|
||||
{
|
||||
bim->buffer = bfd_realloc (bim->buffer, newsize);
|
||||
if (bim->buffer == 0)
|
||||
{
|
||||
bim->size = 0;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
memcpy (bim->buffer + abfd->where, ptr, (size_t) size);
|
||||
abfd->where += size;
|
||||
return size;
|
||||
}
|
||||
|
||||
nwrote = fwrite (ptr, 1, (size_t) size, bfd_cache_lookup (abfd));
|
||||
if (nwrote != (size_t) -1)
|
||||
abfd->where += nwrote;
|
||||
if (nwrote != size)
|
||||
{
|
||||
#ifdef ENOSPC
|
||||
errno = ENOSPC;
|
||||
#endif
|
||||
bfd_set_error (bfd_error_system_call);
|
||||
}
|
||||
return nwrote;
|
||||
}
|
||||
|
||||
file_ptr
|
||||
bfd_tell (bfd *abfd)
|
||||
{
|
||||
file_ptr ptr;
|
||||
|
||||
if ((abfd->flags & BFD_IN_MEMORY) != 0)
|
||||
return abfd->where;
|
||||
|
||||
ptr = real_ftell (bfd_cache_lookup (abfd));
|
||||
|
||||
if (abfd->my_archive)
|
||||
ptr -= abfd->origin;
|
||||
abfd->where = ptr;
|
||||
return ptr;
|
||||
}
|
||||
|
||||
int
|
||||
bfd_flush (bfd *abfd)
|
||||
{
|
||||
if ((abfd->flags & BFD_IN_MEMORY) != 0)
|
||||
return 0;
|
||||
return fflush (bfd_cache_lookup(abfd));
|
||||
}
|
||||
|
||||
/* Returns 0 for success, negative value for failure (in which case
|
||||
bfd_get_error can retrieve the error code). */
|
||||
int
|
||||
bfd_stat (bfd *abfd, struct stat *statbuf)
|
||||
{
|
||||
FILE *f;
|
||||
int result;
|
||||
|
||||
if ((abfd->flags & BFD_IN_MEMORY) != 0)
|
||||
abort ();
|
||||
|
||||
f = bfd_cache_lookup (abfd);
|
||||
if (f == NULL)
|
||||
{
|
||||
bfd_set_error (bfd_error_system_call);
|
||||
return -1;
|
||||
}
|
||||
result = fstat (fileno (f), statbuf);
|
||||
if (result < 0)
|
||||
bfd_set_error (bfd_error_system_call);
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Returns 0 for success, nonzero for failure (in which case bfd_get_error
|
||||
can retrieve the error code). */
|
||||
|
||||
int
|
||||
bfd_seek (bfd *abfd, file_ptr position, int direction)
|
||||
{
|
||||
int result;
|
||||
FILE *f;
|
||||
file_ptr file_position;
|
||||
/* For the time being, a BFD may not seek to it's end. The problem
|
||||
is that we don't easily have a way to recognize the end of an
|
||||
element in an archive. */
|
||||
|
||||
BFD_ASSERT (direction == SEEK_SET || direction == SEEK_CUR);
|
||||
|
||||
if (direction == SEEK_CUR && position == 0)
|
||||
return 0;
|
||||
|
||||
if ((abfd->flags & BFD_IN_MEMORY) != 0)
|
||||
{
|
||||
struct bfd_in_memory *bim;
|
||||
|
||||
bim = abfd->iostream;
|
||||
|
||||
if (direction == SEEK_SET)
|
||||
abfd->where = position;
|
||||
else
|
||||
abfd->where += position;
|
||||
|
||||
if (abfd->where > bim->size)
|
||||
{
|
||||
if ((abfd->direction == write_direction) ||
|
||||
(abfd->direction == both_direction))
|
||||
{
|
||||
bfd_size_type newsize, oldsize;
|
||||
oldsize = (bim->size + 127) & ~(bfd_size_type) 127;
|
||||
bim->size = abfd->where;
|
||||
/* Round up to cut down on memory fragmentation */
|
||||
newsize = (bim->size + 127) & ~(bfd_size_type) 127;
|
||||
if (newsize > oldsize)
|
||||
{
|
||||
bim->buffer = bfd_realloc (bim->buffer, newsize);
|
||||
if (bim->buffer == 0)
|
||||
{
|
||||
bim->size = 0;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
abfd->where = bim->size;
|
||||
bfd_set_error (bfd_error_file_truncated);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (abfd->format != bfd_archive && abfd->my_archive == 0)
|
||||
{
|
||||
#if 0
|
||||
/* Explanation for this code: I'm only about 95+% sure that the above
|
||||
conditions are sufficient and that all i/o calls are properly
|
||||
adjusting the `where' field. So this is sort of an `assert'
|
||||
that the `where' field is correct. If we can go a while without
|
||||
tripping the abort, we can probably safely disable this code,
|
||||
so that the real optimizations happen. */
|
||||
file_ptr where_am_i_now;
|
||||
where_am_i_now = real_ftell (bfd_cache_lookup (abfd));
|
||||
if (abfd->my_archive)
|
||||
where_am_i_now -= abfd->origin;
|
||||
if (where_am_i_now != abfd->where)
|
||||
abort ();
|
||||
#endif
|
||||
if (direction == SEEK_SET && (bfd_vma) position == abfd->where)
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* We need something smarter to optimize access to archives.
|
||||
Currently, anything inside an archive is read via the file
|
||||
handle for the archive. Which means that a bfd_seek on one
|
||||
component affects the `current position' in the archive, as
|
||||
well as in any other component.
|
||||
|
||||
It might be sufficient to put a spike through the cache
|
||||
abstraction, and look to the archive for the file position,
|
||||
but I think we should try for something cleaner.
|
||||
|
||||
In the meantime, no optimization for archives. */
|
||||
}
|
||||
|
||||
f = bfd_cache_lookup (abfd);
|
||||
file_position = position;
|
||||
if (direction == SEEK_SET && abfd->my_archive != NULL)
|
||||
file_position += abfd->origin;
|
||||
|
||||
result = real_fseek (f, file_position, direction);
|
||||
if (result != 0)
|
||||
{
|
||||
int hold_errno = errno;
|
||||
|
||||
/* Force redetermination of `where' field. */
|
||||
bfd_tell (abfd);
|
||||
|
||||
/* An EINVAL error probably means that the file offset was
|
||||
absurd. */
|
||||
if (hold_errno == EINVAL)
|
||||
bfd_set_error (bfd_error_file_truncated);
|
||||
else
|
||||
{
|
||||
bfd_set_error (bfd_error_system_call);
|
||||
errno = hold_errno;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Adjust `where' field. */
|
||||
if (direction == SEEK_SET)
|
||||
abfd->where = position;
|
||||
else
|
||||
abfd->where += position;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
FUNCTION
|
||||
bfd_get_mtime
|
||||
|
||||
SYNOPSIS
|
||||
long bfd_get_mtime (bfd *abfd);
|
||||
|
||||
DESCRIPTION
|
||||
Return the file modification time (as read from the file system, or
|
||||
from the archive header for archive members).
|
||||
|
||||
*/
|
||||
|
||||
long
|
||||
bfd_get_mtime (bfd *abfd)
|
||||
{
|
||||
FILE *fp;
|
||||
struct stat buf;
|
||||
|
||||
if (abfd->mtime_set)
|
||||
return abfd->mtime;
|
||||
|
||||
fp = bfd_cache_lookup (abfd);
|
||||
if (0 != fstat (fileno (fp), &buf))
|
||||
return 0;
|
||||
|
||||
abfd->mtime = buf.st_mtime; /* Save value in case anyone wants it */
|
||||
return buf.st_mtime;
|
||||
}
|
||||
|
||||
/*
|
||||
FUNCTION
|
||||
bfd_get_size
|
||||
|
||||
SYNOPSIS
|
||||
long bfd_get_size (bfd *abfd);
|
||||
|
||||
DESCRIPTION
|
||||
Return the file size (as read from file system) for the file
|
||||
associated with BFD @var{abfd}.
|
||||
|
||||
The initial motivation for, and use of, this routine is not
|
||||
so we can get the exact size of the object the BFD applies to, since
|
||||
that might not be generally possible (archive members for example).
|
||||
It would be ideal if someone could eventually modify
|
||||
it so that such results were guaranteed.
|
||||
|
||||
Instead, we want to ask questions like "is this NNN byte sized
|
||||
object I'm about to try read from file offset YYY reasonable?"
|
||||
As as example of where we might do this, some object formats
|
||||
use string tables for which the first <<sizeof (long)>> bytes of the
|
||||
table contain the size of the table itself, including the size bytes.
|
||||
If an application tries to read what it thinks is one of these
|
||||
string tables, without some way to validate the size, and for
|
||||
some reason the size is wrong (byte swapping error, wrong location
|
||||
for the string table, etc.), the only clue is likely to be a read
|
||||
error when it tries to read the table, or a "virtual memory
|
||||
exhausted" error when it tries to allocate 15 bazillon bytes
|
||||
of space for the 15 bazillon byte table it is about to read.
|
||||
This function at least allows us to answer the question, "is the
|
||||
size reasonable?".
|
||||
*/
|
||||
|
||||
long
|
||||
bfd_get_size (bfd *abfd)
|
||||
{
|
||||
FILE *fp;
|
||||
struct stat buf;
|
||||
|
||||
if ((abfd->flags & BFD_IN_MEMORY) != 0)
|
||||
return ((struct bfd_in_memory *) abfd->iostream)->size;
|
||||
|
||||
fp = bfd_cache_lookup (abfd);
|
||||
if (0 != fstat (fileno (fp), & buf))
|
||||
return 0;
|
||||
|
||||
return buf.st_size;
|
||||
}
|
||||
@@ -0,0 +1,251 @@
|
||||
/* Support for memory-mapped windows into a BFD.
|
||||
Copyright 1995, 1996, 2001, 2002, 2003 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include "sysdep.h"
|
||||
|
||||
#include "bfd.h"
|
||||
#include "libbfd.h"
|
||||
|
||||
/* Currently, if USE_MMAP is undefined, none if the window stuff is
|
||||
used. Okay, so it's mis-named. At least the command-line option
|
||||
"--without-mmap" is more obvious than "--without-windows" or some
|
||||
such. */
|
||||
|
||||
#ifdef USE_MMAP
|
||||
|
||||
#undef HAVE_MPROTECT /* code's not tested yet */
|
||||
|
||||
#if HAVE_MMAP || HAVE_MPROTECT || HAVE_MADVISE
|
||||
#include <sys/mman.h>
|
||||
#endif
|
||||
|
||||
#ifndef MAP_FILE
|
||||
#define MAP_FILE 0
|
||||
#endif
|
||||
|
||||
static int debug_windows;
|
||||
|
||||
/* The idea behind the next and refcount fields is that one mapped
|
||||
region can suffice for multiple read-only windows or multiple
|
||||
non-overlapping read-write windows. It's not implemented yet
|
||||
though. */
|
||||
|
||||
/*
|
||||
INTERNAL_DEFINITION
|
||||
|
||||
.struct _bfd_window_internal {
|
||||
. struct _bfd_window_internal *next;
|
||||
. void *data;
|
||||
. bfd_size_type size;
|
||||
. int refcount : 31; {* should be enough... *}
|
||||
. unsigned mapped : 1; {* 1 = mmap, 0 = malloc *}
|
||||
.};
|
||||
*/
|
||||
|
||||
void
|
||||
bfd_init_window (bfd_window *windowp)
|
||||
{
|
||||
windowp->data = 0;
|
||||
windowp->i = 0;
|
||||
windowp->size = 0;
|
||||
}
|
||||
|
||||
void
|
||||
bfd_free_window (bfd_window *windowp)
|
||||
{
|
||||
bfd_window_internal *i = windowp->i;
|
||||
windowp->i = 0;
|
||||
windowp->data = 0;
|
||||
if (i == 0)
|
||||
return;
|
||||
i->refcount--;
|
||||
if (debug_windows)
|
||||
fprintf (stderr, "freeing window @%p<%p,%lx,%p>\n",
|
||||
windowp, windowp->data, windowp->size, windowp->i);
|
||||
if (i->refcount != 0)
|
||||
return;
|
||||
|
||||
if (i->mapped)
|
||||
{
|
||||
#ifdef HAVE_MMAP
|
||||
munmap (i->data, i->size);
|
||||
goto no_free;
|
||||
#else
|
||||
abort ();
|
||||
#endif
|
||||
}
|
||||
#ifdef HAVE_MPROTECT
|
||||
mprotect (i->data, i->size, PROT_READ | PROT_WRITE);
|
||||
#endif
|
||||
free (i->data);
|
||||
#ifdef HAVE_MMAP
|
||||
no_free:
|
||||
#endif
|
||||
i->data = 0;
|
||||
/* There should be no more references to i at this point. */
|
||||
free (i);
|
||||
}
|
||||
|
||||
static int ok_to_map = 1;
|
||||
|
||||
bfd_boolean
|
||||
bfd_get_file_window (bfd *abfd,
|
||||
file_ptr offset,
|
||||
bfd_size_type size,
|
||||
bfd_window *windowp,
|
||||
bfd_boolean writable)
|
||||
{
|
||||
static size_t pagesize;
|
||||
bfd_window_internal *i = windowp->i;
|
||||
bfd_size_type size_to_alloc = size;
|
||||
|
||||
if (debug_windows)
|
||||
fprintf (stderr, "bfd_get_file_window (%p, %6ld, %6ld, %p<%p,%lx,%p>, %d)",
|
||||
abfd, (long) offset, (long) size,
|
||||
windowp, windowp->data, (unsigned long) windowp->size,
|
||||
windowp->i, writable);
|
||||
|
||||
/* Make sure we know the page size, so we can be friendly to mmap. */
|
||||
if (pagesize == 0)
|
||||
pagesize = getpagesize ();
|
||||
if (pagesize == 0)
|
||||
abort ();
|
||||
|
||||
if (i == 0)
|
||||
{
|
||||
i = bfd_zmalloc (sizeof (bfd_window_internal));
|
||||
windowp->i = i;
|
||||
if (i == 0)
|
||||
return FALSE;
|
||||
i->data = 0;
|
||||
}
|
||||
#ifdef HAVE_MMAP
|
||||
if (ok_to_map
|
||||
&& (i->data == 0 || i->mapped == 1)
|
||||
&& (abfd->flags & BFD_IN_MEMORY) == 0)
|
||||
{
|
||||
file_ptr file_offset, offset2;
|
||||
size_t real_size;
|
||||
int fd;
|
||||
FILE *f;
|
||||
|
||||
/* Find the real file and the real offset into it. */
|
||||
while (abfd->my_archive != NULL)
|
||||
{
|
||||
offset += abfd->origin;
|
||||
abfd = abfd->my_archive;
|
||||
}
|
||||
f = bfd_cache_lookup (abfd);
|
||||
fd = fileno (f);
|
||||
|
||||
/* Compute offsets and size for mmap and for the user's data. */
|
||||
offset2 = offset % pagesize;
|
||||
if (offset2 < 0)
|
||||
abort ();
|
||||
file_offset = offset - offset2;
|
||||
real_size = offset + size - file_offset;
|
||||
real_size = real_size + pagesize - 1;
|
||||
real_size -= real_size % pagesize;
|
||||
|
||||
/* If we're re-using a memory region, make sure it's big enough. */
|
||||
if (i->data && i->size < size)
|
||||
{
|
||||
munmap (i->data, i->size);
|
||||
i->data = 0;
|
||||
}
|
||||
i->data = mmap (i->data, real_size,
|
||||
writable ? PROT_WRITE | PROT_READ : PROT_READ,
|
||||
(writable
|
||||
? MAP_FILE | MAP_PRIVATE
|
||||
: MAP_FILE | MAP_SHARED),
|
||||
fd, file_offset);
|
||||
if (i->data == (void *) -1)
|
||||
{
|
||||
/* An error happened. Report it, or try using malloc, or
|
||||
something. */
|
||||
bfd_set_error (bfd_error_system_call);
|
||||
i->data = 0;
|
||||
windowp->data = 0;
|
||||
if (debug_windows)
|
||||
fprintf (stderr, "\t\tmmap failed!\n");
|
||||
return FALSE;
|
||||
}
|
||||
if (debug_windows)
|
||||
fprintf (stderr, "\n\tmapped %ld at %p, offset is %ld\n",
|
||||
(long) real_size, i->data, (long) offset2);
|
||||
i->size = real_size;
|
||||
windowp->data = (bfd_byte *) i->data + offset2;
|
||||
windowp->size = size;
|
||||
i->mapped = 1;
|
||||
return TRUE;
|
||||
}
|
||||
else if (debug_windows)
|
||||
{
|
||||
if (ok_to_map)
|
||||
fprintf (stderr, _("not mapping: data=%lx mapped=%d\n"),
|
||||
(unsigned long) i->data, (int) i->mapped);
|
||||
else
|
||||
fprintf (stderr, _("not mapping: env var not set\n"));
|
||||
}
|
||||
#else
|
||||
ok_to_map = 0;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_MPROTECT
|
||||
if (!writable)
|
||||
{
|
||||
size_to_alloc += pagesize - 1;
|
||||
size_to_alloc -= size_to_alloc % pagesize;
|
||||
}
|
||||
#endif
|
||||
if (debug_windows)
|
||||
fprintf (stderr, "\n\t%s(%6ld)",
|
||||
i->data ? "realloc" : " malloc", (long) size_to_alloc);
|
||||
i->data = bfd_realloc (i->data, size_to_alloc);
|
||||
if (debug_windows)
|
||||
fprintf (stderr, "\t-> %p\n", i->data);
|
||||
i->refcount = 1;
|
||||
if (i->data == NULL)
|
||||
{
|
||||
if (size_to_alloc == 0)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
if (bfd_seek (abfd, offset, SEEK_SET) != 0)
|
||||
return FALSE;
|
||||
i->size = bfd_bread (i->data, size, abfd);
|
||||
if (i->size != size)
|
||||
return FALSE;
|
||||
i->mapped = 0;
|
||||
#ifdef HAVE_MPROTECT
|
||||
if (!writable)
|
||||
{
|
||||
if (debug_windows)
|
||||
fprintf (stderr, "\tmprotect (%p, %ld, PROT_READ)\n", i->data,
|
||||
(long) i->size);
|
||||
mprotect (i->data, i->size, PROT_READ);
|
||||
}
|
||||
#endif
|
||||
windowp->data = i->data;
|
||||
windowp->size = i->size;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#endif /* USE_MMAP */
|
||||
@@ -1,23 +1,23 @@
|
||||
/* BFD back-end for binary objects.
|
||||
Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
Written by Ian Lance Taylor, Cygnus Support, <ian@cygnus.com>
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
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 2 of the License, or
|
||||
(at your option) any later version.
|
||||
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 2 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.
|
||||
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* This is a BFD backend which may be used to write binary objects.
|
||||
It may only be used for output, not input. The intention is that
|
||||
@@ -41,29 +41,30 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
a start symbol, an end symbol, and an absolute length symbol. */
|
||||
#define BIN_SYMS 3
|
||||
|
||||
static boolean binary_mkobject PARAMS ((bfd *));
|
||||
static bfd_boolean binary_mkobject PARAMS ((bfd *));
|
||||
static const bfd_target *binary_object_p PARAMS ((bfd *));
|
||||
static boolean binary_get_section_contents
|
||||
static bfd_boolean binary_get_section_contents
|
||||
PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type));
|
||||
static long binary_get_symtab_upper_bound PARAMS ((bfd *));
|
||||
static char *mangle_name PARAMS ((bfd *, char *));
|
||||
static long binary_get_symtab PARAMS ((bfd *, asymbol **));
|
||||
static long binary_canonicalize_symtab PARAMS ((bfd *, asymbol **));
|
||||
static void binary_get_symbol_info PARAMS ((bfd *, asymbol *, symbol_info *));
|
||||
static boolean binary_set_section_contents
|
||||
PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type));
|
||||
static int binary_sizeof_headers PARAMS ((bfd *, boolean));
|
||||
static bfd_boolean binary_set_section_contents
|
||||
PARAMS ((bfd *, asection *, const PTR, file_ptr, bfd_size_type));
|
||||
static int binary_sizeof_headers PARAMS ((bfd *, bfd_boolean));
|
||||
|
||||
/* Set by external programs - specifies the BFD architecture
|
||||
to use when creating binary BFDs. */
|
||||
enum bfd_architecture bfd_external_binary_architecture = bfd_arch_unknown;
|
||||
/* Set by external programs - specifies the BFD architecture and
|
||||
machine number to be uses when creating binary BFDs. */
|
||||
enum bfd_architecture bfd_external_binary_architecture = bfd_arch_unknown;
|
||||
unsigned long bfd_external_machine = 0;
|
||||
|
||||
/* Create a binary object. Invoked via bfd_set_format. */
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
binary_mkobject (abfd)
|
||||
bfd *abfd ATTRIBUTE_UNUSED;
|
||||
{
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Any file may be considered to be a binary file, provided the target
|
||||
@@ -107,7 +108,8 @@ binary_object_p (abfd)
|
||||
{
|
||||
if ((bfd_get_arch_info (abfd)->arch == bfd_arch_unknown)
|
||||
&& (bfd_external_binary_architecture != bfd_arch_unknown))
|
||||
bfd_set_arch_info (abfd, bfd_lookup_arch (bfd_external_binary_architecture, 0));
|
||||
bfd_set_arch_info (abfd, bfd_lookup_arch
|
||||
(bfd_external_binary_architecture, bfd_external_machine));
|
||||
}
|
||||
|
||||
return abfd->xvec;
|
||||
@@ -119,7 +121,7 @@ binary_object_p (abfd)
|
||||
|
||||
/* Get contents of the only section. */
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
binary_get_section_contents (abfd, section, location, offset, count)
|
||||
bfd *abfd;
|
||||
asection *section ATTRIBUTE_UNUSED;
|
||||
@@ -129,8 +131,8 @@ binary_get_section_contents (abfd, section, location, offset, count)
|
||||
{
|
||||
if (bfd_seek (abfd, offset, SEEK_SET) != 0
|
||||
|| bfd_bread (location, count, abfd) != count)
|
||||
return false;
|
||||
return true;
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Return the amount of memory needed to read the symbol table. */
|
||||
@@ -174,7 +176,7 @@ mangle_name (abfd, suffix)
|
||||
/* Return the symbol table. */
|
||||
|
||||
static long
|
||||
binary_get_symtab (abfd, alocation)
|
||||
binary_canonicalize_symtab (abfd, alocation)
|
||||
bfd *abfd;
|
||||
asymbol **alocation;
|
||||
{
|
||||
@@ -185,7 +187,7 @@ binary_get_symtab (abfd, alocation)
|
||||
|
||||
syms = (asymbol *) bfd_alloc (abfd, amt);
|
||||
if (syms == NULL)
|
||||
return (long) false;
|
||||
return 0;
|
||||
|
||||
/* Start symbol. */
|
||||
syms[0].the_bfd = abfd;
|
||||
@@ -250,27 +252,27 @@ binary_get_symbol_info (ignore_abfd, symbol, ret)
|
||||
|
||||
/* Write section contents of a binary file. */
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
binary_set_section_contents (abfd, sec, data, offset, size)
|
||||
bfd *abfd;
|
||||
asection *sec;
|
||||
PTR data;
|
||||
const PTR data;
|
||||
file_ptr offset;
|
||||
bfd_size_type size;
|
||||
{
|
||||
if (size == 0)
|
||||
return true;
|
||||
return TRUE;
|
||||
|
||||
if (! abfd->output_has_begun)
|
||||
{
|
||||
boolean found_low;
|
||||
bfd_boolean found_low;
|
||||
bfd_vma low;
|
||||
asection *s;
|
||||
|
||||
/* The lowest section LMA sets the virtual address of the start
|
||||
of the file. We use this to set the file position of all the
|
||||
sections. */
|
||||
found_low = false;
|
||||
found_low = FALSE;
|
||||
low = 0;
|
||||
for (s = abfd->sections; s != NULL; s = s->next)
|
||||
if (((s->flags
|
||||
@@ -280,7 +282,7 @@ binary_set_section_contents (abfd, sec, data, offset, size)
|
||||
&& (! found_low || s->lma < low))
|
||||
{
|
||||
low = s->lma;
|
||||
found_low = true;
|
||||
found_low = TRUE;
|
||||
}
|
||||
|
||||
for (s = abfd->sections; s != NULL; s = s->next)
|
||||
@@ -308,16 +310,16 @@ binary_set_section_contents (abfd, sec, data, offset, size)
|
||||
(unsigned long) s->filepos);
|
||||
}
|
||||
|
||||
abfd->output_has_begun = true;
|
||||
abfd->output_has_begun = TRUE;
|
||||
}
|
||||
|
||||
/* We don't want to output anything for a section that is neither
|
||||
loaded nor allocated. The contents of such a section are not
|
||||
meaningful in the binary format. */
|
||||
if ((sec->flags & (SEC_LOAD | SEC_ALLOC)) == 0)
|
||||
return true;
|
||||
return TRUE;
|
||||
if ((sec->flags & SEC_NEVER_LOAD) != 0)
|
||||
return true;
|
||||
return TRUE;
|
||||
|
||||
return _bfd_generic_set_section_contents (abfd, sec, data, offset, size);
|
||||
}
|
||||
@@ -327,7 +329,7 @@ binary_set_section_contents (abfd, sec, data, offset, size)
|
||||
static int
|
||||
binary_sizeof_headers (abfd, exec)
|
||||
bfd *abfd ATTRIBUTE_UNUSED;
|
||||
boolean exec ATTRIBUTE_UNUSED;
|
||||
bfd_boolean exec ATTRIBUTE_UNUSED;
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,8 @@
|
||||
/* BFD library -- caching of file descriptors.
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1996, 2000, 2001, 2002
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1996, 2000, 2001, 2002,
|
||||
2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
Hacked by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@@ -40,10 +42,7 @@ SECTION
|
||||
#include "sysdep.h"
|
||||
#include "libbfd.h"
|
||||
|
||||
static void insert PARAMS ((bfd *));
|
||||
static void snip PARAMS ((bfd *));
|
||||
static boolean close_one PARAMS ((void));
|
||||
static boolean bfd_cache_delete PARAMS ((bfd *));
|
||||
static bfd_boolean bfd_cache_delete (bfd *);
|
||||
|
||||
/*
|
||||
INTERNAL_FUNCTION
|
||||
@@ -95,9 +94,8 @@ bfd *bfd_last_cache;
|
||||
|
||||
/* Insert a BFD into the cache. */
|
||||
|
||||
static INLINE void
|
||||
insert (abfd)
|
||||
bfd *abfd;
|
||||
static void
|
||||
insert (bfd *abfd)
|
||||
{
|
||||
if (bfd_last_cache == NULL)
|
||||
{
|
||||
@@ -116,9 +114,8 @@ insert (abfd)
|
||||
|
||||
/* Remove a BFD from the cache. */
|
||||
|
||||
static INLINE void
|
||||
snip (abfd)
|
||||
bfd *abfd;
|
||||
static void
|
||||
snip (bfd *abfd)
|
||||
{
|
||||
abfd->lru_prev->lru_next = abfd->lru_next;
|
||||
abfd->lru_next->lru_prev = abfd->lru_prev;
|
||||
@@ -133,8 +130,8 @@ snip (abfd)
|
||||
/* We need to open a new file, and the cache is full. Find the least
|
||||
recently used cacheable BFD and close it. */
|
||||
|
||||
static boolean
|
||||
close_one ()
|
||||
static bfd_boolean
|
||||
close_one (void)
|
||||
{
|
||||
register bfd *kill;
|
||||
|
||||
@@ -157,27 +154,26 @@ close_one ()
|
||||
if (kill == NULL)
|
||||
{
|
||||
/* There are no open cacheable BFD's. */
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
kill->where = ftell ((FILE *) kill->iostream);
|
||||
kill->where = real_ftell ((FILE *) kill->iostream);
|
||||
|
||||
return bfd_cache_delete (kill);
|
||||
}
|
||||
|
||||
/* Close a BFD and remove it from the cache. */
|
||||
|
||||
static boolean
|
||||
bfd_cache_delete (abfd)
|
||||
bfd *abfd;
|
||||
static bfd_boolean
|
||||
bfd_cache_delete (bfd *abfd)
|
||||
{
|
||||
boolean ret;
|
||||
bfd_boolean ret;
|
||||
|
||||
if (fclose ((FILE *) abfd->iostream) == 0)
|
||||
ret = true;
|
||||
ret = TRUE;
|
||||
else
|
||||
{
|
||||
ret = false;
|
||||
ret = FALSE;
|
||||
bfd_set_error (bfd_error_system_call);
|
||||
}
|
||||
|
||||
@@ -194,25 +190,24 @@ INTERNAL_FUNCTION
|
||||
bfd_cache_init
|
||||
|
||||
SYNOPSIS
|
||||
boolean bfd_cache_init (bfd *abfd);
|
||||
bfd_boolean bfd_cache_init (bfd *abfd);
|
||||
|
||||
DESCRIPTION
|
||||
Add a newly opened BFD to the cache.
|
||||
*/
|
||||
|
||||
boolean
|
||||
bfd_cache_init (abfd)
|
||||
bfd *abfd;
|
||||
bfd_boolean
|
||||
bfd_cache_init (bfd *abfd)
|
||||
{
|
||||
BFD_ASSERT (abfd->iostream != NULL);
|
||||
if (open_files >= BFD_CACHE_MAX_OPEN)
|
||||
{
|
||||
if (! close_one ())
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
insert (abfd);
|
||||
++open_files;
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -220,24 +215,23 @@ INTERNAL_FUNCTION
|
||||
bfd_cache_close
|
||||
|
||||
SYNOPSIS
|
||||
boolean bfd_cache_close (bfd *abfd);
|
||||
bfd_boolean bfd_cache_close (bfd *abfd);
|
||||
|
||||
DESCRIPTION
|
||||
Remove the BFD @var{abfd} from the cache. If the attached file is open,
|
||||
then close it too.
|
||||
|
||||
RETURNS
|
||||
<<false>> is returned if closing the file fails, <<true>> is
|
||||
<<FALSE>> is returned if closing the file fails, <<TRUE>> is
|
||||
returned if all is well.
|
||||
*/
|
||||
|
||||
boolean
|
||||
bfd_cache_close (abfd)
|
||||
bfd *abfd;
|
||||
bfd_boolean
|
||||
bfd_cache_close (bfd *abfd)
|
||||
{
|
||||
if (abfd->iostream == NULL
|
||||
|| (abfd->flags & BFD_IN_MEMORY) != 0)
|
||||
return true;
|
||||
return TRUE;
|
||||
|
||||
return bfd_cache_delete (abfd);
|
||||
}
|
||||
@@ -247,7 +241,7 @@ INTERNAL_FUNCTION
|
||||
bfd_open_file
|
||||
|
||||
SYNOPSIS
|
||||
FILE* bfd_open_file(bfd *abfd);
|
||||
FILE* bfd_open_file (bfd *abfd);
|
||||
|
||||
DESCRIPTION
|
||||
Call the OS to open a file for @var{abfd}. Return the <<FILE *>>
|
||||
@@ -258,10 +252,9 @@ DESCRIPTION
|
||||
*/
|
||||
|
||||
FILE *
|
||||
bfd_open_file (abfd)
|
||||
bfd *abfd;
|
||||
bfd_open_file (bfd *abfd)
|
||||
{
|
||||
abfd->cacheable = true; /* Allow it to be closed later. */
|
||||
abfd->cacheable = TRUE; /* Allow it to be closed later. */
|
||||
|
||||
if (open_files >= BFD_CACHE_MAX_OPEN)
|
||||
{
|
||||
@@ -312,7 +305,7 @@ bfd_open_file (abfd)
|
||||
unlink (abfd->filename);
|
||||
#endif
|
||||
abfd->iostream = (PTR) fopen (abfd->filename, FOPEN_WUB);
|
||||
abfd->opened_once = true;
|
||||
abfd->opened_once = TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -331,7 +324,7 @@ INTERNAL_FUNCTION
|
||||
bfd_cache_lookup_worker
|
||||
|
||||
SYNOPSIS
|
||||
FILE *bfd_cache_lookup_worker(bfd *abfd);
|
||||
FILE *bfd_cache_lookup_worker (bfd *abfd);
|
||||
|
||||
DESCRIPTION
|
||||
Called when the macro <<bfd_cache_lookup>> fails to find a
|
||||
@@ -342,8 +335,7 @@ DESCRIPTION
|
||||
*/
|
||||
|
||||
FILE *
|
||||
bfd_cache_lookup_worker (abfd)
|
||||
bfd *abfd;
|
||||
bfd_cache_lookup_worker (bfd *abfd)
|
||||
{
|
||||
if ((abfd->flags & BFD_IN_MEMORY) != 0)
|
||||
abort ();
|
||||
@@ -366,7 +358,7 @@ bfd_cache_lookup_worker (abfd)
|
||||
return NULL;
|
||||
if (abfd->where != (unsigned long) abfd->where)
|
||||
return NULL;
|
||||
if (fseek ((FILE *) abfd->iostream, (long) abfd->where, SEEK_SET) != 0)
|
||||
if (real_fseek ((FILE *) abfd->iostream, abfd->where, SEEK_SET) != 0)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
+150
-147
@@ -1,5 +1,5 @@
|
||||
/* BFD back-end for ALPHA Extended-Coff files.
|
||||
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
Modified from coff-mips.c by Steve Chamberlain <sac@cygnus.com> and
|
||||
Ian Lance Taylor <ian@cygnus.com>.
|
||||
@@ -35,36 +35,40 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Prototypes for static functions. */
|
||||
|
||||
static const bfd_target *alpha_ecoff_object_p PARAMS ((bfd *));
|
||||
static boolean alpha_ecoff_bad_format_hook PARAMS ((bfd *abfd, PTR filehdr));
|
||||
static PTR alpha_ecoff_mkobject_hook PARAMS ((bfd *, PTR filehdr, PTR aouthdr));
|
||||
static void alpha_ecoff_swap_reloc_in PARAMS ((bfd *, PTR,
|
||||
struct internal_reloc *));
|
||||
static void alpha_ecoff_swap_reloc_out PARAMS ((bfd *,
|
||||
const struct internal_reloc *,
|
||||
PTR));
|
||||
static void alpha_adjust_reloc_in PARAMS ((bfd *,
|
||||
const struct internal_reloc *,
|
||||
arelent *));
|
||||
static void alpha_adjust_reloc_out PARAMS ((bfd *, const arelent *,
|
||||
struct internal_reloc *));
|
||||
static const bfd_target *alpha_ecoff_object_p
|
||||
PARAMS ((bfd *));
|
||||
static bfd_boolean alpha_ecoff_bad_format_hook
|
||||
PARAMS ((bfd *abfd, PTR filehdr));
|
||||
static PTR alpha_ecoff_mkobject_hook
|
||||
PARAMS ((bfd *, PTR filehdr, PTR aouthdr));
|
||||
static void alpha_ecoff_swap_reloc_in
|
||||
PARAMS ((bfd *, PTR, struct internal_reloc *));
|
||||
static void alpha_ecoff_swap_reloc_out
|
||||
PARAMS ((bfd *, const struct internal_reloc *, PTR));
|
||||
static void alpha_adjust_reloc_in
|
||||
PARAMS ((bfd *, const struct internal_reloc *, arelent *));
|
||||
static void alpha_adjust_reloc_out
|
||||
PARAMS ((bfd *, const arelent *, struct internal_reloc *));
|
||||
static reloc_howto_type *alpha_bfd_reloc_type_lookup
|
||||
PARAMS ((bfd *, bfd_reloc_code_real_type));
|
||||
PARAMS ((bfd *, bfd_reloc_code_real_type));
|
||||
static bfd_byte *alpha_ecoff_get_relocated_section_contents
|
||||
PARAMS ((bfd *abfd, struct bfd_link_info *, struct bfd_link_order *,
|
||||
bfd_byte *data, boolean relocateable, asymbol **symbols));
|
||||
bfd_byte *data, bfd_boolean relocatable, asymbol **symbols));
|
||||
static bfd_vma alpha_convert_external_reloc
|
||||
PARAMS ((bfd *, struct bfd_link_info *, bfd *, struct external_reloc *,
|
||||
struct ecoff_link_hash_entry *));
|
||||
static boolean alpha_relocate_section PARAMS ((bfd *, struct bfd_link_info *,
|
||||
bfd *, asection *,
|
||||
bfd_byte *, PTR));
|
||||
static boolean alpha_adjust_headers
|
||||
static bfd_boolean alpha_relocate_section
|
||||
PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, PTR));
|
||||
static bfd_boolean alpha_adjust_headers
|
||||
PARAMS ((bfd *, struct internal_filehdr *, struct internal_aouthdr *));
|
||||
static PTR alpha_ecoff_read_ar_hdr PARAMS ((bfd *));
|
||||
static bfd *alpha_ecoff_get_elt_at_filepos PARAMS ((bfd *, file_ptr));
|
||||
static bfd *alpha_ecoff_openr_next_archived_file PARAMS ((bfd *, bfd *));
|
||||
static bfd *alpha_ecoff_get_elt_at_index PARAMS ((bfd *, symindex));
|
||||
static PTR alpha_ecoff_read_ar_hdr
|
||||
PARAMS ((bfd *));
|
||||
static bfd *alpha_ecoff_get_elt_at_filepos
|
||||
PARAMS ((bfd *, file_ptr));
|
||||
static bfd *alpha_ecoff_openr_next_archived_file
|
||||
PARAMS ((bfd *, bfd *));
|
||||
static bfd *alpha_ecoff_get_elt_at_index
|
||||
PARAMS ((bfd *, symindex));
|
||||
|
||||
/* ECOFF has COFF sections, but the debugging information is stored in
|
||||
a completely different format. ECOFF targets use some of the
|
||||
@@ -122,9 +126,8 @@ static bfd *alpha_ecoff_get_elt_at_index PARAMS ((bfd *, symindex));
|
||||
|
||||
/* How to process the various reloc types. */
|
||||
|
||||
static bfd_reloc_status_type
|
||||
reloc_nil PARAMS ((bfd *, arelent *, asymbol *, PTR,
|
||||
asection *, bfd *, char **));
|
||||
static bfd_reloc_status_type reloc_nil
|
||||
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
|
||||
|
||||
static bfd_reloc_status_type
|
||||
reloc_nil (abfd, reloc, sym, data, sec, output_bfd, error_message)
|
||||
@@ -152,45 +155,45 @@ static reloc_howto_type alpha_howto_table[] =
|
||||
0, /* rightshift */
|
||||
0, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
8, /* bitsize */
|
||||
true, /* pc_relative */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
reloc_nil, /* special_function */
|
||||
"IGNORE", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
true), /* pcrel_offset */
|
||||
TRUE), /* pcrel_offset */
|
||||
|
||||
/* A 32 bit reference to a symbol. */
|
||||
HOWTO (ALPHA_R_REFLONG, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
32, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_bitfield, /* complain_on_overflow */
|
||||
0, /* special_function */
|
||||
"REFLONG", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0xffffffff, /* src_mask */
|
||||
0xffffffff, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* A 64 bit reference to a symbol. */
|
||||
HOWTO (ALPHA_R_REFQUAD, /* type */
|
||||
0, /* rightshift */
|
||||
4, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
64, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_bitfield, /* complain_on_overflow */
|
||||
0, /* special_function */
|
||||
"REFQUAD", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
MINUS_ONE, /* src_mask */
|
||||
MINUS_ONE, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* A 32 bit GP relative offset. This is just like REFLONG except
|
||||
that when the value is used the value of the gp register will be
|
||||
@@ -199,15 +202,15 @@ static reloc_howto_type alpha_howto_table[] =
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
32, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_bitfield, /* complain_on_overflow */
|
||||
0, /* special_function */
|
||||
"GPREL32", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0xffffffff, /* src_mask */
|
||||
0xffffffff, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* Used for an instruction that refers to memory off the GP
|
||||
register. The offset is 16 bits of the 32 bit instruction. This
|
||||
@@ -216,15 +219,15 @@ static reloc_howto_type alpha_howto_table[] =
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
0, /* special_function */
|
||||
"LITERAL", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0xffff, /* src_mask */
|
||||
0xffff, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* This reloc only appears immediately following a LITERAL reloc.
|
||||
It identifies a use of the literal. It seems that the linker can
|
||||
@@ -239,15 +242,15 @@ static reloc_howto_type alpha_howto_table[] =
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
32, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
reloc_nil, /* special_function */
|
||||
"LITUSE", /* name */
|
||||
false, /* partial_inplace */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* Load the gp register. This is always used for a ldah instruction
|
||||
which loads the upper 16 bits of the gp register. The next reloc
|
||||
@@ -264,15 +267,15 @@ static reloc_howto_type alpha_howto_table[] =
|
||||
16, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
true, /* pc_relative */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
reloc_nil, /* special_function */
|
||||
"GPDISP", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0xffff, /* src_mask */
|
||||
0xffff, /* dst_mask */
|
||||
true), /* pcrel_offset */
|
||||
TRUE), /* pcrel_offset */
|
||||
|
||||
/* A 21 bit branch. The native assembler generates these for
|
||||
branches within the text segment, and also fills in the PC
|
||||
@@ -281,90 +284,90 @@ static reloc_howto_type alpha_howto_table[] =
|
||||
2, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
21, /* bitsize */
|
||||
true, /* pc_relative */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
0, /* special_function */
|
||||
"BRADDR", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0x1fffff, /* src_mask */
|
||||
0x1fffff, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* A hint for a jump to a register. */
|
||||
HOWTO (ALPHA_R_HINT, /* type */
|
||||
2, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
14, /* bitsize */
|
||||
true, /* pc_relative */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
0, /* special_function */
|
||||
"HINT", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0x3fff, /* src_mask */
|
||||
0x3fff, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* 16 bit PC relative offset. */
|
||||
HOWTO (ALPHA_R_SREL16, /* type */
|
||||
0, /* rightshift */
|
||||
1, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
true, /* pc_relative */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
0, /* special_function */
|
||||
"SREL16", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0xffff, /* src_mask */
|
||||
0xffff, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* 32 bit PC relative offset. */
|
||||
HOWTO (ALPHA_R_SREL32, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
32, /* bitsize */
|
||||
true, /* pc_relative */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
0, /* special_function */
|
||||
"SREL32", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0xffffffff, /* src_mask */
|
||||
0xffffffff, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* A 64 bit PC relative offset. */
|
||||
HOWTO (ALPHA_R_SREL64, /* type */
|
||||
0, /* rightshift */
|
||||
4, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
64, /* bitsize */
|
||||
true, /* pc_relative */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
0, /* special_function */
|
||||
"SREL64", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
MINUS_ONE, /* src_mask */
|
||||
MINUS_ONE, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* Push a value on the reloc evaluation stack. */
|
||||
HOWTO (ALPHA_R_OP_PUSH, /* type */
|
||||
0, /* rightshift */
|
||||
0, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
0, /* special_function */
|
||||
"OP_PUSH", /* name */
|
||||
false, /* partial_inplace */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* Store the value from the stack at the given address. Store it in
|
||||
a bitfield of size r_size starting at bit position r_offset. */
|
||||
@@ -372,15 +375,15 @@ static reloc_howto_type alpha_howto_table[] =
|
||||
0, /* rightshift */
|
||||
4, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
64, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
0, /* special_function */
|
||||
"OP_STORE", /* name */
|
||||
false, /* partial_inplace */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
MINUS_ONE, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* Subtract the reloc address from the value on the top of the
|
||||
relocation stack. */
|
||||
@@ -388,15 +391,15 @@ static reloc_howto_type alpha_howto_table[] =
|
||||
0, /* rightshift */
|
||||
0, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
0, /* special_function */
|
||||
"OP_PSUB", /* name */
|
||||
false, /* partial_inplace */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* Shift the value on the top of the relocation stack right by the
|
||||
given value. */
|
||||
@@ -404,30 +407,30 @@ static reloc_howto_type alpha_howto_table[] =
|
||||
0, /* rightshift */
|
||||
0, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
0, /* special_function */
|
||||
"OP_PRSHIFT", /* name */
|
||||
false, /* partial_inplace */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* Adjust the GP value for a new range in the object file. */
|
||||
HOWTO (ALPHA_R_GPVALUE, /* type */
|
||||
0, /* rightshift */
|
||||
0, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
0, /* special_function */
|
||||
"GPVALUE", /* name */
|
||||
false, /* partial_inplace */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
false) /* pcrel_offset */
|
||||
FALSE) /* pcrel_offset */
|
||||
};
|
||||
|
||||
/* Recognize an Alpha ECOFF file. */
|
||||
@@ -471,7 +474,7 @@ alpha_ecoff_object_p (abfd)
|
||||
|
||||
/* See whether the magic number matches. */
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
alpha_ecoff_bad_format_hook (abfd, filehdr)
|
||||
bfd *abfd ATTRIBUTE_UNUSED;
|
||||
PTR filehdr;
|
||||
@@ -479,9 +482,9 @@ alpha_ecoff_bad_format_hook (abfd, filehdr)
|
||||
struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr;
|
||||
|
||||
if (ALPHA_ECOFF_BADMAG (*internal_f))
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* This is a hook called by coff_real_object_p to create any backend
|
||||
@@ -750,12 +753,12 @@ alpha_adjust_reloc_out (abfd, rel, intern)
|
||||
|
||||
static bfd_byte *
|
||||
alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
|
||||
data, relocateable, symbols)
|
||||
data, relocatable, symbols)
|
||||
bfd *abfd;
|
||||
struct bfd_link_info *link_info;
|
||||
struct bfd_link_order *link_order;
|
||||
bfd_byte *data;
|
||||
boolean relocateable;
|
||||
bfd_boolean relocatable;
|
||||
asymbol **symbols;
|
||||
{
|
||||
bfd *input_bfd = link_order->u.indirect.section->owner;
|
||||
@@ -763,9 +766,9 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
|
||||
long reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
|
||||
arelent **reloc_vector = NULL;
|
||||
long reloc_count;
|
||||
bfd *output_bfd = relocateable ? abfd : (bfd *) NULL;
|
||||
bfd *output_bfd = relocatable ? abfd : (bfd *) NULL;
|
||||
bfd_vma gp;
|
||||
boolean gp_undefined;
|
||||
bfd_boolean gp_undefined;
|
||||
bfd_vma stack[RELOC_STACKSIZE];
|
||||
int tos = 0;
|
||||
|
||||
@@ -781,7 +784,7 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
|
||||
|
||||
/* The section size is not going to change. */
|
||||
input_section->_cooked_size = input_section->_raw_size;
|
||||
input_section->reloc_done = true;
|
||||
input_section->reloc_done = TRUE;
|
||||
|
||||
reloc_count = bfd_canonicalize_reloc (input_bfd, input_section,
|
||||
reloc_vector, symbols);
|
||||
@@ -791,11 +794,11 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
|
||||
goto successful_return;
|
||||
|
||||
/* Get the GP value for the output BFD. */
|
||||
gp_undefined = false;
|
||||
gp_undefined = FALSE;
|
||||
gp = _bfd_get_gp_value (abfd);
|
||||
if (gp == 0)
|
||||
{
|
||||
if (relocateable)
|
||||
if (relocatable)
|
||||
{
|
||||
asection *sec;
|
||||
bfd_vma lo;
|
||||
@@ -819,11 +822,11 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
|
||||
{
|
||||
struct bfd_link_hash_entry *h;
|
||||
|
||||
h = bfd_link_hash_lookup (link_info->hash, "_gp", false, false,
|
||||
true);
|
||||
h = bfd_link_hash_lookup (link_info->hash, "_gp", FALSE, FALSE,
|
||||
TRUE);
|
||||
if (h == (struct bfd_link_hash_entry *) NULL
|
||||
|| h->type != bfd_link_hash_defined)
|
||||
gp_undefined = true;
|
||||
gp_undefined = TRUE;
|
||||
else
|
||||
{
|
||||
gp = (h->u.def.value
|
||||
@@ -855,7 +858,7 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
|
||||
case ALPHA_R_SREL16:
|
||||
case ALPHA_R_SREL32:
|
||||
case ALPHA_R_SREL64:
|
||||
if (relocateable
|
||||
if (relocatable
|
||||
&& ((*rel->sym_ptr_ptr)->flags & BSF_SECTION_SYM) == 0)
|
||||
{
|
||||
rel->address += input_section->output_offset;
|
||||
@@ -988,7 +991,7 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
|
||||
asymbol *symbol;
|
||||
bfd_vma relocation;
|
||||
|
||||
if (relocateable)
|
||||
if (relocatable)
|
||||
{
|
||||
rel->address += input_section->output_offset;
|
||||
break;
|
||||
@@ -1021,7 +1024,7 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
|
||||
bfd_vma val;
|
||||
int offset, size;
|
||||
|
||||
if (relocateable)
|
||||
if (relocatable)
|
||||
{
|
||||
rel->address += input_section->output_offset;
|
||||
break;
|
||||
@@ -1048,7 +1051,7 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
|
||||
asymbol *symbol;
|
||||
bfd_vma relocation;
|
||||
|
||||
if (relocateable)
|
||||
if (relocatable)
|
||||
{
|
||||
rel->address += input_section->output_offset;
|
||||
break;
|
||||
@@ -1081,7 +1084,7 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
|
||||
asymbol *symbol;
|
||||
bfd_vma relocation;
|
||||
|
||||
if (relocateable)
|
||||
if (relocatable)
|
||||
{
|
||||
rel->address += input_section->output_offset;
|
||||
break;
|
||||
@@ -1111,14 +1114,14 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
|
||||
case ALPHA_R_GPVALUE:
|
||||
/* I really don't know if this does the right thing. */
|
||||
gp = rel->addend;
|
||||
gp_undefined = false;
|
||||
gp_undefined = FALSE;
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
}
|
||||
|
||||
if (relocateable)
|
||||
if (relocatable)
|
||||
{
|
||||
asection *os = input_section->output_section;
|
||||
|
||||
@@ -1134,7 +1137,7 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
|
||||
case bfd_reloc_undefined:
|
||||
if (! ((*link_info->callbacks->undefined_symbol)
|
||||
(link_info, bfd_asymbol_name (*rel->sym_ptr_ptr),
|
||||
input_bfd, input_section, rel->address, true)))
|
||||
input_bfd, input_section, rel->address, TRUE)))
|
||||
goto error_return;
|
||||
break;
|
||||
case bfd_reloc_dangerous:
|
||||
@@ -1245,7 +1248,7 @@ alpha_bfd_reloc_type_lookup (abfd, code)
|
||||
}
|
||||
|
||||
/* A helper routine for alpha_relocate_section which converts an
|
||||
external reloc when generating relocateable output. Returns the
|
||||
external reloc when generating relocatable output. Returns the
|
||||
relocation amount. */
|
||||
|
||||
static bfd_vma
|
||||
@@ -1259,7 +1262,7 @@ alpha_convert_external_reloc (output_bfd, info, input_bfd, ext_rel, h)
|
||||
unsigned long r_symndx;
|
||||
bfd_vma relocation;
|
||||
|
||||
BFD_ASSERT (info->relocateable);
|
||||
BFD_ASSERT (info->relocatable);
|
||||
|
||||
if (h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak)
|
||||
@@ -1365,7 +1368,7 @@ alpha_convert_external_reloc (output_bfd, info, input_bfd, ext_rel, h)
|
||||
quite similar to get_relocated_section_contents. Perhaps they
|
||||
could be combined somehow. */
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
contents, external_relocs)
|
||||
bfd *output_bfd;
|
||||
@@ -1378,7 +1381,7 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
asection **symndx_to_section, *lita_sec;
|
||||
struct ecoff_link_hash_entry **sym_hashes;
|
||||
bfd_vma gp;
|
||||
boolean gp_undefined;
|
||||
bfd_boolean gp_undefined;
|
||||
bfd_vma stack[RELOC_STACKSIZE];
|
||||
int tos = 0;
|
||||
struct external_reloc *ext_rel;
|
||||
@@ -1394,7 +1397,7 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
amt = NUM_RELOC_SECTIONS * sizeof (asection *);
|
||||
symndx_to_section = (asection **) bfd_alloc (input_bfd, amt);
|
||||
if (!symndx_to_section)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
symndx_to_section[RELOC_SECTION_NONE] = NULL;
|
||||
symndx_to_section[RELOC_SECTION_TEXT] =
|
||||
@@ -1440,7 +1443,7 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
|
||||
lita_sec = symndx_to_section[RELOC_SECTION_LITA];
|
||||
gp = _bfd_get_gp_value (output_bfd);
|
||||
if (! info->relocateable && lita_sec != NULL)
|
||||
if (! info->relocatable && lita_sec != NULL)
|
||||
{
|
||||
struct ecoff_section_tdata *lita_sec_data;
|
||||
|
||||
@@ -1485,7 +1488,7 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
_("using multiple gp values"),
|
||||
(char *) NULL, output_bfd,
|
||||
(asection *) NULL, (bfd_vma) 0);
|
||||
ecoff_data (output_bfd)->issued_multiple_gp_warning = true;
|
||||
ecoff_data (output_bfd)->issued_multiple_gp_warning = TRUE;
|
||||
}
|
||||
if (lita_vma < gp - 0x8000)
|
||||
gp = lita_vma + lita_size - 0x8000;
|
||||
@@ -1515,9 +1518,9 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
int r_extern;
|
||||
int r_offset;
|
||||
int r_size;
|
||||
boolean relocatep;
|
||||
boolean adjust_addrp;
|
||||
boolean gp_usedp;
|
||||
bfd_boolean relocatep;
|
||||
bfd_boolean adjust_addrp;
|
||||
bfd_boolean gp_usedp;
|
||||
bfd_vma addend;
|
||||
|
||||
r_vaddr = H_GET_64 (input_bfd, ext_rel->r_vaddr);
|
||||
@@ -1532,9 +1535,9 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
r_size = ((ext_rel->r_bits[3] & RELOC_BITS3_SIZE_LITTLE)
|
||||
>> RELOC_BITS3_SIZE_SH_LITTLE);
|
||||
|
||||
relocatep = false;
|
||||
adjust_addrp = true;
|
||||
gp_usedp = false;
|
||||
relocatep = FALSE;
|
||||
adjust_addrp = TRUE;
|
||||
gp_usedp = FALSE;
|
||||
addend = 0;
|
||||
|
||||
switch (r_type)
|
||||
@@ -1549,16 +1552,16 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
not otherwise used for anything. For some reason, the
|
||||
address of the relocation does not appear to include the
|
||||
section VMA, unlike the other relocation types. */
|
||||
if (info->relocateable)
|
||||
if (info->relocatable)
|
||||
H_PUT_64 (input_bfd, input_section->output_offset + r_vaddr,
|
||||
ext_rel->r_vaddr);
|
||||
adjust_addrp = false;
|
||||
adjust_addrp = FALSE;
|
||||
break;
|
||||
|
||||
case ALPHA_R_REFLONG:
|
||||
case ALPHA_R_REFQUAD:
|
||||
case ALPHA_R_HINT:
|
||||
relocatep = true;
|
||||
relocatep = TRUE;
|
||||
break;
|
||||
|
||||
case ALPHA_R_BRADDR:
|
||||
@@ -1567,7 +1570,7 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
case ALPHA_R_SREL64:
|
||||
if (r_extern)
|
||||
addend += - (r_vaddr + 4);
|
||||
relocatep = true;
|
||||
relocatep = TRUE;
|
||||
break;
|
||||
|
||||
case ALPHA_R_GPREL32:
|
||||
@@ -1575,9 +1578,9 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
bit offset from the current GP value. We must adjust it
|
||||
by the different between the original GP value and the
|
||||
current GP value. */
|
||||
relocatep = true;
|
||||
relocatep = TRUE;
|
||||
addend = ecoff_data (input_bfd)->gp - gp;
|
||||
gp_usedp = true;
|
||||
gp_usedp = TRUE;
|
||||
break;
|
||||
|
||||
case ALPHA_R_LITERAL:
|
||||
@@ -1608,9 +1611,9 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
|| ((insn >> 26) & 0x3f) == 0x28);
|
||||
}
|
||||
|
||||
relocatep = true;
|
||||
relocatep = TRUE;
|
||||
addend = ecoff_data (input_bfd)->gp - gp;
|
||||
gp_usedp = true;
|
||||
gp_usedp = TRUE;
|
||||
break;
|
||||
|
||||
case ALPHA_R_LITUSE:
|
||||
@@ -1674,7 +1677,7 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
bfd_put_32 (input_bfd, (bfd_vma) insn2,
|
||||
contents + r_vaddr - input_section->vma + r_symndx);
|
||||
|
||||
gp_usedp = true;
|
||||
gp_usedp = TRUE;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1702,7 +1705,7 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
if (h == (struct ecoff_link_hash_entry *) NULL)
|
||||
abort ();
|
||||
|
||||
if (! info->relocateable)
|
||||
if (! info->relocatable)
|
||||
{
|
||||
if (h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak)
|
||||
@@ -1717,8 +1720,8 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
relocated. */
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, (bfd_vma) 0, true)))
|
||||
return false;
|
||||
input_section, (bfd_vma) 0, TRUE)))
|
||||
return FALSE;
|
||||
addend = 0;
|
||||
}
|
||||
}
|
||||
@@ -1734,7 +1737,7 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
if (! ((*info->callbacks->unattached_reloc)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, (bfd_vma) 0)))
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
addend = alpha_convert_external_reloc (output_bfd, info,
|
||||
@@ -1745,7 +1748,7 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
|
||||
addend += r_vaddr;
|
||||
|
||||
if (info->relocateable)
|
||||
if (info->relocatable)
|
||||
{
|
||||
/* Adjust r_vaddr by the addend. */
|
||||
H_PUT_64 (input_bfd, addend, ext_rel->r_vaddr);
|
||||
@@ -1774,14 +1777,14 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
}
|
||||
}
|
||||
|
||||
adjust_addrp = false;
|
||||
adjust_addrp = FALSE;
|
||||
break;
|
||||
|
||||
case ALPHA_R_OP_STORE:
|
||||
/* Store a value from the reloc stack into a bitfield. If
|
||||
we are generating relocateable output, all we do is
|
||||
we are generating relocatable output, all we do is
|
||||
adjust the address of the reloc. */
|
||||
if (! info->relocateable)
|
||||
if (! info->relocatable)
|
||||
{
|
||||
bfd_vma mask;
|
||||
bfd_vma val;
|
||||
@@ -1811,7 +1814,7 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
case ALPHA_R_GPVALUE:
|
||||
/* I really don't know if this does the right thing. */
|
||||
gp = ecoff_data (input_bfd)->gp + r_symndx;
|
||||
gp_undefined = false;
|
||||
gp_undefined = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1847,9 +1850,9 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
abort ();
|
||||
}
|
||||
|
||||
if (info->relocateable)
|
||||
if (info->relocatable)
|
||||
{
|
||||
/* We are generating relocateable output, and must
|
||||
/* We are generating relocatable output, and must
|
||||
convert the existing reloc. */
|
||||
if (r_extern)
|
||||
{
|
||||
@@ -1861,7 +1864,7 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
if (! ((*info->callbacks->unattached_reloc)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, r_vaddr - input_section->vma)))
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
relocation = alpha_convert_external_reloc (output_bfd,
|
||||
@@ -1918,8 +1921,8 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section,
|
||||
r_vaddr - input_section->vma, true)))
|
||||
return false;
|
||||
r_vaddr - input_section->vma, TRUE)))
|
||||
return FALSE;
|
||||
relocation = 0;
|
||||
}
|
||||
}
|
||||
@@ -1965,14 +1968,14 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
(info, name, alpha_howto_table[r_type].name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
r_vaddr - input_section->vma)))
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (info->relocateable && adjust_addrp)
|
||||
if (info->relocatable && adjust_addrp)
|
||||
{
|
||||
/* Change the address of the relocation. */
|
||||
H_PUT_64 (input_bfd,
|
||||
@@ -1988,24 +1991,24 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
if (! ((*info->callbacks->reloc_dangerous)
|
||||
(info, _("GP relative relocation used when GP not defined"),
|
||||
input_bfd, input_section, r_vaddr - input_section->vma)))
|
||||
return false;
|
||||
return FALSE;
|
||||
/* Only give the error once per link. */
|
||||
gp = 4;
|
||||
_bfd_set_gp_value (output_bfd, gp);
|
||||
gp_undefined = false;
|
||||
gp_undefined = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (tos != 0)
|
||||
abort ();
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Do final adjustments to the filehdr and the aouthdr. This routine
|
||||
sets the dynamic bits in the file header. */
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
alpha_adjust_headers (abfd, fhdr, ahdr)
|
||||
bfd *abfd;
|
||||
struct internal_filehdr *fhdr;
|
||||
@@ -2015,7 +2018,7 @@ alpha_adjust_headers (abfd, fhdr, ahdr)
|
||||
fhdr->f_flags |= F_ALPHA_CALL_SHARED;
|
||||
else if ((abfd->flags & DYNAMIC) != 0)
|
||||
fhdr->f_flags |= F_ALPHA_SHARABLE;
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Archive handling. In OSF/1 (or Digital Unix) v3.2, Digital
|
||||
@@ -2185,7 +2188,7 @@ alpha_ecoff_get_elt_at_filepos (archive, filepos)
|
||||
bim->size = size;
|
||||
bim->buffer = buf;
|
||||
|
||||
nbfd->mtime_set = true;
|
||||
nbfd->mtime_set = TRUE;
|
||||
nbfd->mtime = strtol (hdr->ar_date, (char **) NULL, 10);
|
||||
|
||||
nbfd->flags |= BFD_IN_MEMORY;
|
||||
@@ -2262,7 +2265,7 @@ static const struct ecoff_backend_data alpha_ecoff_backend_data =
|
||||
(unsigned (*) PARAMS ((bfd *,PTR,PTR))) bfd_void, /* reloc_out */
|
||||
alpha_ecoff_swap_filehdr_out, alpha_ecoff_swap_aouthdr_out,
|
||||
alpha_ecoff_swap_scnhdr_out,
|
||||
FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, true, false, 4, false, 2,
|
||||
FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, TRUE, FALSE, 4, FALSE, 2,
|
||||
alpha_ecoff_swap_filehdr_in, alpha_ecoff_swap_aouthdr_in,
|
||||
alpha_ecoff_swap_scnhdr_in, NULL,
|
||||
alpha_ecoff_bad_format_hook, _bfd_ecoff_set_arch_mach_hook,
|
||||
@@ -2278,10 +2281,10 @@ static const struct ecoff_backend_data alpha_ecoff_backend_data =
|
||||
/* The page boundary used to align sections in a demand-paged
|
||||
executable file. E.g., 0x1000. */
|
||||
0x2000,
|
||||
/* True if the .rdata section is part of the text segment, as on the
|
||||
Alpha. False if .rdata is part of the data segment, as on the
|
||||
/* TRUE if the .rdata section is part of the text segment, as on the
|
||||
Alpha. FALSE if .rdata is part of the data segment, as on the
|
||||
MIPS. */
|
||||
true,
|
||||
TRUE,
|
||||
/* Bitsize of constructor entries. */
|
||||
64,
|
||||
/* Reloc to use for constructor entries. */
|
||||
|
||||
+222
-205
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
/* BFD back-end for Apple M68K COFF A/UX 3.x files.
|
||||
Copyright 1996, 1997, 2000 Free Software Foundation, Inc.
|
||||
Copyright 1996, 1997, 2000, 2002 Free Software Foundation, Inc.
|
||||
Written by Richard Henderson <rth@tamu.edu>.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@@ -40,9 +40,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
#include "bfd.h"
|
||||
#include "sysdep.h"
|
||||
|
||||
static boolean coff_m68k_aux_link_add_one_symbol
|
||||
static bfd_boolean coff_m68k_aux_link_add_one_symbol
|
||||
PARAMS ((struct bfd_link_info *, bfd *, const char *, flagword,
|
||||
asection *, bfd_vma, const char *, boolean, boolean,
|
||||
asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
|
||||
struct bfd_link_hash_entry **));
|
||||
|
||||
#define coff_link_add_one_symbol coff_m68k_aux_link_add_one_symbol
|
||||
@@ -56,7 +56,7 @@ static boolean coff_m68k_aux_link_add_one_symbol
|
||||
shared libraries work here, but can work if you are careful with
|
||||
what you include in the shared object. */
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
coff_m68k_aux_link_add_one_symbol (info, abfd, name, flags, section, value,
|
||||
string, copy, collect, hashp)
|
||||
struct bfd_link_info *info;
|
||||
@@ -66,8 +66,8 @@ coff_m68k_aux_link_add_one_symbol (info, abfd, name, flags, section, value,
|
||||
asection *section;
|
||||
bfd_vma value;
|
||||
const char *string;
|
||||
boolean copy;
|
||||
boolean collect;
|
||||
bfd_boolean copy;
|
||||
bfd_boolean collect;
|
||||
struct bfd_link_hash_entry **hashp;
|
||||
{
|
||||
struct bfd_link_hash_entry *h;
|
||||
@@ -86,21 +86,21 @@ coff_m68k_aux_link_add_one_symbol (info, abfd, name, flags, section, value,
|
||||
}
|
||||
else
|
||||
{
|
||||
h = bfd_link_hash_lookup (info->hash, name, true, copy, false);
|
||||
h = bfd_link_hash_lookup (info->hash, name, TRUE, copy, FALSE);
|
||||
if (h == NULL)
|
||||
{
|
||||
if (hashp != NULL)
|
||||
*hashp = NULL;
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (info->notice_hash != (struct bfd_hash_table *) NULL
|
||||
&& (bfd_hash_lookup (info->notice_hash, name, false, false)
|
||||
&& (bfd_hash_lookup (info->notice_hash, name, FALSE, FALSE)
|
||||
!= (struct bfd_hash_entry *) NULL))
|
||||
{
|
||||
if (! (*info->callbacks->notice) (info, name, abfd, section, value))
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (hashp != (struct bfd_link_hash_entry **) NULL)
|
||||
@@ -121,10 +121,10 @@ coff_m68k_aux_link_add_one_symbol (info, abfd, name, flags, section, value,
|
||||
{
|
||||
h->u.def.section = section;
|
||||
h->u.def.value = value;
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
else if (bfd_is_abs_section (section) && !bfd_is_abs_section (msec))
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* BFD back-end for Intel 386 COFF files.
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
2000, 2001, 2002
|
||||
2000, 2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
Written by Cygnus Support.
|
||||
|
||||
@@ -56,7 +56,7 @@ static reloc_howto_type *coff_i386_reloc_type_lookup
|
||||
section for a reference to a common symbol is the value itself plus
|
||||
any desired offset. Ian Taylor, Cygnus Support. */
|
||||
|
||||
/* If we are producing relocateable output, we need to do some
|
||||
/* 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. */
|
||||
@@ -103,7 +103,7 @@ coff_i386_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
|
||||
{
|
||||
/* For some reason bfd_perform_relocation always effectively
|
||||
ignores the addend for a COFF target when producing
|
||||
relocateable output. This seems to be always wrong for 386
|
||||
relocatable output. This seems to be always wrong for 386
|
||||
COFF, so we handle the addend here instead. */
|
||||
#ifdef COFF_WITH_PE
|
||||
if (output_bfd == (bfd *) NULL)
|
||||
@@ -179,12 +179,12 @@ coff_i386_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
|
||||
}
|
||||
|
||||
#ifdef COFF_WITH_PE
|
||||
/* Return true if this relocation should appear in the output .reloc
|
||||
/* Return TRUE if this relocation should appear in the output .reloc
|
||||
section. */
|
||||
|
||||
static boolean in_reloc_p PARAMS ((bfd *, reloc_howto_type *));
|
||||
static bfd_boolean in_reloc_p PARAMS ((bfd *, reloc_howto_type *));
|
||||
|
||||
static boolean in_reloc_p (abfd, howto)
|
||||
static bfd_boolean in_reloc_p (abfd, howto)
|
||||
bfd * abfd ATTRIBUTE_UNUSED;
|
||||
reloc_howto_type *howto;
|
||||
{
|
||||
@@ -193,7 +193,7 @@ static boolean in_reloc_p (abfd, howto)
|
||||
#endif /* COFF_WITH_PE */
|
||||
|
||||
#ifndef PCRELOFFSET
|
||||
#define PCRELOFFSET false
|
||||
#define PCRELOFFSET FALSE
|
||||
#endif
|
||||
|
||||
static reloc_howto_type howto_table[] =
|
||||
@@ -208,29 +208,29 @@ static reloc_howto_type howto_table[] =
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
32, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_bitfield, /* complain_on_overflow */
|
||||
coff_i386_reloc, /* special_function */
|
||||
"dir32", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0xffffffff, /* src_mask */
|
||||
0xffffffff, /* dst_mask */
|
||||
true), /* pcrel_offset */
|
||||
TRUE), /* pcrel_offset */
|
||||
/* PE IMAGE_REL_I386_DIR32NB relocation (7). */
|
||||
HOWTO (R_IMAGEBASE, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
32, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_bitfield, /* complain_on_overflow */
|
||||
coff_i386_reloc, /* special_function */
|
||||
"rva32", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0xffffffff, /* src_mask */
|
||||
0xffffffff, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
EMPTY_HOWTO (010),
|
||||
EMPTY_HOWTO (011),
|
||||
EMPTY_HOWTO (012),
|
||||
@@ -243,12 +243,12 @@ static reloc_howto_type howto_table[] =
|
||||
0, /* rightshift */
|
||||
0, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
8, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_bitfield, /* complain_on_overflow */
|
||||
coff_i386_reloc, /* special_function */
|
||||
"8", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0x000000ff, /* src_mask */
|
||||
0x000000ff, /* dst_mask */
|
||||
PCRELOFFSET), /* pcrel_offset */
|
||||
@@ -257,12 +257,12 @@ static reloc_howto_type howto_table[] =
|
||||
0, /* rightshift */
|
||||
1, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_bitfield, /* complain_on_overflow */
|
||||
coff_i386_reloc, /* special_function */
|
||||
"16", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
PCRELOFFSET), /* pcrel_offset */
|
||||
@@ -271,12 +271,12 @@ static reloc_howto_type howto_table[] =
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
32, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_bitfield, /* complain_on_overflow */
|
||||
coff_i386_reloc, /* special_function */
|
||||
"32", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0xffffffff, /* src_mask */
|
||||
0xffffffff, /* dst_mask */
|
||||
PCRELOFFSET), /* pcrel_offset */
|
||||
@@ -285,12 +285,12 @@ static reloc_howto_type howto_table[] =
|
||||
0, /* rightshift */
|
||||
0, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
8, /* bitsize */
|
||||
true, /* pc_relative */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
coff_i386_reloc, /* special_function */
|
||||
"DISP8", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0x000000ff, /* src_mask */
|
||||
0x000000ff, /* dst_mask */
|
||||
PCRELOFFSET), /* pcrel_offset */
|
||||
@@ -299,12 +299,12 @@ static reloc_howto_type howto_table[] =
|
||||
0, /* rightshift */
|
||||
1, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
true, /* pc_relative */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
coff_i386_reloc, /* special_function */
|
||||
"DISP16", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
PCRELOFFSET), /* pcrel_offset */
|
||||
@@ -313,12 +313,12 @@ static reloc_howto_type howto_table[] =
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
32, /* bitsize */
|
||||
true, /* pc_relative */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
coff_i386_reloc, /* special_function */
|
||||
"DISP32", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0xffffffff, /* src_mask */
|
||||
0xffffffff, /* dst_mask */
|
||||
PCRELOFFSET) /* pcrel_offset */
|
||||
@@ -386,13 +386,13 @@ static reloc_howto_type howto_table[] =
|
||||
|
||||
/* The PE relocate section routine. The only difference between this
|
||||
and the regular routine is that we don't want to do anything for a
|
||||
relocateable link. */
|
||||
relocatable link. */
|
||||
|
||||
static boolean coff_pe_i386_relocate_section
|
||||
static bfd_boolean coff_pe_i386_relocate_section
|
||||
PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
|
||||
struct internal_reloc *, struct internal_syment *, asection **));
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
coff_pe_i386_relocate_section (output_bfd, info, input_bfd,
|
||||
input_section, contents, relocs, syms,
|
||||
sections)
|
||||
@@ -405,8 +405,8 @@ coff_pe_i386_relocate_section (output_bfd, info, input_bfd,
|
||||
struct internal_syment *syms;
|
||||
asection **sections;
|
||||
{
|
||||
if (info->relocateable)
|
||||
return true;
|
||||
if (info->relocatable)
|
||||
return TRUE;
|
||||
|
||||
return _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
|
||||
input_section, contents,
|
||||
@@ -470,7 +470,7 @@ coff_i386_rtype_to_howto (abfd, sec, rel, h, sym, addendp)
|
||||
|
||||
#ifndef COFF_WITH_PE
|
||||
/* If the output symbol is common (in which case this must be a
|
||||
relocateable link), we need to add in the final size of the
|
||||
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;
|
||||
@@ -539,15 +539,16 @@ coff_i386_reloc_type_lookup (abfd, code)
|
||||
a leading dot for local labels, so if TARGET_UNDERSCORE is defined
|
||||
we treat all symbols starting with L as local. */
|
||||
|
||||
static boolean coff_i386_is_local_label_name PARAMS ((bfd *, const char *));
|
||||
static bfd_boolean coff_i386_is_local_label_name
|
||||
PARAMS ((bfd *, const char *));
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
coff_i386_is_local_label_name (abfd, name)
|
||||
bfd *abfd;
|
||||
const char *name;
|
||||
{
|
||||
if (name[0] == 'L')
|
||||
return true;
|
||||
return TRUE;
|
||||
|
||||
return _bfd_coff_is_local_label_name (abfd, name);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* BFD back-end for HP/Intel IA-64 COFF files.
|
||||
Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
Contributed by David Mosberger <davidm@hpl.hp.com>
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@@ -49,17 +49,17 @@ static reloc_howto_type howto_table[] =
|
||||
(cache_ptr)->howto = howto_table + (dst)->r_type;
|
||||
|
||||
#ifdef COFF_WITH_PE
|
||||
/* Return true if this relocation should
|
||||
/* Return TRUE if this relocation should
|
||||
appear in the output .reloc section. */
|
||||
|
||||
static boolean in_reloc_p PARAMS ((bfd *, reloc_howto_type *));
|
||||
static bfd_boolean in_reloc_p PARAMS ((bfd *, reloc_howto_type *));
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
in_reloc_p(abfd, howto)
|
||||
bfd * abfd ATTRIBUTE_UNUSED;
|
||||
reloc_howto_type *howto ATTRIBUTE_UNUSED;
|
||||
{
|
||||
return 0; /* We don't do relocs for now... */
|
||||
return FALSE; /* We don't do relocs for now... */
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
+399
-473
File diff suppressed because it is too large
Load Diff
+996
-967
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
/* BFD back-end for Sparc COFF files.
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2001
|
||||
Free Software Foundation, Inc.
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2001,
|
||||
2002, 2003 Free Software Foundation, Inc.
|
||||
Written by Cygnus Support.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@@ -103,30 +103,30 @@ bfd_coff_generic_reloc (abfd, reloc_entry, symbol, data, input_section,
|
||||
|
||||
static reloc_howto_type coff_sparc_howto_table[] =
|
||||
{
|
||||
HOWTO(R_SPARC_NONE, 0,0, 0,false,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_NONE", false,0,0x00000000,true),
|
||||
HOWTO(R_SPARC_8, 0,0, 8,false,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_8", false,0,0x000000ff,true),
|
||||
HOWTO(R_SPARC_16, 0,1,16,false,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_16", false,0,0x0000ffff,true),
|
||||
HOWTO(R_SPARC_32, 0,2,32,false,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_32", false,0,0xffffffff,true),
|
||||
HOWTO(R_SPARC_DISP8, 0,0, 8,true, 0,complain_overflow_signed, bfd_coff_generic_reloc,"R_SPARC_DISP8", false,0,0x000000ff,true),
|
||||
HOWTO(R_SPARC_DISP16, 0,1,16,true, 0,complain_overflow_signed, bfd_coff_generic_reloc,"R_SPARC_DISP16", false,0,0x0000ffff,true),
|
||||
HOWTO(R_SPARC_DISP32, 0,2,32,true, 0,complain_overflow_signed, bfd_coff_generic_reloc,"R_SPARC_DISP32", false,0,0x00ffffff,true),
|
||||
HOWTO(R_SPARC_WDISP30, 2,2,30,true, 0,complain_overflow_signed, bfd_coff_generic_reloc,"R_SPARC_WDISP30", false,0,0x3fffffff,true),
|
||||
HOWTO(R_SPARC_WDISP22, 2,2,22,true, 0,complain_overflow_signed, bfd_coff_generic_reloc,"R_SPARC_WDISP22", false,0,0x003fffff,true),
|
||||
HOWTO(R_SPARC_HI22, 10,2,22,false,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_HI22", false,0,0x003fffff,true),
|
||||
HOWTO(R_SPARC_22, 0,2,22,false,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_22", false,0,0x003fffff,true),
|
||||
HOWTO(R_SPARC_13, 0,2,13,false,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_13", false,0,0x00001fff,true),
|
||||
HOWTO(R_SPARC_LO10, 0,2,10,false,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_LO10", false,0,0x000003ff,true),
|
||||
HOWTO(R_SPARC_GOT10, 0,2,10,false,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_GOT10", false,0,0x000003ff,true),
|
||||
HOWTO(R_SPARC_GOT13, 0,2,13,false,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_GOT13", false,0,0x00001fff,true),
|
||||
HOWTO(R_SPARC_GOT22, 10,2,22,false,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_GOT22", false,0,0x003fffff,true),
|
||||
HOWTO(R_SPARC_PC10, 0,2,10,false,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_PC10", false,0,0x000003ff,true),
|
||||
HOWTO(R_SPARC_PC22, 0,2,22,false,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_PC22", false,0,0x003fffff,true),
|
||||
HOWTO(R_SPARC_WPLT30, 0,0,00,false,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_WPLT30", false,0,0x00000000,true),
|
||||
HOWTO(R_SPARC_COPY, 0,0,00,false,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_COPY", false,0,0x00000000,true),
|
||||
HOWTO(R_SPARC_GLOB_DAT,0,0,00,false,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_GLOB_DAT",false,0,0x00000000,true),
|
||||
HOWTO(R_SPARC_JMP_SLOT,0,0,00,false,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_JMP_SLOT",false,0,0x00000000,true),
|
||||
HOWTO(R_SPARC_RELATIVE,0,0,00,false,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_RELATIVE",false,0,0x00000000,true),
|
||||
HOWTO(R_SPARC_UA32, 0,0,00,false,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_UA32", false,0,0x00000000,true),
|
||||
HOWTO(R_SPARC_NONE, 0,0, 0,FALSE,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_NONE", FALSE,0,0x00000000,TRUE),
|
||||
HOWTO(R_SPARC_8, 0,0, 8,FALSE,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_8", FALSE,0,0x000000ff,TRUE),
|
||||
HOWTO(R_SPARC_16, 0,1,16,FALSE,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_16", FALSE,0,0x0000ffff,TRUE),
|
||||
HOWTO(R_SPARC_32, 0,2,32,FALSE,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_32", FALSE,0,0xffffffff,TRUE),
|
||||
HOWTO(R_SPARC_DISP8, 0,0, 8,TRUE, 0,complain_overflow_signed, bfd_coff_generic_reloc,"R_SPARC_DISP8", FALSE,0,0x000000ff,TRUE),
|
||||
HOWTO(R_SPARC_DISP16, 0,1,16,TRUE, 0,complain_overflow_signed, bfd_coff_generic_reloc,"R_SPARC_DISP16", FALSE,0,0x0000ffff,TRUE),
|
||||
HOWTO(R_SPARC_DISP32, 0,2,32,TRUE, 0,complain_overflow_signed, bfd_coff_generic_reloc,"R_SPARC_DISP32", FALSE,0,0x00ffffff,TRUE),
|
||||
HOWTO(R_SPARC_WDISP30, 2,2,30,TRUE, 0,complain_overflow_signed, bfd_coff_generic_reloc,"R_SPARC_WDISP30", FALSE,0,0x3fffffff,TRUE),
|
||||
HOWTO(R_SPARC_WDISP22, 2,2,22,TRUE, 0,complain_overflow_signed, bfd_coff_generic_reloc,"R_SPARC_WDISP22", FALSE,0,0x003fffff,TRUE),
|
||||
HOWTO(R_SPARC_HI22, 10,2,22,FALSE,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_HI22", FALSE,0,0x003fffff,TRUE),
|
||||
HOWTO(R_SPARC_22, 0,2,22,FALSE,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_22", FALSE,0,0x003fffff,TRUE),
|
||||
HOWTO(R_SPARC_13, 0,2,13,FALSE,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_13", FALSE,0,0x00001fff,TRUE),
|
||||
HOWTO(R_SPARC_LO10, 0,2,10,FALSE,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_LO10", FALSE,0,0x000003ff,TRUE),
|
||||
HOWTO(R_SPARC_GOT10, 0,2,10,FALSE,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_GOT10", FALSE,0,0x000003ff,TRUE),
|
||||
HOWTO(R_SPARC_GOT13, 0,2,13,FALSE,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_GOT13", FALSE,0,0x00001fff,TRUE),
|
||||
HOWTO(R_SPARC_GOT22, 10,2,22,FALSE,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_GOT22", FALSE,0,0x003fffff,TRUE),
|
||||
HOWTO(R_SPARC_PC10, 0,2,10,FALSE,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_PC10", FALSE,0,0x000003ff,TRUE),
|
||||
HOWTO(R_SPARC_PC22, 0,2,22,FALSE,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_PC22", FALSE,0,0x003fffff,TRUE),
|
||||
HOWTO(R_SPARC_WPLT30, 0,0,00,FALSE,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_WPLT30", FALSE,0,0x00000000,TRUE),
|
||||
HOWTO(R_SPARC_COPY, 0,0,00,FALSE,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_COPY", FALSE,0,0x00000000,TRUE),
|
||||
HOWTO(R_SPARC_GLOB_DAT,0,0,00,FALSE,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_GLOB_DAT",FALSE,0,0x00000000,TRUE),
|
||||
HOWTO(R_SPARC_JMP_SLOT,0,0,00,FALSE,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_JMP_SLOT",FALSE,0,0x00000000,TRUE),
|
||||
HOWTO(R_SPARC_RELATIVE,0,0,00,FALSE,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_RELATIVE",FALSE,0,0x00000000,TRUE),
|
||||
HOWTO(R_SPARC_UA32, 0,0,00,FALSE,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_UA32", FALSE,0,0x00000000,TRUE),
|
||||
};
|
||||
|
||||
struct coff_reloc_map {
|
||||
@@ -216,4 +216,4 @@ rtype2howto (cache_ptr, dst)
|
||||
#define TARGET_NAME "coff-sparc"
|
||||
#endif
|
||||
|
||||
CREATE_BIG_COFF_TARGET_VEC (TARGET_SYM, TARGET_NAME, D_PAGED, 0, '_', NULL)
|
||||
CREATE_BIG_COFF_TARGET_VEC (TARGET_SYM, TARGET_NAME, D_PAGED, 0, '_', NULL, COFF_SWAP_TABLE)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+658
-433
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
/* Support for the generic parts of COFF, for BFD.
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
2000, 2001, 2002
|
||||
2000, 2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
Written by Cygnus Support.
|
||||
|
||||
@@ -46,19 +46,19 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
static void coff_fix_symbol_name
|
||||
PARAMS ((bfd *, asymbol *, combined_entry_type *, bfd_size_type *,
|
||||
asection **, bfd_size_type *));
|
||||
static boolean coff_write_symbol
|
||||
static bfd_boolean coff_write_symbol
|
||||
PARAMS ((bfd *, asymbol *, combined_entry_type *, bfd_vma *,
|
||||
bfd_size_type *, asection **, bfd_size_type *));
|
||||
static boolean coff_write_alien_symbol
|
||||
static bfd_boolean coff_write_alien_symbol
|
||||
PARAMS ((bfd *, asymbol *, bfd_vma *, bfd_size_type *,
|
||||
asection **, bfd_size_type *));
|
||||
static boolean coff_write_native_symbol
|
||||
static bfd_boolean coff_write_native_symbol
|
||||
PARAMS ((bfd *, coff_symbol_type *, bfd_vma *, bfd_size_type *,
|
||||
asection **, bfd_size_type *));
|
||||
static void coff_pointerize_aux
|
||||
PARAMS ((bfd *, combined_entry_type *, combined_entry_type *,
|
||||
unsigned int, combined_entry_type *));
|
||||
static boolean make_a_section_from_file
|
||||
static bfd_boolean make_a_section_from_file
|
||||
PARAMS ((bfd *, struct internal_scnhdr *, unsigned int));
|
||||
static const bfd_target *coff_real_object_p
|
||||
PARAMS ((bfd *, unsigned, struct internal_filehdr *,
|
||||
@@ -74,7 +74,7 @@ static char *copy_name
|
||||
|
||||
/* Take a section header read from a coff file (in HOST byte order),
|
||||
and make a BFD "section" out of it. This is used by ECOFF. */
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
make_a_section_from_file (abfd, hdr, target_index)
|
||||
bfd *abfd;
|
||||
struct internal_scnhdr *hdr;
|
||||
@@ -82,7 +82,7 @@ make_a_section_from_file (abfd, hdr, target_index)
|
||||
{
|
||||
asection *return_section;
|
||||
char *name;
|
||||
boolean result = true;
|
||||
bfd_boolean result = TRUE;
|
||||
flagword flags;
|
||||
|
||||
name = NULL;
|
||||
@@ -103,14 +103,14 @@ make_a_section_from_file (abfd, hdr, target_index)
|
||||
{
|
||||
strings = _bfd_coff_read_string_table (abfd);
|
||||
if (strings == NULL)
|
||||
return false;
|
||||
return FALSE;
|
||||
/* FIXME: For extra safety, we should make sure that
|
||||
strindex does not run us past the end, but right now we
|
||||
don't know the length of the string table. */
|
||||
strings += strindex;
|
||||
name = bfd_alloc (abfd, (bfd_size_type) strlen (strings) + 1);
|
||||
if (name == NULL)
|
||||
return false;
|
||||
return FALSE;
|
||||
strcpy (name, strings);
|
||||
}
|
||||
}
|
||||
@@ -120,14 +120,14 @@ make_a_section_from_file (abfd, hdr, target_index)
|
||||
/* Assorted wastage to null-terminate the name, thanks AT&T! */
|
||||
name = bfd_alloc (abfd, (bfd_size_type) sizeof (hdr->s_name) + 1);
|
||||
if (name == NULL)
|
||||
return false;
|
||||
return FALSE;
|
||||
strncpy (name, (char *) &hdr->s_name[0], sizeof (hdr->s_name));
|
||||
name[sizeof (hdr->s_name)] = 0;
|
||||
}
|
||||
|
||||
return_section = bfd_make_section_anyway (abfd, name);
|
||||
if (return_section == NULL)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
return_section->vma = hdr->s_vaddr;
|
||||
return_section->lma = hdr->s_paddr;
|
||||
@@ -147,7 +147,7 @@ make_a_section_from_file (abfd, hdr, target_index)
|
||||
|
||||
if (! bfd_coff_styp_to_sec_flags_hook (abfd, hdr, name, return_section,
|
||||
& flags))
|
||||
result = false;
|
||||
result = FALSE;
|
||||
|
||||
return_section->flags = flags;
|
||||
|
||||
@@ -226,7 +226,7 @@ coff_real_object_p (abfd, nscns, internal_f, internal_a)
|
||||
if (! bfd_coff_set_arch_mach_hook (abfd, (PTR) internal_f))
|
||||
goto fail;
|
||||
|
||||
/* Now copy data as required; construct all asections etc */
|
||||
/* Now copy data as required; construct all asections etc. */
|
||||
if (nscns != 0)
|
||||
{
|
||||
unsigned int i;
|
||||
@@ -241,8 +241,6 @@ coff_real_object_p (abfd, nscns, internal_f, internal_a)
|
||||
}
|
||||
}
|
||||
|
||||
/* make_abs_section (abfd); */
|
||||
|
||||
return abfd->xvec;
|
||||
|
||||
fail:
|
||||
@@ -331,7 +329,7 @@ coff_section_from_bfd_index (abfd, index)
|
||||
bfd *abfd;
|
||||
int index;
|
||||
{
|
||||
struct sec *answer = abfd->sections;
|
||||
struct bfd_section *answer = abfd->sections;
|
||||
|
||||
if (index == N_ABS)
|
||||
return bfd_abs_section_ptr;
|
||||
@@ -367,7 +365,7 @@ coff_get_symtab_upper_bound (abfd)
|
||||
/* Canonicalize a COFF symbol table. */
|
||||
|
||||
long
|
||||
coff_get_symtab (abfd, alocation)
|
||||
coff_canonicalize_symtab (abfd, alocation)
|
||||
bfd *abfd;
|
||||
asymbol **alocation;
|
||||
{
|
||||
@@ -423,12 +421,12 @@ _bfd_coff_internal_syment_name (abfd, sym, buf)
|
||||
}
|
||||
|
||||
/* Read in and swap the relocs. This returns a buffer holding the
|
||||
relocs for section SEC in file ABFD. If CACHE is true and
|
||||
relocs for section SEC in file ABFD. If CACHE is TRUE and
|
||||
INTERNAL_RELOCS is NULL, the relocs read in will be saved in case
|
||||
the function is called again. If EXTERNAL_RELOCS is not NULL, it
|
||||
is a buffer large enough to hold the unswapped relocs. If
|
||||
INTERNAL_RELOCS is not NULL, it is a buffer large enough to hold
|
||||
the swapped relocs. If REQUIRE_INTERNAL is true, then the return
|
||||
the swapped relocs. If REQUIRE_INTERNAL is TRUE, then the return
|
||||
value must be INTERNAL_RELOCS. The function returns NULL on error. */
|
||||
|
||||
struct internal_reloc *
|
||||
@@ -436,9 +434,9 @@ _bfd_coff_read_internal_relocs (abfd, sec, cache, external_relocs,
|
||||
require_internal, internal_relocs)
|
||||
bfd *abfd;
|
||||
asection *sec;
|
||||
boolean cache;
|
||||
bfd_boolean cache;
|
||||
bfd_byte *external_relocs;
|
||||
boolean require_internal;
|
||||
bfd_boolean require_internal;
|
||||
struct internal_reloc *internal_relocs;
|
||||
{
|
||||
bfd_size_type relsz;
|
||||
@@ -565,7 +563,7 @@ coff_count_linenumbers (abfd)
|
||||
do
|
||||
{
|
||||
asection * sec = q->symbol.section->output_section;
|
||||
|
||||
|
||||
/* Do not try to update fields in read-only sections. */
|
||||
if (! bfd_is_const_section (sec))
|
||||
sec->lineno_count ++;
|
||||
@@ -656,7 +654,7 @@ fixup_symbol_value (abfd, coff_symbol_ptr, syment)
|
||||
chain, and that the last one points to the first external symbol. We
|
||||
do that here too. */
|
||||
|
||||
boolean
|
||||
bfd_boolean
|
||||
coff_renumber_symbols (bfd_ptr, first_undef)
|
||||
bfd *bfd_ptr;
|
||||
int *first_undef;
|
||||
@@ -685,7 +683,7 @@ coff_renumber_symbols (bfd_ptr, first_undef)
|
||||
amt = sizeof (asymbol *) * ((bfd_size_type) symbol_count + 1);
|
||||
newsyms = (asymbol **) bfd_alloc (bfd_ptr, amt);
|
||||
if (!newsyms)
|
||||
return false;
|
||||
return FALSE;
|
||||
bfd_ptr->outsymbols = newsyms;
|
||||
for (i = 0; i < symbol_count; i++)
|
||||
if ((symbol_ptr_ptr[i]->flags & BSF_NOT_AT_END) != 0
|
||||
@@ -748,7 +746,7 @@ coff_renumber_symbols (bfd_ptr, first_undef)
|
||||
}
|
||||
obj_conv_table_size (bfd_ptr) = native_index;
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Run thorough the symbol table again, and fix it so that all
|
||||
@@ -943,7 +941,7 @@ coff_fix_symbol_name (abfd, symbol, native, string_size_p,
|
||||
|
||||
/* Write a symbol out to a COFF file. */
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
coff_write_symbol (abfd, symbol, native, written, string_size_p,
|
||||
debug_string_section_p, debug_string_size_p)
|
||||
bfd *abfd;
|
||||
@@ -988,10 +986,10 @@ coff_write_symbol (abfd, symbol, native, written, string_size_p,
|
||||
symesz = bfd_coff_symesz (abfd);
|
||||
buf = bfd_alloc (abfd, symesz);
|
||||
if (!buf)
|
||||
return false;
|
||||
return FALSE;
|
||||
bfd_coff_swap_sym_out (abfd, &native->u.syment, buf);
|
||||
if (bfd_bwrite (buf, symesz, abfd) != symesz)
|
||||
return false;
|
||||
return FALSE;
|
||||
bfd_release (abfd, buf);
|
||||
|
||||
if (native->u.syment.n_numaux > 0)
|
||||
@@ -1002,7 +1000,7 @@ coff_write_symbol (abfd, symbol, native, written, string_size_p,
|
||||
auxesz = bfd_coff_auxesz (abfd);
|
||||
buf = bfd_alloc (abfd, auxesz);
|
||||
if (!buf)
|
||||
return false;
|
||||
return FALSE;
|
||||
for (j = 0; j < native->u.syment.n_numaux; j++)
|
||||
{
|
||||
bfd_coff_swap_aux_out (abfd,
|
||||
@@ -1013,7 +1011,7 @@ coff_write_symbol (abfd, symbol, native, written, string_size_p,
|
||||
native->u.syment.n_numaux,
|
||||
buf);
|
||||
if (bfd_bwrite (buf, auxesz, abfd) != auxesz)
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
bfd_release (abfd, buf);
|
||||
}
|
||||
@@ -1022,14 +1020,14 @@ coff_write_symbol (abfd, symbol, native, written, string_size_p,
|
||||
set_index (symbol, *written);
|
||||
|
||||
*written += numaux + 1;
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Write out a symbol to a COFF file that does not come from a COFF
|
||||
file originally. This symbol may have been created by the linker,
|
||||
or we may be linking a non COFF file to a COFF file. */
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
coff_write_alien_symbol (abfd, symbol, written, string_size_p,
|
||||
debug_string_section_p, debug_string_size_p)
|
||||
bfd *abfd;
|
||||
@@ -1062,7 +1060,7 @@ coff_write_alien_symbol (abfd, symbol, written, string_size_p,
|
||||
format. So, we just ignore them. We must clobber the symbol
|
||||
name to keep it from being put in the string table. */
|
||||
symbol->name = "";
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1097,7 +1095,7 @@ coff_write_alien_symbol (abfd, symbol, written, string_size_p,
|
||||
|
||||
/* Write a native symbol to a COFF file. */
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
coff_write_native_symbol (abfd, symbol, written, string_size_p,
|
||||
debug_string_section_p, debug_string_size_p)
|
||||
bfd *abfd;
|
||||
@@ -1153,7 +1151,7 @@ coff_write_native_symbol (abfd, symbol, written, string_size_p,
|
||||
#endif
|
||||
count++;
|
||||
}
|
||||
symbol->done_lineno = true;
|
||||
symbol->done_lineno = TRUE;
|
||||
|
||||
if (! bfd_is_const_section (symbol->symbol.section->output_section))
|
||||
symbol->symbol.section->output_section->moving_line_filepos +=
|
||||
@@ -1167,7 +1165,7 @@ coff_write_native_symbol (abfd, symbol, written, string_size_p,
|
||||
|
||||
/* Write out the COFF symbols. */
|
||||
|
||||
boolean
|
||||
bfd_boolean
|
||||
coff_write_symbols (abfd)
|
||||
bfd *abfd;
|
||||
{
|
||||
@@ -1203,7 +1201,7 @@ coff_write_symbols (abfd)
|
||||
|
||||
/* Seek to the right place */
|
||||
if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
/* Output all the symbols we have */
|
||||
|
||||
@@ -1219,14 +1217,14 @@ coff_write_symbols (abfd)
|
||||
if (!coff_write_alien_symbol (abfd, symbol, &written, &string_size,
|
||||
&debug_string_section,
|
||||
&debug_string_size))
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!coff_write_native_symbol (abfd, c_symbol, &written,
|
||||
&string_size, &debug_string_section,
|
||||
&debug_string_size))
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1246,7 +1244,7 @@ coff_write_symbols (abfd)
|
||||
#endif
|
||||
if (bfd_bwrite ((PTR) buffer, (bfd_size_type) sizeof (buffer), abfd)
|
||||
!= sizeof (buffer))
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
/* Handle long section names. This code must handle section
|
||||
names just as they are handled in coff_write_object_contents. */
|
||||
@@ -1263,7 +1261,7 @@ coff_write_symbols (abfd)
|
||||
{
|
||||
if (bfd_bwrite (o->name, (bfd_size_type) (len + 1), abfd)
|
||||
!= len + 1)
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1304,7 +1302,7 @@ coff_write_symbols (abfd)
|
||||
if (bfd_coff_force_symnames_in_strings (abfd))
|
||||
{
|
||||
if (bfd_bwrite (".file", (bfd_size_type) 6, abfd) != 6)
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
maxlen = bfd_coff_filnmlen (abfd);
|
||||
}
|
||||
@@ -1315,7 +1313,7 @@ coff_write_symbols (abfd)
|
||||
{
|
||||
if (bfd_bwrite ((PTR) (q->name), (bfd_size_type) name_length + 1,
|
||||
abfd) != name_length + 1)
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1334,7 +1332,7 @@ coff_write_symbols (abfd)
|
||||
#endif
|
||||
if (bfd_bwrite ((PTR) buffer, (bfd_size_type) STRING_SIZE_SIZE, abfd)
|
||||
!= STRING_SIZE_SIZE)
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Make sure the .debug section was created to be the correct size.
|
||||
@@ -1348,10 +1346,10 @@ coff_write_symbols (abfd)
|
||||
1 << debug_string_section->alignment_power)
|
||||
== bfd_section_size (abfd, debug_string_section))));
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
boolean
|
||||
bfd_boolean
|
||||
coff_write_linenumbers (abfd)
|
||||
bfd *abfd;
|
||||
{
|
||||
@@ -1362,14 +1360,14 @@ coff_write_linenumbers (abfd)
|
||||
linesz = bfd_coff_linesz (abfd);
|
||||
buff = bfd_alloc (abfd, linesz);
|
||||
if (!buff)
|
||||
return false;
|
||||
return FALSE;
|
||||
for (s = abfd->sections; s != (asection *) NULL; s = s->next)
|
||||
{
|
||||
if (s->lineno_count)
|
||||
{
|
||||
asymbol **q = abfd->outsymbols;
|
||||
if (bfd_seek (abfd, s->line_filepos, SEEK_SET) != 0)
|
||||
return false;
|
||||
return FALSE;
|
||||
/* Find all the linenumbers in this section */
|
||||
while (*q)
|
||||
{
|
||||
@@ -1389,7 +1387,7 @@ coff_write_linenumbers (abfd)
|
||||
bfd_coff_swap_lineno_out (abfd, &out, buff);
|
||||
if (bfd_bwrite (buff, (bfd_size_type) linesz, abfd)
|
||||
!= linesz)
|
||||
return false;
|
||||
return FALSE;
|
||||
l++;
|
||||
while (l->line_number)
|
||||
{
|
||||
@@ -1398,7 +1396,7 @@ coff_write_linenumbers (abfd)
|
||||
bfd_coff_swap_lineno_out (abfd, &out, buff);
|
||||
if (bfd_bwrite (buff, (bfd_size_type) linesz, abfd)
|
||||
!= linesz)
|
||||
return false;
|
||||
return FALSE;
|
||||
l++;
|
||||
}
|
||||
}
|
||||
@@ -1408,7 +1406,7 @@ coff_write_linenumbers (abfd)
|
||||
}
|
||||
}
|
||||
bfd_release (abfd, buff);
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
alent *
|
||||
@@ -1585,7 +1583,7 @@ copy_name (abfd, name, maxlen)
|
||||
|
||||
/* Read in the external symbols. */
|
||||
|
||||
boolean
|
||||
bfd_boolean
|
||||
_bfd_coff_get_external_symbols (abfd)
|
||||
bfd *abfd;
|
||||
{
|
||||
@@ -1594,7 +1592,7 @@ _bfd_coff_get_external_symbols (abfd)
|
||||
PTR syms;
|
||||
|
||||
if (obj_coff_external_syms (abfd) != NULL)
|
||||
return true;
|
||||
return TRUE;
|
||||
|
||||
symesz = bfd_coff_symesz (abfd);
|
||||
|
||||
@@ -1602,19 +1600,19 @@ _bfd_coff_get_external_symbols (abfd)
|
||||
|
||||
syms = (PTR) bfd_malloc (size);
|
||||
if (syms == NULL && size != 0)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0
|
||||
|| bfd_bread (syms, size, abfd) != size)
|
||||
{
|
||||
if (syms != NULL)
|
||||
free (syms);
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
obj_coff_external_syms (abfd) = syms;
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Read in the external strings. The strings are not loaded until
|
||||
@@ -1689,7 +1687,7 @@ _bfd_coff_read_string_table (abfd)
|
||||
|
||||
/* Free up the external symbols and strings read from a COFF file. */
|
||||
|
||||
boolean
|
||||
bfd_boolean
|
||||
_bfd_coff_free_symbols (abfd)
|
||||
bfd *abfd;
|
||||
{
|
||||
@@ -1705,7 +1703,7 @@ _bfd_coff_free_symbols (abfd)
|
||||
free (obj_coff_strings (abfd));
|
||||
obj_coff_strings (abfd) = NULL;
|
||||
}
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Read a symbol table into freshly bfd_allocated memory, swap it, and
|
||||
@@ -1777,7 +1775,7 @@ coff_get_normalized_symtab (abfd)
|
||||
}
|
||||
|
||||
/* Free the raw symbols, but not the strings (if we have them). */
|
||||
obj_coff_keep_strings (abfd) = true;
|
||||
obj_coff_keep_strings (abfd) = TRUE;
|
||||
if (! _bfd_coff_free_symbols (abfd))
|
||||
return NULL;
|
||||
|
||||
@@ -1909,7 +1907,7 @@ coff_make_empty_symbol (abfd)
|
||||
new->symbol.section = 0;
|
||||
new->native = 0;
|
||||
new->lineno = (alent *) NULL;
|
||||
new->done_lineno = false;
|
||||
new->done_lineno = FALSE;
|
||||
new->symbol.the_bfd = abfd;
|
||||
return &new->symbol;
|
||||
}
|
||||
@@ -1935,7 +1933,7 @@ coff_bfd_make_debug_symbol (abfd, ptr, sz)
|
||||
new->symbol.section = bfd_abs_section_ptr;
|
||||
new->symbol.flags = BSF_DEBUGGING;
|
||||
new->lineno = (alent *) NULL;
|
||||
new->done_lineno = false;
|
||||
new->done_lineno = FALSE;
|
||||
new->symbol.the_bfd = abfd;
|
||||
return &new->symbol;
|
||||
}
|
||||
@@ -1957,7 +1955,7 @@ coff_get_symbol_info (abfd, symbol, ret)
|
||||
|
||||
/* Return the COFF syment for a symbol. */
|
||||
|
||||
boolean
|
||||
bfd_boolean
|
||||
bfd_coff_get_syment (abfd, symbol, psyment)
|
||||
bfd *abfd;
|
||||
asymbol *symbol;
|
||||
@@ -1969,7 +1967,7 @@ bfd_coff_get_syment (abfd, symbol, psyment)
|
||||
if (csym == NULL || csym->native == NULL)
|
||||
{
|
||||
bfd_set_error (bfd_error_invalid_operation);
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
*psyment = csym->native->u.syment;
|
||||
@@ -1980,12 +1978,12 @@ bfd_coff_get_syment (abfd, symbol, psyment)
|
||||
|
||||
/* FIXME: We should handle fix_line here. */
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Return the COFF auxent for a symbol. */
|
||||
|
||||
boolean
|
||||
bfd_boolean
|
||||
bfd_coff_get_auxent (abfd, symbol, indx, pauxent)
|
||||
bfd *abfd;
|
||||
asymbol *symbol;
|
||||
@@ -2002,7 +2000,7 @@ bfd_coff_get_auxent (abfd, symbol, indx, pauxent)
|
||||
|| indx >= csym->native->u.syment.n_numaux)
|
||||
{
|
||||
bfd_set_error (bfd_error_invalid_operation);
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
ent = csym->native + indx + 1;
|
||||
@@ -2024,7 +2022,7 @@ bfd_coff_get_auxent (abfd, symbol, indx, pauxent)
|
||||
((combined_entry_type *) pauxent->x_csect.x_scnlen.p
|
||||
- obj_raw_syments (abfd));
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Print out information about COFF symbol. */
|
||||
@@ -2191,19 +2189,19 @@ coff_print_symbol (abfd, filep, symbol, how)
|
||||
function for the is_local_label_name entry point, but some may
|
||||
override it. */
|
||||
|
||||
boolean
|
||||
bfd_boolean
|
||||
_bfd_coff_is_local_label_name (abfd, name)
|
||||
bfd *abfd ATTRIBUTE_UNUSED;
|
||||
const char *name;
|
||||
{
|
||||
return (boolean) (name[0] == '.' && name[1] == 'L');
|
||||
return name[0] == '.' && name[1] == 'L';
|
||||
}
|
||||
|
||||
/* Provided a BFD, a section and an offset (in bytes, not octets) into the
|
||||
section, calculate and return the name of the source file and the line
|
||||
nearest to the wanted location. */
|
||||
|
||||
boolean
|
||||
bfd_boolean
|
||||
coff_find_nearest_line (abfd, section, symbols, offset, filename_ptr,
|
||||
functionname_ptr, line_ptr)
|
||||
bfd *abfd;
|
||||
@@ -2214,7 +2212,7 @@ coff_find_nearest_line (abfd, section, symbols, offset, filename_ptr,
|
||||
const char **functionname_ptr;
|
||||
unsigned int *line_ptr;
|
||||
{
|
||||
boolean found;
|
||||
bfd_boolean found;
|
||||
unsigned int i;
|
||||
unsigned int line_base;
|
||||
coff_data_type *cof = coff_data (abfd);
|
||||
@@ -2231,17 +2229,17 @@ coff_find_nearest_line (abfd, section, symbols, offset, filename_ptr,
|
||||
&found, filename_ptr,
|
||||
functionname_ptr, line_ptr,
|
||||
&coff_data(abfd)->line_info))
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
if (found)
|
||||
return true;
|
||||
return TRUE;
|
||||
|
||||
/* Also try examining DWARF2 debugging information. */
|
||||
if (_bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
|
||||
filename_ptr, functionname_ptr,
|
||||
line_ptr, 0,
|
||||
&coff_data(abfd)->dwarf2_find_line_info))
|
||||
return true;
|
||||
return TRUE;
|
||||
|
||||
*filename_ptr = 0;
|
||||
*functionname_ptr = 0;
|
||||
@@ -2249,15 +2247,15 @@ coff_find_nearest_line (abfd, section, symbols, offset, filename_ptr,
|
||||
|
||||
/* Don't try and find line numbers in a non coff file */
|
||||
if (!bfd_family_coff (abfd))
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
if (cof == NULL)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
/* Find the first C_FILE symbol. */
|
||||
p = cof->raw_syments;
|
||||
if (!p)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
pend = p + cof->raw_syment_count;
|
||||
while (p < pend)
|
||||
@@ -2410,13 +2408,13 @@ coff_find_nearest_line (abfd, section, symbols, offset, filename_ptr,
|
||||
sec_data->line_base = line_base;
|
||||
}
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int
|
||||
coff_sizeof_headers (abfd, reloc)
|
||||
bfd *abfd;
|
||||
boolean reloc;
|
||||
bfd_boolean reloc;
|
||||
{
|
||||
size_t size;
|
||||
|
||||
@@ -2434,7 +2432,7 @@ coff_sizeof_headers (abfd, reloc)
|
||||
}
|
||||
|
||||
/* Change the class of a coff symbol held by BFD. */
|
||||
boolean
|
||||
bfd_boolean
|
||||
bfd_coff_set_symbol_class (abfd, symbol, class)
|
||||
bfd * abfd;
|
||||
asymbol * symbol;
|
||||
@@ -2446,7 +2444,7 @@ bfd_coff_set_symbol_class (abfd, symbol, class)
|
||||
if (csym == NULL)
|
||||
{
|
||||
bfd_set_error (bfd_error_invalid_operation);
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
else if (csym->native == NULL)
|
||||
{
|
||||
@@ -2460,7 +2458,7 @@ bfd_coff_set_symbol_class (abfd, symbol, class)
|
||||
|
||||
native = (combined_entry_type *) bfd_zalloc (abfd, amt);
|
||||
if (native == NULL)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
native->u.syment.n_type = T_NULL;
|
||||
native->u.syment.n_sclass = class;
|
||||
@@ -2496,5 +2494,5 @@ bfd_coff_set_symbol_class (abfd, symbol, class)
|
||||
csym->native->u.syment.n_sclass = class;
|
||||
}
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+468
-515
File diff suppressed because it is too large
Load Diff
@@ -1,24 +1,24 @@
|
||||
/* Generic COFF swapping routines, for BFD.
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000,
|
||||
2001
|
||||
2001, 2002
|
||||
Free Software Foundation, Inc.
|
||||
Written by Cygnus Support.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
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 2 of the License, or
|
||||
(at your option) any later version.
|
||||
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 2 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.
|
||||
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* This file contains routines used to swap COFF data. It is a header
|
||||
file because the details of swapping depend on the details of the
|
||||
@@ -381,7 +381,12 @@ coff_swap_sym_out (abfd, inp, extp)
|
||||
{
|
||||
struct internal_syment *in = (struct internal_syment *) inp;
|
||||
SYMENT *ext =(SYMENT *) extp;
|
||||
if(in->_n._n_name[0] == 0)
|
||||
|
||||
#ifdef COFF_ADJUST_SYM_OUT_PRE
|
||||
COFF_ADJUST_SYM_OUT_PRE (abfd, inp, extp);
|
||||
#endif
|
||||
|
||||
if (in->_n._n_name[0] == 0)
|
||||
{
|
||||
H_PUT_32 (abfd, 0, ext->e.e.e_zeroes);
|
||||
H_PUT_32 (abfd, in->_n._n_n._n_offset, ext->e.e.e_offset);
|
||||
@@ -391,11 +396,13 @@ coff_swap_sym_out (abfd, inp, extp)
|
||||
#if SYMNMLEN != E_SYMNMLEN
|
||||
-> Error, we need to cope with truncating or extending SYMNMLEN!;
|
||||
#else
|
||||
memcpy(ext->e.e_name, in->_n._n_name, SYMNMLEN);
|
||||
memcpy (ext->e.e_name, in->_n._n_name, SYMNMLEN);
|
||||
#endif
|
||||
}
|
||||
|
||||
H_PUT_32 (abfd, in->n_value, ext->e_value);
|
||||
H_PUT_16 (abfd, in->n_scnum, ext->e_scnum);
|
||||
|
||||
if (sizeof (ext->e_type) == 2)
|
||||
{
|
||||
H_PUT_16 (abfd, in->n_type, ext->e_type);
|
||||
@@ -404,11 +411,14 @@ coff_swap_sym_out (abfd, inp, extp)
|
||||
{
|
||||
H_PUT_32 (abfd, in->n_type, ext->e_type);
|
||||
}
|
||||
|
||||
H_PUT_8 (abfd, in->n_sclass, ext->e_sclass);
|
||||
H_PUT_8 (abfd, in->n_numaux, ext->e_numaux);
|
||||
|
||||
#ifdef COFF_ADJUST_SYM_OUT_POST
|
||||
COFF_ADJUST_SYM_OUT_POST (abfd, inp, extp);
|
||||
#endif
|
||||
|
||||
return SYMESZ;
|
||||
}
|
||||
|
||||
@@ -428,6 +438,7 @@ coff_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1)
|
||||
#ifdef COFF_ADJUST_AUX_IN_PRE
|
||||
COFF_ADJUST_AUX_IN_PRE (abfd, ext1, type, class, indx, numaux, in1);
|
||||
#endif
|
||||
|
||||
switch (class)
|
||||
{
|
||||
case C_FILE:
|
||||
@@ -448,9 +459,7 @@ coff_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1)
|
||||
numaux * sizeof (AUXENT));
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy (in->x_file.x_fname, ext->x_file.x_fname, FILNMLEN);
|
||||
}
|
||||
memcpy (in->x_file.x_fname, ext->x_file.x_fname, FILNMLEN);
|
||||
#endif
|
||||
}
|
||||
goto end;
|
||||
@@ -502,7 +511,7 @@ coff_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1)
|
||||
H_GET_16 (abfd, ext->x_sym.x_fcnary.x_ary.x_dimen[3]);
|
||||
}
|
||||
|
||||
if (ISFCN(type))
|
||||
if (ISFCN (type))
|
||||
{
|
||||
in->x_sym.x_misc.x_fsize = H_GET_32 (abfd, ext->x_sym.x_misc.x_fsize);
|
||||
}
|
||||
@@ -535,7 +544,9 @@ coff_swap_aux_out (abfd, inp, type, class, indx, numaux, extp)
|
||||
#ifdef COFF_ADJUST_AUX_OUT_PRE
|
||||
COFF_ADJUST_AUX_OUT_PRE (abfd, inp, type, class, indx, numaux, extp);
|
||||
#endif
|
||||
memset((PTR)ext, 0, AUXESZ);
|
||||
|
||||
memset ((PTR)ext, 0, AUXESZ);
|
||||
|
||||
switch (class)
|
||||
{
|
||||
case C_FILE:
|
||||
@@ -681,29 +692,29 @@ coff_swap_aouthdr_in (abfd, aouthdr_ext1, aouthdr_int1)
|
||||
#else
|
||||
aouthdr_int->o_toc = H_GET_32 (abfd, aouthdr_ext->o_toc);
|
||||
#endif
|
||||
aouthdr_int->o_snentry = H_GET_16 (abfd, aouthdr_ext->o_snentry);
|
||||
aouthdr_int->o_sntext = H_GET_16 (abfd, aouthdr_ext->o_sntext);
|
||||
aouthdr_int->o_sndata = H_GET_16 (abfd, aouthdr_ext->o_sndata);
|
||||
aouthdr_int->o_sntoc = H_GET_16 (abfd, aouthdr_ext->o_sntoc);
|
||||
aouthdr_int->o_snentry = H_GET_16 (abfd, aouthdr_ext->o_snentry);
|
||||
aouthdr_int->o_sntext = H_GET_16 (abfd, aouthdr_ext->o_sntext);
|
||||
aouthdr_int->o_sndata = H_GET_16 (abfd, aouthdr_ext->o_sndata);
|
||||
aouthdr_int->o_sntoc = H_GET_16 (abfd, aouthdr_ext->o_sntoc);
|
||||
aouthdr_int->o_snloader = H_GET_16 (abfd, aouthdr_ext->o_snloader);
|
||||
aouthdr_int->o_snbss = H_GET_16 (abfd, aouthdr_ext->o_snbss);
|
||||
aouthdr_int->o_snbss = H_GET_16 (abfd, aouthdr_ext->o_snbss);
|
||||
aouthdr_int->o_algntext = H_GET_16 (abfd, aouthdr_ext->o_algntext);
|
||||
aouthdr_int->o_algndata = H_GET_16 (abfd, aouthdr_ext->o_algndata);
|
||||
aouthdr_int->o_modtype = H_GET_16 (abfd, aouthdr_ext->o_modtype);
|
||||
aouthdr_int->o_cputype = H_GET_16 (abfd, aouthdr_ext->o_cputype);
|
||||
aouthdr_int->o_modtype = H_GET_16 (abfd, aouthdr_ext->o_modtype);
|
||||
aouthdr_int->o_cputype = H_GET_16 (abfd, aouthdr_ext->o_cputype);
|
||||
#ifdef XCOFF64
|
||||
aouthdr_int->o_maxstack = H_GET_64 (abfd, aouthdr_ext->o_maxstack);
|
||||
aouthdr_int->o_maxdata = H_GET_64 (abfd, aouthdr_ext->o_maxdata);
|
||||
aouthdr_int->o_maxdata = H_GET_64 (abfd, aouthdr_ext->o_maxdata);
|
||||
#else
|
||||
aouthdr_int->o_maxstack = H_GET_32 (abfd, aouthdr_ext->o_maxstack);
|
||||
aouthdr_int->o_maxdata = H_GET_32 (abfd, aouthdr_ext->o_maxdata);
|
||||
aouthdr_int->o_maxdata = H_GET_32 (abfd, aouthdr_ext->o_maxdata);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MIPSECOFF
|
||||
aouthdr_int->bss_start = H_GET_32 (abfd, aouthdr_ext->bss_start);
|
||||
aouthdr_int->gp_value = H_GET_32 (abfd, aouthdr_ext->gp_value);
|
||||
aouthdr_int->gprmask = H_GET_32 (abfd, aouthdr_ext->gprmask);
|
||||
aouthdr_int->bss_start = H_GET_32 (abfd, aouthdr_ext->bss_start);
|
||||
aouthdr_int->gp_value = H_GET_32 (abfd, aouthdr_ext->gp_value);
|
||||
aouthdr_int->gprmask = H_GET_32 (abfd, aouthdr_ext->gprmask);
|
||||
aouthdr_int->cprmask[0] = H_GET_32 (abfd, aouthdr_ext->cprmask[0]);
|
||||
aouthdr_int->cprmask[1] = H_GET_32 (abfd, aouthdr_ext->cprmask[1]);
|
||||
aouthdr_int->cprmask[2] = H_GET_32 (abfd, aouthdr_ext->cprmask[2]);
|
||||
@@ -712,9 +723,9 @@ coff_swap_aouthdr_in (abfd, aouthdr_ext1, aouthdr_int1)
|
||||
|
||||
#ifdef ALPHAECOFF
|
||||
aouthdr_int->bss_start = H_GET_64 (abfd, aouthdr_ext->bss_start);
|
||||
aouthdr_int->gp_value = H_GET_64 (abfd, aouthdr_ext->gp_value);
|
||||
aouthdr_int->gprmask = H_GET_32 (abfd, aouthdr_ext->gprmask);
|
||||
aouthdr_int->fprmask = H_GET_32 (abfd, aouthdr_ext->fprmask);
|
||||
aouthdr_int->gp_value = H_GET_64 (abfd, aouthdr_ext->gp_value);
|
||||
aouthdr_int->gprmask = H_GET_32 (abfd, aouthdr_ext->gprmask);
|
||||
aouthdr_int->fprmask = H_GET_32 (abfd, aouthdr_ext->fprmask);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -807,7 +818,8 @@ coff_swap_scnhdr_in (abfd, ext, in)
|
||||
#ifdef COFF_ADJUST_SCNHDR_IN_PRE
|
||||
COFF_ADJUST_SCNHDR_IN_PRE (abfd, ext, in);
|
||||
#endif
|
||||
memcpy(scnhdr_int->s_name, scnhdr_ext->s_name, sizeof (scnhdr_int->s_name));
|
||||
memcpy (scnhdr_int->s_name, scnhdr_ext->s_name, sizeof (scnhdr_int->s_name));
|
||||
|
||||
scnhdr_int->s_vaddr = GET_SCNHDR_VADDR (abfd, scnhdr_ext->s_vaddr);
|
||||
scnhdr_int->s_paddr = GET_SCNHDR_PADDR (abfd, scnhdr_ext->s_paddr);
|
||||
scnhdr_int->s_size = GET_SCNHDR_SIZE (abfd, scnhdr_ext->s_size);
|
||||
@@ -866,6 +878,7 @@ coff_swap_scnhdr_out (abfd, in, out)
|
||||
buf, scnhdr_int->s_nlnno);
|
||||
PUT_SCNHDR_NLNNO (abfd, 0xffff, scnhdr_ext->s_nlnno);
|
||||
}
|
||||
|
||||
if (scnhdr_int->s_nreloc <= MAX_SCNHDR_NRELOC)
|
||||
PUT_SCNHDR_NRELOC (abfd, scnhdr_int->s_nreloc, scnhdr_ext->s_nreloc);
|
||||
else
|
||||
|
||||
+252
-110
@@ -29,15 +29,30 @@ targ64_selvecs=
|
||||
targ_cflags=
|
||||
targ_underscore=no
|
||||
|
||||
# Catch obsolete configurations.
|
||||
case $targ in
|
||||
vax-*-vms* \
|
||||
)
|
||||
if test "x$enable_obsolete" != xyes; then
|
||||
echo "*** Configuration $targ is obsolete." >&2
|
||||
echo "*** Specify --enable-obsolete to build it anyway." >&2
|
||||
echo "*** Support will be REMOVED in the next major release of BINUTILS," >&2
|
||||
echo "*** unless a maintainer comes forward." >&2
|
||||
exit 1
|
||||
fi;;
|
||||
esac
|
||||
|
||||
|
||||
targ_cpu=`echo $targ | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
|
||||
case "${targ_cpu}" in
|
||||
alpha*) targ_archs=bfd_alpha_arch ;;
|
||||
arm*) targ_archs=bfd_arm_arch ;;
|
||||
c30*) targ_archs=bfd_tic30_arch ;;
|
||||
c4x*) targ_archs=bfd_tic4x_arch ;;
|
||||
c54x*) targ_archs=bfd_tic54x_arch ;;
|
||||
dlx*) targ_archs=bfd_dlx_arch ;;
|
||||
hppa*) targ_archs=bfd_hppa_arch ;;
|
||||
i[3456]86) targ_archs=bfd_i386_arch ;;
|
||||
i[3-7]86) targ_archs=bfd_i386_arch ;;
|
||||
i370) targ_archs=bfd_i370_arch ;;
|
||||
m6811*|m68hc11*) targ_archs="bfd_m68hc11_arch bfd_m68hc12_arch" ;;
|
||||
m6812*|m68hc12*) targ_archs="bfd_m68hc12_arch bfd_m68hc11_arch" ;;
|
||||
@@ -57,7 +72,9 @@ thumb*) targ_archs=bfd_arm_arch ;;
|
||||
v850*) targ_archs=bfd_v850_arch ;;
|
||||
x86_64) targ_archs=bfd_i386_arch ;;
|
||||
xscale*) targ_archs=bfd_arm_arch ;;
|
||||
xtensa*) targ_archs=bfd_xtensa_arch ;;
|
||||
z8k*) targ_archs=bfd_z8k_arch ;;
|
||||
am33_2.0) targ_archs=bfd_mn10300_arch ;;
|
||||
*) targ_archs=bfd_${targ_cpu}_arch ;;
|
||||
esac
|
||||
|
||||
@@ -66,11 +83,29 @@ esac
|
||||
# Make sure that the left side always has two dashes. Otherwise you
|
||||
# can get spurious matches. Even for unambiguous cases, do this as a
|
||||
# convention, else the table becomes a real mess to understand and maintain.
|
||||
#
|
||||
# Keep obsolete entries above the START comment, to keep them out of
|
||||
# targmatch.h.
|
||||
|
||||
case "${targ}" in
|
||||
mips*-dec-bsd*)
|
||||
echo "This target is obsolete and has been removed."
|
||||
exit 1
|
||||
;;
|
||||
|
||||
mips*-*-mach3*)
|
||||
echo "This target is obsolete and has been removed."
|
||||
exit 1
|
||||
;;
|
||||
|
||||
mips*-*-pe*)
|
||||
echo "This target is obsolete and has been removed."
|
||||
exit 1
|
||||
;;
|
||||
|
||||
# START OF targmatch.h
|
||||
#ifdef BFD64
|
||||
alpha*-*-freebsd*)
|
||||
alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
|
||||
targ_defvec=bfd_elf64_alpha_freebsd_vec
|
||||
targ_selvecs=ecoffalpha_little_vec
|
||||
# FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling.
|
||||
@@ -101,11 +136,7 @@ case "${targ}" in
|
||||
alpha*-*-*)
|
||||
targ_defvec=ecoffalpha_little_vec
|
||||
;;
|
||||
ia64*-*-aix*)
|
||||
targ_defvec=bfd_elf64_ia64_aix_little_vec
|
||||
targ_selvecs="bfd_elf64_ia64_aix_big_vec bfd_efi_app_ia64_vec"
|
||||
;;
|
||||
ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-elf*)
|
||||
ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
|
||||
targ_defvec=bfd_elf64_ia64_little_vec
|
||||
targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec"
|
||||
;;
|
||||
@@ -113,12 +144,15 @@ case "${targ}" in
|
||||
targ_defvec=bfd_elf32_ia64_hpux_big_vec
|
||||
targ_selvecs="bfd_elf64_ia64_hpux_big_vec"
|
||||
;;
|
||||
sparc64-*-freebsd* | sparc64-*-netbsd* | sparc64-*-openbsd*)
|
||||
sparc64-*-freebsd* | sparc64-*-netbsd* | sparc64-*-openbsd* | sparc64-*-kfreebsd*-gnu)
|
||||
targ_defvec=bfd_elf64_sparc_vec
|
||||
targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
|
||||
;;
|
||||
#endif /* BFD64 */
|
||||
|
||||
am33_2.0-*-linux*)
|
||||
targ_defvec=bfd_elf32_am33lin_vec
|
||||
;;
|
||||
arc-*-elf*)
|
||||
targ_defvec=bfd_elf32_littlearc_vec
|
||||
targ_selvecs=bfd_elf32_bigarc_vec
|
||||
@@ -136,6 +170,11 @@ case "${targ}" in
|
||||
targ_defvec=armnetbsd_vec
|
||||
targ_selvecs="bfd_elf32_littlearm_vec bfd_elf32_bigarm_vec"
|
||||
targ_underscore=yes
|
||||
targ_cflags=-D__QNXTARGET__
|
||||
;;
|
||||
arm-*-nto* | nto*arm*)
|
||||
targ_defvec=bfd_elf32_littlearm_vec
|
||||
targ_selvecs=bfd_elf32_bigarm_vec
|
||||
;;
|
||||
arm-*-riscix*)
|
||||
targ_defvec=riscix_vec
|
||||
@@ -150,7 +189,7 @@ case "${targ}" in
|
||||
targ_defvec=armpe_little_vec
|
||||
targ_selvecs="armpe_little_vec armpe_big_vec armpei_little_vec armpei_big_vec"
|
||||
targ_underscore=no
|
||||
targ_cflags=-DARM_WINCE
|
||||
targ_cflags="-DARM_WINCE -DARM_COFF_BUGFIX"
|
||||
;;
|
||||
arm-*-pe*)
|
||||
targ_defvec=armpe_little_vec
|
||||
@@ -165,12 +204,6 @@ case "${targ}" in
|
||||
targ_defvec=aout_arm_big_vec
|
||||
targ_selvecs=aout_arm_little_vec
|
||||
;;
|
||||
arm-*-vxworks*)
|
||||
targ_defvec=armcoff_little_vec
|
||||
targ_selvecs=armcoff_big_vec
|
||||
targ_underscore=yes
|
||||
targ_cflags=-DARM_COFF_BUGFIX
|
||||
;;
|
||||
arm-*-coff)
|
||||
targ_defvec=armcoff_little_vec
|
||||
targ_selvecs=armcoff_big_vec
|
||||
@@ -184,7 +217,12 @@ case "${targ}" in
|
||||
targ_defvec=bfd_elf32_bigarm_vec
|
||||
targ_selvecs=bfd_elf32_littlearm_vec
|
||||
;;
|
||||
arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | arm*-*-uclinux*)
|
||||
arm-*-kaos* | strongarm-*-kaos*)
|
||||
targ_defvec=bfd_elf32_littlearm_vec
|
||||
targ_selvecs=bfd_elf32_bigarm_vec
|
||||
;;
|
||||
arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | \
|
||||
arm*-*-uclinux* | arm-*-kfreebsd*-gnu | arm-*-vxworks)
|
||||
targ_defvec=bfd_elf32_littlearm_vec
|
||||
targ_selvecs=bfd_elf32_bigarm_vec
|
||||
;;
|
||||
@@ -261,6 +299,12 @@ case "${targ}" in
|
||||
targ_defvec=tic30_coff_vec
|
||||
;;
|
||||
|
||||
c4x-*-*coff* | tic4x-*-*coff* | tic4x-*-rtems*)
|
||||
targ_defvec=tic4x_coff1_vec
|
||||
targ_selvecs="tic4x_coff1_beh_vec tic4x_coff2_vec tic4x_coff2_beh_vec tic4x_coff0_vec tic4x_coff0_beh_vec"
|
||||
targ_underscore=yes
|
||||
;;
|
||||
|
||||
c54x*-*-*coff* | tic54x-*-*coff*)
|
||||
targ_defvec=tic54x_coff1_vec
|
||||
targ_selvecs="tic54x_coff1_beh_vec tic54x_coff2_vec tic54x_coff2_beh_vec tic54x_coff0_vec tic54x_coff0_beh_vec"
|
||||
@@ -292,8 +336,13 @@ case "${targ}" in
|
||||
|
||||
frv-*-elf)
|
||||
targ_defvec=bfd_elf32_frv_vec
|
||||
targ_selvecs=bfd_elf32_frvfdpic_vec
|
||||
;;
|
||||
|
||||
frv-*-*linux*)
|
||||
targ_defvec=bfd_elf32_frvfdpic_vec
|
||||
targ_selvecs=bfd_elf32_frv_vec
|
||||
;;
|
||||
|
||||
h8300*-*-elf)
|
||||
targ_defvec=bfd_elf32_h8300_vec
|
||||
@@ -322,11 +371,11 @@ case "${targ}" in
|
||||
;;
|
||||
#endif
|
||||
|
||||
hppa*-*-linux-gnu*)
|
||||
hppa*-*-linux-gnu* | hppa*-*-netbsd*)
|
||||
targ_defvec=bfd_elf32_hppa_linux_vec
|
||||
targ_selvecs=bfd_elf32_hppa_vec
|
||||
;;
|
||||
hppa*-*-*elf* | hppa*-*-lites* | hppa*-*-netbsd* | hppa*-*-sysv4* | hppa*-*-rtems* | hppa*-*-openbsd*)
|
||||
hppa*-*-*elf* | hppa*-*-lites* | hppa*-*-sysv4* | hppa*-*-rtems* | hppa*-*-openbsd*)
|
||||
targ_defvec=bfd_elf32_hppa_vec
|
||||
targ_selvecs=bfd_elf32_hppa_linux_vec
|
||||
;;
|
||||
@@ -349,94 +398,113 @@ case "${targ}" in
|
||||
targ_defvec=bfd_elf32_i370_vec
|
||||
targ_selvecs="bfd_elf32_i370_vec"
|
||||
;;
|
||||
i[3456]86-*-sco3.2v5*coff)
|
||||
i[3-7]86-*-sco3.2v5*coff)
|
||||
targ_defvec=i386coff_vec
|
||||
targ_selvecs=bfd_elf32_i386_vec
|
||||
;;
|
||||
i[3456]86-*-sysv4* | i[3456]86-*-unixware* | i[3456]86-*-solaris2* | \
|
||||
i[3456]86-*-elf | i[3456]86-*-sco3.2v5* | \
|
||||
i[3456]86-*-dgux* | i[3456]86-*-sysv5*)
|
||||
i[3-7]86-*-sysv4* | i[3-7]86-*-unixware* | i[3-7]86-*-solaris2* | \
|
||||
i[3-7]86-*-elf | i[3-7]86-*-sco3.2v5* | \
|
||||
i[3-7]86-*-dgux* | i[3-7]86-*-sysv5*)
|
||||
targ_defvec=bfd_elf32_i386_vec
|
||||
targ_selvecs=i386coff_vec
|
||||
;;
|
||||
i[3456]86-*-nto*)
|
||||
i[3-7]86-*-kaos*)
|
||||
targ_defvec=bfd_elf32_i386_vec
|
||||
targ_selvecs=bfd_elf32_i386_vec
|
||||
;;
|
||||
i[3-7]86-*-nto*)
|
||||
targ_defvec=bfd_elf32_i386_vec
|
||||
targ_selvecs=i386coff_vec
|
||||
;;
|
||||
i[3456]86-*-chorus*)
|
||||
i[3-7]86-*-aros*)
|
||||
targ_defvec=bfd_elf32_i386_vec
|
||||
;;
|
||||
i[3-7]86-*-chorus*)
|
||||
targ_defvec=bfd_elf32_i386_vec
|
||||
;;
|
||||
*-*-msdosdjgpp* | *-*-go32* | *-go32-rtems* )
|
||||
targ_defvec=go32coff_vec
|
||||
targ_selvecs="go32stubbedcoff_vec i386aout_vec"
|
||||
;;
|
||||
i[3456]86-*-sysv* | i[3456]86-*-isc* | i[3456]86-*-sco* | i[3456]86-*-coff | \
|
||||
i[3456]86-*-aix*)
|
||||
i[3-7]86-*-sysv* | i[3-7]86-*-isc* | i[3-7]86-*-sco* | i[3-7]86-*-coff | \
|
||||
i[3-7]86-*-aix*)
|
||||
targ_defvec=i386coff_vec
|
||||
;;
|
||||
i[3456]86*-*-rtemscoff*)
|
||||
i[3-7]86*-*-rtemscoff*)
|
||||
targ_defvec=i386coff_vec
|
||||
targ_selvecs="bfd_elf32_i386_vec i386aout_vec"
|
||||
;;
|
||||
i[3456]86-*-rtemself* | i[3456]86-*-rtems*)
|
||||
i[3-7]86-*-rtemself* | i[3-7]86-*-rtems*)
|
||||
targ_defvec=bfd_elf32_i386_vec
|
||||
targ_selvecs="i386coff_vec i386aout_vec"
|
||||
;;
|
||||
i[3456]86-sequent-bsd*)
|
||||
i[3-7]86-*-darwin* | i[3-7]86-*-macos10* | i[3-7]86-*-rhapsody*)
|
||||
targ_defvec=mach_o_le_vec
|
||||
targ_selvecs="mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec"
|
||||
targ_archs="bfd_i386_arch bfd_powerpc_arch bfd_rs6000_arch"
|
||||
;;
|
||||
i[3-7]86-sequent-bsd*)
|
||||
targ_defvec=i386dynix_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
i[3456]86-*-bsd*)
|
||||
i[3-7]86-*-bsd*)
|
||||
targ_defvec=i386bsd_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
i[3456]86-*-freebsdaout* | i[3456]86-*-freebsd[12].* | \
|
||||
i[3456]86-*-freebsd[12])
|
||||
i[3-7]86-*-freebsdaout* | i[3-7]86-*-freebsd[12].* | \
|
||||
i[3-7]86-*-freebsd[12])
|
||||
targ_defvec=i386freebsd_vec
|
||||
targ_selvecs=i386bsd_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
i[3456]86-*-freebsd*)
|
||||
i[3-7]86-*-freebsd* | i[3-7]86-*-kfreebsd*-gnu)
|
||||
targ_defvec=bfd_elf32_i386_freebsd_vec
|
||||
targ_selvecs=i386coff_vec
|
||||
# FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling.
|
||||
case "${targ}" in
|
||||
i[3456]86-*-freebsd3* | i[3456]86-*-freebsd4 | i[3456]86-*-freebsd4.0*)
|
||||
i[3-7]86-*-freebsd3* | i[3-7]86-*-freebsd4 | i[3-7]86-*-freebsd4.0*)
|
||||
targ_cflags=-DOLD_FREEBSD_ABI_LABEL ;;
|
||||
esac
|
||||
;;
|
||||
i[3456]86-*-netbsdelf*)
|
||||
i[3-7]86-*-netbsdelf* | i[3-7]86-*-netbsd*-gnu* | i[3-7]86-*-knetbsd*-gnu)
|
||||
targ_defvec=bfd_elf32_i386_vec
|
||||
targ_selvecs=i386netbsd_vec
|
||||
targ64_selvecs=bfd_elf64_x86_64_vec
|
||||
;;
|
||||
i[3456]86-*-netbsdpe*)
|
||||
i[3-7]86-*-netbsdpe*)
|
||||
targ_defvec=i386pe_vec
|
||||
targ_selvecs="i386pe_vec i386pei_vec bfd_elf32_i386_vec"
|
||||
;;
|
||||
i[3456]86-*-netbsdaout* | i[3456]86-*-netbsd* | i[3456]86-*-openbsd*)
|
||||
i[3-7]86-*-netbsdaout* | i[3-7]86-*-netbsd* | \
|
||||
i[3-7]86-*-openbsd[0-2].* | i[3-7]86-*-openbsd3.[0-3])
|
||||
targ_defvec=i386netbsd_vec
|
||||
targ_selvecs="bfd_elf32_i386_vec i386bsd_vec"
|
||||
targ_underscore=yes
|
||||
;;
|
||||
i[3456]86-*-netware*)
|
||||
i[3-7]86-*-openbsd*)
|
||||
targ_defvec=bfd_elf32_i386_vec
|
||||
targ_selvecs=i386netbsd_vec
|
||||
;;
|
||||
i[3-7]86-*-netware*)
|
||||
targ_defvec=bfd_elf32_i386_vec
|
||||
targ_selvecs="nlm32_i386_vec i386coff_vec i386aout_vec"
|
||||
;;
|
||||
i[3456]86-*-linux*aout*)
|
||||
i[3-7]86-*-linux*aout*)
|
||||
targ_defvec=i386linux_vec
|
||||
targ_selvecs=bfd_elf32_i386_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
i[3456]86-*-linux-gnu*)
|
||||
i[3-7]86-*-linux-gnu*)
|
||||
targ_defvec=bfd_elf32_i386_vec
|
||||
targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec"
|
||||
targ64_selvecs=bfd_elf64_x86_64_vec
|
||||
;;
|
||||
#ifdef BFD64
|
||||
x86_64-*-freebsd*)
|
||||
x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
|
||||
targ_defvec=bfd_elf64_x86_64_vec
|
||||
targ_selvecs="bfd_elf32_i386_vec i386coff_vec bfd_efi_app_ia32_vec"
|
||||
;;
|
||||
x86_64-*-netbsd*)
|
||||
x86_64-*-netbsd* | x86_64-*-openbsd*)
|
||||
targ_defvec=bfd_elf64_x86_64_vec
|
||||
targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec"
|
||||
;;
|
||||
@@ -445,58 +513,58 @@ case "${targ}" in
|
||||
targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec"
|
||||
;;
|
||||
#endif
|
||||
i[3456]86-*-lynxos*)
|
||||
i[3-7]86-*-lynxos*)
|
||||
targ_defvec=i386lynx_coff_vec
|
||||
targ_selvecs=i386lynx_aout_vec
|
||||
;;
|
||||
i[3456]86-*-gnu*)
|
||||
i[3-7]86-*-gnu*)
|
||||
targ_defvec=bfd_elf32_i386_vec
|
||||
;;
|
||||
i[3456]86-*-mach* | i[3456]86-*-osf1mk*)
|
||||
i[3-7]86-*-mach* | i[3-7]86-*-osf1mk*)
|
||||
targ_defvec=i386mach3_vec
|
||||
targ_cflags=-DSTAT_FOR_EXEC
|
||||
targ_underscore=yes
|
||||
;;
|
||||
i[3456]86-*-os9k)
|
||||
i[3-7]86-*-os9k)
|
||||
targ_defvec=i386os9k_vec
|
||||
;;
|
||||
i[3456]86-*-msdos*)
|
||||
i[3-7]86-*-msdos*)
|
||||
targ_defvec=i386aout_vec
|
||||
targ_selvecs=i386msdos_vec
|
||||
;;
|
||||
i[3456]86-*-moss*)
|
||||
i[3-7]86-*-moss*)
|
||||
targ_defvec=bfd_elf32_i386_vec
|
||||
targ_selvecs="i386msdos_vec i386aout_vec"
|
||||
;;
|
||||
i[3456]86-*-beospe*)
|
||||
i[3-7]86-*-beospe*)
|
||||
targ_defvec=i386pe_vec
|
||||
targ_selvecs="i386pe_vec i386pei_vec"
|
||||
;;
|
||||
i[3456]86-*-beoself* | i[3456]86-*-beos*)
|
||||
i[3-7]86-*-beoself* | i[3-7]86-*-beos*)
|
||||
targ_defvec=bfd_elf32_i386_vec
|
||||
targ_selvecs="i386pe_vec i386pei_vec"
|
||||
;;
|
||||
i[3456]86-*-interix*)
|
||||
i[3-7]86-*-interix*)
|
||||
targ_defvec=i386pei_vec
|
||||
targ_selvecs="i386pe_vec"
|
||||
# FIXME: This should eventually be checked at runtime.
|
||||
targ_cflags=-DSTRICT_PE_FORMAT
|
||||
;;
|
||||
i[3456]86-*-mingw32* | i[3456]86-*-cygwin* | i[3456]86-*-winnt | i[3456]86-*-pe)
|
||||
i[3-7]86-*-mingw32* | i[3-7]86-*-cygwin* | i[3-7]86-*-winnt | i[3-7]86-*-pe)
|
||||
targ_defvec=i386pe_vec
|
||||
targ_selvecs="i386pe_vec i386pei_vec bfd_elf32_i386_vec"
|
||||
;;
|
||||
i[3456]86-none-*)
|
||||
i[3-7]86-none-*)
|
||||
targ_defvec=i386coff_vec
|
||||
;;
|
||||
i[3456]86-*-aout* | i[3456]86*-*-vsta*)
|
||||
i[3-7]86-*-aout* | i[3-7]86*-*-vsta*)
|
||||
targ_defvec=i386aout_vec
|
||||
;;
|
||||
i[3456]86-*-vxworks*)
|
||||
targ_defvec=i386aout_vec
|
||||
i[3-7]86-*-vxworks)
|
||||
targ_defvec=bfd_elf32_i386_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
i[3456]86-*-chaos)
|
||||
i[3-7]86-*-chaos)
|
||||
targ_defvec=bfd_elf32_i386_vec
|
||||
targ_selfvecs=i386chaos_vec
|
||||
;;
|
||||
@@ -532,6 +600,29 @@ case "${targ}" in
|
||||
targ_selvecs="icoff_little_vec icoff_big_vec"
|
||||
;;
|
||||
|
||||
ip2k-*-elf)
|
||||
targ_defvec=bfd_elf32_ip2k_vec
|
||||
;;
|
||||
|
||||
iq2000-*-elf)
|
||||
targ_defvec=bfd_elf32_iq2000_vec
|
||||
;;
|
||||
|
||||
m32r*le-*-linux*)
|
||||
targ_defvec=bfd_elf32_m32rlelin_vec
|
||||
targ_selvecs="bfd_elf32_m32rlin_vec bfd_elf32_m32rlelin_vec"
|
||||
;;
|
||||
|
||||
m32r*-*-linux*)
|
||||
targ_defvec=bfd_elf32_m32rlin_vec
|
||||
targ_selvecs="bfd_elf32_m32rlin_vec bfd_elf32_m32rlelin_vec"
|
||||
;;
|
||||
|
||||
m32r*le-*-*)
|
||||
targ_defvec=bfd_elf32_m32rle_vec
|
||||
targ_selvecs="bfd_elf32_m32r_vec bfd_elf32_m32rle_vec"
|
||||
;;
|
||||
|
||||
m32r-*-*)
|
||||
targ_defvec=bfd_elf32_m32r_vec
|
||||
;;
|
||||
@@ -571,7 +662,7 @@ case "${targ}" in
|
||||
targ_defvec=m68kcoff_vec
|
||||
targ_selvecs="m68kcoff_vec versados_vec ieee_vec aout0_big_vec"
|
||||
;;
|
||||
m68*-*-elf* | m68*-*-sysv4*)
|
||||
m68*-*-elf* | m68*-*-sysv4* | m68*-*-uclinux*)
|
||||
targ_defvec=bfd_elf32_m68k_vec
|
||||
targ_selvecs="m68kcoff_vec ieee_vec"
|
||||
;;
|
||||
@@ -675,19 +766,11 @@ case "${targ}" in
|
||||
;;
|
||||
mips*el-*-netbsd*)
|
||||
targ_defvec=bfd_elf32_littlemips_vec
|
||||
targ_selvecs="bfd_elf32_bigmips_vec ecoff_little_vec ecoff_big_vec"
|
||||
targ_selvecs="bfd_elf32_bigmips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec ecoff_little_vec ecoff_big_vec"
|
||||
;;
|
||||
mips*-*-netbsd*)
|
||||
targ_defvec=bfd_elf32_bigmips_vec
|
||||
targ_selvecs="bfd_elf32_littlemips_vec ecoff_big_vec ecoff_little_vec"
|
||||
;;
|
||||
mips*-dec-bsd*)
|
||||
targ_defvec=aout_mips_little_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
mips*-dec-mach3*)
|
||||
targ_defvec=aout_mips_little_vec
|
||||
targ_cflags=-DSTAT_FOR_EXEC
|
||||
targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec ecoff_big_vec ecoff_little_vec"
|
||||
;;
|
||||
mips*-dec-* | mips*el-*-ecoff*)
|
||||
targ_defvec=ecoff_little_vec
|
||||
@@ -699,8 +782,8 @@ case "${targ}" in
|
||||
;;
|
||||
#ifdef BFD64
|
||||
mips*-*-irix6*)
|
||||
targ_defvec=bfd_elf32_bigmips_vec
|
||||
targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
|
||||
targ_defvec=bfd_elf32_nbigmips_vec
|
||||
targ_selvecs="bfd_elf32_nlittlemips_vec bfd_elf32_bigmips_vec bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
|
||||
;;
|
||||
#endif
|
||||
mips*-*-irix5*)
|
||||
@@ -715,15 +798,6 @@ case "${targ}" in
|
||||
targ_defvec=ecoff_biglittle_vec
|
||||
targ_selvecs="ecoff_little_vec ecoff_big_vec"
|
||||
;;
|
||||
mips*-*-mach3*)
|
||||
targ_defvec=aout_mips_little_vec
|
||||
targ_cflags=-DSTAT_FOR_EXEC
|
||||
;;
|
||||
mips*-*-pe*)
|
||||
targ_defvec=mipslpe_vec
|
||||
targ_selvecs="mipslpei_vec mipslpei_vec ecoff_little_vec ecoff_big_vec"
|
||||
targ_underscore=yes
|
||||
;;
|
||||
mips*-*-sysv4*)
|
||||
targ_defvec=bfd_elf32_tradbigmips_vec
|
||||
targ_selvecs="bfd_elf32_tradlittlemips_vec ecoff_big_vec ecoff_little_vec"
|
||||
@@ -736,7 +810,7 @@ case "${targ}" in
|
||||
targ_defvec=bfd_elf32_littlemips_vec
|
||||
targ_selvecs="bfd_elf32_bigmips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
|
||||
;;
|
||||
mips*-*-elf* | mips*-*-rtems* | mips*-*-vxworks*)
|
||||
mips*-*-elf* | mips*-*-rtems* | mips*-*-vxworks | mips*-*-windiss)
|
||||
targ_defvec=bfd_elf32_bigmips_vec
|
||||
targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
|
||||
;;
|
||||
@@ -754,21 +828,23 @@ case "${targ}" in
|
||||
;;
|
||||
#ifdef BFD64
|
||||
mips64*el-*-linux*)
|
||||
targ_defvec=bfd_elf32_tradlittlemips_vec
|
||||
targ_selvecs="bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec"
|
||||
targ_defvec=bfd_elf32_ntradlittlemips_vec
|
||||
targ_selvecs="bfd_elf32_ntradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec"
|
||||
;;
|
||||
mips64*-*-linux*)
|
||||
targ_defvec=bfd_elf32_tradbigmips_vec
|
||||
targ_selvecs="bfd_elf32_tradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec"
|
||||
targ_defvec=bfd_elf32_ntradbigmips_vec
|
||||
targ_selvecs="bfd_elf32_ntradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec"
|
||||
;;
|
||||
#endif
|
||||
mips*el-*-linux*)
|
||||
targ_defvec=bfd_elf32_tradlittlemips_vec
|
||||
targ_selvecs="bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec ecoff_little_vec ecoff_big_vec"
|
||||
targ_selvecs="bfd_elf32_tradbigmips_vec ecoff_little_vec ecoff_big_vec bfd_elf32_ntradlittlemips_vec bfd_elf64_tradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf64_tradbigmips_vec"
|
||||
want64=true
|
||||
;;
|
||||
mips*-*-linux*)
|
||||
targ_defvec=bfd_elf32_tradbigmips_vec
|
||||
targ_selvecs="bfd_elf32_tradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec ecoff_big_vec ecoff_little_vec"
|
||||
targ_selvecs="bfd_elf32_tradlittlemips_vec ecoff_big_vec ecoff_little_vec bfd_elf32_ntradbigmips_vec bfd_elf64_tradbigmips_vec bfd_elf32_ntradlittlemips_vec bfd_elf64_tradlittlemips_vec"
|
||||
want64=true
|
||||
;;
|
||||
#ifdef BFD64
|
||||
mmix-*-*)
|
||||
@@ -782,6 +858,11 @@ case "${targ}" in
|
||||
|
||||
mn10300-*-*)
|
||||
targ_defvec=bfd_elf32_mn10300_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
|
||||
msp430-*-*)
|
||||
targ_defvec=bfd_elf32_msp430_vec
|
||||
;;
|
||||
|
||||
ns32k-pc532-mach* | ns32k-pc532-ux*)
|
||||
@@ -797,12 +878,12 @@ case "${targ}" in
|
||||
targ_defvec=bfd_elf32_openrisc_vec
|
||||
;;
|
||||
|
||||
or32-*-coff | or32-*-rtems*)
|
||||
or32-*-coff)
|
||||
targ_defvec=or32coff_big_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
|
||||
or32-*-elf)
|
||||
or32-*-elf | or32-*-rtems*)
|
||||
targ_defvec=bfd_elf32_or32_big_vec
|
||||
;;
|
||||
|
||||
@@ -821,13 +902,27 @@ case "${targ}" in
|
||||
targ_selvecs="bfd_elf32_pjl_vec bfd_elf32_pj_vec bfd_elf32_i386_vec"
|
||||
;;
|
||||
|
||||
powerpc-*-aix5.[01])
|
||||
targ_defvec=rs6000coff_vec
|
||||
targ_selvecs="aix5coff64_vec"
|
||||
want64=true
|
||||
;;
|
||||
#ifdef BFD64
|
||||
powerpc64-*-aix5.[01])
|
||||
targ_defvec=aix5coff64_vec
|
||||
targ_selvecs="rs6000coff_vec"
|
||||
want64=true
|
||||
;;
|
||||
#endif
|
||||
powerpc-*-aix5*)
|
||||
targ_cflags=-DAIX_WEAK_SUPPORT
|
||||
targ_defvec=rs6000coff_vec
|
||||
targ_selvecs="aix5coff64_vec"
|
||||
want64=true
|
||||
;;
|
||||
#ifdef BFD64
|
||||
powerpc64-*-aix5*)
|
||||
targ_cflags=-DAIX_WEAK_SUPPORT
|
||||
targ_defvec=aix5coff64_vec
|
||||
targ_selvecs="rs6000coff_vec"
|
||||
want64=true
|
||||
@@ -840,7 +935,6 @@ case "${targ}" in
|
||||
case "${targ}" in
|
||||
*-*-aix4.[3456789]* | *-*-aix[56789]*)
|
||||
want64=true;;
|
||||
|
||||
*)
|
||||
targ_cflags=-DSMALL_ARCHIVE;;
|
||||
esac
|
||||
@@ -850,7 +944,8 @@ case "${targ}" in
|
||||
targ_defvec=rs6000coff64_vec
|
||||
targ_selvecs=rs6000coff_vec
|
||||
;;
|
||||
powerpc64-*-elf* | powerpc-*-elf64* | powerpc64-*-linux*)
|
||||
powerpc64-*-elf* | powerpc-*-elf64* | powerpc64-*-linux* | \
|
||||
powerpc64-*-*bsd*)
|
||||
targ_defvec=bfd_elf64_powerpc_vec
|
||||
targ_selvecs="bfd_elf64_powerpcle_vec bfd_elf32_powerpc_vec bfd_elf32_powerpcle_vec rs6000coff_vec rs6000coff64_vec"
|
||||
;;
|
||||
@@ -866,6 +961,16 @@ case "${targ}" in
|
||||
targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec"
|
||||
targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec"
|
||||
;;
|
||||
powerpc-*-kaos*)
|
||||
targ_defvec=bfd_elf32_powerpc_vec
|
||||
targ_selvecs="bfd_elf32_powerpcle_vec ppcboot_vec"
|
||||
targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec"
|
||||
;;
|
||||
powerpc-*-darwin* | powerpc-*-macos10* | powerpc-*-rhapsody*)
|
||||
targ_defvec=mach_o_be_vec
|
||||
targ_selvecs="mach_o_be_vec mach_o_le_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec"
|
||||
targ_archs="bfd_powerpc_arch bfd_rs6000_arch bfd_i386_arch"
|
||||
;;
|
||||
powerpc-*-macos* | powerpc-*-mpw*)
|
||||
targ_defvec=pmac_xcoff_vec
|
||||
;;
|
||||
@@ -873,6 +978,14 @@ case "${targ}" in
|
||||
targ_defvec=bfd_elf32_powerpc_vec
|
||||
targ_selvecs="nlm32_powerpc_vec rs6000coff_vec"
|
||||
;;
|
||||
powerpc-*-nto*)
|
||||
targ_defvec=bfd_elf32_powerpc_vec
|
||||
targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec"
|
||||
;;
|
||||
powerpcle-*-nto*)
|
||||
targ_defvec=bfd_elf32_powerpcle_vec
|
||||
targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
|
||||
;;
|
||||
powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \
|
||||
powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-vxworks* |\
|
||||
powerpcle-*-rtems*)
|
||||
@@ -880,7 +993,6 @@ case "${targ}" in
|
||||
targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
|
||||
targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec"
|
||||
;;
|
||||
|
||||
powerpcle-*-pe | powerpcle-*-winnt* | powerpcle-*-cygwin*)
|
||||
targ_defvec=bfd_powerpcle_pe_vec
|
||||
targ_selvecs="bfd_powerpcle_pei_vec bfd_powerpc_pei_vec bfd_powerpcle_pe_vec bfd_powerpc_pe_vec"
|
||||
@@ -909,12 +1021,12 @@ case "${targ}" in
|
||||
targ_underscore=yes
|
||||
;;
|
||||
sh64eb-*-linux*)
|
||||
targ_defvec=bfd_elf32_shblin_vec
|
||||
targ_selvecs="bfd_elf32_shblin_vec bfd_elf32_sh64_vec bfd_elf64_sh64_vec bfd_elf32_sh_vec"
|
||||
targ_defvec=bfd_elf32_sh64blin_vec
|
||||
targ_selvecs="bfd_elf32_sh64lin_vec bfd_elf64_sh64blin_vec bfd_elf64_sh64lin_vec bfd_elf32_shblin_vec bfd_elf32_shlin_vec"
|
||||
;;
|
||||
sh64-*-linux*)
|
||||
targ_defvec=bfd_elf32_shlin_vec
|
||||
targ_selvecs="bfd_elf32_shlin_vec bfd_elf32_sh64l_vec bfd_elf64_sh64l_vec bfd_elf32_shl_vec"
|
||||
targ_defvec=bfd_elf32_sh64lin_vec
|
||||
targ_selvecs="bfd_elf32_sh64blin_vec bfd_elf64_sh64lin_vec bfd_elf64_sh64blin_vec bfd_elf32_shlin_vec bfd_elf32_shblin_vec"
|
||||
;;
|
||||
#endif /* BFD64 */
|
||||
|
||||
@@ -922,7 +1034,7 @@ case "${targ}" in
|
||||
targ_defvec=bfd_elf32_shblin_vec
|
||||
targ_selvecs=bfd_elf32_shlin_vec
|
||||
#ifdef BFD64
|
||||
targ_selvecs="${targ_selvecs} bfd_elf32_sh64_vec bfd_elf32_sh64l_vec bfd_elf64_sh64_vec bfd_elf64_sh64l_vec"
|
||||
targ_selvecs="${targ_selvecs} bfd_elf32_sh64lin_vec bfd_elf32_sh64blin_vec bfd_elf64_sh64lin_vec bfd_elf64_sh64blin_vec"
|
||||
#endif
|
||||
;;
|
||||
sh*eb-*-linux*)
|
||||
@@ -954,30 +1066,25 @@ case "${targ}" in
|
||||
;;
|
||||
#endif
|
||||
|
||||
shle-*-netbsdelf*)
|
||||
sh*l*-*-netbsdelf*)
|
||||
targ_defvec=bfd_elf32_shlnbsd_vec
|
||||
targ_selvecs="bfd_elf32_shnbsd_vec shcoff_vec shlcoff_vec"
|
||||
#ifdef BFD64
|
||||
targ_selvecs="${targ_selvecs} bfd_elf32_sh64_vec bfd_elf32_sh64l_vec bfd_elf64_sh64_vec bfd_elf64_sh64l_vec"
|
||||
targ_selvecs="${targ_selvecs} bfd_elf32_sh64lnbsd_vec bfd_elf32_sh64nbsd_vec bfd_elf64_sh64lnbsd_vec bfd_elf64_sh64nbsd_vec"
|
||||
#endif
|
||||
;;
|
||||
sh*le-*-netbsdelf*)
|
||||
targ_defvec=bfd_elf32_shlnbsd_vec
|
||||
targ_selvecs="bfd_elf32_shnbsd_vec shcoff_vec shlcoff_vec"
|
||||
;;
|
||||
sh-*-netbsdelf*)
|
||||
targ_defvec=bfd_elf32_shnbsd_vec
|
||||
targ_selvecs="bfd_elf32_shlnbsd_vec shcoff_vec shlcoff_vec"
|
||||
#ifdef BFD64
|
||||
targ_selvecs="${targ_selvecs} bfd_elf32_sh64_vec bfd_elf32_sh64l_vec bfd_elf64_sh64_vec bfd_elf64_sh64l_vec"
|
||||
targ_selvecs="${targ_selvecs} bfd_elf32_sh64lnbsd_vec bfd_elf32_sh64nbsd_vec bfd_elf64_sh64lnbsd_vec bfd_elf64_sh64nbsd_vec"
|
||||
#endif
|
||||
;;
|
||||
sh*-*-netbsdelf*)
|
||||
targ_defvec=bfd_elf32_shnbsd_vec
|
||||
targ_selvecs="bfd_elf32_shlnbsd_vec shcoff_vec shlcoff_vec"
|
||||
;;
|
||||
|
||||
shl*-*-elf* | sh[1234]l*-*-elf* | sh3el*-*-elf*)
|
||||
shl*-*-elf* | sh[1234]l*-*-elf* | sh3el*-*-elf* | shl*-*-kaos*)
|
||||
targ_defvec=bfd_elf32_shl_vec
|
||||
targ_selvecs="bfd_elf32_sh_vec shlcoff_vec shcoff_vec shlcoff_small_vec shcoff_small_vec"
|
||||
#ifdef BFD64
|
||||
@@ -985,7 +1092,12 @@ case "${targ}" in
|
||||
#endif
|
||||
targ_underscore=yes
|
||||
;;
|
||||
sh-*-elf* | sh[1234]*-elf* | sh-*-rtemself*)
|
||||
sh-*-rtemscoff*)
|
||||
targ_defvec=shcoff_vec
|
||||
targ_selvecs="shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec"
|
||||
targ_underscore=yes
|
||||
;;
|
||||
sh-*-elf* | sh[1234]*-elf* | sh-*-rtems* | sh-*-kaos*)
|
||||
targ_defvec=bfd_elf32_sh_vec
|
||||
targ_selvecs="bfd_elf32_shl_vec shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec"
|
||||
#ifdef BFD64
|
||||
@@ -993,12 +1105,25 @@ case "${targ}" in
|
||||
#endif
|
||||
targ_underscore=yes
|
||||
;;
|
||||
sh-*-nto*)
|
||||
targ_defvec=bfd_elf32_sh_vec
|
||||
targ_selvecs="bfd_elf32_shl_vec shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec"
|
||||
targ_underscore=yes
|
||||
;;
|
||||
sh-*-pe)
|
||||
targ_defvec=shlpe_vec
|
||||
targ_selvecs="shlpe_vec shlpei_vec"
|
||||
targ_underscore=yes
|
||||
;;
|
||||
sh-*-* | sh-*-rtems*)
|
||||
sh-*-vxworks)
|
||||
targ_defvec=bfd_elf32_sh_vec
|
||||
targ_selvecs="bfd_elf32_shl_vec"
|
||||
# FIXME None of the following are actually used on this target, but
|
||||
# they're necessary for coff-sh.c (which is unconditionally used) to be
|
||||
# compiled correctly.
|
||||
targ_selvecs="$targ_selvecs shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec"
|
||||
;;
|
||||
sh-*-*)
|
||||
targ_defvec=shcoff_vec
|
||||
targ_selvecs="shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec"
|
||||
targ_underscore=yes
|
||||
@@ -1041,10 +1166,14 @@ case "${targ}" in
|
||||
targ_selvecs=bfd_elf32_sparc_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
sparc-*-openbsd*)
|
||||
sparc-*-openbsd[0-2].* | sparc-*-openbsd3.[0-1])
|
||||
targ_defvec=sparcnetbsd_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
sparc-*-openbsd*)
|
||||
targ_defvec=bfd_elf32_sparc_vec
|
||||
targ_selvecs=sparcnetbsd_vec
|
||||
;;
|
||||
sparc-*-elf* | sparc-*-solaris2.[0-6] | sparc-*-solaris2.[0-6].*)
|
||||
targ_defvec=bfd_elf32_sparc_vec
|
||||
targ_selvecs=sunos_big_vec
|
||||
@@ -1105,7 +1234,6 @@ case "${targ}" in
|
||||
targ_underscore=yes
|
||||
;;
|
||||
|
||||
|
||||
v850-*-*)
|
||||
targ_defvec=bfd_elf32_v850_vec
|
||||
;;
|
||||
@@ -1132,6 +1260,15 @@ case "${targ}" in
|
||||
targ_underscore=yes
|
||||
;;
|
||||
|
||||
vax-*-openbsd*)
|
||||
targ_defvec=vaxnetbsd_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
|
||||
vax-*-linux-gnu*)
|
||||
targ_defvec=bfd_elf32_vax_vec
|
||||
;;
|
||||
|
||||
vax*-*-*vms*)
|
||||
targ_defvec=vms_vax_vec
|
||||
;;
|
||||
@@ -1148,6 +1285,11 @@ case "${targ}" in
|
||||
targ_defvec=bfd_elf32_xstormy16_vec
|
||||
;;
|
||||
|
||||
xtensa-*-*)
|
||||
targ_defvec=bfd_elf32_xtensa_le_vec
|
||||
targ_selvecs=bfd_elf32_xtensa_be_vec
|
||||
;;
|
||||
|
||||
z8k*-*-*)
|
||||
targ_defvec=z8kcoff_vec
|
||||
targ_underscore=yes
|
||||
@@ -1190,7 +1332,7 @@ esac
|
||||
# to be used on an arbitrary ELF file for anything other than
|
||||
# relocation information.
|
||||
case "${targ_defvec} ${targ_selvecs}" in
|
||||
*bfd_elf64*)
|
||||
*bfd_elf64* | *bfd_elf32_n*mips*)
|
||||
targ_selvecs="${targ_selvecs} bfd_elf64_little_generic_vec bfd_elf64_big_generic_vec bfd_elf32_little_generic_vec bfd_elf32_big_generic_vec"
|
||||
;;
|
||||
*bfd_elf32*)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* config.in. Generated automatically from configure.in by autoheader 2.13. */
|
||||
/* config.in. Generated automatically from configure.in by autoheader. */
|
||||
|
||||
/* Define if using alloca.c. */
|
||||
#undef C_ALLOCA
|
||||
@@ -25,9 +25,6 @@
|
||||
/* Define to `long' if <sys/types.h> doesn't define. */
|
||||
#undef off_t
|
||||
|
||||
/* Define if you need to in order for stat and other things to work. */
|
||||
#undef _POSIX_SOURCE
|
||||
|
||||
/* Define to `unsigned' if <sys/types.h> doesn't define. */
|
||||
#undef size_t
|
||||
|
||||
@@ -64,6 +61,18 @@
|
||||
/* Define if you have the fdopen function. */
|
||||
#undef HAVE_FDOPEN
|
||||
|
||||
/* Define if you have the fseeko function. */
|
||||
#undef HAVE_FSEEKO
|
||||
|
||||
/* Define if you have the fseeko64 function. */
|
||||
#undef HAVE_FSEEKO64
|
||||
|
||||
/* Define if you have the ftello function. */
|
||||
#undef HAVE_FTELLO
|
||||
|
||||
/* Define if you have the ftello64 function. */
|
||||
#undef HAVE_FTELLO64
|
||||
|
||||
/* Define if you have the getcwd function. */
|
||||
#undef HAVE_GETCWD
|
||||
|
||||
@@ -106,6 +115,9 @@
|
||||
/* Define if you have the strchr function. */
|
||||
#undef HAVE_STRCHR
|
||||
|
||||
/* Define if you have the strtoull function. */
|
||||
#undef HAVE_STRTOULL
|
||||
|
||||
/* Define if you have the sysconf function. */
|
||||
#undef HAVE_SYSCONF
|
||||
|
||||
@@ -190,6 +202,12 @@
|
||||
/* Define as 1 if you have gettext and don't want to use GNU gettext. */
|
||||
#undef HAVE_GETTEXT
|
||||
|
||||
/* The number of bytes in type long long */
|
||||
#undef SIZEOF_LONG_LONG
|
||||
|
||||
/* The number of bytes in type long */
|
||||
#undef SIZEOF_LONG
|
||||
|
||||
/* Use b modifier when opening binary files? */
|
||||
#undef USE_BINARY_FOPEN
|
||||
|
||||
@@ -262,6 +280,9 @@
|
||||
/* Name of host specific header file to include in trad-core.c. */
|
||||
#undef TRAD_HEADER
|
||||
|
||||
/* The number of bytes in type off_t */
|
||||
#undef SIZEOF_OFF_T
|
||||
|
||||
/* Use mmap if it's available? */
|
||||
#undef USE_MMAP
|
||||
|
||||
|
||||
Vendored
+951
-556
File diff suppressed because it is too large
Load Diff
@@ -19,51 +19,39 @@ HOST_U_64BIT_TYPE=
|
||||
|
||||
case "${host}" in
|
||||
|
||||
alpha*-*-*) host64=true; HOST_64BIT_TYPE=long ;;
|
||||
|
||||
hppa*64*-*-hpux*) HDEFINES=-DHOST_HPPAHPUX;
|
||||
host64=true; HOST_64BIT_TYPE=long ;;
|
||||
hppa*-*-hpux*) HDEFINES=-DHOST_HPPAHPUX ;;
|
||||
hppa*-*-hpux*) # HP/UX's ftello64 et.al. declarations are only
|
||||
# visible when _LARGEFILE64_SOURCE is defined.
|
||||
# Without those declarations, real_ftell et.al.
|
||||
# get mis-compiled.
|
||||
HDEFINES="-DHOST_HPPAHPUX -D_LARGEFILE64_SOURCE" ;;
|
||||
hppa*-*-hiux*) HDEFINES=-DHOST_HPPAHPUX ;;
|
||||
hppa*64*-*-linux*) host64=true; HOST_64BIT_TYPE=long ;;
|
||||
hppa*-*-mpeix*) HDEFINES=-DHOST_HPPAMPEIX ;;
|
||||
hppa*-*-bsd*) HDEFINES=-DHOST_HPPABSD ;;
|
||||
hppa*-*-osf*) HDEFINES=-DHOST_HPPAOSF ;;
|
||||
|
||||
ia64-*-linux*) host64=true; HOST_64BIT_TYPE=long ;;
|
||||
ia64-*-aix*) host64=true; HOST_64BIT_TYPE=long ;;
|
||||
ia64-*-*) host64=true;;
|
||||
|
||||
i[3456]86-sequent-bsd*) HDEFINES=-Dshared=genshared ;;
|
||||
i[3456]86-sequent-sysv4*) ;;
|
||||
i[3456]86-sequent-sysv*) HDEFINES=-Dshared=genshared ;;
|
||||
# Workaround for limitations on win9x where file contents are
|
||||
# not zero'd out if you seek past the end and then write.
|
||||
i[3-7]86-*-mingw32*) HDEFINES=-D__USE_MINGW_FSEEK;;
|
||||
|
||||
i[3-7]86-sequent-bsd*) HDEFINES=-Dshared=genshared ;;
|
||||
i[3-7]86-sequent-sysv4*) ;;
|
||||
i[3-7]86-sequent-sysv*) HDEFINES=-Dshared=genshared ;;
|
||||
|
||||
mips*-*-netbsd*) ;;
|
||||
mips*-*-openbsd*) ;;
|
||||
mips*-dec-*) HDEFINES="-G 4" ;;
|
||||
mips*-sgi-irix3*) HDEFINES="-G 4" ;;
|
||||
mips*-sgi-irix4*) HDEFINES="-G 4" ;;
|
||||
mips*-sgi-irix6*) host64=true
|
||||
HOST_64BIT_TYPE="long long";
|
||||
HOST_U_64BIT_TYPE="unsigned long long";
|
||||
;;
|
||||
mips64*-*-linux*) host64=true
|
||||
HOST_64BIT_TYPE="long long";
|
||||
HOST_U_64BIT_TYPE="unsigned long long";
|
||||
;;
|
||||
mips*-sgi-irix6*) host64=true;;
|
||||
mips64*-*-linux*) host64=true;;
|
||||
mips*-*-sysv4*) ;;
|
||||
mips*-*-sysv*) HDEFINES="-G 4" ;;
|
||||
mips*-*-riscos*) HDEFINES="-G 4" ;;
|
||||
|
||||
m68*-hp-hpux*) HDEFINES=-DHOST_HP300HPUX ;;
|
||||
|
||||
*-*-aix*) HOST_64BIT_TYPE="long long"
|
||||
HOST_U_64BIT_TYPE="unsigned long long"
|
||||
;;
|
||||
|
||||
*-*-solaris*) HOST_64BIT_TYPE="long long"
|
||||
HOST_U_64BIT_TYPE="unsigned long long"
|
||||
;;
|
||||
|
||||
*-*-windows*)
|
||||
HOST_64BIT_TYPE=__int64
|
||||
HOST_U_64BIT_TYPE="unsigned __int64"
|
||||
|
||||
@@ -7,26 +7,20 @@ AC_INIT(libbfd.c)
|
||||
AC_CANONICAL_SYSTEM
|
||||
AC_ISC_POSIX
|
||||
|
||||
AM_INIT_AUTOMAKE(bfd, 2.13.1)
|
||||
AM_INIT_AUTOMAKE(bfd, 2.15)
|
||||
# Uncomment the next line to remove the date from the reported bfd version
|
||||
# is_release=y
|
||||
#is_release=y
|
||||
|
||||
changequote(,)dnl
|
||||
bfd_version=`echo "${VERSION}" | sed -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$/\1\2\3\4\5/'`
|
||||
changequote([,])dnl
|
||||
|
||||
bfd_version_string="\"${VERSION}\""
|
||||
bfd_version_date=`sed -e 's/.*DATE //' < ${srcdir}/version.h`
|
||||
if test x${is_release} = x; then
|
||||
dnl Sad, but we can't use XSTRING here to pick up the date from version.h
|
||||
dnl because traditional C doesn't allow it.
|
||||
bfd_version_date=`sed -n -e 's/.*DATE //p' < ${srcdir}/version.h`
|
||||
bfd_version_string="\"${VERSION} ${bfd_version_date}\""
|
||||
fi
|
||||
dnl Since we need to edit bfd-in3.h to get the date for bfd_version_string,
|
||||
dnl we may as well substitute for bfd_version_date too. That way we don't
|
||||
dnl need to #include version.h
|
||||
AC_SUBST(bfd_version)
|
||||
AC_SUBST(bfd_version_date)
|
||||
AC_SUBST(bfd_version_string)
|
||||
|
||||
dnl These must be called before AM_PROG_LIBTOOL, because it may want
|
||||
@@ -86,7 +80,7 @@ if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
|
||||
echo "Setting warning flags = $build_warnings" 6>&1
|
||||
fi])dnl
|
||||
WARN_CFLAGS=""
|
||||
if test "x${build_warnings}" != x -a "x$GCC" = xyes ; then
|
||||
if test "x${build_warnings}" != x && test "x$GCC" = xyes ; then
|
||||
WARN_CFLAGS="${build_warnings}"
|
||||
fi
|
||||
AC_SUBST(WARN_CFLAGS)
|
||||
@@ -109,7 +103,7 @@ bfd_default_target_size=32
|
||||
|
||||
AC_PROG_CC
|
||||
|
||||
ALL_LINGUAS="fr tr ja es sv da"
|
||||
ALL_LINGUAS="fr tr ja es sv da zh_CN ro"
|
||||
CY_GNU_GETTEXT
|
||||
|
||||
# Permit host specific settings.
|
||||
@@ -119,17 +113,41 @@ AC_SUBST(HDEFINES)
|
||||
AC_PROG_INSTALL
|
||||
|
||||
BFD_HOST_64BIT_LONG=0
|
||||
BFD_HOST_LONG_LONG=0
|
||||
BFD_HOST_64_BIT_DEFINED=0
|
||||
BFD_HOST_64_BIT=
|
||||
BFD_HOST_U_64_BIT=
|
||||
if test "x${HOST_64BIT_TYPE}" = "xlong"; then
|
||||
BFD_HOST_64BIT_LONG=1
|
||||
elif test "x${HOST_64BIT_TYPE}" != "x"; then
|
||||
BFD_HOST_64_BIT_DEFINED=1
|
||||
BFD_HOST_64_BIT=${HOST_64BIT_TYPE}
|
||||
BFD_HOST_U_64_BIT=${HOST_U_64BIT_TYPE}
|
||||
|
||||
AC_MSG_CHECKING([for long long])
|
||||
AC_CACHE_VAL(bfd_cv_has_long_long,
|
||||
[AC_TRY_COMPILE(,
|
||||
[unsigned long long ll = 18446744073709551615ULL;],
|
||||
bfd_cv_has_long_long=yes, bfd_cv_has_long_long=no)])
|
||||
AC_MSG_RESULT($bfd_cv_has_long_long)
|
||||
if test $bfd_cv_has_long_long = yes; then
|
||||
BFD_HOST_LONG_LONG=1
|
||||
AC_COMPILE_CHECK_SIZEOF(long long)
|
||||
fi
|
||||
|
||||
AC_COMPILE_CHECK_SIZEOF(long)
|
||||
if test "x${ac_cv_sizeof_long}" = "x8"; then
|
||||
host64=true
|
||||
BFD_HOST_64BIT_LONG=1
|
||||
test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long"
|
||||
test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long"
|
||||
elif test "x${ac_cv_sizeof_long_long}" = "x8"; then
|
||||
test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long long"
|
||||
test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long long"
|
||||
fi
|
||||
|
||||
if test -n "${HOST_64BIT_TYPE}" -a -n "${HOST_U_64BIT_TYPE}"; then
|
||||
BFD_HOST_64_BIT_DEFINED=1
|
||||
BFD_HOST_64_BIT="${HOST_64BIT_TYPE}"
|
||||
BFD_HOST_U_64_BIT="${HOST_U_64BIT_TYPE}"
|
||||
fi
|
||||
|
||||
AC_SUBST(BFD_HOST_64BIT_LONG)
|
||||
AC_SUBST(BFD_HOST_LONG_LONG)
|
||||
AC_SUBST(BFD_HOST_64_BIT_DEFINED)
|
||||
AC_SUBST(BFD_HOST_64_BIT)
|
||||
AC_SUBST(BFD_HOST_U_64_BIT)
|
||||
@@ -141,6 +159,7 @@ AC_CHECK_HEADERS(fcntl.h sys/file.h sys/time.h)
|
||||
AC_HEADER_TIME
|
||||
AC_HEADER_DIRENT
|
||||
AC_CHECK_FUNCS(fcntl getpagesize setitimer sysconf fdopen getuid getgid)
|
||||
AC_CHECK_FUNCS(strtoull)
|
||||
|
||||
BFD_BINARY_FOPEN
|
||||
|
||||
@@ -156,7 +175,7 @@ COREFLAG=
|
||||
TRAD_HEADER=
|
||||
if test "${target}" = "${host}"; then
|
||||
case "${host}" in
|
||||
alpha*-*-freebsd*)
|
||||
alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
|
||||
COREFILE=''
|
||||
;;
|
||||
alpha*-*-linux-gnu*)
|
||||
@@ -167,7 +186,8 @@ if test "${target}" = "${host}"; then
|
||||
COREFILE=netbsd-core.lo
|
||||
;;
|
||||
alpha*-*-*) COREFILE=osf-core.lo ;;
|
||||
arm-*-freebsd*) COREFILE='' ;;
|
||||
arm-*-freebsd* | arm-*-kfreebsd*-gnu)
|
||||
COREFILE='' ;;
|
||||
arm-*-netbsd*) COREFILE=netbsd-core.lo ;;
|
||||
arm-*-riscix) COREFILE=trad-core.lo ;;
|
||||
hppa*-*-hpux*) COREFILE=hpux-core.lo ;;
|
||||
@@ -181,85 +201,77 @@ if test "${target}" = "${host}"; then
|
||||
;;
|
||||
|
||||
changequote(,)dnl
|
||||
i[3456]86-sequent-bsd*)
|
||||
i[3-7]86-sequent-bsd*)
|
||||
changequote([,])dnl
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/symmetry.h"'
|
||||
;;
|
||||
changequote(,)dnl
|
||||
i[3456]86-sequent-sysv4*) ;;
|
||||
i[3456]86-sequent-sysv*)
|
||||
i[3-7]86-sequent-sysv4*) ;;
|
||||
i[3-7]86-sequent-sysv*)
|
||||
changequote([,])dnl
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/symmetry.h"'
|
||||
;;
|
||||
changequote(,)dnl
|
||||
i[3456]86-*-bsdi)
|
||||
i[3-7]86-*-bsdi)
|
||||
changequote([,])dnl
|
||||
COREFILE=
|
||||
;;
|
||||
changequote(,)dnl
|
||||
i[3456]86-*-bsd* | i[34567]86-*-freebsd[123] | i[34567]86-*-freebsd[123]\.* | i[34567]86-*-freebsd4\.[01234]* | i[34567]86-*-freebsd*aout*)
|
||||
i[3-7]86-*-bsd* | i[3-7]86-*-freebsd[123] | i[3-7]86-*-freebsd[123]\.* | i[3-7]86-*-freebsd4\.[01234]* | i[3-7]86-*-freebsd*aout*)
|
||||
changequote([,])dnl
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/i386bsd.h"'
|
||||
;;
|
||||
changequote(,)dnl
|
||||
i[3456]86-*-freebsd*)
|
||||
i[3-7]86-*-freebsd* | i[3-7]86-*-kfreebsd*-gnu)
|
||||
changequote([,])dnl
|
||||
COREFILE=''
|
||||
TRAD_HEADER='"hosts/i386bsd.h"'
|
||||
;;
|
||||
changequote(,)dnl
|
||||
i[3456]86-*-netbsd* | i[3456]86-*-openbsd*)
|
||||
i[3-7]86-*-netbsd* | i[3-7]86-*-knetbsd*-gnu | i[3-7]86-*-openbsd*)
|
||||
changequote([,])dnl
|
||||
COREFILE=netbsd-core.lo
|
||||
;;
|
||||
changequote(,)dnl
|
||||
i[3456]86-esix-sysv3*)
|
||||
i[3-7]86-esix-sysv3*)
|
||||
changequote([,])dnl
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/esix.h"'
|
||||
;;
|
||||
changequote(,)dnl
|
||||
i[3456]86-*-sco3.2v5*)
|
||||
i[3-7]86-*-sco3.2v5*)
|
||||
changequote([,])dnl
|
||||
COREFILE=sco5-core.lo
|
||||
;;
|
||||
changequote(,)dnl
|
||||
i[3456]86-*-sco* | i[3456]86-*-isc*)
|
||||
i[3-7]86-*-sco* | i[3-7]86-*-isc*)
|
||||
changequote([,])dnl
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/i386sco.h"'
|
||||
;;
|
||||
changequote(,)dnl
|
||||
i[3456]86-*-mach3*)
|
||||
i[3-7]86-*-mach3*)
|
||||
changequote([,])dnl
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/i386mach3.h"'
|
||||
;;
|
||||
changequote(,)dnl
|
||||
i[3456]86-*-linux-gnu*)
|
||||
i[3-7]86-*-linux-gnu*)
|
||||
changequote([,])dnl
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/i386linux.h"'
|
||||
;;
|
||||
changequote(,)dnl
|
||||
i[3456]86-*-isc*) COREFILE=trad-core.lo ;;
|
||||
i[3456]86-*-aix*) COREFILE=aix386-core.lo ;;
|
||||
i[3-7]86-*-isc*) COREFILE=trad-core.lo ;;
|
||||
i[3-7]86-*-aix*) COREFILE=aix386-core.lo ;;
|
||||
changequote([,])dnl
|
||||
i860-*-mach3* | i860-*-osf1*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/i860mach3.h"'
|
||||
;;
|
||||
mips-dec-bsd*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/mipsbsd.h"'
|
||||
;;
|
||||
mips-dec-mach3*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/mipsmach3.h"'
|
||||
;;
|
||||
mips-*-netbsd* | mips*-*-openbsd*)
|
||||
COREFILE=netbsd-core.lo
|
||||
;;
|
||||
@@ -270,10 +282,6 @@ changequote([,])dnl
|
||||
mips-sgi-irix4*) COREFILE=irix-core.lo ;;
|
||||
mips-sgi-irix5*) COREFILE=irix-core.lo ;;
|
||||
mips-sgi-irix6*) COREFILE=irix-core.lo ;;
|
||||
mips-*-mach3*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/mipsmach3.h"'
|
||||
;;
|
||||
mips-*-sysv4*) ;;
|
||||
mips-*-sysv* | mips-*-riscos*)
|
||||
COREFILE=trad-core.lo
|
||||
@@ -353,7 +361,8 @@ changequote([,])dnl
|
||||
powerpc-*-aix4*) COREFILE=rs6000-core.lo ;;
|
||||
powerpc-*-aix*) COREFILE=rs6000-core.lo ;;
|
||||
powerpc-*-beos*) ;;
|
||||
powerpc-*-freebsd*) COREFILE='' ;;
|
||||
powerpc-*-freebsd* | powerpc-*-kfreebsd*-gnu)
|
||||
COREFILE='' ;;
|
||||
powerpc-*-netbsd*) COREFILE=netbsd-core.lo ;;
|
||||
powerpc-*-*bsd*) COREFILE=netbsd-core.lo ;;
|
||||
s390*-*-*) COREFILE=trad-core.lo ;;
|
||||
@@ -365,7 +374,9 @@ changequote([,])dnl
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/tahoe.h"'
|
||||
;;
|
||||
vax-*-netbsd*) COREFILE=netbsd-core.lo ;;
|
||||
vax-*-netbsd* | vax-*-openbsd*)
|
||||
COREFILE=netbsd-core.lo
|
||||
;;
|
||||
vax-*-ultrix2*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/vaxult2.h"'
|
||||
@@ -374,11 +385,17 @@ changequote([,])dnl
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/vaxult2.h"'
|
||||
;;
|
||||
vax-*-linux-gnu*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/vaxlinux.h"'
|
||||
;;
|
||||
vax-*-*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/vaxbsd.h"'
|
||||
;;
|
||||
x86_64-*-netbsd*) COREFILE=netbsd-core.lo ;;
|
||||
x86_64-*-netbsd* | x86_64-*-openbsd*)
|
||||
COREFILE=netbsd-core.lo
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$COREFILE" in
|
||||
@@ -446,7 +463,7 @@ case "${host}" in
|
||||
;;
|
||||
*)
|
||||
changequote(,)dnl
|
||||
x=`sed -n -e 's/^[ ]*PICFLAG[ ]*=[ ]*//p' < ../libiberty/Makefile | tail -1`
|
||||
x=`sed -n -e 's/^[ ]*PICFLAG[ ]*=[ ]*//p' < ../libiberty/Makefile | sed -n '$p'`
|
||||
changequote([,])dnl
|
||||
if test -n "$x"; then
|
||||
WIN32LIBADD="-L../libiberty/pic -liberty"
|
||||
@@ -477,12 +494,14 @@ fi
|
||||
all_targets=false
|
||||
defvec=
|
||||
selvecs=
|
||||
assocvecs=
|
||||
selarchs=
|
||||
TDEFINES=
|
||||
for targ in $target $canon_targets
|
||||
do
|
||||
if test "x$targ" = "xall"; then
|
||||
all_targets=true
|
||||
assocvecs="$assocvecs $targ_defvec $targ_selvecs"
|
||||
else
|
||||
. $srcdir/config.bfd
|
||||
if test "x$targ" = "x$target"; then
|
||||
@@ -513,6 +532,17 @@ done
|
||||
selvecs="$f"
|
||||
|
||||
|
||||
# uniq the associated vectors in all the configured targets.
|
||||
f=""
|
||||
for i in $assocvecs ; do
|
||||
case " $f " in
|
||||
*" $i "*) ;;
|
||||
*) f="$f $i" ;;
|
||||
esac
|
||||
done
|
||||
assocvecs="$f"
|
||||
|
||||
|
||||
# uniq the architectures in all the configured targets.
|
||||
f=""
|
||||
for i in $selarchs ; do
|
||||
@@ -541,8 +571,6 @@ do
|
||||
aout0_big_vec) tb="$tb aout0.lo aout32.lo" ;;
|
||||
aout_arm_big_vec) tb="$tb aout-arm.lo aout32.lo" ;;
|
||||
aout_arm_little_vec) tb="$tb aout-arm.lo aout32.lo" ;;
|
||||
aout_mips_big_vec) tb="$tb mipsbsd.lo aout32.lo" ;;
|
||||
aout_mips_little_vec) tb="$tb mipsbsd.lo aout32.lo" ;;
|
||||
apollocoff_vec) tb="$tb coff-apollo.lo" ;;
|
||||
arm_epoc_pe_big_vec) tb="$tb epoc-pe-arm.lo peigen.lo cofflink.lo " ;;
|
||||
arm_epoc_pe_little_vec) tb="$tb epoc-pe-arm.lo peigen.lo cofflink.lo " ;;
|
||||
@@ -559,6 +587,7 @@ do
|
||||
b_out_vec_little_host) tb="$tb bout.lo aout32.lo" ;;
|
||||
bfd_efi_app_ia32_vec) tb="$tb efi-app-ia32.lo peigen.lo cofflink.lo" ;;
|
||||
bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
|
||||
bfd_elf32_am33lin_vec) tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_big_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_bigarc_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
|
||||
@@ -571,31 +600,42 @@ do
|
||||
bfd_elf32_dlx_big_vec) tb="$tb elf32-dlx.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_fr30_vec) tb="$tb elf32-fr30.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_frv_vec) tb="$tb elf32-frv.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_frvfdpic_vec) tb="$tb elf32-frv.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_h8300_vec) tb="$tb elf32-h8300.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_hppa_linux_vec) tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_hppa_vec) tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_i370_vec) tb="$tb elf32-i370.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_i386_freebsd_vec) tb="$tb elf32-i386-fbsd.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_i386_freebsd_vec) tb="$tb elf32-i386.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_i386_vec) tb="$tb elf32-i386.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_i860_little_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_i860_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_i960_vec) tb="$tb elf32-i960.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_ia64_big_vec) tb="$tb elf32-ia64.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_ia64_hpux_big_vec) tb="$tb elf32-ia64.lo elf32.lo $elf";;
|
||||
bfd_elf32_ip2k_vec) tb="$tb elf32-ip2k.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_iq2000_vec) tb="$tb elf32-iq2000.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_little_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_littlearc_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_littlearm_oabi_vec) tb="$tb elfarm-oabi.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_littlearm_vec) tb="$tb elfarm-nabi.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_littlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
|
||||
bfd_elf32_m32r_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_m68hc11_vec) tb="$tb elf32-m68hc11.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_m68hc12_vec) tb="$tb elf32-m68hc12.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_m32rle_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_m32rlin_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_m32rlelin_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_m68hc11_vec) tb="$tb elf32-m68hc11.lo elf32-m68hc1x.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_m68hc12_vec) tb="$tb elf32-m68hc12.lo elf32-m68hc1x.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_m68k_vec) tb="$tb elf32-m68k.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_m88k_vec) tb="$tb elf32-m88k.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_mcore_big_vec) tb="$tb elf32-mcore.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_mcore_little_vec) tb="$tb elf32-mcore.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_mn10200_vec) tb="$tb elf-m10200.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_mn10300_vec) tb="$tb elf-m10300.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_msp430_vec) tb="$tb elf32-msp430.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_nbigmips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
|
||||
bfd_elf32_nlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
|
||||
bfd_elf32_ntradbigmips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
|
||||
bfd_elf32_ntradlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
|
||||
bfd_elf32_openrisc_vec) tb="$tb elf32-openrisc.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_or32_big_vec) tb="$tb elf32-or32.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_pj_vec) tb="$tb elf32-pj.lo elf32.lo $elf";;
|
||||
@@ -608,14 +648,16 @@ do
|
||||
# which needs it but does not list it. Should be fixed in right place.
|
||||
bfd_elf32_sh64_vec) tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf32.lo $elf cofflink.lo" target_size=64 ;;
|
||||
bfd_elf32_sh64l_vec) tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf32.lo $elf cofflink.lo" target_size=64 ;;
|
||||
bfd_elf32_sh64lnbsd_vec) tb="$tb elf32-sh64-nbsd.lo elf32-sh64-com.lo elf32.lo $elf cofflink.lo" ;;
|
||||
bfd_elf32_sh64nbsd_vec) tb="$tb elf32-sh64-nbsd.lo elf32-sh64-com.lo elf32.lo $elf cofflink.lo" ;;
|
||||
bfd_elf32_sh64lin_vec) tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf32.lo $elf cofflink.lo" target_size=64 ;;
|
||||
bfd_elf32_sh64blin_vec) tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf32.lo $elf cofflink.lo" target_size=64 ;;
|
||||
bfd_elf32_sh64lnbsd_vec) tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf32.lo $elf cofflink.lo" ;;
|
||||
bfd_elf32_sh64nbsd_vec) tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf32.lo $elf cofflink.lo" ;;
|
||||
bfd_elf32_sh_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo" ;;
|
||||
bfd_elf32_shblin_vec) tb="$tb elf32-sh-lin.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
|
||||
bfd_elf32_shblin_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
|
||||
bfd_elf32_shl_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo" ;;
|
||||
bfd_elf32_shlin_vec) tb="$tb elf32-sh-lin.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
|
||||
bfd_elf32_shlnbsd_vec) tb="$tb elf32-sh-nbsd.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
|
||||
bfd_elf32_shnbsd_vec) tb="$tb elf32-sh-nbsd.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
|
||||
bfd_elf32_shlin_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
|
||||
bfd_elf32_shlnbsd_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
|
||||
bfd_elf32_shnbsd_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
|
||||
bfd_elf32_sparc_vec) tb="$tb elf32-sparc.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_tradbigmips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
|
||||
bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
|
||||
@@ -623,14 +665,14 @@ do
|
||||
bfd_elf32_v850_vec) tb="$tb elf32-v850.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_vax_vec) tb="$tb elf32-vax.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_xstormy16_vec) tb="$tb elf32-xstormy16.lo elf32.lo $elf" ;;
|
||||
bfd_elf64_alpha_freebsd_vec) tb="$tb elf64-alpha-fbsd.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf32_xtensa_le_vec) tb="$tb xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;;
|
||||
bfd_elf32_xtensa_be_vec) tb="$tb xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;;
|
||||
bfd_elf64_alpha_freebsd_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_alpha_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_big_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_bigmips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
|
||||
bfd_elf64_hppa_linux_vec) tb="$tb elf64-hppa.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_hppa_vec) tb="$tb elf64-hppa.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_ia64_aix_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_ia64_aix_little_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_ia64_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_ia64_hpux_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_ia64_little_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;;
|
||||
@@ -642,8 +684,10 @@ do
|
||||
bfd_elf64_s390_vec) tb="$tb elf64-s390.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_sh64_vec) tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
|
||||
bfd_elf64_sh64l_vec) tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
|
||||
bfd_elf64_sh64lnbsd_vec) tb="$tb elf64-sh64-nbsd.lo elf64.lo $elf" target_size=64 ;;
|
||||
bfd_elf64_sh64nbsd_vec) tb="$tb elf64-sh64-nbsd.lo elf64.lo $elf" target_size=64 ;;
|
||||
bfd_elf64_sh64lin_vec) tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
|
||||
bfd_elf64_sh64blin_vec) tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
|
||||
bfd_elf64_sh64lnbsd_vec) tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
|
||||
bfd_elf64_sh64nbsd_vec) tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
|
||||
bfd_elf64_sparc_vec) tb="$tb elf64-sparc.lo elf64.lo $elf"; target_size=64 ;;
|
||||
bfd_elf64_tradbigmips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
|
||||
bfd_elf64_tradlittlemips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
|
||||
@@ -695,6 +739,9 @@ do
|
||||
m68ksysvcoff_vec) tb="$tb coff-svm68k.lo cofflink.lo" ;;
|
||||
m88kbcs_vec) tb="$tb coff-m88k.lo" ;;
|
||||
m88kmach3_vec) tb="$tb m88kmach3.lo aout32.lo" ;;
|
||||
mach_o_be_vec) tb="$tb mach-o.lo" ;;
|
||||
mach_o_le_vec) tb="$tb mach-o.lo" ;;
|
||||
mach_o_fat_vec) tb="$tb mach-o.lo" ;;
|
||||
mcore_pe_big_vec) tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;;
|
||||
mcore_pe_little_vec) tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;;
|
||||
mcore_pei_big_vec) tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;;
|
||||
@@ -709,6 +756,8 @@ do
|
||||
or32coff_big_vec) tb="$tb coff-or32.lo cofflink.lo" ;;
|
||||
pc532machaout_vec) tb="$tb pc532-mach.lo aout-ns32k.lo" ;;
|
||||
pc532netbsd_vec) tb="$tb ns32knetbsd.lo aout-ns32k.lo" ;;
|
||||
pef_vec) tb="$tb pef.lo" ;;
|
||||
pef_xlib_vec) tb="$tb pef.lo" ;;
|
||||
pdp11_aout_vec) tb="$tb pdp11.lo" ;;
|
||||
pmac_xcoff_vec) tb="$tb coff-rs6000.lo xcofflink.lo" ;;
|
||||
ppcboot_vec) tb="$tb ppcboot.lo" ;;
|
||||
@@ -729,8 +778,15 @@ do
|
||||
sparclynx_coff_vec) tb="$tb cf-sparclynx.lo lynx-core.lo" ;;
|
||||
sparcnetbsd_vec) tb="$tb sparcnetbsd.lo aout32.lo" ;;
|
||||
sunos_big_vec) tb="$tb sunos.lo aout32.lo" ;;
|
||||
sym_vec) tb="$tb xsym.lo" ;;
|
||||
tic30_aout_vec) tb="$tb aout-tic30.lo" ;;
|
||||
tic30_coff_vec) tb="$tb coff-tic30.lo" ;;
|
||||
tic4x_coff0_vec) tb="$tb coff-tic4x.lo" ;;
|
||||
tic4x_coff0_beh_vec) tb="$tb coff-tic4x.lo" ;;
|
||||
tic4x_coff1_vec) tb="$tb coff-tic4x.lo" ;;
|
||||
tic4x_coff1_beh_vec) tb="$tb coff-tic4x.lo" ;;
|
||||
tic4x_coff2_vec) tb="$tb coff-tic4x.lo" ;;
|
||||
tic4x_coff2_beh_vec) tb="$tb coff-tic4x.lo" ;;
|
||||
tic54x_coff0_beh_vec) tb="$tb coff-tic54x.lo" ;;
|
||||
tic54x_coff0_vec) tb="$tb coff-tic54x.lo" ;;
|
||||
tic54x_coff1_beh_vec) tb="$tb coff-tic54x.lo" ;;
|
||||
@@ -800,9 +856,12 @@ if test x${all_targets} = xtrue ; then
|
||||
selvecs=
|
||||
havevecs=
|
||||
selarchs=
|
||||
test -n "$assocvecs" &&
|
||||
assocvecs=`echo $assocvecs | sed -e 's/^/\&/' -e 's/ \(.\)/,\&\1/g'`
|
||||
else # all_targets is true
|
||||
# Only set these if they will be nonempty, for the clever echo.
|
||||
havevecs=
|
||||
assocvecs=
|
||||
test -n "$selvecs" &&
|
||||
havevecs=`echo $selvecs | sed -e 's/^/-DHAVE_/' -e 's/ \(.\)/ -DHAVE_\1/g'`
|
||||
test -n "$selvecs" &&
|
||||
@@ -816,7 +875,7 @@ case ${host64}-${target64}-${want64} in
|
||||
wordsize=64
|
||||
bfd_libs='$(BFD64_LIBS) $(BFD32_LIBS)'
|
||||
all_backends='$(BFD64_BACKENDS) $(BFD32_BACKENDS)'
|
||||
if test -z "$GCC" && test "$BFD_HOST_64BIT_LONG" = "0" && test "$BFD_HOST_64_BIT_DEFINED" = "0"; then
|
||||
if test $BFD_HOST_64_BIT_DEFINED = 0; then
|
||||
AC_MSG_WARN([You have requested a 64 bit BFD configuration, but])
|
||||
AC_MSG_WARN([your compiler may not have a 64 bit integral type])
|
||||
fi
|
||||
@@ -847,9 +906,32 @@ AC_SUBST(bfd_backends)
|
||||
AC_SUBST(bfd_machines)
|
||||
AC_SUBST(bfd_default_target_size)
|
||||
|
||||
# Determine the host dependant file_ptr a.k.a. off_t type. In order
|
||||
# prefer: off64_t - if ftello64 and fseeko64, off_t - if ftello and
|
||||
# fseeko, long. This assumes that sizeof off_t is .ge. sizeof long.
|
||||
# Hopefully a reasonable assumption since fseeko et.al. should be
|
||||
# upward compatible.
|
||||
AC_CHECK_FUNCS(ftello ftello64 fseeko fseeko64)
|
||||
if test x"$ac_cv_func_ftello" = xyes -a x"$ac_cv_func_fseeko" = xyes; then
|
||||
AC_COMPILE_CHECK_SIZEOF(off_t)
|
||||
fi
|
||||
AC_MSG_CHECKING([file_ptr type])
|
||||
bfd_file_ptr="long"
|
||||
bfd_ufile_ptr="unsigned long"
|
||||
if test x"$ac_cv_func_ftello64" = xyes -a x"$ac_cv_func_fseeko64" = xyes \
|
||||
-o x"${ac_cv_sizeof_off_t}" = x8; then
|
||||
bfd_file_ptr=BFD_HOST_64_BIT
|
||||
bfd_ufile_ptr=BFD_HOST_U_64_BIT
|
||||
fi
|
||||
AC_MSG_RESULT($bfd_file_ptr)
|
||||
AC_SUBST(bfd_file_ptr)
|
||||
AC_SUBST(bfd_ufile_ptr)
|
||||
|
||||
|
||||
tdefaults=""
|
||||
test -n "${defvec}" && tdefaults="${tdefaults} -DDEFAULT_VECTOR=${defvec}"
|
||||
test -n "${selvecs}" && tdefaults="${tdefaults} -DSELECT_VECS='${selvecs}'"
|
||||
test -n "${assocvecs}" && tdefaults="${tdefaults} -DASSOCIATED_VECS='${assocvecs}'"
|
||||
test -n "${selarchs}" && tdefaults="${tdefaults} -DSELECT_ARCHITECTURES='${selarchs}'"
|
||||
test -n "${havevecs}" && tdefaults="${tdefaults} ${havevecs}"
|
||||
AC_SUBST(tdefaults)
|
||||
@@ -862,6 +944,6 @@ case ${want_mmap}+${ac_cv_func_mmap_fixed_mapped} in
|
||||
esac
|
||||
|
||||
rm -f doc/config.status
|
||||
AC_OUTPUT(Makefile doc/Makefile bfd-in3.h:bfd-in2.h po/Makefile.in:po/Make-in,
|
||||
AC_OUTPUT(Makefile doc/Makefile bfd-in3.h:bfd-in2.h bfdver.h:version.h po/Makefile.in:po/Make-in,
|
||||
[sed -e '/SRC-POTFILES =/r po/SRC-POTFILES' -e '/BLD-POTFILES =/r po/BLD-POTFILES' po/Makefile.in > po/Makefile])
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Core file generic interface routines for BFD.
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 2000, 2001, 2002
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 2000, 2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
Written by Cygnus Support.
|
||||
|
||||
@@ -36,7 +36,7 @@ FUNCTION
|
||||
bfd_core_file_failing_command
|
||||
|
||||
SYNOPSIS
|
||||
const char *bfd_core_file_failing_command(bfd *abfd);
|
||||
const char *bfd_core_file_failing_command (bfd *abfd);
|
||||
|
||||
DESCRIPTION
|
||||
Return a read-only string explaining which program was running
|
||||
@@ -45,13 +45,13 @@ DESCRIPTION
|
||||
*/
|
||||
|
||||
const char *
|
||||
bfd_core_file_failing_command (abfd)
|
||||
bfd *abfd;
|
||||
bfd_core_file_failing_command (bfd *abfd)
|
||||
{
|
||||
if (abfd->format != bfd_core) {
|
||||
bfd_set_error (bfd_error_invalid_operation);
|
||||
return NULL;
|
||||
}
|
||||
if (abfd->format != bfd_core)
|
||||
{
|
||||
bfd_set_error (bfd_error_invalid_operation);
|
||||
return NULL;
|
||||
}
|
||||
return BFD_SEND (abfd, _core_file_failing_command, (abfd));
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ FUNCTION
|
||||
bfd_core_file_failing_signal
|
||||
|
||||
SYNOPSIS
|
||||
int bfd_core_file_failing_signal(bfd *abfd);
|
||||
int bfd_core_file_failing_signal (bfd *abfd);
|
||||
|
||||
DESCRIPTION
|
||||
Returns the signal number which caused the core dump which
|
||||
@@ -68,13 +68,13 @@ DESCRIPTION
|
||||
*/
|
||||
|
||||
int
|
||||
bfd_core_file_failing_signal (abfd)
|
||||
bfd *abfd;
|
||||
bfd_core_file_failing_signal (bfd *abfd)
|
||||
{
|
||||
if (abfd->format != bfd_core) {
|
||||
bfd_set_error (bfd_error_invalid_operation);
|
||||
return 0;
|
||||
}
|
||||
if (abfd->format != bfd_core)
|
||||
{
|
||||
bfd_set_error (bfd_error_invalid_operation);
|
||||
return 0;
|
||||
}
|
||||
return BFD_SEND (abfd, _core_file_failing_signal, (abfd));
|
||||
}
|
||||
|
||||
@@ -83,23 +83,24 @@ FUNCTION
|
||||
core_file_matches_executable_p
|
||||
|
||||
SYNOPSIS
|
||||
boolean core_file_matches_executable_p
|
||||
(bfd *core_bfd, bfd *exec_bfd);
|
||||
bfd_boolean core_file_matches_executable_p
|
||||
(bfd *core_bfd, bfd *exec_bfd);
|
||||
|
||||
DESCRIPTION
|
||||
Return <<true>> if the core file attached to @var{core_bfd}
|
||||
Return <<TRUE>> if the core file attached to @var{core_bfd}
|
||||
was generated by a run of the executable file attached to
|
||||
@var{exec_bfd}, <<false>> otherwise.
|
||||
@var{exec_bfd}, <<FALSE>> otherwise.
|
||||
*/
|
||||
boolean
|
||||
core_file_matches_executable_p (core_bfd, exec_bfd)
|
||||
bfd *core_bfd, *exec_bfd;
|
||||
{
|
||||
if ((core_bfd->format != bfd_core) || (exec_bfd->format != bfd_object)) {
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return false;
|
||||
}
|
||||
|
||||
return BFD_SEND (core_bfd, _core_file_matches_executable_p,
|
||||
(core_bfd, exec_bfd));
|
||||
bfd_boolean
|
||||
core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd)
|
||||
{
|
||||
if (core_bfd->format != bfd_core || exec_bfd->format != bfd_object)
|
||||
{
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return BFD_SEND (core_bfd, _core_file_matches_executable_p,
|
||||
(core_bfd, exec_bfd));
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* BFD support for the Alpha architecture.
|
||||
Copyright 1992, 1993, 1998, 2000 Free Software Foundation, Inc.
|
||||
Copyright 1992, 1993, 1998, 2000, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
@@ -39,13 +39,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#define NN(index) (&arch_info_struct[index])
|
||||
|
||||
/* These exist only so that we can resonably disassemble PALcode. */
|
||||
/* These exist only so that we can reasonably disassemble PALcode. */
|
||||
static const bfd_arch_info_type arch_info_struct[] =
|
||||
{
|
||||
N (64, 64, bfd_mach_alpha_ev4, "alpha:ev4", false, NN(1)),
|
||||
N (64, 64, bfd_mach_alpha_ev5, "alpha:ev5", false, NN(2)),
|
||||
N (64, 64, bfd_mach_alpha_ev6, "alpha:ev6", false, 0),
|
||||
N (64, 64, bfd_mach_alpha_ev4, "alpha:ev4", FALSE, NN(1)),
|
||||
N (64, 64, bfd_mach_alpha_ev5, "alpha:ev5", FALSE, NN(2)),
|
||||
N (64, 64, bfd_mach_alpha_ev6, "alpha:ev6", FALSE, 0),
|
||||
};
|
||||
|
||||
const bfd_arch_info_type bfd_alpha_arch =
|
||||
N (64, 64, 0, "alpha", true, NN(0));
|
||||
N (64, 64, 0, "alpha", TRUE, NN(0));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* BFD support for the ARC processor
|
||||
Copyright 1994, 1995, 1997, 2001 Free Software Foundation, Inc.
|
||||
Copyright 1994, 1995, 1997, 2001, 2002 Free Software Foundation, Inc.
|
||||
Contributed by Doug Evans (dje@cygnus.com).
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@@ -40,15 +40,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
static const bfd_arch_info_type arch_info_struct[] =
|
||||
{
|
||||
ARC ( bfd_mach_arc_5, "arc5", false, &arch_info_struct[1] ),
|
||||
ARC ( bfd_mach_arc_5, "base", false, &arch_info_struct[2] ),
|
||||
ARC ( bfd_mach_arc_6, "arc6", false, &arch_info_struct[3] ),
|
||||
ARC ( bfd_mach_arc_7, "arc7", false, &arch_info_struct[4] ),
|
||||
ARC ( bfd_mach_arc_8, "arc8", false, NULL ),
|
||||
ARC ( bfd_mach_arc_5, "arc5", FALSE, &arch_info_struct[1] ),
|
||||
ARC ( bfd_mach_arc_5, "base", FALSE, &arch_info_struct[2] ),
|
||||
ARC ( bfd_mach_arc_6, "arc6", FALSE, &arch_info_struct[3] ),
|
||||
ARC ( bfd_mach_arc_7, "arc7", FALSE, &arch_info_struct[4] ),
|
||||
ARC ( bfd_mach_arc_8, "arc8", FALSE, NULL ),
|
||||
};
|
||||
|
||||
const bfd_arch_info_type bfd_arc_arch =
|
||||
ARC ( bfd_mach_arc_6, "arc", true, &arch_info_struct[0] );
|
||||
ARC ( bfd_mach_arc_6, "arc", TRUE, &arch_info_struct[0] );
|
||||
|
||||
/* Utility routines. */
|
||||
|
||||
|
||||
+298
-18
@@ -1,5 +1,5 @@
|
||||
/* BFD support for the ARM processor
|
||||
Copyright 1994, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
|
||||
Copyright 1994, 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
|
||||
Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org)
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@@ -21,11 +21,14 @@
|
||||
#include "bfd.h"
|
||||
#include "sysdep.h"
|
||||
#include "libbfd.h"
|
||||
#include "libiberty.h"
|
||||
|
||||
static const bfd_arch_info_type * compatible
|
||||
PARAMS ((const bfd_arch_info_type *, const bfd_arch_info_type *));
|
||||
static boolean scan
|
||||
static bfd_boolean scan
|
||||
PARAMS ((const struct bfd_arch_info *, const char *));
|
||||
static bfd_boolean arm_check_note
|
||||
PARAMS ((bfd *, char *, bfd_size_type, const char *, char **));
|
||||
|
||||
/* This routine is provided two arch_infos and works out which ARM
|
||||
machine which would be compatible with both and returns a pointer
|
||||
@@ -95,10 +98,12 @@ processors[] =
|
||||
{ bfd_mach_arm_4, "strongarm"},
|
||||
{ bfd_mach_arm_4, "strongarm110" },
|
||||
{ bfd_mach_arm_4, "strongarm1100" },
|
||||
{ bfd_mach_arm_XScale, "xscale" }
|
||||
{ bfd_mach_arm_XScale, "xscale" },
|
||||
{ bfd_mach_arm_ep9312, "ep9312" },
|
||||
{ bfd_mach_arm_iWMMXt, "iwmmxt" }
|
||||
};
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
scan (info, string)
|
||||
const struct bfd_arch_info * info;
|
||||
const char * string;
|
||||
@@ -107,7 +112,7 @@ scan (info, string)
|
||||
|
||||
/* First test for an exact match. */
|
||||
if (strcasecmp (string, info->printable_name) == 0)
|
||||
return true;
|
||||
return TRUE;
|
||||
|
||||
/* Next check for a processor name instead of an Architecture name. */
|
||||
for (i = sizeof (processors) / sizeof (processors[0]); i--;)
|
||||
@@ -117,13 +122,13 @@ scan (info, string)
|
||||
}
|
||||
|
||||
if (i != -1 && info->mach == processors [i].mach)
|
||||
return true;
|
||||
return TRUE;
|
||||
|
||||
/* Finally check for the default architecture. */
|
||||
if (strcasecmp (string, "arm") == 0)
|
||||
return info->the_default;
|
||||
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#define N(number, print, default, next) \
|
||||
@@ -131,17 +136,292 @@ scan (info, string)
|
||||
|
||||
static const bfd_arch_info_type arch_info_struct[] =
|
||||
{
|
||||
N (bfd_mach_arm_2, "armv2", false, & arch_info_struct[1]),
|
||||
N (bfd_mach_arm_2a, "armv2a", false, & arch_info_struct[2]),
|
||||
N (bfd_mach_arm_3, "armv3", false, & arch_info_struct[3]),
|
||||
N (bfd_mach_arm_3M, "armv3m", false, & arch_info_struct[4]),
|
||||
N (bfd_mach_arm_4, "armv4", false, & arch_info_struct[5]),
|
||||
N (bfd_mach_arm_4T, "armv4t", false, & arch_info_struct[6]),
|
||||
N (bfd_mach_arm_5, "armv5", false, & arch_info_struct[7]),
|
||||
N (bfd_mach_arm_5T, "armv5t", false, & arch_info_struct[8]),
|
||||
N (bfd_mach_arm_5TE, "armv5te", false, & arch_info_struct[9]),
|
||||
N (bfd_mach_arm_XScale, "xscale", false, NULL)
|
||||
N (bfd_mach_arm_2, "armv2", FALSE, & arch_info_struct[1]),
|
||||
N (bfd_mach_arm_2a, "armv2a", FALSE, & arch_info_struct[2]),
|
||||
N (bfd_mach_arm_3, "armv3", FALSE, & arch_info_struct[3]),
|
||||
N (bfd_mach_arm_3M, "armv3m", FALSE, & arch_info_struct[4]),
|
||||
N (bfd_mach_arm_4, "armv4", FALSE, & arch_info_struct[5]),
|
||||
N (bfd_mach_arm_4T, "armv4t", FALSE, & arch_info_struct[6]),
|
||||
N (bfd_mach_arm_5, "armv5", FALSE, & arch_info_struct[7]),
|
||||
N (bfd_mach_arm_5T, "armv5t", FALSE, & arch_info_struct[8]),
|
||||
N (bfd_mach_arm_5TE, "armv5te", FALSE, & arch_info_struct[9]),
|
||||
N (bfd_mach_arm_XScale, "xscale", FALSE, & arch_info_struct[10]),
|
||||
N (bfd_mach_arm_ep9312, "ep9312", FALSE, & arch_info_struct[11]),
|
||||
N (bfd_mach_arm_iWMMXt,"iwmmxt", FALSE, NULL)
|
||||
};
|
||||
|
||||
const bfd_arch_info_type bfd_arm_arch =
|
||||
N (0, "arm", true, & arch_info_struct[0]);
|
||||
N (0, "arm", TRUE, & arch_info_struct[0]);
|
||||
|
||||
/* Support functions used by both the COFF and ELF versions of the ARM port. */
|
||||
|
||||
/* Handle the merging of the 'machine' settings of input file IBFD
|
||||
and an output file OBFD. These values actually represent the
|
||||
different possible ARM architecture variants.
|
||||
Returns TRUE if they were merged successfully or FALSE otherwise. */
|
||||
|
||||
bfd_boolean
|
||||
bfd_arm_merge_machines (ibfd, obfd)
|
||||
bfd * ibfd;
|
||||
bfd * obfd;
|
||||
{
|
||||
unsigned int in = bfd_get_mach (ibfd);
|
||||
unsigned int out = bfd_get_mach (obfd);
|
||||
|
||||
/* If the output architecture is unknown, we now have a value to set. */
|
||||
if (out == bfd_mach_arm_unknown)
|
||||
bfd_set_arch_mach (obfd, bfd_arch_arm, in);
|
||||
|
||||
/* If the input architecture is unknown,
|
||||
then so must be the output architecture. */
|
||||
else if (in == bfd_mach_arm_unknown)
|
||||
/* FIXME: We ought to have some way to
|
||||
override this on the command line. */
|
||||
bfd_set_arch_mach (obfd, bfd_arch_arm, bfd_mach_arm_unknown);
|
||||
|
||||
/* If they are the same then nothing needs to be done. */
|
||||
else if (out == in)
|
||||
;
|
||||
|
||||
/* Otherwise the general principle that a earlier architecture can be
|
||||
linked with a later architecture to produce a binary that will execute
|
||||
on the later architecture.
|
||||
|
||||
We fail however if we attempt to link a Cirrus EP9312 binary with an
|
||||
Intel XScale binary, since these architecture have co-processors which
|
||||
will not both be present on the same physical hardware. */
|
||||
else if (in == bfd_mach_arm_ep9312
|
||||
&& (out == bfd_mach_arm_XScale || out == bfd_mach_arm_iWMMXt))
|
||||
{
|
||||
_bfd_error_handler (_("\
|
||||
ERROR: %s is compiled for the EP9312, whereas %s is compiled for XScale"),
|
||||
bfd_archive_filename (ibfd),
|
||||
bfd_get_filename (obfd));
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return FALSE;
|
||||
}
|
||||
else if (out == bfd_mach_arm_ep9312
|
||||
&& (in == bfd_mach_arm_XScale || in == bfd_mach_arm_iWMMXt))
|
||||
{
|
||||
_bfd_error_handler (_("\
|
||||
ERROR: %s is compiled for the EP9312, whereas %s is compiled for XScale"),
|
||||
bfd_archive_filename (obfd),
|
||||
bfd_get_filename (ibfd));
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return FALSE;
|
||||
}
|
||||
else if (in > out)
|
||||
bfd_set_arch_mach (obfd, bfd_arch_arm, in);
|
||||
/* else
|
||||
Nothing to do. */
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned char namesz[4]; /* Size of entry's owner string. */
|
||||
unsigned char descsz[4]; /* Size of the note descriptor. */
|
||||
unsigned char type[4]; /* Interpretation of the descriptor. */
|
||||
char name[1]; /* Start of the name+desc data. */
|
||||
} arm_Note;
|
||||
|
||||
static bfd_boolean
|
||||
arm_check_note (abfd, buffer, buffer_size, expected_name, description_return)
|
||||
bfd * abfd;
|
||||
char * buffer;
|
||||
bfd_size_type buffer_size;
|
||||
const char * expected_name;
|
||||
char ** description_return;
|
||||
{
|
||||
unsigned long namesz;
|
||||
unsigned long descsz;
|
||||
unsigned long type;
|
||||
char * descr;
|
||||
|
||||
if (buffer_size < offsetof (arm_Note, name))
|
||||
return FALSE;
|
||||
|
||||
/* We have to extract the values this way to allow for a
|
||||
host whose endian-ness is different from the target. */
|
||||
namesz = bfd_get_32 (abfd, buffer);
|
||||
descsz = bfd_get_32 (abfd, buffer + offsetof (arm_Note, descsz));
|
||||
type = bfd_get_32 (abfd, buffer + offsetof (arm_Note, type));
|
||||
descr = buffer + offsetof (arm_Note, name);
|
||||
|
||||
/* Check for buffer overflow. */
|
||||
if (namesz + descsz + offsetof (arm_Note, name) > buffer_size)
|
||||
return FALSE;
|
||||
|
||||
if (expected_name == NULL)
|
||||
{
|
||||
if (namesz != 0)
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (namesz != ((strlen (expected_name) + 1 + 3) & ~3))
|
||||
return FALSE;
|
||||
|
||||
if (strcmp (descr, expected_name) != 0)
|
||||
return FALSE;
|
||||
|
||||
descr += (namesz + 3) & ~3;
|
||||
}
|
||||
|
||||
/* FIXME: We should probably check the type as well. */
|
||||
|
||||
if (description_return != NULL)
|
||||
* description_return = descr;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#define NOTE_ARCH_STRING "arch: "
|
||||
|
||||
bfd_boolean
|
||||
bfd_arm_update_notes (abfd, note_section)
|
||||
bfd * abfd;
|
||||
const char * note_section;
|
||||
{
|
||||
asection * arm_arch_section;
|
||||
bfd_size_type buffer_size;
|
||||
char * buffer;
|
||||
char * arch_string;
|
||||
char * expected;
|
||||
|
||||
/* Look for a note section. If one is present check the architecture
|
||||
string encoded in it, and set it to the current architecture if it is
|
||||
different. */
|
||||
arm_arch_section = bfd_get_section_by_name (abfd, note_section);
|
||||
|
||||
if (arm_arch_section == NULL)
|
||||
return TRUE;
|
||||
|
||||
buffer_size = arm_arch_section->_raw_size;
|
||||
if (buffer_size == 0)
|
||||
return FALSE;
|
||||
|
||||
buffer = bfd_malloc (buffer_size);
|
||||
if (buffer == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (! bfd_get_section_contents (abfd, arm_arch_section, buffer,
|
||||
(file_ptr) 0, buffer_size))
|
||||
goto FAIL;
|
||||
|
||||
/* Parse the note. */
|
||||
if (! arm_check_note (abfd, buffer, buffer_size, NOTE_ARCH_STRING, & arch_string))
|
||||
goto FAIL;
|
||||
|
||||
/* Check the architecture in the note against the architecture of the bfd. */
|
||||
switch (bfd_get_mach (abfd))
|
||||
{
|
||||
default:
|
||||
case bfd_mach_arm_unknown: expected = "unknown"; break;
|
||||
case bfd_mach_arm_2: expected = "armv2"; break;
|
||||
case bfd_mach_arm_2a: expected = "armv2a"; break;
|
||||
case bfd_mach_arm_3: expected = "armv3"; break;
|
||||
case bfd_mach_arm_3M: expected = "armv3M"; break;
|
||||
case bfd_mach_arm_4: expected = "armv4"; break;
|
||||
case bfd_mach_arm_4T: expected = "armv4t"; break;
|
||||
case bfd_mach_arm_5: expected = "armv5"; break;
|
||||
case bfd_mach_arm_5T: expected = "armv5t"; break;
|
||||
case bfd_mach_arm_5TE: expected = "armv5te"; break;
|
||||
case bfd_mach_arm_XScale: expected = "XScale"; break;
|
||||
case bfd_mach_arm_ep9312: expected = "ep9312"; break;
|
||||
case bfd_mach_arm_iWMMXt: expected = "iWMMXt"; break;
|
||||
}
|
||||
|
||||
if (strcmp (arch_string, expected) != 0)
|
||||
{
|
||||
strcpy (buffer + offsetof (arm_Note, name) + ((strlen (NOTE_ARCH_STRING) + 3) & ~3), expected);
|
||||
|
||||
if (! bfd_set_section_contents (abfd, arm_arch_section, buffer,
|
||||
(file_ptr) 0, buffer_size))
|
||||
{
|
||||
(*_bfd_error_handler)
|
||||
(_("warning: unable to update contents of %s section in %s"),
|
||||
note_section, bfd_get_filename (abfd));
|
||||
goto FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
free (buffer);
|
||||
return TRUE;
|
||||
|
||||
FAIL:
|
||||
free (buffer);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
static struct
|
||||
{
|
||||
const char * string;
|
||||
unsigned int mach;
|
||||
}
|
||||
architectures[] =
|
||||
{
|
||||
{ "armv2", bfd_mach_arm_2 },
|
||||
{ "armv2a", bfd_mach_arm_2a },
|
||||
{ "armv3", bfd_mach_arm_3 },
|
||||
{ "armv3M", bfd_mach_arm_3M },
|
||||
{ "armv4", bfd_mach_arm_4 },
|
||||
{ "armv4t", bfd_mach_arm_4T },
|
||||
{ "armv5", bfd_mach_arm_5 },
|
||||
{ "armv5t", bfd_mach_arm_5T },
|
||||
{ "armv5te", bfd_mach_arm_5TE },
|
||||
{ "XScale", bfd_mach_arm_XScale },
|
||||
{ "ep9312", bfd_mach_arm_ep9312 },
|
||||
{ "iWMMXt", bfd_mach_arm_iWMMXt }
|
||||
};
|
||||
|
||||
/* Extract the machine number stored in a note section. */
|
||||
unsigned int
|
||||
bfd_arm_get_mach_from_notes (abfd, note_section)
|
||||
bfd * abfd;
|
||||
const char * note_section;
|
||||
{
|
||||
asection * arm_arch_section;
|
||||
bfd_size_type buffer_size;
|
||||
char * buffer;
|
||||
char * arch_string;
|
||||
int i;
|
||||
|
||||
/* Look for a note section. If one is present check the architecture
|
||||
string encoded in it, and set it to the current architecture if it is
|
||||
different. */
|
||||
arm_arch_section = bfd_get_section_by_name (abfd, note_section);
|
||||
|
||||
if (arm_arch_section == NULL)
|
||||
return bfd_mach_arm_unknown;
|
||||
|
||||
buffer_size = arm_arch_section->_raw_size;
|
||||
if (buffer_size == 0)
|
||||
return bfd_mach_arm_unknown;
|
||||
|
||||
buffer = bfd_malloc (buffer_size);
|
||||
if (buffer == NULL)
|
||||
return bfd_mach_arm_unknown;
|
||||
|
||||
if (! bfd_get_section_contents (abfd, arm_arch_section, buffer,
|
||||
(file_ptr) 0, buffer_size))
|
||||
goto FAIL;
|
||||
|
||||
/* Parse the note. */
|
||||
if (! arm_check_note (abfd, buffer, buffer_size, NOTE_ARCH_STRING, & arch_string))
|
||||
goto FAIL;
|
||||
|
||||
/* Interpret the architecture string. */
|
||||
for (i = ARRAY_SIZE (architectures); i--;)
|
||||
if (strcmp (arch_string, architectures[i].string) == 0)
|
||||
{
|
||||
free (buffer);
|
||||
return architectures[i].mach;
|
||||
}
|
||||
|
||||
FAIL:
|
||||
free (buffer);
|
||||
return bfd_mach_arm_unknown;
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_i386_arch_intel_syntax =
|
||||
"i386:intel",
|
||||
"i386:intel",
|
||||
3,
|
||||
true,
|
||||
TRUE,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan ,
|
||||
0,
|
||||
@@ -47,7 +47,7 @@ const bfd_arch_info_type bfd_x86_64_arch_intel_syntax =
|
||||
"i386:intel",
|
||||
"i386:x86-64:intel",
|
||||
3,
|
||||
true,
|
||||
TRUE,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan ,
|
||||
&bfd_i386_arch_intel_syntax,
|
||||
@@ -62,7 +62,7 @@ static const bfd_arch_info_type i8086_arch =
|
||||
"i8086",
|
||||
"i8086",
|
||||
3,
|
||||
false,
|
||||
FALSE,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan ,
|
||||
&bfd_x86_64_arch_intel_syntax,
|
||||
@@ -78,7 +78,7 @@ const bfd_arch_info_type bfd_x86_64_arch =
|
||||
"i386",
|
||||
"i386:x86-64",
|
||||
3,
|
||||
true,
|
||||
TRUE,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan ,
|
||||
&i8086_arch,
|
||||
@@ -94,7 +94,7 @@ const bfd_arch_info_type bfd_i386_arch =
|
||||
"i386",
|
||||
"i386",
|
||||
3,
|
||||
true,
|
||||
TRUE,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan ,
|
||||
&bfd_x86_64_arch
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/* Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
/* Copyright 1998, 1999, 2000, 2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@@ -161,8 +162,8 @@ static const char*
|
||||
ext_imms_scaled (const struct ia64_operand *self, ia64_insn code,
|
||||
ia64_insn *valuep, int scale)
|
||||
{
|
||||
int i, bits = 0, total = 0, shift;
|
||||
BFD_HOST_64_BIT val = 0;
|
||||
int i, bits = 0, total = 0;
|
||||
BFD_HOST_64_BIT val = 0, sign;
|
||||
|
||||
for (i = 0; i < NELEMS (self->field) && self->field[i].bits; ++i)
|
||||
{
|
||||
@@ -172,8 +173,8 @@ ext_imms_scaled (const struct ia64_operand *self, ia64_insn code,
|
||||
total += bits;
|
||||
}
|
||||
/* sign extend: */
|
||||
shift = 8*sizeof (val) - total;
|
||||
val = (val << shift) >> shift;
|
||||
sign = (BFD_HOST_64_BIT) 1 << (total - 1);
|
||||
val = (val ^ sign) - sign;
|
||||
|
||||
*valuep = (val << scale);
|
||||
return 0;
|
||||
@@ -188,10 +189,7 @@ ins_imms (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
|
||||
static const char*
|
||||
ins_immsu4 (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
|
||||
{
|
||||
if (value == (BFD_HOST_U_64_BIT) 0x100000000)
|
||||
value = 0;
|
||||
else
|
||||
value = (((BFD_HOST_64_BIT)value << 32) >> 32);
|
||||
value = ((value & 0xffffffff) ^ 0x80000000) - 0x80000000;
|
||||
|
||||
return ins_imms_scaled (self, value, code, 0);
|
||||
}
|
||||
@@ -213,10 +211,7 @@ static const char*
|
||||
ins_immsm1u4 (const struct ia64_operand *self, ia64_insn value,
|
||||
ia64_insn *code)
|
||||
{
|
||||
if (value == (BFD_HOST_U_64_BIT) 0x100000000)
|
||||
value = 0;
|
||||
else
|
||||
value = (((BFD_HOST_64_BIT)value << 32) >> 32);
|
||||
value = ((value & 0xffffffff) ^ 0x80000000) - 0x80000000;
|
||||
|
||||
--value;
|
||||
return ins_imms_scaled (self, value, code, 0);
|
||||
@@ -418,6 +413,7 @@ const struct ia64_operand elf64_ia64_operands[IA64_OPND_COUNT] =
|
||||
{
|
||||
/* constants: */
|
||||
{ CST, ins_const, ext_const, "NIL", {{ 0, 0}}, 0, "<none>" },
|
||||
{ CST, ins_const, ext_const, "ar.csd", {{ 0, 0}}, 0, "ar.csd" },
|
||||
{ CST, ins_const, ext_const, "ar.ccv", {{ 0, 0}}, 0, "ar.ccv" },
|
||||
{ CST, ins_const, ext_const, "ar.pfs", {{ 0, 0}}, 0, "ar.pfs" },
|
||||
{ CST, ins_const, ext_const, "1", {{ 0, 0}}, 0, "1" },
|
||||
@@ -586,4 +582,7 @@ const struct ia64_operand elf64_ia64_operands[IA64_OPND_COUNT] =
|
||||
"a branch target" },
|
||||
{ REL, ins_rsvd, ext_rsvd, 0, {{0, 0}}, 0, /* TGT64 */
|
||||
"a branch target" },
|
||||
|
||||
{ ABS, ins_const, ext_const, 0, {{0, 0}}, 0, /* LDXMOV */
|
||||
"ldxmov target" },
|
||||
};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* BFD support for the ia64 architecture.
|
||||
Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
|
||||
Copyright 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
|
||||
Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_ia64_elf32_arch =
|
||||
"ia64",
|
||||
"ia64-elf32",
|
||||
3, /* log2 of section alignment */
|
||||
true, /* the one and only */
|
||||
TRUE, /* the one and only */
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan ,
|
||||
0,
|
||||
@@ -48,7 +48,7 @@ const bfd_arch_info_type bfd_ia64_arch =
|
||||
"ia64",
|
||||
"ia64-elf64",
|
||||
3, /* log2 of section alignment */
|
||||
true, /* the one and only */
|
||||
TRUE, /* the one and only */
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan ,
|
||||
&bfd_ia64_elf32_arch,
|
||||
|
||||
@@ -41,7 +41,7 @@ powerpc_compatible (a,b)
|
||||
case bfd_arch_powerpc:
|
||||
return bfd_default_compatible (a, b);
|
||||
case bfd_arch_rs6000:
|
||||
if (a->mach == 0)
|
||||
if (b->mach == bfd_mach_rs6k)
|
||||
return a;
|
||||
return NULL;
|
||||
}
|
||||
@@ -61,7 +61,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||
"powerpc",
|
||||
"powerpc:common64",
|
||||
3,
|
||||
true, /* default for 64 bit target */
|
||||
TRUE, /* default for 64 bit target */
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_powerpc_archs[1]
|
||||
@@ -77,7 +77,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||
"powerpc",
|
||||
"powerpc:common",
|
||||
3,
|
||||
false,
|
||||
FALSE,
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_powerpc_archs[2],
|
||||
@@ -93,7 +93,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||
"powerpc",
|
||||
"powerpc:common",
|
||||
3,
|
||||
true, /* default for 32 bit target */
|
||||
TRUE, /* default for 32 bit target */
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_powerpc_archs[1],
|
||||
@@ -109,7 +109,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||
"powerpc",
|
||||
"powerpc:common64",
|
||||
3,
|
||||
false,
|
||||
FALSE,
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_powerpc_archs[2]
|
||||
@@ -124,7 +124,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||
"powerpc",
|
||||
"powerpc:603",
|
||||
3,
|
||||
false, /* not the default */
|
||||
FALSE, /* not the default */
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_powerpc_archs[3]
|
||||
@@ -138,7 +138,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||
"powerpc",
|
||||
"powerpc:EC603e",
|
||||
3,
|
||||
false, /* not the default */
|
||||
FALSE, /* not the default */
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_powerpc_archs[4]
|
||||
@@ -152,7 +152,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||
"powerpc",
|
||||
"powerpc:604",
|
||||
3,
|
||||
false, /* not the default */
|
||||
FALSE, /* not the default */
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_powerpc_archs[5]
|
||||
@@ -166,7 +166,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||
"powerpc",
|
||||
"powerpc:403",
|
||||
3,
|
||||
false, /* not the default */
|
||||
FALSE, /* not the default */
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_powerpc_archs[6]
|
||||
@@ -180,7 +180,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||
"powerpc",
|
||||
"powerpc:601",
|
||||
3,
|
||||
false, /* not the default */
|
||||
FALSE, /* not the default */
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_powerpc_archs[7]
|
||||
@@ -194,7 +194,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||
"powerpc",
|
||||
"powerpc:620",
|
||||
3,
|
||||
false, /* not the default */
|
||||
FALSE, /* not the default */
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_powerpc_archs[8]
|
||||
@@ -208,7 +208,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||
"powerpc",
|
||||
"powerpc:630",
|
||||
3,
|
||||
false, /* not the default */
|
||||
FALSE, /* not the default */
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_powerpc_archs[9]
|
||||
@@ -222,7 +222,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||
"powerpc",
|
||||
"powerpc:a35",
|
||||
3,
|
||||
false, /* not the default */
|
||||
FALSE, /* not the default */
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_powerpc_archs[10]
|
||||
@@ -236,7 +236,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||
"powerpc",
|
||||
"powerpc:rs64ii",
|
||||
3,
|
||||
false, /* not the default */
|
||||
FALSE, /* not the default */
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_powerpc_archs[11]
|
||||
@@ -250,7 +250,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||
"powerpc",
|
||||
"powerpc:rs64iii",
|
||||
3,
|
||||
false, /* not the default */
|
||||
FALSE, /* not the default */
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_powerpc_archs[12]
|
||||
@@ -264,11 +264,25 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||
"powerpc",
|
||||
"powerpc:7400",
|
||||
3,
|
||||
false, /* not the default */
|
||||
FALSE, /* not the default */
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_powerpc_archs[13]
|
||||
},
|
||||
{
|
||||
32, /* 32 bits in a word */
|
||||
32, /* 32 bits in an address */
|
||||
8, /* 8 bits in a byte */
|
||||
bfd_arch_powerpc,
|
||||
bfd_mach_ppc_e500,
|
||||
"powerpc",
|
||||
"powerpc:e500",
|
||||
3,
|
||||
FALSE,
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_powerpc_archs[14]
|
||||
},
|
||||
{
|
||||
32, /* 32 bits in a word */
|
||||
32, /* 32 bits in an address */
|
||||
@@ -278,7 +292,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] =
|
||||
"powerpc",
|
||||
"powerpc:MPC8XX",
|
||||
3,
|
||||
false, /* not the default */
|
||||
FALSE, /* not the default */
|
||||
powerpc_compatible,
|
||||
bfd_default_scan,
|
||||
0
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/* BFD back-end for rs6000 support
|
||||
Copyright 1990, 1991, 1993, 1995, 2000 Free Software Foundation, Inc.
|
||||
Copyright 1990, 1991, 1993, 1995, 2000, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
FIXME: Can someone provide a transliteration of this name into ASCII?
|
||||
Using the following chars caused a compiler warning on HIUX (so I replaced
|
||||
them with octal escapes), and isn't useful without an understanding of what
|
||||
@@ -46,7 +47,7 @@ rs6000_compatible (a,b)
|
||||
case bfd_arch_rs6000:
|
||||
return bfd_default_compatible (a, b);
|
||||
case bfd_arch_powerpc:
|
||||
if (b->mach == 0)
|
||||
if (a->mach == bfd_mach_rs6k)
|
||||
return b;
|
||||
return NULL;
|
||||
}
|
||||
@@ -64,7 +65,7 @@ static const bfd_arch_info_type arch_info_struct[] =
|
||||
"rs6000",
|
||||
"rs6000:rs1",
|
||||
3,
|
||||
false, /* not the default */
|
||||
FALSE, /* not the default */
|
||||
rs6000_compatible,
|
||||
bfd_default_scan,
|
||||
&arch_info_struct[1]
|
||||
@@ -78,7 +79,7 @@ static const bfd_arch_info_type arch_info_struct[] =
|
||||
"rs6000",
|
||||
"rs6000:rsc",
|
||||
3,
|
||||
false, /* not the default */
|
||||
FALSE, /* not the default */
|
||||
rs6000_compatible,
|
||||
bfd_default_scan,
|
||||
&arch_info_struct[2]
|
||||
@@ -92,7 +93,7 @@ static const bfd_arch_info_type arch_info_struct[] =
|
||||
"rs6000",
|
||||
"rs6000:rs2",
|
||||
3,
|
||||
false, /* not the default */
|
||||
FALSE, /* not the default */
|
||||
rs6000_compatible,
|
||||
bfd_default_scan,
|
||||
0
|
||||
@@ -109,7 +110,7 @@ const bfd_arch_info_type bfd_rs6000_arch =
|
||||
"rs6000",
|
||||
"rs6000:6000",
|
||||
3,
|
||||
true, /* the default */
|
||||
TRUE, /* the default */
|
||||
rs6000_compatible,
|
||||
bfd_default_scan,
|
||||
&arch_info_struct[0]
|
||||
|
||||
@@ -33,7 +33,7 @@ const bfd_arch_info_type bfd_s390_64_arch =
|
||||
"s390",
|
||||
"s390:64-bit",
|
||||
3, /* section alignment power */
|
||||
true, /* the default */
|
||||
TRUE, /* the default */
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
NULL
|
||||
@@ -49,7 +49,7 @@ const bfd_arch_info_type bfd_s390_arch =
|
||||
"s390",
|
||||
"s390:31-bit",
|
||||
3, /* section alignment power */
|
||||
true, /* the default */
|
||||
TRUE, /* the default */
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
&bfd_s390_64_arch
|
||||
|
||||
@@ -33,7 +33,7 @@ static const bfd_arch_info_type arch_info_struct[] =
|
||||
"sparc",
|
||||
"sparc:sparclet",
|
||||
3,
|
||||
false,
|
||||
FALSE,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
&arch_info_struct[1],
|
||||
@@ -47,7 +47,7 @@ static const bfd_arch_info_type arch_info_struct[] =
|
||||
"sparc",
|
||||
"sparc:sparclite",
|
||||
3,
|
||||
false,
|
||||
FALSE,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
&arch_info_struct[2],
|
||||
@@ -61,7 +61,7 @@ static const bfd_arch_info_type arch_info_struct[] =
|
||||
"sparc",
|
||||
"sparc:v8plus",
|
||||
3,
|
||||
false,
|
||||
FALSE,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
&arch_info_struct[3],
|
||||
@@ -75,7 +75,7 @@ static const bfd_arch_info_type arch_info_struct[] =
|
||||
"sparc",
|
||||
"sparc:v8plusa",
|
||||
3,
|
||||
false,
|
||||
FALSE,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
&arch_info_struct[4],
|
||||
@@ -89,7 +89,7 @@ static const bfd_arch_info_type arch_info_struct[] =
|
||||
"sparc",
|
||||
"sparc:sparclite_le",
|
||||
3,
|
||||
false,
|
||||
FALSE,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
&arch_info_struct[5],
|
||||
@@ -103,7 +103,7 @@ static const bfd_arch_info_type arch_info_struct[] =
|
||||
"sparc",
|
||||
"sparc:v9",
|
||||
3,
|
||||
false,
|
||||
FALSE,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
&arch_info_struct[6],
|
||||
@@ -117,7 +117,7 @@ static const bfd_arch_info_type arch_info_struct[] =
|
||||
"sparc",
|
||||
"sparc:v9a",
|
||||
3,
|
||||
false,
|
||||
FALSE,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
&arch_info_struct[7],
|
||||
@@ -131,7 +131,7 @@ static const bfd_arch_info_type arch_info_struct[] =
|
||||
"sparc",
|
||||
"sparc:v8plusb",
|
||||
3,
|
||||
false,
|
||||
FALSE,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
&arch_info_struct[8],
|
||||
@@ -145,7 +145,7 @@ static const bfd_arch_info_type arch_info_struct[] =
|
||||
"sparc",
|
||||
"sparc:v9b",
|
||||
3,
|
||||
false,
|
||||
FALSE,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
0,
|
||||
@@ -162,7 +162,7 @@ const bfd_arch_info_type bfd_sparc_arch =
|
||||
"sparc",
|
||||
"sparc",
|
||||
3,
|
||||
true, /* the default */
|
||||
TRUE, /* the default */
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
&arch_info_struct[0],
|
||||
|
||||
@@ -18,6 +18,7 @@ s! config.h!!g
|
||||
s! \$(INCDIR)/fopen-[^ ]*\.h!!g
|
||||
s! \$(INCDIR)/ansidecl\.h!!g
|
||||
s! \$(INCDIR)/symcat\.h!!g
|
||||
s! \.\./intl/libintl\.h!!g
|
||||
|
||||
s/\\\n */ /g
|
||||
|
||||
|
||||
@@ -1,550 +1,14 @@
|
||||
2002-09-23 Daniel Jacobowitz <drow@mvista.com>
|
||||
2004-04-08 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
Merge from mainline:
|
||||
2002-08-28 John David Anglin <dave@hiauly1.hia.nrc.ca>
|
||||
* chew.c (paramstuff, outputdots, perform, bang and usage): Remove
|
||||
void from function definitions.
|
||||
|
||||
2002-08-13 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* header.sed: Strip tabs.
|
||||
|
||||
2002-06-08 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.am: Fix quote style in last change.
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2002-06-07 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.am (libbfd.h): Don't use "echo -n".
|
||||
(libcoff.h, bfd.h): Likewise.
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2002-06-06 Lars Brinkhoff <lars@nocrew.org>
|
||||
|
||||
* bfdint.texi: Change registry@sco.com to registry@caldera.com.
|
||||
|
||||
2002-06-05 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.am (libbfd.h): Add "Extracted from.." comment.
|
||||
(libcoff.h, bfd.h): Likewise.
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2002-05-25 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* chew.c: Use #include "" instead of <> for local header files.
|
||||
|
||||
2002-04-20 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2002-02-11 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2002-02-01 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* chew.c (WORD): Eliminate.
|
||||
|
||||
2002-01-31 Ivan Guzvinec <ivang@opencores.org>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2002-01-31 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* chew.c (courierize): Don't modify @command params.
|
||||
|
||||
2002-01-30 Nick Clifton <nickc@cambridge.redhat.com>
|
||||
|
||||
* proto.str (ENUMDOC): Place two spaces between the end of
|
||||
the text and the closing comment marker.
|
||||
|
||||
2001-10-30 Hans-Peter Nilsson <hp@bitrange.com>
|
||||
|
||||
* bfdint.texi (BFD target vector miscellaneous): Add
|
||||
bfd_target_mmo_flavour.
|
||||
* bfd.texinfo (BFD back ends): Add entry for mmo.
|
||||
* Makefile.am (DOCFILES): Add mmo.texi.
|
||||
(SRCDOC): Add mmo.c.
|
||||
(s-mmo, mmo.texi): New rules.
|
||||
|
||||
2001-10-29 Kazu Hirata <kazu@hxi.com>
|
||||
|
||||
* bfdsumm.texi: Fix a typo.
|
||||
|
||||
2001-10-26 Nick Clifton <nickc@cambridge.redhat.com>
|
||||
|
||||
* bfd.texinfo: Change footer to refer to FSF. Change subtitle
|
||||
to refer to original creation date.
|
||||
|
||||
2002-01-26 Hans-Peter Nilsson <hp@bitrange.com>
|
||||
|
||||
* Makefile.am (install): Depend on install-info.
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2001-10-03 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.am (BFD_H_DEP): Add ../version.h.
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2001-10-02 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2001-10-01 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* header.sed: New file, adds header to generated files.
|
||||
* Makefile.am: Rewrite rules generating libbfd.h, libcoff.h and
|
||||
bfd.h, using above. Add missing elf.c dependecy for libbfd.h.
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2001-09-21 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2001-09-18 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* bfdint.texi: Replace reference to bfd_read with bfd_bread.
|
||||
Likewise for bfd_write.
|
||||
|
||||
2001-07-24 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2001-06-21 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* bfdint.texi (BFD relocation functions) <different formats>:
|
||||
Mention that the GNU linker is aware of input-output format
|
||||
restrictions when generating relocatable output. Make new
|
||||
paragraph for final-link case.
|
||||
(BFD target vector swap): Fix typo.
|
||||
|
||||
2001-01-25 Kazu Hirata <kazu@hxi.com>
|
||||
|
||||
* chew.c: Do not output trailing whitespaces in type and
|
||||
functionname. Update copyright.
|
||||
|
||||
2001-01-24 Kazu Hirata <kazu@hxi.com>
|
||||
|
||||
* chew.c: Do not output a trailing whitespace.
|
||||
|
||||
2000-11-06 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* bfd.texinfo: Add GNU Free Documentation License.
|
||||
|
||||
2000-07-09 Alan Modra <alan@linuxcare.com.au>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2000-07-08 Alan Modra <alan@linuxcare.com.au>
|
||||
|
||||
* chew.c (outputdots): Don't add a space before `/*'.
|
||||
(courierize): Likewise.
|
||||
|
||||
Wed May 24 12:03:25 2000 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* bfdint.texi (BFD ELF processor required): Add paragraph about
|
||||
target necessities for readelf.
|
||||
|
||||
2000-04-30 Ben Elliston <bje@redhat.com>
|
||||
|
||||
* bfdint.texi (BFD generated files): Fix another typo.
|
||||
|
||||
2000-04-17 Ben Elliston <bje@redhat.com>
|
||||
|
||||
* bfdint.texi (BFD_JUMP_TABLE macros): Fix typo.
|
||||
|
||||
Fri Apr 7 17:54:38 2000 Andrew Cagney <cagney@b1.cygnus.com>
|
||||
|
||||
* Makefile.in: Rebuild with current autoconf/automake.
|
||||
|
||||
Thu Feb 4 23:21:36 1999 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in: Rebuild with current autoconf/automake.
|
||||
|
||||
Thu Jul 23 09:36:44 1998 Nick Clifton <nickc@cygnus.com>
|
||||
|
||||
* bfdint.texi (BFD ELF processor required): Add paragraph
|
||||
describing the necessity to create "include/elf/CPU.h".
|
||||
|
||||
Thu May 7 14:45:43 1998 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.am (chew.o): Add -I options for intl srcdir and
|
||||
objdir.
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
Mon Apr 27 20:19:24 1998 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* bfdint.texi: New file.
|
||||
* Makefile.am (noinst_TEXINFOS): New variable.
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
Mon Apr 13 16:48:56 1998 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
Mon Apr 6 14:06:55 1998 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.am (STAGESTUFF): Remove variable.
|
||||
(CLEANFILES): Don't remove $(STAGESTUFF).
|
||||
(DISTCLEANFILES, MAINTAINERCLEANFILES): New variables.
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
Fri Mar 27 16:25:25 1998 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* chew.c (skip_white_and_starts): Remove unused declaration.
|
||||
(skip_white_and_stars): Add casts to avoid warnings.
|
||||
(skip_trailing_newlines, paramstuff, courierize): Likewise.
|
||||
(bulletize, do_fancy_stuff, iscommand): Likewise.
|
||||
(kill_bogus_lines, nextword, main): Likewise.
|
||||
(manglecomments): Comment out.
|
||||
(outputdots, kill_bogus_lines): Remove unused local variables.
|
||||
(perform, compile): Likewise.
|
||||
(courierize): Fully parenthesize expression.
|
||||
(copy_past_newline): Declare return value.
|
||||
(print): Change printf format string.
|
||||
(main): Call usage for an unrecognized option.
|
||||
|
||||
Fri Feb 13 14:37:14 1998 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.am (AUTOMAKE_OPTIONS): Define.
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
Mon Jan 26 15:38:36 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||
|
||||
* doc.str (bodytext): Don't output @* at the end.
|
||||
* chew.c (kill_bogus_lines): Make sure that a period at the
|
||||
beginning is recognized.
|
||||
(indent): Don't put indentation at the end.
|
||||
(copy_past_newline): Expand tabs.
|
||||
* Makefile.am (s-reloc, s-syms): Depend on doc.str.
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
Wed Oct 1 14:41:28 1997 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.am (libbfd.h): Don't use cpu-h8300.c, cpu-i960.c, or
|
||||
elfcode.h as input files; they don't contribute anything.
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
Fri Aug 15 04:55:15 1997 Doug Evans <dje@canuck.cygnus.com>
|
||||
|
||||
* Makefile.am (libbfd.h, libcoff.h): Invoke $(MKDOC) as ./$(MKDOC).
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
Fri Aug 1 12:59:58 1997 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.am (CC_FOR_BUILD): Don't set explicitly.
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
Thu Jul 31 20:00:12 1997 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.am: New file, based on old Makefile.in.
|
||||
* Makefile.in: Now built with automake.
|
||||
|
||||
Tue Jul 22 14:44:00 1997 Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>
|
||||
|
||||
* Makefile.in: Change stamp-* files to s-* files. Use bfdt.texi
|
||||
rather than bfd.texi.
|
||||
(DOCFILES): Change bfd.texi to bfdt.texi.
|
||||
* bfd.texinfo: Include bfdt.texi, not bfd.texi.
|
||||
|
||||
Mon Jun 16 15:33:15 1997 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in (CC, CFLAGS): Substitute from configure script.
|
||||
From Jeff Makey <jeff@cts.com>.
|
||||
|
||||
Tue Apr 15 12:37:41 1997 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in (install-info): Use mkinstalldirs to build
|
||||
$(infodir).
|
||||
|
||||
Tue Apr 8 12:49:46 1997 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in (install-info): Permit info files to be in srcdir.
|
||||
(stamp-*): Add a stamp-X target for each X.texi target.
|
||||
(*.texi): Just depend upon stamp-X.
|
||||
(clean): Remove stamp-*.
|
||||
(distclean): Depend upon mostlyclean. Remove stamp-*. Don't
|
||||
remove $(DOCFILES).
|
||||
|
||||
Mon Apr 7 15:23:26 1997 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in (distclean): Don't remove *.info files.
|
||||
|
||||
Thu Feb 13 20:50:02 1997 Klaus Kaempf (kkaempf@progis.de)
|
||||
|
||||
* makefile.vms: New file.
|
||||
|
||||
Tue Jun 18 18:32:28 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* chew.c (kill_bogus_lines): Reset sl when not at the start of a
|
||||
line. From Uwe Ohse <uwe@tirka.gun.de>.
|
||||
|
||||
Tue Jan 30 14:10:46 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
From Ronald F. Guilmette <rfg@monkeys.com>:
|
||||
* Makefile.in (libbfd.h): Depend upon proto.str.
|
||||
(libcoff.h, bfd.h): Likewise.
|
||||
|
||||
Fri Nov 3 14:46:48 1995 Fred Fish <fnf@cygnus.com>
|
||||
|
||||
* Makefile.in (SRCDOC, SRCPROT, core.texi, bfd.h): Use corefile.c,
|
||||
renamed from core.c.
|
||||
|
||||
Wed Nov 1 14:28:23 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 <manfred@lts.sel.alcatel.de>
|
||||
|
||||
* chew.c: Include <ctype.h>.
|
||||
|
||||
Fri Oct 6 16:23:34 1995 Ken Raeburn <raeburn@cygnus.com>
|
||||
|
||||
Mon Sep 25 22:49:32 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||
|
||||
* Makefile.in (Makefile): Only remake this Makefile.
|
||||
|
||||
Wed Oct 4 15:51:05 1995 Ken Raeburn <raeburn@cygnus.com>
|
||||
|
||||
* chew.c: Include <stdio.h>.
|
||||
|
||||
Tue Sep 12 18:14:50 1995 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in (maintainer-clean): New target.
|
||||
|
||||
Thu Aug 31 12:18:43 1995 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in (bfd.h): Add additional #endif at end of bfd.h if
|
||||
__cplusplus is defined.
|
||||
|
||||
Tue Nov 29 16:13:34 1994 Doug Evans <dje@canuck.cygnus.com>
|
||||
|
||||
* chew.c (write_buffer): New argument `f', all callers changed.
|
||||
(stdout, stderr, print, drop, idrop): New forth words.
|
||||
* proto.str (COMMENT): New command.
|
||||
* doc.str (COMMENT): Likewise.
|
||||
|
||||
Mon Sep 12 11:44:17 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
|
||||
|
||||
* Makefile.in (DOCFILES): Remove ctor.texi.
|
||||
(IPROTOS): Remove ctor.ip.
|
||||
(SRCIPROT): Remove $(srcdir)/../ctor.c.
|
||||
(ctor.texi): Remove target.
|
||||
(libbfd.h): Remove dependency on $(srcdir)/../ctor.c. Remove
|
||||
$(MKDOC) run on $(srcdir)/../ctor.c.
|
||||
* bfd.texinfo (Constructors): Remove section.
|
||||
|
||||
Fri Sep 2 13:33:44 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
|
||||
|
||||
* chew.c: Include assert.h. Added prototypes for most functions.
|
||||
Changed most uses of int to long. Do bounds checking on the
|
||||
stacks. Added comment at the beginning documenting most of the
|
||||
intrinsics. Lots of whitespace changes. Re-ordered some
|
||||
functions.
|
||||
(die, check_range, icheck_range): New functions.
|
||||
(strip_trailing_newlines, print_stack_level): New functions.
|
||||
(translatecomments): Don't insert tab before "/*".
|
||||
(iscommand): Minimum command length is now 4.
|
||||
(nextword): Handle some \-sequences.
|
||||
(push_addr): Deleted.
|
||||
(main): Add new intrinsics strip_trailing_newlines and
|
||||
print_stack_level. Complain at end if stack contains more than
|
||||
one element, or less.
|
||||
(remchar): Make sure the string is not empty before chopping off a
|
||||
character.
|
||||
|
||||
* doc.str, proto.str: Handle new commands SENUM, ENUM, ENUMX,
|
||||
ENUMEQ, ENUMEQX, ENUMDOC.
|
||||
|
||||
Wed Jan 12 18:37:12 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
|
||||
|
||||
* bfd.texinfo: Added Linker Functions node.
|
||||
* Makefile.in (DOCFILES): Added linker.texi.
|
||||
(SRCDOC): Added linker.c.
|
||||
(linker.texi): New target.
|
||||
|
||||
Tue Jan 4 10:52:56 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
|
||||
|
||||
* chew.c: Don't rely on a correct declaration of exit.
|
||||
(chew_exit): New function which just calls exit.
|
||||
(main): Use it.
|
||||
|
||||
Mon Jan 3 11:40:40 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
|
||||
|
||||
* bfd.texinfo: Added Hash Tables node.
|
||||
* Makefile.in (DOCFILES): Added hash.texi.
|
||||
(SRCDOC): Added hash.c.
|
||||
(hash.texi): New target.
|
||||
|
||||
Thu Dec 30 16:57:04 1993 Ken Raeburn (raeburn@cujo.cygnus.com)
|
||||
|
||||
* Makefile.in: Delete all references to seclet.c, since it's just
|
||||
been deleted. Don't mention hash.c, linker.c, or genlink.h yet,
|
||||
since they don't contain documentation yet (hint, hint!).
|
||||
|
||||
Fri Nov 5 10:58:53 1993 David J. Mackenzie (djm@thepub.cygnus.com)
|
||||
|
||||
* bfd.texinfo: Small cleanups.
|
||||
|
||||
Fri Nov 19 03:46:11 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* Makefile.in (archures.texi): Depends on $(MKDOC).
|
||||
|
||||
Tue Aug 10 14:22:39 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* bfd.texinfo (BFD back end): Don't include elfcode.texi, since
|
||||
it's empty now and that triggers a makeinfo bug.
|
||||
|
||||
Mon Aug 9 16:27:30 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* bfd.texinfo (BFD back end): New section on ELF, includes
|
||||
elf.texi and elfcode.texi.
|
||||
* Makefile.in (DOCFILES): Include elf.texi, elfcode.texi.
|
||||
(SRCDOC): Include elfcode.h, elf.c.
|
||||
(elf.texi, elfcode.texi): New intermediate targets.
|
||||
|
||||
Thu Jun 24 13:48:13 1993 David J. Mackenzie (djm@thepub.cygnus.com)
|
||||
|
||||
* Makefile.in (.c.o, chew.o): Put CFLAGS last.
|
||||
* bfdsumm.texi: New file, broken out of bfd.texinfo, to share
|
||||
with ld.texinfo.
|
||||
|
||||
Mon Jun 14 12:07:07 1993 david d `zoo' zuhn (zoo at rtl.cygnus.com)
|
||||
|
||||
* Makefile.in (install-info): remove parentdir cruft,
|
||||
|
||||
Wed Jun 9 16:00:32 1993 Jim Kingdon (kingdon@cygnus.com)
|
||||
|
||||
* Makefile.in (mostlyclean): Remove chew.o.
|
||||
|
||||
Tue May 25 14:46:58 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* Makefile.in (libbfd.h): Use elfcode.h, not elf32.c.
|
||||
|
||||
Mon May 24 15:50:07 1993 Ken Raeburn (raeburn@cygnus.com)
|
||||
|
||||
* chew.c (compile): Add a couple of missing casts.
|
||||
|
||||
Wed May 12 14:45:14 1993 Ian Lance Taylor (ian@cygnus.com)
|
||||
|
||||
* Makefile.in (CC_FOR_BUILD): New variable, define to be $(CC).
|
||||
(chew.o, $(MKDOC)): Build using CC_FOR_BUILD rather than CC, since
|
||||
it must run on the build machine.
|
||||
|
||||
Tue Apr 6 22:38:10 1993 John Gilmore (gnu@cygnus.com)
|
||||
|
||||
* Makefile.in (chew): Don't compile from .c to executable in a
|
||||
single step; it puts a temporary .o filename into the executable,
|
||||
which makes multi-stage comparisons fail. Compile chew.c to
|
||||
chew.o, and link that, which makes identical executables every time.
|
||||
|
||||
Wed Mar 24 17:26:29 1993 david d `zoo' zuhn (zoo at poseidon.cygnus.com)
|
||||
|
||||
* Makefile.in: fix typo (bfd.texinfo not bfd.texino)
|
||||
|
||||
Fri Mar 19 01:13:00 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com)
|
||||
|
||||
* bfd.texinfo: Since BFD version number has been bumped, do same
|
||||
to "version number" on title page, and elsewhere. Should be
|
||||
fixed to extract real version number.
|
||||
|
||||
Tue Mar 16 12:15:13 1993 Per Bothner (bothner@rtl.cygnus.com)
|
||||
|
||||
* Makefile.in: Add *clean rules.
|
||||
|
||||
Mon Jan 11 18:43:56 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
|
||||
|
||||
* Makefile.in (libbfd.h): Removed duplicate init.c and libbfd.c.
|
||||
Added seclet.c.
|
||||
(bfd.h): Added dependency on bfd.c and seclet.c. Added seclet.c
|
||||
to build.
|
||||
|
||||
Thu Dec 17 19:35:43 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
|
||||
|
||||
* Makefile.in: added dvi target, define and use $(TEXI2DVI)
|
||||
|
||||
Thu Dec 3 17:42:48 1992 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* Makefile.in (TEXIDIR): New variable.
|
||||
(bfd.dvi): Look for bfd.texinfo in $(srcdir). Generate index.
|
||||
|
||||
* bfd.texinfo: Minor doc fixes.
|
||||
|
||||
Thu Nov 5 03:13:55 1992 John Gilmore (gnu@cygnus.com)
|
||||
|
||||
Cleanup: Replace all uses of EXFUN in the BFD sources, with PARAMS.
|
||||
|
||||
* chew.c (exfunstuff): Eliminate.
|
||||
(paramstuff): Replace exfunstuff with function to generate PARAMS.
|
||||
* proto.str: Use paramstuff rather than exfunstuff.
|
||||
|
||||
Mon Aug 17 12:40:32 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
|
||||
* chew.c: various patches provided by Howard Chu.
|
||||
|
||||
Fri Jun 19 18:59:54 1992 John Gilmore (gnu at cygnus.com)
|
||||
|
||||
* Makefile.in (libbfd.h): Add elf.c as a source of prototypes.
|
||||
|
||||
Mon May 11 18:55:59 1992 John Gilmore (gnu at cygnus.com)
|
||||
|
||||
* chew.c: exit() should be declared by config files, not by
|
||||
portable source code. Its type could be int or void function.
|
||||
|
||||
Mon May 4 13:45:57 1992 K. Richard Pixley (rich@rtl.cygnus.com)
|
||||
|
||||
* Makefile.in: another CFLAGS correction.
|
||||
|
||||
Tue Apr 28 10:21:32 1992 K. Richard Pixley (rich@rtl.cygnus.com)
|
||||
|
||||
* Makefile.in: Do the CFLAGS thing.
|
||||
|
||||
Fri Apr 10 22:34:52 1992 Fred Fish (fnf@cygnus.com)
|
||||
|
||||
* Makefile.in (MINUS_G): Add macro and default to -g.
|
||||
|
||||
Fri Mar 6 18:53:18 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
|
||||
* chew.c: now has -w switch turn on warnings
|
||||
|
||||
Wed Feb 26 18:04:40 1992 K. Richard Pixley (rich@cygnus.com)
|
||||
|
||||
* Makefile.in, configure.in: removed traces of namesubdir,
|
||||
-subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced
|
||||
copyrights to '92, changed some from Cygnus to FSF.
|
||||
|
||||
Tue Dec 10 22:11:05 1991 K. Richard Pixley (rich at rtl.cygnus.com)
|
||||
|
||||
* Makefile.in: build chew into the current directory. Complete
|
||||
the MKDOC macro transition.
|
||||
|
||||
Tue Dec 10 08:26:28 1991 Steve Chamberlain (sac at rtl.cygnus.com)
|
||||
|
||||
* chew.c: don't core dump when can't open file
|
||||
* Makefile.in: get proto.str from the right place when built in
|
||||
odd directories
|
||||
|
||||
Tue Dec 10 04:07:25 1991 K. Richard Pixley (rich at rtl.cygnus.com)
|
||||
|
||||
* Makefile.in: infodir belongs in datadir.
|
||||
|
||||
Sat Dec 7 17:01:23 1991 Steve Chamberlain (sac at rtl.cygnus.com)
|
||||
|
||||
* chew.c: Much modified
|
||||
* proto.str, doc.str: New files for extracting to product
|
||||
prototypes and documents respectively.
|
||||
|
||||
|
||||
Fri Dec 6 22:57:12 1991 K. Richard Pixley (rich at rtl.cygnus.com)
|
||||
|
||||
* Makefile.in: added standards.text support, host/site/target
|
||||
inclusion hooks, install using INSTALL_DATA rather than cp,
|
||||
don't echo on install.
|
||||
|
||||
Thu Dec 5 22:46:17 1991 K. Richard Pixley (rich at rtl.cygnus.com)
|
||||
|
||||
* Makefile.in: idestdir and ddestdir go away. Added copyrights
|
||||
and shift gpl to v2. Added ChangeLog if it didn't exist. docdir
|
||||
and mandir now keyed off datadir by default.
|
||||
Apply from mainline.
|
||||
2004-03-27 Alan Modra <amodra@bigpond.net.au>
|
||||
* bfdint.texi: Remove all mention of elflink.h.
|
||||
|
||||
For older changes see ChangeLog-9103
|
||||
|
||||
Local Variables:
|
||||
mode: change-log
|
||||
left-margin: 8
|
||||
fill-column: 74
|
||||
version-control: never
|
||||
End:
|
||||
|
||||
@@ -0,0 +1,594 @@
|
||||
2003-10-15 Andrew Cagney <cagney@redhat.com>
|
||||
|
||||
* bfdint.texi (BFD target vector symbols): Rename _get_symtab to
|
||||
_canonicalize_symtab.
|
||||
|
||||
2003-10-08 David Taylor <dtaylor@emc.com>
|
||||
|
||||
* bfd.texinfo: Remove spurious backslash.
|
||||
|
||||
2003-07-04 Josh Baratz <baratz@intersystems.com>
|
||||
|
||||
* Makefile.am (MKDOC rule): Add $(CFLAGS) in case it contains
|
||||
CC_FOR_BUILD specific switches.
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2003-06-29 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* chew.c (paramstuff): Don't emit PARAMS.
|
||||
|
||||
2003-02-12 Bob Wilson <bob.wilson@acm.org>
|
||||
|
||||
* bfd.texinfo: Fix quotes for texinfo. Make section title
|
||||
capitalization more consistent. Use @example instead of @lisp.
|
||||
Replace FDL appendix with include of fdl.texi.
|
||||
* fdl.texi: New file.
|
||||
|
||||
2002-11-18 Klee Dienes <kdienes@apple.com>
|
||||
|
||||
* Makefile.am (DOCFILES): Add bfdwin.texi, bfdio.texi.
|
||||
(PROTOS): Add bfdio.p, bfdwin.p.
|
||||
(SRCDOC): Add bfdio.c, bfdwin.c.
|
||||
(SRCPROT): Add bfdio.c, bfdwin.c.
|
||||
(SRCIPROT): Add bfdio.c, bfdwin.c.
|
||||
(LIBBFD_H_DEP): Add bfdio.c, bfdwin.c.
|
||||
(BFD_H_DEP): Add bfdio.c, bfdwin.c.
|
||||
Add rules for bfdio.texi, bfdwin.text.
|
||||
* bfd.texinfo: Include bfdio.texi.
|
||||
|
||||
2002-10-14 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2002-10-11 Daniel Jacobowitz <drow@mvista.com>
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2002-08-29 John David Anglin <dave@hiauly1.hia.nrc.ca>
|
||||
|
||||
* chew.c (paramstuff, outputdots, perform, bang and usage): Remove
|
||||
void from function definitions.
|
||||
|
||||
2002-08-13 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* header.sed: Strip tabs.
|
||||
|
||||
2002-06-08 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.am: Fix quote style in last change.
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2002-06-07 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.am (libbfd.h): Don't use "echo -n".
|
||||
(libcoff.h, bfd.h): Likewise.
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2002-06-06 Lars Brinkhoff <lars@nocrew.org>
|
||||
|
||||
* bfdint.texi: Change registry@sco.com to registry@caldera.com.
|
||||
|
||||
2002-06-05 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.am (libbfd.h): Add "Extracted from.." comment.
|
||||
(libcoff.h, bfd.h): Likewise.
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2002-05-25 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* chew.c: Use #include "" instead of <> for local header files.
|
||||
|
||||
2002-04-20 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2002-02-11 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2002-02-01 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* chew.c (WORD): Eliminate.
|
||||
|
||||
2002-01-31 Ivan Guzvinec <ivang@opencores.org>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2002-01-31 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* chew.c (courierize): Don't modify @command params.
|
||||
|
||||
2002-01-30 Nick Clifton <nickc@cambridge.redhat.com>
|
||||
|
||||
* proto.str (ENUMDOC): Place two spaces between the end of
|
||||
the text and the closing comment marker.
|
||||
|
||||
2001-10-30 Hans-Peter Nilsson <hp@bitrange.com>
|
||||
|
||||
* bfdint.texi (BFD target vector miscellaneous): Add
|
||||
bfd_target_mmo_flavour.
|
||||
* bfd.texinfo (BFD back ends): Add entry for mmo.
|
||||
* Makefile.am (DOCFILES): Add mmo.texi.
|
||||
(SRCDOC): Add mmo.c.
|
||||
(s-mmo, mmo.texi): New rules.
|
||||
|
||||
2001-10-29 Kazu Hirata <kazu@hxi.com>
|
||||
|
||||
* bfdsumm.texi: Fix a typo.
|
||||
|
||||
2001-10-26 Nick Clifton <nickc@cambridge.redhat.com>
|
||||
|
||||
* bfd.texinfo: Change footer to refer to FSF. Change subtitle
|
||||
to refer to original creation date.
|
||||
|
||||
2002-01-26 Hans-Peter Nilsson <hp@bitrange.com>
|
||||
|
||||
* Makefile.am (install): Depend on install-info.
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2001-10-03 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.am (BFD_H_DEP): Add ../version.h.
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2001-10-02 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2001-10-01 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* header.sed: New file, adds header to generated files.
|
||||
* Makefile.am: Rewrite rules generating libbfd.h, libcoff.h and
|
||||
bfd.h, using above. Add missing elf.c dependecy for libbfd.h.
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2001-09-21 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2001-09-18 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* bfdint.texi: Replace reference to bfd_read with bfd_bread.
|
||||
Likewise for bfd_write.
|
||||
|
||||
2001-07-24 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2001-06-21 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* bfdint.texi (BFD relocation functions) <different formats>:
|
||||
Mention that the GNU linker is aware of input-output format
|
||||
restrictions when generating relocatable output. Make new
|
||||
paragraph for final-link case.
|
||||
(BFD target vector swap): Fix typo.
|
||||
|
||||
2001-01-25 Kazu Hirata <kazu@hxi.com>
|
||||
|
||||
* chew.c: Do not output trailing whitespaces in type and
|
||||
functionname. Update copyright.
|
||||
|
||||
2001-01-24 Kazu Hirata <kazu@hxi.com>
|
||||
|
||||
* chew.c: Do not output a trailing whitespace.
|
||||
|
||||
2000-11-06 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* bfd.texinfo: Add GNU Free Documentation License.
|
||||
|
||||
2000-07-09 Alan Modra <alan@linuxcare.com.au>
|
||||
|
||||
* Makefile.in: Regenerate.
|
||||
|
||||
2000-07-08 Alan Modra <alan@linuxcare.com.au>
|
||||
|
||||
* chew.c (outputdots): Don't add a space before `/*'.
|
||||
(courierize): Likewise.
|
||||
|
||||
Wed May 24 12:03:25 2000 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* bfdint.texi (BFD ELF processor required): Add paragraph about
|
||||
target necessities for readelf.
|
||||
|
||||
2000-04-30 Ben Elliston <bje@redhat.com>
|
||||
|
||||
* bfdint.texi (BFD generated files): Fix another typo.
|
||||
|
||||
2000-04-17 Ben Elliston <bje@redhat.com>
|
||||
|
||||
* bfdint.texi (BFD_JUMP_TABLE macros): Fix typo.
|
||||
|
||||
2000-04-07 Andrew Cagney <cagney@b1.cygnus.com>
|
||||
|
||||
* Makefile.in: Rebuild with current autoconf/automake.
|
||||
|
||||
1999-02-04 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in: Rebuild with current autoconf/automake.
|
||||
|
||||
1998-07-23 Nick Clifton <nickc@cygnus.com>
|
||||
|
||||
* bfdint.texi (BFD ELF processor required): Add paragraph
|
||||
describing the necessity to create "include/elf/CPU.h".
|
||||
|
||||
1998-05-07 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.am (chew.o): Add -I options for intl srcdir and
|
||||
objdir.
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
1998-04-27 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* bfdint.texi: New file.
|
||||
* Makefile.am (noinst_TEXINFOS): New variable.
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
1998-04-13 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
1998-04-06 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.am (STAGESTUFF): Remove variable.
|
||||
(CLEANFILES): Don't remove $(STAGESTUFF).
|
||||
(DISTCLEANFILES, MAINTAINERCLEANFILES): New variables.
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
1998-03-27 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* chew.c (skip_white_and_starts): Remove unused declaration.
|
||||
(skip_white_and_stars): Add casts to avoid warnings.
|
||||
(skip_trailing_newlines, paramstuff, courierize): Likewise.
|
||||
(bulletize, do_fancy_stuff, iscommand): Likewise.
|
||||
(kill_bogus_lines, nextword, main): Likewise.
|
||||
(manglecomments): Comment out.
|
||||
(outputdots, kill_bogus_lines): Remove unused local variables.
|
||||
(perform, compile): Likewise.
|
||||
(courierize): Fully parenthesize expression.
|
||||
(copy_past_newline): Declare return value.
|
||||
(print): Change printf format string.
|
||||
(main): Call usage for an unrecognized option.
|
||||
|
||||
1998-02-13 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.am (AUTOMAKE_OPTIONS): Define.
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
1998-01-26 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||
|
||||
* doc.str (bodytext): Don't output @* at the end.
|
||||
* chew.c (kill_bogus_lines): Make sure that a period at the
|
||||
beginning is recognized.
|
||||
(indent): Don't put indentation at the end.
|
||||
(copy_past_newline): Expand tabs.
|
||||
* Makefile.am (s-reloc, s-syms): Depend on doc.str.
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
1997-10-01 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.am (libbfd.h): Don't use cpu-h8300.c, cpu-i960.c, or
|
||||
elfcode.h as input files; they don't contribute anything.
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
1997-08-15 Doug Evans <dje@canuck.cygnus.com>
|
||||
|
||||
* Makefile.am (libbfd.h, libcoff.h): Invoke $(MKDOC) as ./$(MKDOC).
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
1997-08-01 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.am (CC_FOR_BUILD): Don't set explicitly.
|
||||
* Makefile.in: Rebuild.
|
||||
|
||||
1997-07-31 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.am: New file, based on old Makefile.in.
|
||||
* Makefile.in: Now built with automake.
|
||||
|
||||
1997-07-22 Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>
|
||||
|
||||
* Makefile.in: Change stamp-* files to s-* files. Use bfdt.texi
|
||||
rather than bfd.texi.
|
||||
(DOCFILES): Change bfd.texi to bfdt.texi.
|
||||
* bfd.texinfo: Include bfdt.texi, not bfd.texi.
|
||||
|
||||
1997-06-16 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in (CC, CFLAGS): Substitute from configure script.
|
||||
From Jeff Makey <jeff@cts.com>.
|
||||
|
||||
1997-04-15 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in (install-info): Use mkinstalldirs to build
|
||||
$(infodir).
|
||||
|
||||
1997-04-08 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in (install-info): Permit info files to be in srcdir.
|
||||
(stamp-*): Add a stamp-X target for each X.texi target.
|
||||
(*.texi): Just depend upon stamp-X.
|
||||
(clean): Remove stamp-*.
|
||||
(distclean): Depend upon mostlyclean. Remove stamp-*. Don't
|
||||
remove $(DOCFILES).
|
||||
|
||||
1997-04-07 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in (distclean): Don't remove *.info files.
|
||||
|
||||
1997-02-13 Klaus Kaempf (kkaempf@progis.de)
|
||||
|
||||
* makefile.vms: New file.
|
||||
|
||||
1996-06-18 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* chew.c (kill_bogus_lines): Reset sl when not at the start of a
|
||||
line. From Uwe Ohse <uwe@tirka.gun.de>.
|
||||
|
||||
1996-01-30 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
From Ronald F. Guilmette <rfg@monkeys.com>:
|
||||
* Makefile.in (libbfd.h): Depend upon proto.str.
|
||||
(libcoff.h, bfd.h): Likewise.
|
||||
|
||||
1995-11-03 Fred Fish <fnf@cygnus.com>
|
||||
|
||||
* Makefile.in (SRCDOC, SRCPROT, core.texi, bfd.h): Use corefile.c,
|
||||
renamed from core.c.
|
||||
|
||||
1995-11-01 Manfred Hollstein KS/EF4A 60/1F/110 #40283 <manfred@lts.sel.alcatel.de>
|
||||
|
||||
* chew.c: Include <ctype.h>.
|
||||
|
||||
1995-10-06 Ken Raeburn <raeburn@cygnus.com>
|
||||
|
||||
Mon Sep 25 22:49:32 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||
|
||||
* Makefile.in (Makefile): Only remake this Makefile.
|
||||
|
||||
1995-10-04 Ken Raeburn <raeburn@cygnus.com>
|
||||
|
||||
* chew.c: Include <stdio.h>.
|
||||
|
||||
1995-09-12 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in (maintainer-clean): New target.
|
||||
|
||||
1995-08-31 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* Makefile.in (bfd.h): Add additional #endif at end of bfd.h if
|
||||
__cplusplus is defined.
|
||||
|
||||
1994-11-29 Doug Evans <dje@canuck.cygnus.com>
|
||||
|
||||
* chew.c (write_buffer): New argument `f', all callers changed.
|
||||
(stdout, stderr, print, drop, idrop): New forth words.
|
||||
* proto.str (COMMENT): New command.
|
||||
* doc.str (COMMENT): Likewise.
|
||||
|
||||
1994-09-12 Ian Lance Taylor (ian@sanguine.cygnus.com)
|
||||
|
||||
* Makefile.in (DOCFILES): Remove ctor.texi.
|
||||
(IPROTOS): Remove ctor.ip.
|
||||
(SRCIPROT): Remove $(srcdir)/../ctor.c.
|
||||
(ctor.texi): Remove target.
|
||||
(libbfd.h): Remove dependency on $(srcdir)/../ctor.c. Remove
|
||||
$(MKDOC) run on $(srcdir)/../ctor.c.
|
||||
* bfd.texinfo (Constructors): Remove section.
|
||||
|
||||
1994-09-02 Ken Raeburn (raeburn@cujo.cygnus.com)
|
||||
|
||||
* chew.c: Include assert.h. Added prototypes for most functions.
|
||||
Changed most uses of int to long. Do bounds checking on the
|
||||
stacks. Added comment at the beginning documenting most of the
|
||||
intrinsics. Lots of whitespace changes. Re-ordered some
|
||||
functions.
|
||||
(die, check_range, icheck_range): New functions.
|
||||
(strip_trailing_newlines, print_stack_level): New functions.
|
||||
(translatecomments): Don't insert tab before "/*".
|
||||
(iscommand): Minimum command length is now 4.
|
||||
(nextword): Handle some \-sequences.
|
||||
(push_addr): Deleted.
|
||||
(main): Add new intrinsics strip_trailing_newlines and
|
||||
print_stack_level. Complain at end if stack contains more than
|
||||
one element, or less.
|
||||
(remchar): Make sure the string is not empty before chopping off a
|
||||
character.
|
||||
|
||||
* doc.str, proto.str: Handle new commands SENUM, ENUM, ENUMX,
|
||||
ENUMEQ, ENUMEQX, ENUMDOC.
|
||||
|
||||
1994-01-12 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
|
||||
|
||||
* bfd.texinfo: Added Linker Functions node.
|
||||
* Makefile.in (DOCFILES): Added linker.texi.
|
||||
(SRCDOC): Added linker.c.
|
||||
(linker.texi): New target.
|
||||
|
||||
1994-01-04 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
|
||||
|
||||
* chew.c: Don't rely on a correct declaration of exit.
|
||||
(chew_exit): New function which just calls exit.
|
||||
(main): Use it.
|
||||
|
||||
1994-01-03 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
|
||||
|
||||
* bfd.texinfo: Added Hash Tables node.
|
||||
* Makefile.in (DOCFILES): Added hash.texi.
|
||||
(SRCDOC): Added hash.c.
|
||||
(hash.texi): New target.
|
||||
|
||||
1993-12-30 Ken Raeburn (raeburn@cujo.cygnus.com)
|
||||
|
||||
* Makefile.in: Delete all references to seclet.c, since it's just
|
||||
been deleted. Don't mention hash.c, linker.c, or genlink.h yet,
|
||||
since they don't contain documentation yet (hint, hint!).
|
||||
|
||||
1993-11-05 David J. Mackenzie (djm@thepub.cygnus.com)
|
||||
|
||||
* bfd.texinfo: Small cleanups.
|
||||
|
||||
1993-11-19 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* Makefile.in (archures.texi): Depends on $(MKDOC).
|
||||
|
||||
1993-08-10 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* bfd.texinfo (BFD back end): Don't include elfcode.texi, since
|
||||
it's empty now and that triggers a makeinfo bug.
|
||||
|
||||
1993-08-09 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* bfd.texinfo (BFD back end): New section on ELF, includes
|
||||
elf.texi and elfcode.texi.
|
||||
* Makefile.in (DOCFILES): Include elf.texi, elfcode.texi.
|
||||
(SRCDOC): Include elfcode.h, elf.c.
|
||||
(elf.texi, elfcode.texi): New intermediate targets.
|
||||
|
||||
1993-06-24 David J. Mackenzie (djm@thepub.cygnus.com)
|
||||
|
||||
* Makefile.in (.c.o, chew.o): Put CFLAGS last.
|
||||
* bfdsumm.texi: New file, broken out of bfd.texinfo, to share
|
||||
with ld.texinfo.
|
||||
|
||||
1993-06-14 david d `zoo' zuhn (zoo at rtl.cygnus.com)
|
||||
|
||||
* Makefile.in (install-info): remove parentdir cruft,
|
||||
|
||||
1993-06-09 Jim Kingdon (kingdon@cygnus.com)
|
||||
|
||||
* Makefile.in (mostlyclean): Remove chew.o.
|
||||
|
||||
1993-05-25 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* Makefile.in (libbfd.h): Use elfcode.h, not elf32.c.
|
||||
|
||||
1993-05-24 Ken Raeburn (raeburn@cygnus.com)
|
||||
|
||||
* chew.c (compile): Add a couple of missing casts.
|
||||
|
||||
1993-05-12 Ian Lance Taylor (ian@cygnus.com)
|
||||
|
||||
* Makefile.in (CC_FOR_BUILD): New variable, define to be $(CC).
|
||||
(chew.o, $(MKDOC)): Build using CC_FOR_BUILD rather than CC, since
|
||||
it must run on the build machine.
|
||||
|
||||
1993-04-07 John Gilmore (gnu@cygnus.com)
|
||||
|
||||
* Makefile.in (chew): Don't compile from .c to executable in a
|
||||
single step; it puts a temporary .o filename into the executable,
|
||||
which makes multi-stage comparisons fail. Compile chew.c to
|
||||
chew.o, and link that, which makes identical executables every time.
|
||||
|
||||
1993-03-24 david d `zoo' zuhn (zoo at poseidon.cygnus.com)
|
||||
|
||||
* Makefile.in: fix typo (bfd.texinfo not bfd.texino)
|
||||
|
||||
1993-03-19 Ken Raeburn (raeburn@kr-pc.cygnus.com)
|
||||
|
||||
* bfd.texinfo: Since BFD version number has been bumped, do same
|
||||
to "version number" on title page, and elsewhere. Should be
|
||||
fixed to extract real version number.
|
||||
|
||||
1993-03-16 Per Bothner (bothner@rtl.cygnus.com)
|
||||
|
||||
* Makefile.in: Add *clean rules.
|
||||
|
||||
1993-01-11 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
|
||||
|
||||
* Makefile.in (libbfd.h): Removed duplicate init.c and libbfd.c.
|
||||
Added seclet.c.
|
||||
(bfd.h): Added dependency on bfd.c and seclet.c. Added seclet.c
|
||||
to build.
|
||||
|
||||
1992-12-17 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
|
||||
|
||||
* Makefile.in: added dvi target, define and use $(TEXI2DVI)
|
||||
|
||||
1992-12-03 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* Makefile.in (TEXIDIR): New variable.
|
||||
(bfd.dvi): Look for bfd.texinfo in $(srcdir). Generate index.
|
||||
|
||||
* bfd.texinfo: Minor doc fixes.
|
||||
|
||||
1992-11-05 John Gilmore (gnu@cygnus.com)
|
||||
|
||||
Cleanup: Replace all uses of EXFUN in the BFD sources, with PARAMS.
|
||||
|
||||
* chew.c (exfunstuff): Eliminate.
|
||||
(paramstuff): Replace exfunstuff with function to generate PARAMS.
|
||||
* proto.str: Use paramstuff rather than exfunstuff.
|
||||
|
||||
1992-08-17 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
|
||||
* chew.c: various patches provided by Howard Chu.
|
||||
|
||||
1992-06-19 John Gilmore (gnu at cygnus.com)
|
||||
|
||||
* Makefile.in (libbfd.h): Add elf.c as a source of prototypes.
|
||||
|
||||
1992-05-11 John Gilmore (gnu at cygnus.com)
|
||||
|
||||
* chew.c: exit() should be declared by config files, not by
|
||||
portable source code. Its type could be int or void function.
|
||||
|
||||
1992-05-04 K. Richard Pixley (rich@rtl.cygnus.com)
|
||||
|
||||
* Makefile.in: another CFLAGS correction.
|
||||
|
||||
1992-04-28 K. Richard Pixley (rich@rtl.cygnus.com)
|
||||
|
||||
* Makefile.in: Do the CFLAGS thing.
|
||||
|
||||
1992-04-11 Fred Fish (fnf@cygnus.com)
|
||||
|
||||
* Makefile.in (MINUS_G): Add macro and default to -g.
|
||||
|
||||
1992-03-06 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
|
||||
* chew.c: now has -w switch turn on warnings
|
||||
|
||||
1992-02-26 K. Richard Pixley (rich@cygnus.com)
|
||||
|
||||
* Makefile.in, configure.in: removed traces of namesubdir,
|
||||
-subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced
|
||||
copyrights to '92, changed some from Cygnus to FSF.
|
||||
|
||||
1991-12-10 K. Richard Pixley (rich at rtl.cygnus.com)
|
||||
|
||||
* Makefile.in: build chew into the current directory. Complete
|
||||
the MKDOC macro transition.
|
||||
|
||||
1991-12-10 Steve Chamberlain (sac at rtl.cygnus.com)
|
||||
|
||||
* chew.c: don't core dump when can't open file
|
||||
* Makefile.in: get proto.str from the right place when built in
|
||||
odd directories
|
||||
|
||||
1991-12-10 K. Richard Pixley (rich at rtl.cygnus.com)
|
||||
|
||||
* Makefile.in: infodir belongs in datadir.
|
||||
|
||||
1991-12-07 Steve Chamberlain (sac at rtl.cygnus.com)
|
||||
|
||||
* chew.c: Much modified
|
||||
* proto.str, doc.str: New files for extracting to product
|
||||
prototypes and documents respectively.
|
||||
|
||||
|
||||
1991-12-06 K. Richard Pixley (rich at rtl.cygnus.com)
|
||||
|
||||
* Makefile.in: added standards.text support, host/site/target
|
||||
inclusion hooks, install using INSTALL_DATA rather than cp,
|
||||
don't echo on install.
|
||||
|
||||
1991-12-05 K. Richard Pixley (rich at rtl.cygnus.com)
|
||||
|
||||
* Makefile.in: idestdir and ddestdir go away. Added copyrights
|
||||
and shift gpl to v2. Added ChangeLog if it didn't exist. docdir
|
||||
and mandir now keyed off datadir by default.
|
||||
|
||||
|
||||
Local Variables:
|
||||
version-control: never
|
||||
End:
|
||||
@@ -4,13 +4,15 @@ AUTOMAKE_OPTIONS = cygnus
|
||||
|
||||
DOCFILES = aoutx.texi archive.texi archures.texi \
|
||||
bfdt.texi cache.texi coffcode.texi \
|
||||
core.texi elf.texi elfcode.texi format.texi libbfd.texi \
|
||||
core.texi elf.texi elfcode.texi format.texi \
|
||||
libbfd.texi bfdwin.texi bfdio.texi \
|
||||
opncls.texi reloc.texi section.texi \
|
||||
syms.texi targets.texi init.texi hash.texi linker.texi \
|
||||
mmo.texi
|
||||
|
||||
PROTOS = archive.p archures.p bfd.p \
|
||||
core.p format.p \
|
||||
bfdio.p bfdwin.p \
|
||||
libbfd.p opncls.p reloc.p \
|
||||
section.p syms.p targets.p \
|
||||
format.p core.p init.p
|
||||
@@ -22,6 +24,7 @@ IPROTOS = cache.ip libbfd.ip reloc.ip init.ip archures.ip coffcode.ip
|
||||
# you don't need these three:
|
||||
SRCDOC = $(srcdir)/../aoutx.h $(srcdir)/../archive.c \
|
||||
$(srcdir)/../archures.c $(srcdir)/../bfd.c \
|
||||
$(srcdir)/../bfdio.c $(srcdir)/../bfdwin.c \
|
||||
$(srcdir)/../cache.c $(srcdir)/../coffcode.h \
|
||||
$(srcdir)/../corefile.c $(srcdir)/../elf.c \
|
||||
$(srcdir)/../elfcode.h $(srcdir)/../format.c \
|
||||
@@ -34,11 +37,13 @@ SRCDOC = $(srcdir)/../aoutx.h $(srcdir)/../archive.c \
|
||||
SRCPROT = $(srcdir)/../archive.c $(srcdir)/../archures.c \
|
||||
$(srcdir)/../bfd.c $(srcdir)/../coffcode.h $(srcdir)/../corefile.c \
|
||||
$(srcdir)/../format.c $(srcdir)/../libbfd.c \
|
||||
$(srcdir)/../bfdio.c $(srcdir)/../bfdwin.c \
|
||||
$(srcdir)/../opncls.c $(srcdir)/../reloc.c \
|
||||
$(srcdir)/../section.c $(srcdir)/../syms.c \
|
||||
$(srcdir)/../targets.c $(srcdir)/../init.c
|
||||
|
||||
SRCIPROT = $(srcdir)/../cache.c $(srcdir)/../libbfd.c \
|
||||
$(srcdir)/../bfdio.c $(srcdir)/../bfdwin.c \
|
||||
$(srcdir)/../reloc.c $(srcdir)/../cpu-h8300.c \
|
||||
$(srcdir)/../cpu-i960.c $(srcdir)/../archures.c \
|
||||
$(srcdir)/../init.c
|
||||
@@ -50,7 +55,7 @@ info_TEXINFOS = bfd.texinfo
|
||||
MKDOC = chew$(EXEEXT_FOR_BUILD)
|
||||
|
||||
$(MKDOC): chew.o
|
||||
$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(LOADLIBES) $(LDFLAGS)
|
||||
$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS) $(LOADLIBES) $(LDFLAGS)
|
||||
|
||||
chew.o: chew.c
|
||||
$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c
|
||||
@@ -143,6 +148,18 @@ s-libbfd: $(MKDOC) $(srcdir)/../libbfd.c $(srcdir)/doc.str
|
||||
touch s-libbfd
|
||||
libbfd.texi: s-libbfd
|
||||
|
||||
s-bfdio: $(MKDOC) $(srcdir)/../bfdio.c $(srcdir)/doc.str
|
||||
./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfdio.c >bfdio.tmp
|
||||
$(srcdir)/../../move-if-change bfdio.tmp bfdio.texi
|
||||
touch s-bfdio
|
||||
bfdio.texi: s-bfdio
|
||||
|
||||
s-bfdwin: $(MKDOC) $(srcdir)/../bfdwin.c $(srcdir)/doc.str
|
||||
./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfdwin.c >bfdwin.tmp
|
||||
$(srcdir)/../../move-if-change bfdwin.tmp bfdwin.texi
|
||||
touch s-bfdwin
|
||||
bfdwin.texi: s-bfdwin
|
||||
|
||||
s-opncls: $(MKDOC) $(srcdir)/../opncls.c $(srcdir)/doc.str
|
||||
./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../opncls.c >opncls.tmp
|
||||
$(srcdir)/../../move-if-change opncls.tmp opncls.texi
|
||||
@@ -195,6 +212,8 @@ LIBBFD_H_DEP = \
|
||||
$(srcdir)/../libbfd-in.h \
|
||||
$(srcdir)/../init.c \
|
||||
$(srcdir)/../libbfd.c \
|
||||
$(srcdir)/../bfdio.c \
|
||||
$(srcdir)/../bfdwin.c \
|
||||
$(srcdir)/../cache.c \
|
||||
$(srcdir)/../reloc.c \
|
||||
$(srcdir)/../archures.c \
|
||||
@@ -239,6 +258,8 @@ BFD_H_DEP = \
|
||||
$(srcdir)/../init.c \
|
||||
$(srcdir)/../opncls.c \
|
||||
$(srcdir)/../libbfd.c \
|
||||
$(srcdir)/../bfdio.c \
|
||||
$(srcdir)/../bfdwin.c \
|
||||
$(srcdir)/../section.c \
|
||||
$(srcdir)/../archures.c \
|
||||
$(srcdir)/../reloc.c \
|
||||
@@ -248,6 +269,8 @@ BFD_H_DEP = \
|
||||
$(srcdir)/../corefile.c \
|
||||
$(srcdir)/../targets.c \
|
||||
$(srcdir)/../format.c \
|
||||
$(srcdir)/../linker.c \
|
||||
$(srcdir)/../simple.c \
|
||||
$(srcdir)/header.sed \
|
||||
$(srcdir)/proto.str \
|
||||
$(srcdir)/../version.h \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Makefile.in generated automatically by automake 1.4 from Makefile.am
|
||||
# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
@@ -68,6 +68,7 @@ AS = @AS@
|
||||
BFD_HOST_64BIT_LONG = @BFD_HOST_64BIT_LONG@
|
||||
BFD_HOST_64_BIT = @BFD_HOST_64_BIT@
|
||||
BFD_HOST_64_BIT_DEFINED = @BFD_HOST_64_BIT_DEFINED@
|
||||
BFD_HOST_LONG_LONG = @BFD_HOST_LONG_LONG@
|
||||
BFD_HOST_U_64_BIT = @BFD_HOST_U_64_BIT@
|
||||
CATALOGS = @CATALOGS@
|
||||
CATOBJEXT = @CATOBJEXT@
|
||||
@@ -116,10 +117,11 @@ WIN32LIBADD = @WIN32LIBADD@
|
||||
all_backends = @all_backends@
|
||||
bfd_backends = @bfd_backends@
|
||||
bfd_default_target_size = @bfd_default_target_size@
|
||||
bfd_file_ptr = @bfd_file_ptr@
|
||||
bfd_libs = @bfd_libs@
|
||||
bfd_machines = @bfd_machines@
|
||||
bfd_ufile_ptr = @bfd_ufile_ptr@
|
||||
bfd_version = @bfd_version@
|
||||
bfd_version_date = @bfd_version_date@
|
||||
bfd_version_string = @bfd_version_string@
|
||||
bfdincludedir = @bfdincludedir@
|
||||
bfdlibdir = @bfdlibdir@
|
||||
@@ -131,7 +133,8 @@ AUTOMAKE_OPTIONS = cygnus
|
||||
|
||||
DOCFILES = aoutx.texi archive.texi archures.texi \
|
||||
bfdt.texi cache.texi coffcode.texi \
|
||||
core.texi elf.texi elfcode.texi format.texi libbfd.texi \
|
||||
core.texi elf.texi elfcode.texi format.texi \
|
||||
libbfd.texi bfdwin.texi bfdio.texi \
|
||||
opncls.texi reloc.texi section.texi \
|
||||
syms.texi targets.texi init.texi hash.texi linker.texi \
|
||||
mmo.texi
|
||||
@@ -139,6 +142,7 @@ DOCFILES = aoutx.texi archive.texi archures.texi \
|
||||
|
||||
PROTOS = archive.p archures.p bfd.p \
|
||||
core.p format.p \
|
||||
bfdio.p bfdwin.p \
|
||||
libbfd.p opncls.p reloc.p \
|
||||
section.p syms.p targets.p \
|
||||
format.p core.p init.p
|
||||
@@ -151,6 +155,7 @@ IPROTOS = cache.ip libbfd.ip reloc.ip init.ip archures.ip coffcode.ip
|
||||
# you don't need these three:
|
||||
SRCDOC = $(srcdir)/../aoutx.h $(srcdir)/../archive.c \
|
||||
$(srcdir)/../archures.c $(srcdir)/../bfd.c \
|
||||
$(srcdir)/../bfdio.c $(srcdir)/../bfdwin.c \
|
||||
$(srcdir)/../cache.c $(srcdir)/../coffcode.h \
|
||||
$(srcdir)/../corefile.c $(srcdir)/../elf.c \
|
||||
$(srcdir)/../elfcode.h $(srcdir)/../format.c \
|
||||
@@ -164,12 +169,14 @@ SRCDOC = $(srcdir)/../aoutx.h $(srcdir)/../archive.c \
|
||||
SRCPROT = $(srcdir)/../archive.c $(srcdir)/../archures.c \
|
||||
$(srcdir)/../bfd.c $(srcdir)/../coffcode.h $(srcdir)/../corefile.c \
|
||||
$(srcdir)/../format.c $(srcdir)/../libbfd.c \
|
||||
$(srcdir)/../bfdio.c $(srcdir)/../bfdwin.c \
|
||||
$(srcdir)/../opncls.c $(srcdir)/../reloc.c \
|
||||
$(srcdir)/../section.c $(srcdir)/../syms.c \
|
||||
$(srcdir)/../targets.c $(srcdir)/../init.c
|
||||
|
||||
|
||||
SRCIPROT = $(srcdir)/../cache.c $(srcdir)/../libbfd.c \
|
||||
$(srcdir)/../bfdio.c $(srcdir)/../bfdwin.c \
|
||||
$(srcdir)/../reloc.c $(srcdir)/../cpu-h8300.c \
|
||||
$(srcdir)/../cpu-i960.c $(srcdir)/../archures.c \
|
||||
$(srcdir)/../init.c
|
||||
@@ -185,6 +192,8 @@ LIBBFD_H_DEP = \
|
||||
$(srcdir)/../libbfd-in.h \
|
||||
$(srcdir)/../init.c \
|
||||
$(srcdir)/../libbfd.c \
|
||||
$(srcdir)/../bfdio.c \
|
||||
$(srcdir)/../bfdwin.c \
|
||||
$(srcdir)/../cache.c \
|
||||
$(srcdir)/../reloc.c \
|
||||
$(srcdir)/../archures.c \
|
||||
@@ -207,6 +216,8 @@ BFD_H_DEP = \
|
||||
$(srcdir)/../init.c \
|
||||
$(srcdir)/../opncls.c \
|
||||
$(srcdir)/../libbfd.c \
|
||||
$(srcdir)/../bfdio.c \
|
||||
$(srcdir)/../bfdwin.c \
|
||||
$(srcdir)/../section.c \
|
||||
$(srcdir)/../archures.c \
|
||||
$(srcdir)/../reloc.c \
|
||||
@@ -216,6 +227,8 @@ BFD_H_DEP = \
|
||||
$(srcdir)/../corefile.c \
|
||||
$(srcdir)/../targets.c \
|
||||
$(srcdir)/../format.c \
|
||||
$(srcdir)/../linker.c \
|
||||
$(srcdir)/../simple.c \
|
||||
$(srcdir)/header.sed \
|
||||
$(srcdir)/proto.str \
|
||||
$(srcdir)/../version.h \
|
||||
@@ -330,7 +343,7 @@ uninstall-info:
|
||||
else ii=; fi; \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
test -z "$ii" \
|
||||
test -z "$$ii" \
|
||||
|| install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \
|
||||
done
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@@ -459,7 +472,7 @@ mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
$(MKDOC): chew.o
|
||||
$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(LOADLIBES) $(LDFLAGS)
|
||||
$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS) $(LOADLIBES) $(LDFLAGS)
|
||||
|
||||
chew.o: chew.c
|
||||
$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c
|
||||
@@ -552,6 +565,18 @@ s-libbfd: $(MKDOC) $(srcdir)/../libbfd.c $(srcdir)/doc.str
|
||||
touch s-libbfd
|
||||
libbfd.texi: s-libbfd
|
||||
|
||||
s-bfdio: $(MKDOC) $(srcdir)/../bfdio.c $(srcdir)/doc.str
|
||||
./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfdio.c >bfdio.tmp
|
||||
$(srcdir)/../../move-if-change bfdio.tmp bfdio.texi
|
||||
touch s-bfdio
|
||||
bfdio.texi: s-bfdio
|
||||
|
||||
s-bfdwin: $(MKDOC) $(srcdir)/../bfdwin.c $(srcdir)/doc.str
|
||||
./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfdwin.c >bfdwin.tmp
|
||||
$(srcdir)/../../move-if-change bfdwin.tmp bfdwin.texi
|
||||
touch s-bfdwin
|
||||
bfdwin.texi: s-bfdwin
|
||||
|
||||
s-opncls: $(MKDOC) $(srcdir)/../opncls.c $(srcdir)/doc.str
|
||||
./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../opncls.c >opncls.tmp
|
||||
$(srcdir)/../../move-if-change opncls.tmp opncls.texi
|
||||
|
||||
@@ -161,7 +161,7 @@ handle any last-minute setup.
|
||||
@subsubsection @code{aout_@var{size}_mkobject}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean aout_@var{size}_mkobject, (bfd *abfd);
|
||||
bfd_boolean aout_@var{size}_mkobject, (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Initialize BFD @var{abfd} for use with a.out files.
|
||||
@@ -187,7 +187,7 @@ is always understood.
|
||||
@subsubsection @code{aout_@var{size}_set_arch_mach}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean aout_@var{size}_set_arch_mach,
|
||||
bfd_boolean aout_@var{size}_set_arch_mach,
|
||||
(bfd *,
|
||||
enum bfd_architecture arch,
|
||||
unsigned long machine));
|
||||
@@ -201,7 +201,7 @@ can support the architecture required.
|
||||
@subsubsection @code{aout_@var{size}_new_section_hook}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean aout_@var{size}_new_section_hook,
|
||||
bfd_boolean aout_@var{size}_new_section_hook,
|
||||
(bfd *abfd,
|
||||
asection *newsect));
|
||||
@end example
|
||||
|
||||
@@ -54,7 +54,8 @@ Archives are supported in BFD in @code{archive.c}.
|
||||
@subsubsection @code{bfd_get_next_mapent}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
symindex bfd_get_next_mapent(bfd *abfd, symindex previous, carsym **sym);
|
||||
symindex bfd_get_next_mapent
|
||||
(bfd *abfd, symindex previous, carsym **sym);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Step through archive @var{abfd}'s symbol table (if it
|
||||
@@ -73,7 +74,7 @@ user-visible element is its name, a null-terminated string.
|
||||
@subsubsection @code{bfd_set_archive_head}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_set_archive_head(bfd *output, bfd *new_head);
|
||||
bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Set the head of the chain of
|
||||
@@ -83,7 +84,7 @@ BFDs contained in the archive @var{output} to @var{new_head}.
|
||||
@subsubsection @code{bfd_openr_next_archived_file}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
bfd *bfd_openr_next_archived_file(bfd *archive, bfd *previous);
|
||||
bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Provided a BFD, @var{archive}, containing an archive and NULL, open
|
||||
|
||||
@@ -50,6 +50,7 @@ enum bfd_architecture
|
||||
#define bfd_mach_mcf5206e 10
|
||||
#define bfd_mach_mcf5307 11
|
||||
#define bfd_mach_mcf5407 12
|
||||
#define bfd_mach_mcf528x 13
|
||||
bfd_arch_vax, /* DEC Vax */
|
||||
bfd_arch_i960, /* Intel 960 */
|
||||
/* The order of the following is important.
|
||||
@@ -95,12 +96,16 @@ enum bfd_architecture
|
||||
#define bfd_mach_mips4010 4010
|
||||
#define bfd_mach_mips4100 4100
|
||||
#define bfd_mach_mips4111 4111
|
||||
#define bfd_mach_mips4120 4120
|
||||
#define bfd_mach_mips4300 4300
|
||||
#define bfd_mach_mips4400 4400
|
||||
#define bfd_mach_mips4600 4600
|
||||
#define bfd_mach_mips4650 4650
|
||||
#define bfd_mach_mips5000 5000
|
||||
#define bfd_mach_mips5400 5400
|
||||
#define bfd_mach_mips5500 5500
|
||||
#define bfd_mach_mips6000 6000
|
||||
#define bfd_mach_mips7000 7000
|
||||
#define bfd_mach_mips8000 8000
|
||||
#define bfd_mach_mips10000 10000
|
||||
#define bfd_mach_mips12000 12000
|
||||
@@ -108,13 +113,15 @@ enum bfd_architecture
|
||||
#define bfd_mach_mips5 5
|
||||
#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
|
||||
#define bfd_mach_mipsisa32 32
|
||||
#define bfd_mach_mipsisa32r2 33
|
||||
#define bfd_mach_mipsisa64 64
|
||||
#define bfd_mach_mipsisa64r2 65
|
||||
bfd_arch_i386, /* Intel 386 */
|
||||
#define bfd_mach_i386_i386 0
|
||||
#define bfd_mach_i386_i8086 1
|
||||
#define bfd_mach_i386_i386_intel_syntax 2
|
||||
#define bfd_mach_x86_64 3
|
||||
#define bfd_mach_x86_64_intel_syntax 4
|
||||
#define bfd_mach_i386_i386 1
|
||||
#define bfd_mach_i386_i8086 2
|
||||
#define bfd_mach_i386_i386_intel_syntax 3
|
||||
#define bfd_mach_x86_64 64
|
||||
#define bfd_mach_x86_64_intel_syntax 65
|
||||
bfd_arch_we32k, /* AT&T WE32xxx */
|
||||
bfd_arch_tahoe, /* CCI/Harris Tahoe */
|
||||
bfd_arch_i860, /* Intel 860 */
|
||||
@@ -123,15 +130,20 @@ enum bfd_architecture
|
||||
bfd_arch_alliant, /* Alliant */
|
||||
bfd_arch_convex, /* Convex */
|
||||
bfd_arch_m88k, /* Motorola 88xxx */
|
||||
bfd_arch_m98k, /* Motorola 98xxx */
|
||||
bfd_arch_pyramid, /* Pyramid Technology */
|
||||
bfd_arch_h8300, /* Hitachi H8/300 */
|
||||
#define bfd_mach_h8300 1
|
||||
#define bfd_mach_h8300h 2
|
||||
#define bfd_mach_h8300s 3
|
||||
bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */
|
||||
#define bfd_mach_h8300 1
|
||||
#define bfd_mach_h8300h 2
|
||||
#define bfd_mach_h8300s 3
|
||||
#define bfd_mach_h8300hn 4
|
||||
#define bfd_mach_h8300sn 5
|
||||
#define bfd_mach_h8300sx 6
|
||||
#define bfd_mach_h8300sxn 7
|
||||
bfd_arch_pdp11, /* DEC PDP-11 */
|
||||
bfd_arch_powerpc, /* PowerPC */
|
||||
#define bfd_mach_ppc 0
|
||||
#define bfd_mach_ppc64 1
|
||||
#define bfd_mach_ppc 32
|
||||
#define bfd_mach_ppc64 64
|
||||
#define bfd_mach_ppc_403 403
|
||||
#define bfd_mach_ppc_403gc 4030
|
||||
#define bfd_mach_ppc_505 505
|
||||
@@ -148,38 +160,52 @@ enum bfd_architecture
|
||||
#define bfd_mach_ppc_rs64ii 642
|
||||
#define bfd_mach_ppc_rs64iii 643
|
||||
#define bfd_mach_ppc_7400 7400
|
||||
#define bfd_mach_ppc_e500 500
|
||||
bfd_arch_rs6000, /* IBM RS/6000 */
|
||||
#define bfd_mach_rs6k 0
|
||||
#define bfd_mach_rs6k 6000
|
||||
#define bfd_mach_rs6k_rs1 6001
|
||||
#define bfd_mach_rs6k_rsc 6003
|
||||
#define bfd_mach_rs6k_rs2 6002
|
||||
bfd_arch_hppa, /* HP PA RISC */
|
||||
#define bfd_mach_hppa10 10
|
||||
#define bfd_mach_hppa11 11
|
||||
#define bfd_mach_hppa20 20
|
||||
#define bfd_mach_hppa20w 25
|
||||
bfd_arch_d10v, /* Mitsubishi D10V */
|
||||
#define bfd_mach_d10v 0
|
||||
#define bfd_mach_d10v 1
|
||||
#define bfd_mach_d10v_ts2 2
|
||||
#define bfd_mach_d10v_ts3 3
|
||||
bfd_arch_d30v, /* Mitsubishi D30V */
|
||||
bfd_arch_dlx, /* DLX */
|
||||
bfd_arch_m68hc11, /* Motorola 68HC11 */
|
||||
bfd_arch_m68hc12, /* Motorola 68HC12 */
|
||||
#define bfd_mach_m6812_default 0
|
||||
#define bfd_mach_m6812 1
|
||||
#define bfd_mach_m6812s 2
|
||||
bfd_arch_z8k, /* Zilog Z8000 */
|
||||
#define bfd_mach_z8001 1
|
||||
#define bfd_mach_z8002 2
|
||||
bfd_arch_h8500, /* Hitachi H8/500 */
|
||||
bfd_arch_sh, /* Hitachi SH */
|
||||
#define bfd_mach_sh 0
|
||||
bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */
|
||||
bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */
|
||||
#define bfd_mach_sh 1
|
||||
#define bfd_mach_sh2 0x20
|
||||
#define bfd_mach_sh_dsp 0x2d
|
||||
#define bfd_mach_sh2e 0x2e
|
||||
#define bfd_mach_sh3 0x30
|
||||
#define bfd_mach_sh3_dsp 0x3d
|
||||
#define bfd_mach_sh3e 0x3e
|
||||
#define bfd_mach_sh4 0x40
|
||||
#define bfd_mach_sh4_nofpu 0x41
|
||||
#define bfd_mach_sh4a 0x4a
|
||||
#define bfd_mach_sh4a_nofpu 0x4b
|
||||
#define bfd_mach_sh4al_dsp 0x4d
|
||||
#define bfd_mach_sh5 0x50
|
||||
bfd_arch_alpha, /* Dec Alpha */
|
||||
#define bfd_mach_alpha_ev4 0x10
|
||||
#define bfd_mach_alpha_ev5 0x20
|
||||
#define bfd_mach_alpha_ev6 0x30
|
||||
bfd_arch_arm, /* Advanced Risc Machines ARM. */
|
||||
#define bfd_mach_arm_unknown 0
|
||||
#define bfd_mach_arm_2 1
|
||||
#define bfd_mach_arm_2a 2
|
||||
#define bfd_mach_arm_3 3
|
||||
@@ -190,40 +216,54 @@ enum bfd_architecture
|
||||
#define bfd_mach_arm_5T 8
|
||||
#define bfd_mach_arm_5TE 9
|
||||
#define bfd_mach_arm_XScale 10
|
||||
#define bfd_mach_arm_ep9312 11
|
||||
#define bfd_mach_arm_iWMMXt 12
|
||||
bfd_arch_ns32k, /* National Semiconductors ns32000 */
|
||||
bfd_arch_w65, /* WDC 65816 */
|
||||
bfd_arch_tic30, /* Texas Instruments TMS320C30 */
|
||||
bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */
|
||||
#define bfd_mach_tic3x 30
|
||||
#define bfd_mach_tic4x 40
|
||||
bfd_arch_tic54x, /* Texas Instruments TMS320C54X */
|
||||
bfd_arch_tic80, /* TI TMS320c80 (MVP) */
|
||||
bfd_arch_v850, /* NEC V850 */
|
||||
#define bfd_mach_v850 0
|
||||
#define bfd_mach_v850 1
|
||||
#define bfd_mach_v850e 'E'
|
||||
#define bfd_mach_v850ea 'A'
|
||||
#define bfd_mach_v850e1 '1'
|
||||
bfd_arch_arc, /* ARC Cores */
|
||||
#define bfd_mach_arc_5 0
|
||||
#define bfd_mach_arc_6 1
|
||||
#define bfd_mach_arc_7 2
|
||||
#define bfd_mach_arc_8 3
|
||||
bfd_arch_m32r, /* Mitsubishi M32R/D */
|
||||
#define bfd_mach_m32r 0 /* For backwards compatibility. */
|
||||
#define bfd_mach_arc_5 5
|
||||
#define bfd_mach_arc_6 6
|
||||
#define bfd_mach_arc_7 7
|
||||
#define bfd_mach_arc_8 8
|
||||
bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */
|
||||
#define bfd_mach_m32r 1 /* For backwards compatibility. */
|
||||
#define bfd_mach_m32rx 'x'
|
||||
#define bfd_mach_m32r2 '2'
|
||||
bfd_arch_mn10200, /* Matsushita MN10200 */
|
||||
bfd_arch_mn10300, /* Matsushita MN10300 */
|
||||
#define bfd_mach_mn10300 300
|
||||
#define bfd_mach_am33 330
|
||||
#define bfd_mach_am33_2 332
|
||||
bfd_arch_fr30,
|
||||
#define bfd_mach_fr30 0x46523330
|
||||
bfd_arch_frv,
|
||||
#define bfd_mach_frv 0
|
||||
#define bfd_mach_frvsimple 1
|
||||
#define bfd_mach_frv 1
|
||||
#define bfd_mach_frvsimple 2
|
||||
#define bfd_mach_fr300 300
|
||||
#define bfd_mach_fr400 400
|
||||
#define bfd_mach_frvtomcat 499 /* fr500 prototype */
|
||||
#define bfd_mach_fr500 500
|
||||
#define bfd_mach_fr550 550
|
||||
bfd_arch_mcore,
|
||||
bfd_arch_ia64, /* HP/Intel ia64 */
|
||||
#define bfd_mach_ia64_elf64 0
|
||||
#define bfd_mach_ia64_elf32 1
|
||||
#define bfd_mach_ia64_elf64 64
|
||||
#define bfd_mach_ia64_elf32 32
|
||||
bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */
|
||||
#define bfd_mach_ip2022 1
|
||||
#define bfd_mach_ip2022ext 2
|
||||
bfd_arch_iq2000, /* Vitesse IQ2000. */
|
||||
#define bfd_mach_iq2000 1
|
||||
#define bfd_mach_iq10 2
|
||||
bfd_arch_pj,
|
||||
bfd_arch_avr, /* Atmel AVR microcontrollers. */
|
||||
#define bfd_mach_avr1 1
|
||||
@@ -233,12 +273,29 @@ enum bfd_architecture
|
||||
#define bfd_mach_avr5 5
|
||||
bfd_arch_cris, /* Axis CRIS */
|
||||
bfd_arch_s390, /* IBM s390 */
|
||||
#define bfd_mach_s390_31 0
|
||||
#define bfd_mach_s390_64 1
|
||||
#define bfd_mach_s390_31 31
|
||||
#define bfd_mach_s390_64 64
|
||||
bfd_arch_openrisc, /* OpenRISC */
|
||||
bfd_arch_mmix, /* Donald Knuth's educational processor. */
|
||||
bfd_arch_xstormy16,
|
||||
#define bfd_mach_xstormy16 0
|
||||
#define bfd_mach_xstormy16 1
|
||||
bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */
|
||||
#define bfd_mach_msp11 11
|
||||
#define bfd_mach_msp110 110
|
||||
#define bfd_mach_msp12 12
|
||||
#define bfd_mach_msp13 13
|
||||
#define bfd_mach_msp14 14
|
||||
#define bfd_mach_msp15 15
|
||||
#define bfd_mach_msp16 16
|
||||
#define bfd_mach_msp31 31
|
||||
#define bfd_mach_msp32 32
|
||||
#define bfd_mach_msp33 33
|
||||
#define bfd_mach_msp41 41
|
||||
#define bfd_mach_msp42 42
|
||||
#define bfd_mach_msp43 43
|
||||
#define bfd_mach_msp44 44
|
||||
bfd_arch_xtensa, /* Tensilica's Xtensa cores. */
|
||||
#define bfd_mach_xtensa 1
|
||||
bfd_arch_last
|
||||
@};
|
||||
@end example
|
||||
@@ -261,15 +318,14 @@ typedef struct bfd_arch_info
|
||||
const char *arch_name;
|
||||
const char *printable_name;
|
||||
unsigned int section_align_power;
|
||||
/* True if this is the default machine for the architecture.
|
||||
/* TRUE if this is the default machine for the architecture.
|
||||
The default arch should be the first entry for an arch so that
|
||||
all the entries for that arch can be accessed via @code{next}. */
|
||||
boolean the_default;
|
||||
bfd_boolean the_default;
|
||||
const struct bfd_arch_info * (*compatible)
|
||||
PARAMS ((const struct bfd_arch_info *a,
|
||||
const struct bfd_arch_info *b));
|
||||
(const struct bfd_arch_info *a, const struct bfd_arch_info *b);
|
||||
|
||||
boolean (*scan) PARAMS ((const struct bfd_arch_info *, const char *));
|
||||
bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
|
||||
|
||||
const struct bfd_arch_info *next;
|
||||
@}
|
||||
@@ -281,7 +337,7 @@ bfd_arch_info_type;
|
||||
@subsubsection @code{bfd_printable_name}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
const char *bfd_printable_name(bfd *abfd);
|
||||
const char *bfd_printable_name (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return a printable string representing the architecture and machine
|
||||
@@ -291,7 +347,7 @@ from the pointer to the architecture info structure.
|
||||
@subsubsection @code{bfd_scan_arch}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
const bfd_arch_info_type *bfd_scan_arch(const char *string);
|
||||
const bfd_arch_info_type *bfd_scan_arch (const char *string);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Figure out if BFD supports any cpu which could be described with
|
||||
@@ -302,7 +358,7 @@ structure if a machine is found, otherwise NULL.
|
||||
@subsubsection @code{bfd_arch_list}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
const char **bfd_arch_list(void);
|
||||
const char **bfd_arch_list (void);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return a freshly malloced NULL-terminated vector of the names
|
||||
@@ -312,16 +368,15 @@ of all the valid BFD architectures. Do not modify the names.
|
||||
@subsubsection @code{bfd_arch_get_compatible}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
const bfd_arch_info_type *bfd_arch_get_compatible(
|
||||
const bfd *abfd,
|
||||
const bfd *bbfd);
|
||||
const bfd_arch_info_type *bfd_arch_get_compatible
|
||||
(const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Determine whether two BFDs'
|
||||
architectures and machine types are compatible. Calculates
|
||||
the lowest common denominator between the two architectures
|
||||
and machine types implied by the BFDs and returns a pointer to
|
||||
an @code{arch_info} structure describing the compatible machine.
|
||||
Determine whether two BFDs' architectures and machine types
|
||||
are compatible. Calculates the lowest common denominator
|
||||
between the two architectures and machine types implied by
|
||||
the BFDs and returns a pointer to an @code{arch_info} structure
|
||||
describing the compatible machine.
|
||||
|
||||
@findex bfd_default_arch_struct
|
||||
@subsubsection @code{bfd_default_arch_struct}
|
||||
@@ -339,7 +394,7 @@ extern const bfd_arch_info_type bfd_default_arch_struct;
|
||||
@subsubsection @code{bfd_set_arch_info}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
void bfd_set_arch_info(bfd *abfd, const bfd_arch_info_type *arg);
|
||||
void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Set the architecture info of @var{abfd} to @var{arg}.
|
||||
@@ -348,9 +403,8 @@ Set the architecture info of @var{abfd} to @var{arg}.
|
||||
@subsubsection @code{bfd_default_set_arch_mach}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_default_set_arch_mach(bfd *abfd,
|
||||
enum bfd_architecture arch,
|
||||
unsigned long mach);
|
||||
bfd_boolean bfd_default_set_arch_mach
|
||||
(bfd *abfd, enum bfd_architecture arch, unsigned long mach);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Set the architecture and machine type in BFD @var{abfd}
|
||||
@@ -362,7 +416,7 @@ pointer.
|
||||
@subsubsection @code{bfd_get_arch}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
enum bfd_architecture bfd_get_arch(bfd *abfd);
|
||||
enum bfd_architecture bfd_get_arch (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return the enumerated type which describes the BFD @var{abfd}'s
|
||||
@@ -372,7 +426,7 @@ architecture.
|
||||
@subsubsection @code{bfd_get_mach}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
unsigned long bfd_get_mach(bfd *abfd);
|
||||
unsigned long bfd_get_mach (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return the long type which describes the BFD @var{abfd}'s
|
||||
@@ -382,7 +436,7 @@ machine.
|
||||
@subsubsection @code{bfd_arch_bits_per_byte}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
unsigned int bfd_arch_bits_per_byte(bfd *abfd);
|
||||
unsigned int bfd_arch_bits_per_byte (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return the number of bits in one of the BFD @var{abfd}'s
|
||||
@@ -392,7 +446,7 @@ architecture's bytes.
|
||||
@subsubsection @code{bfd_arch_bits_per_address}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
unsigned int bfd_arch_bits_per_address(bfd *abfd);
|
||||
unsigned int bfd_arch_bits_per_address (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return the number of bits in one of the BFD @var{abfd}'s
|
||||
@@ -403,8 +457,7 @@ architecture's addresses.
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
const bfd_arch_info_type *bfd_default_compatible
|
||||
(const bfd_arch_info_type *a,
|
||||
const bfd_arch_info_type *b);
|
||||
(const bfd_arch_info_type *a, const bfd_arch_info_type *b);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
The default function for testing for compatibility.
|
||||
@@ -413,7 +466,8 @@ The default function for testing for compatibility.
|
||||
@subsubsection @code{bfd_default_scan}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_default_scan(const struct bfd_arch_info *info, const char *string);
|
||||
bfd_boolean bfd_default_scan
|
||||
(const struct bfd_arch_info *info, const char *string);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
The default function for working out whether this is an
|
||||
@@ -423,7 +477,7 @@ architecture hit and a machine hit.
|
||||
@subsubsection @code{bfd_get_arch_info}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
const bfd_arch_info_type * bfd_get_arch_info(bfd *abfd);
|
||||
const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return the architecture info struct in @var{abfd}.
|
||||
@@ -433,12 +487,10 @@ Return the architecture info struct in @var{abfd}.
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
const bfd_arch_info_type *bfd_lookup_arch
|
||||
(enum bfd_architecture
|
||||
arch,
|
||||
unsigned long machine);
|
||||
(enum bfd_architecture arch, unsigned long machine);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Look for the architecure info structure which matches the
|
||||
Look for the architecture info structure which matches the
|
||||
arguments @var{arch} and @var{machine}. A machine of 0 matches the
|
||||
machine/architecture structure which marks itself as the
|
||||
default.
|
||||
@@ -460,7 +512,7 @@ This routine is depreciated.
|
||||
@subsubsection @code{bfd_octets_per_byte}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
unsigned int bfd_octets_per_byte(bfd *abfd);
|
||||
unsigned int bfd_octets_per_byte (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return the number of octets (8-bit quantities) per target byte
|
||||
@@ -471,8 +523,8 @@ DSP targets have 16, 32, or even 48 bits per byte.
|
||||
@subsubsection @code{bfd_arch_mach_octets_per_byte}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
unsigned int bfd_arch_mach_octets_per_byte(enum bfd_architecture arch,
|
||||
unsigned long machine);
|
||||
unsigned int bfd_arch_mach_octets_per_byte
|
||||
(enum bfd_architecture arch, unsigned long machine);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
See bfd_octets_per_byte.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
\input texinfo.tex
|
||||
@setfilename bfd.info
|
||||
@c Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1997, 2000
|
||||
@c Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1997, 2000, 2003
|
||||
@c Free Software Foundation, Inc.
|
||||
@c
|
||||
@tex
|
||||
@@ -30,14 +30,14 @@ END-INFO-DIR-ENTRY
|
||||
@ifinfo
|
||||
This file documents the BFD library.
|
||||
|
||||
Copyright (C) 1991, 2000, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1991, 2000, 2001, 2003 Free Software Foundation, Inc.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1
|
||||
or any later version published by the Free Software Foundation;
|
||||
with no Invariant Sections, with no Front-Cover Texts, and with no
|
||||
Back-Cover Texts. A copy of the license is included in the
|
||||
section entitled "GNU Free Documentation License".
|
||||
section entitled ``GNU Free Documentation License''.
|
||||
|
||||
@ignore
|
||||
Permission is granted to process this file through Tex and print the
|
||||
@@ -64,7 +64,7 @@ notice identical to this one except for the removal of this paragraph
|
||||
|
||||
@tex
|
||||
\def\$#1${{#1}} % Kluge: collect RCS revision info without $...$
|
||||
\xdef\manvers{\$Revision: 1.5 $} % For use in headers, footers too
|
||||
\xdef\manvers{1.5} % For use in headers, footers too
|
||||
{\parskip=0pt
|
||||
\hfill Free Software Foundation\par
|
||||
\hfill sac\@www.gnu.org\par
|
||||
@@ -75,14 +75,14 @@ notice identical to this one except for the removal of this paragraph
|
||||
@end tex
|
||||
|
||||
@vskip 0pt plus 1filll
|
||||
Copyright @copyright{} 1991, 2001 Free Software Foundation, Inc.
|
||||
Copyright @copyright{} 1991, 2001, 2003 Free Software Foundation, Inc.
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1
|
||||
or any later version published by the Free Software Foundation;
|
||||
with no Invariant Sections, with no Front-Cover Texts, and with no
|
||||
Back-Cover Texts. A copy of the license is included in the
|
||||
section entitled "GNU Free Documentation License".
|
||||
section entitled ``GNU Free Documentation License''.
|
||||
|
||||
@end titlepage
|
||||
@end iftex
|
||||
@@ -170,17 +170,17 @@ For example, this sequence does what you would probably expect:
|
||||
return the number of sections in an object file attached to a BFD
|
||||
@code{abfd}.
|
||||
|
||||
@lisp
|
||||
@example
|
||||
@c @cartouche
|
||||
#include "bfd.h"
|
||||
|
||||
unsigned int number_of_sections(abfd)
|
||||
unsigned int number_of_sections (abfd)
|
||||
bfd *abfd;
|
||||
@{
|
||||
return bfd_count_sections(abfd);
|
||||
return bfd_count_sections (abfd);
|
||||
@}
|
||||
@c @end cartouche
|
||||
@end lisp
|
||||
@end example
|
||||
|
||||
The abstraction used within BFD is that an object file has:
|
||||
|
||||
@@ -205,8 +205,9 @@ IEEE-695.
|
||||
@include bfdsumm.texi
|
||||
|
||||
@node BFD front end, BFD back ends, Overview, Top
|
||||
@chapter BFD front end
|
||||
@chapter BFD Front End
|
||||
@include bfdt.texi
|
||||
@include bfdio.texi
|
||||
|
||||
@menu
|
||||
* Memory Usage::
|
||||
@@ -227,7 +228,7 @@ IEEE-695.
|
||||
@end menu
|
||||
|
||||
@node Memory Usage, Initialization, BFD front end, BFD front end
|
||||
@section Memory usage
|
||||
@section Memory Usage
|
||||
BFD keeps all of its internal structures in obstacks. There is one obstack
|
||||
per open BFD file, into which the current state is stored. When a BFD is
|
||||
closed, the obstack is deleted, and so everything which has been
|
||||
@@ -323,370 +324,9 @@ All of BFD lives in one directory.
|
||||
@include mmo.texi
|
||||
|
||||
@node GNU Free Documentation License, Index, BFD back ends, Top
|
||||
@chapter GNU Free Documentation License
|
||||
@cindex GNU Free Documentation License
|
||||
@include fdl.texi
|
||||
|
||||
GNU Free Documentation License
|
||||
|
||||
Version 1.1, March 2000
|
||||
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
0. PREAMBLE
|
||||
|
||||
The purpose of this License is to make a manual, textbook, or other
|
||||
written document "free" in the sense of freedom: to assure everyone
|
||||
the effective freedom to copy and redistribute it, with or without
|
||||
modifying it, either commercially or noncommercially. Secondarily,
|
||||
this License preserves for the author and publisher a way to get
|
||||
credit for their work, while not being considered responsible for
|
||||
modifications made by others.
|
||||
|
||||
This License is a kind of "copyleft", which means that derivative
|
||||
works of the document must themselves be free in the same sense. It
|
||||
complements the GNU General Public License, which is a copyleft
|
||||
license designed for free software.
|
||||
|
||||
We have designed this License in order to use it for manuals for free
|
||||
software, because free software needs free documentation: a free
|
||||
program should come with manuals providing the same freedoms that the
|
||||
software does. But this License is not limited to software manuals;
|
||||
it can be used for any textual work, regardless of subject matter or
|
||||
whether it is published as a printed book. We recommend this License
|
||||
principally for works whose purpose is instruction or reference.
|
||||
|
||||
|
||||
1. APPLICABILITY AND DEFINITIONS
|
||||
|
||||
This License applies to any manual or other work that contains a
|
||||
notice placed by the copyright holder saying it can be distributed
|
||||
under the terms of this License. The "Document", below, refers to any
|
||||
such manual or work. Any member of the public is a licensee, and is
|
||||
addressed as "you".
|
||||
|
||||
A "Modified Version" of the Document means any work containing the
|
||||
Document or a portion of it, either copied verbatim, or with
|
||||
modifications and/or translated into another language.
|
||||
|
||||
A "Secondary Section" is a named appendix or a front-matter section of
|
||||
the Document that deals exclusively with the relationship of the
|
||||
publishers or authors of the Document to the Document's overall subject
|
||||
(or to related matters) and contains nothing that could fall directly
|
||||
within that overall subject. (For example, if the Document is in part a
|
||||
textbook of mathematics, a Secondary Section may not explain any
|
||||
mathematics.) The relationship could be a matter of historical
|
||||
connection with the subject or with related matters, or of legal,
|
||||
commercial, philosophical, ethical or political position regarding
|
||||
them.
|
||||
|
||||
The "Invariant Sections" are certain Secondary Sections whose titles
|
||||
are designated, as being those of Invariant Sections, in the notice
|
||||
that says that the Document is released under this License.
|
||||
|
||||
The "Cover Texts" are certain short passages of text that are listed,
|
||||
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
||||
the Document is released under this License.
|
||||
|
||||
A "Transparent" copy of the Document means a machine-readable copy,
|
||||
represented in a format whose specification is available to the
|
||||
general public, whose contents can be viewed and edited directly and
|
||||
straightforwardly with generic text editors or (for images composed of
|
||||
pixels) generic paint programs or (for drawings) some widely available
|
||||
drawing editor, and that is suitable for input to text formatters or
|
||||
for automatic translation to a variety of formats suitable for input
|
||||
to text formatters. A copy made in an otherwise Transparent file
|
||||
format whose markup has been designed to thwart or discourage
|
||||
subsequent modification by readers is not Transparent. A copy that is
|
||||
not "Transparent" is called "Opaque".
|
||||
|
||||
Examples of suitable formats for Transparent copies include plain
|
||||
ASCII without markup, Texinfo input format, LaTeX input format, SGML
|
||||
or XML using a publicly available DTD, and standard-conforming simple
|
||||
HTML designed for human modification. Opaque formats include
|
||||
PostScript, PDF, proprietary formats that can be read and edited only
|
||||
by proprietary word processors, SGML or XML for which the DTD and/or
|
||||
processing tools are not generally available, and the
|
||||
machine-generated HTML produced by some word processors for output
|
||||
purposes only.
|
||||
|
||||
The "Title Page" means, for a printed book, the title page itself,
|
||||
plus such following pages as are needed to hold, legibly, the material
|
||||
this License requires to appear in the title page. For works in
|
||||
formats which do not have any title page as such, "Title Page" means
|
||||
the text near the most prominent appearance of the work's title,
|
||||
preceding the beginning of the body of the text.
|
||||
|
||||
|
||||
2. VERBATIM COPYING
|
||||
|
||||
You may copy and distribute the Document in any medium, either
|
||||
commercially or noncommercially, provided that this License, the
|
||||
copyright notices, and the license notice saying this License applies
|
||||
to the Document are reproduced in all copies, and that you add no other
|
||||
conditions whatsoever to those of this License. You may not use
|
||||
technical measures to obstruct or control the reading or further
|
||||
copying of the copies you make or distribute. However, you may accept
|
||||
compensation in exchange for copies. If you distribute a large enough
|
||||
number of copies you must also follow the conditions in section 3.
|
||||
|
||||
You may also lend copies, under the same conditions stated above, and
|
||||
you may publicly display copies.
|
||||
|
||||
|
||||
3. COPYING IN QUANTITY
|
||||
|
||||
If you publish printed copies of the Document numbering more than 100,
|
||||
and the Document's license notice requires Cover Texts, you must enclose
|
||||
the copies in covers that carry, clearly and legibly, all these Cover
|
||||
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
||||
the back cover. Both covers must also clearly and legibly identify
|
||||
you as the publisher of these copies. The front cover must present
|
||||
the full title with all words of the title equally prominent and
|
||||
visible. You may add other material on the covers in addition.
|
||||
Copying with changes limited to the covers, as long as they preserve
|
||||
the title of the Document and satisfy these conditions, can be treated
|
||||
as verbatim copying in other respects.
|
||||
|
||||
If the required texts for either cover are too voluminous to fit
|
||||
legibly, you should put the first ones listed (as many as fit
|
||||
reasonably) on the actual cover, and continue the rest onto adjacent
|
||||
pages.
|
||||
|
||||
If you publish or distribute Opaque copies of the Document numbering
|
||||
more than 100, you must either include a machine-readable Transparent
|
||||
copy along with each Opaque copy, or state in or with each Opaque copy
|
||||
a publicly-accessible computer-network location containing a complete
|
||||
Transparent copy of the Document, free of added material, which the
|
||||
general network-using public has access to download anonymously at no
|
||||
charge using public-standard network protocols. If you use the latter
|
||||
option, you must take reasonably prudent steps, when you begin
|
||||
distribution of Opaque copies in quantity, to ensure that this
|
||||
Transparent copy will remain thus accessible at the stated location
|
||||
until at least one year after the last time you distribute an Opaque
|
||||
copy (directly or through your agents or retailers) of that edition to
|
||||
the public.
|
||||
|
||||
It is requested, but not required, that you contact the authors of the
|
||||
Document well before redistributing any large number of copies, to give
|
||||
them a chance to provide you with an updated version of the Document.
|
||||
|
||||
|
||||
4. MODIFICATIONS
|
||||
|
||||
You may copy and distribute a Modified Version of the Document under
|
||||
the conditions of sections 2 and 3 above, provided that you release
|
||||
the Modified Version under precisely this License, with the Modified
|
||||
Version filling the role of the Document, thus licensing distribution
|
||||
and modification of the Modified Version to whoever possesses a copy
|
||||
of it. In addition, you must do these things in the Modified Version:
|
||||
|
||||
A. Use in the Title Page (and on the covers, if any) a title distinct
|
||||
from that of the Document, and from those of previous versions
|
||||
(which should, if there were any, be listed in the History section
|
||||
of the Document). You may use the same title as a previous version
|
||||
if the original publisher of that version gives permission.
|
||||
B. List on the Title Page, as authors, one or more persons or entities
|
||||
responsible for authorship of the modifications in the Modified
|
||||
Version, together with at least five of the principal authors of the
|
||||
Document (all of its principal authors, if it has less than five).
|
||||
C. State on the Title page the name of the publisher of the
|
||||
Modified Version, as the publisher.
|
||||
D. Preserve all the copyright notices of the Document.
|
||||
E. Add an appropriate copyright notice for your modifications
|
||||
adjacent to the other copyright notices.
|
||||
F. Include, immediately after the copyright notices, a license notice
|
||||
giving the public permission to use the Modified Version under the
|
||||
terms of this License, in the form shown in the Addendum below.
|
||||
G. Preserve in that license notice the full lists of Invariant Sections
|
||||
and required Cover Texts given in the Document's license notice.
|
||||
H. Include an unaltered copy of this License.
|
||||
I. Preserve the section entitled "History", and its title, and add to
|
||||
it an item stating at least the title, year, new authors, and
|
||||
publisher of the Modified Version as given on the Title Page. If
|
||||
there is no section entitled "History" in the Document, create one
|
||||
stating the title, year, authors, and publisher of the Document as
|
||||
given on its Title Page, then add an item describing the Modified
|
||||
Version as stated in the previous sentence.
|
||||
J. Preserve the network location, if any, given in the Document for
|
||||
public access to a Transparent copy of the Document, and likewise
|
||||
the network locations given in the Document for previous versions
|
||||
it was based on. These may be placed in the "History" section.
|
||||
You may omit a network location for a work that was published at
|
||||
least four years before the Document itself, or if the original
|
||||
publisher of the version it refers to gives permission.
|
||||
K. In any section entitled "Acknowledgements" or "Dedications",
|
||||
preserve the section's title, and preserve in the section all the
|
||||
substance and tone of each of the contributor acknowledgements
|
||||
and/or dedications given therein.
|
||||
L. Preserve all the Invariant Sections of the Document,
|
||||
unaltered in their text and in their titles. Section numbers
|
||||
or the equivalent are not considered part of the section titles.
|
||||
M. Delete any section entitled "Endorsements". Such a section
|
||||
may not be included in the Modified Version.
|
||||
N. Do not retitle any existing section as "Endorsements"
|
||||
or to conflict in title with any Invariant Section.
|
||||
|
||||
If the Modified Version includes new front-matter sections or
|
||||
appendices that qualify as Secondary Sections and contain no material
|
||||
copied from the Document, you may at your option designate some or all
|
||||
of these sections as invariant. To do this, add their titles to the
|
||||
list of Invariant Sections in the Modified Version's license notice.
|
||||
These titles must be distinct from any other section titles.
|
||||
|
||||
You may add a section entitled "Endorsements", provided it contains
|
||||
nothing but endorsements of your Modified Version by various
|
||||
parties--for example, statements of peer review or that the text has
|
||||
been approved by an organization as the authoritative definition of a
|
||||
standard.
|
||||
|
||||
You may add a passage of up to five words as a Front-Cover Text, and a
|
||||
passage of up to 25 words as a Back-Cover Text, to the end of the list
|
||||
of Cover Texts in the Modified Version. Only one passage of
|
||||
Front-Cover Text and one of Back-Cover Text may be added by (or
|
||||
through arrangements made by) any one entity. If the Document already
|
||||
includes a cover text for the same cover, previously added by you or
|
||||
by arrangement made by the same entity you are acting on behalf of,
|
||||
you may not add another; but you may replace the old one, on explicit
|
||||
permission from the previous publisher that added the old one.
|
||||
|
||||
The author(s) and publisher(s) of the Document do not by this License
|
||||
give permission to use their names for publicity for or to assert or
|
||||
imply endorsement of any Modified Version.
|
||||
|
||||
|
||||
5. COMBINING DOCUMENTS
|
||||
|
||||
You may combine the Document with other documents released under this
|
||||
License, under the terms defined in section 4 above for modified
|
||||
versions, provided that you include in the combination all of the
|
||||
Invariant Sections of all of the original documents, unmodified, and
|
||||
list them all as Invariant Sections of your combined work in its
|
||||
license notice.
|
||||
|
||||
The combined work need only contain one copy of this License, and
|
||||
multiple identical Invariant Sections may be replaced with a single
|
||||
copy. If there are multiple Invariant Sections with the same name but
|
||||
different contents, make the title of each such section unique by
|
||||
adding at the end of it, in parentheses, the name of the original
|
||||
author or publisher of that section if known, or else a unique number.
|
||||
Make the same adjustment to the section titles in the list of
|
||||
Invariant Sections in the license notice of the combined work.
|
||||
|
||||
In the combination, you must combine any sections entitled "History"
|
||||
in the various original documents, forming one section entitled
|
||||
"History"; likewise combine any sections entitled "Acknowledgements",
|
||||
and any sections entitled "Dedications". You must delete all sections
|
||||
entitled "Endorsements."
|
||||
|
||||
|
||||
6. COLLECTIONS OF DOCUMENTS
|
||||
|
||||
You may make a collection consisting of the Document and other documents
|
||||
released under this License, and replace the individual copies of this
|
||||
License in the various documents with a single copy that is included in
|
||||
the collection, provided that you follow the rules of this License for
|
||||
verbatim copying of each of the documents in all other respects.
|
||||
|
||||
You may extract a single document from such a collection, and distribute
|
||||
it individually under this License, provided you insert a copy of this
|
||||
License into the extracted document, and follow this License in all
|
||||
other respects regarding verbatim copying of that document.
|
||||
|
||||
|
||||
7. AGGREGATION WITH INDEPENDENT WORKS
|
||||
|
||||
A compilation of the Document or its derivatives with other separate
|
||||
and independent documents or works, in or on a volume of a storage or
|
||||
distribution medium, does not as a whole count as a Modified Version
|
||||
of the Document, provided no compilation copyright is claimed for the
|
||||
compilation. Such a compilation is called an "aggregate", and this
|
||||
License does not apply to the other self-contained works thus compiled
|
||||
with the Document, on account of their being thus compiled, if they
|
||||
are not themselves derivative works of the Document.
|
||||
|
||||
If the Cover Text requirement of section 3 is applicable to these
|
||||
copies of the Document, then if the Document is less than one quarter
|
||||
of the entire aggregate, the Document's Cover Texts may be placed on
|
||||
covers that surround only the Document within the aggregate.
|
||||
Otherwise they must appear on covers around the whole aggregate.
|
||||
|
||||
|
||||
8. TRANSLATION
|
||||
|
||||
Translation is considered a kind of modification, so you may
|
||||
distribute translations of the Document under the terms of section 4.
|
||||
Replacing Invariant Sections with translations requires special
|
||||
permission from their copyright holders, but you may include
|
||||
translations of some or all Invariant Sections in addition to the
|
||||
original versions of these Invariant Sections. You may include a
|
||||
translation of this License provided that you also include the
|
||||
original English version of this License. In case of a disagreement
|
||||
between the translation and the original English version of this
|
||||
License, the original English version will prevail.
|
||||
|
||||
|
||||
9. TERMINATION
|
||||
|
||||
You may not copy, modify, sublicense, or distribute the Document except
|
||||
as expressly provided for under this License. Any other attempt to
|
||||
copy, modify, sublicense or distribute the Document is void, and will
|
||||
automatically terminate your rights under this License. However,
|
||||
parties who have received copies, or rights, from you under this
|
||||
License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
|
||||
10. FUTURE REVISIONS OF THIS LICENSE
|
||||
|
||||
The Free Software Foundation may publish new, revised versions
|
||||
of the GNU Free Documentation License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns. See
|
||||
http://www.gnu.org/copyleft/.
|
||||
|
||||
Each version of the License is given a distinguishing version number.
|
||||
If the Document specifies that a particular numbered version of this
|
||||
License "or any later version" applies to it, you have the option of
|
||||
following the terms and conditions either of that specified version or
|
||||
of any later version that has been published (not as a draft) by the
|
||||
Free Software Foundation. If the Document does not specify a version
|
||||
number of this License, you may choose any version ever published (not
|
||||
as a draft) by the Free Software Foundation.
|
||||
|
||||
|
||||
ADDENDUM: How to use this License for your documents
|
||||
|
||||
To use this License in a document you have written, include a copy of
|
||||
the License in the document and put the following copyright and
|
||||
license notices just after the title page:
|
||||
|
||||
@smallexample
|
||||
Copyright (c) YEAR YOUR NAME.
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1
|
||||
or any later version published by the Free Software Foundation;
|
||||
with the Invariant Sections being LIST THEIR TITLES, with the
|
||||
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
|
||||
A copy of the license is included in the section entitled "GNU
|
||||
Free Documentation License".
|
||||
@end smallexample
|
||||
|
||||
If you have no Invariant Sections, write "with no Invariant Sections"
|
||||
instead of saying which ones are invariant. If you have no
|
||||
Front-Cover Texts, write "no Front-Cover Texts" instead of
|
||||
"Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
|
||||
|
||||
If your document contains nontrivial examples of program code, we
|
||||
recommend releasing these examples in parallel under your choice of
|
||||
free software license, such as the GNU General Public License,
|
||||
to permit their use in free software.
|
||||
|
||||
@node Index, , GNU Free Documentation License , Top
|
||||
@node Index, , GNU Free Documentation License, Top
|
||||
@unnumbered Index
|
||||
@printindex cp
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
\input texinfo
|
||||
@c Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
|
||||
@c 2000, 2001
|
||||
@c 2000, 2001, 2002, 2003
|
||||
@c Free Software Foundation, Inc.
|
||||
@setfilename bfdint.info
|
||||
|
||||
@@ -694,7 +694,7 @@ information in BFD private data. This is called via
|
||||
@samp{bfd_get_symtab_upper_bound}. The corresponding field in the
|
||||
target vector is named @samp{_bfd_get_symtab_upper_bound}.
|
||||
|
||||
@item _get_symtab
|
||||
@item _canonicalize_symtab
|
||||
Read in the symbol table. This is called via
|
||||
@samp{bfd_canonicalize_symtab}. The corresponding field in the target
|
||||
vector is named @samp{_bfd_canonicalize_symtab}.
|
||||
@@ -835,7 +835,7 @@ corresponding field in the target vector is named
|
||||
|
||||
@item _bfd_get_relocated_section_contents
|
||||
Read the contents of a section and apply the relocation information.
|
||||
This handles both a final link and a relocateable link; in the latter
|
||||
This handles both a final link and a relocatable link; in the latter
|
||||
case, it adjust the relocation information as well. This is called via
|
||||
@samp{bfd_get_relocated_section_contents}. Most targets implement it by
|
||||
calling @samp{bfd_generic_get_relocated_section_contents}.
|
||||
@@ -1073,11 +1073,6 @@ sizes.
|
||||
Like @file{elfcode.h}, but for functions that are specific to ELF core
|
||||
files. This is included only by @file{elfcode.h}.
|
||||
|
||||
@item elflink.h
|
||||
@cindex @file{elflink.h}
|
||||
Like @file{elfcode.h}, but for functions used by the ELF linker. This
|
||||
is included only by @file{elfcode.h}.
|
||||
|
||||
@item elfxx-target.h
|
||||
@cindex @file{elfxx-target.h}
|
||||
This file is the source for the generated files @file{elf32-target.h}
|
||||
@@ -1169,7 +1164,7 @@ allocate space in a different section and use the offset within that
|
||||
section as the value to store. In the IEEE object file format,
|
||||
relocations may involve arbitrary expressions.
|
||||
|
||||
When doing a relocateable link, the linker may or may not have to do
|
||||
When doing a relocatable link, the linker may or may not have to do
|
||||
anything with a relocation, depending upon the definition of the
|
||||
relocation. Simple relocations generally do not require any special
|
||||
action.
|
||||
@@ -1240,9 +1235,9 @@ existing target, you need to do the following:
|
||||
@itemize @bullet
|
||||
@item
|
||||
Make sure you clearly understand what the contents of the section should
|
||||
look like after assembly, after a relocateable link, and after a final
|
||||
look like after assembly, after a relocatable link, and after a final
|
||||
link. Make sure you clearly understand the operations the linker must
|
||||
perform during a relocateable link and during a final link.
|
||||
perform during a relocatable link and during a final link.
|
||||
|
||||
@item
|
||||
Write a howto structure for the relocation. The howto structure is
|
||||
@@ -1257,7 +1252,7 @@ call @samp{bfd_install_relocation}, so your howto structure has to be
|
||||
able to handle that. You may need to set the @samp{special_function}
|
||||
field to handle assembly correctly. Be careful to ensure that any code
|
||||
you write to handle the assembler will also work correctly when doing a
|
||||
relocateable link. For example, see @samp{bfd_elf_generic_reloc}.
|
||||
relocatable link. For example, see @samp{bfd_elf_generic_reloc}.
|
||||
|
||||
@item
|
||||
Test the assembler. Consider the cases of relocation against an
|
||||
@@ -1271,14 +1266,14 @@ If your target uses the new linker, which is recommended, add any
|
||||
required handling to the target specific relocation function. In simple
|
||||
cases this will just involve a call to @samp{_bfd_final_link_relocate}
|
||||
or @samp{_bfd_relocate_contents}, depending upon the definition of the
|
||||
relocation and whether the link is relocateable or not.
|
||||
relocation and whether the link is relocatable or not.
|
||||
|
||||
@item
|
||||
Test the linker. Test the case of a final link. If the relocation can
|
||||
overflow, use a linker script to force an overflow and make sure the
|
||||
error is reported correctly. Test a relocateable link, whether the
|
||||
symbol is defined or undefined in the relocateable output. For both the
|
||||
final and relocateable link, test the case when the symbol is a common
|
||||
error is reported correctly. Test a relocatable link, whether the
|
||||
symbol is defined or undefined in the relocatable output. For both the
|
||||
final and relocatable link, test the case when the symbol is a common
|
||||
symbol, when the symbol looked like a common symbol but became a defined
|
||||
symbol, when the symbol is defined in a different object file, and when
|
||||
the symbol is defined in the same object file.
|
||||
@@ -1291,7 +1286,7 @@ thing for the relocation. You may need to set the
|
||||
doing a link in which the output object file format is S-records.
|
||||
|
||||
@item
|
||||
Using the linker to generate relocateable output in a different object
|
||||
Using the linker to generate relocatable output in a different object
|
||||
file format is impossible in the general case, so you generally don't
|
||||
have to worry about that. The GNU linker makes sure to stop that from
|
||||
happening when an input file in a different format has relocations.
|
||||
@@ -1350,7 +1345,7 @@ howto structure. Some mechanism would be used to determine which type
|
||||
of howto structure was being used by a particular format.
|
||||
|
||||
The new howto structure would clearly define the relocation behaviour in
|
||||
the case of an assembly, a relocateable link, and a final link. At
|
||||
the case of an assembly, a relocatable link, and a final link. At
|
||||
least one special function would be defined as an escape, and it might
|
||||
make sense to define more.
|
||||
|
||||
@@ -1482,8 +1477,7 @@ external data. @file{elfcode.h} is compiled twice, once via
|
||||
@file{elfcode.h} includes functions to swap the ELF structures in and
|
||||
out of external form, as well as a few more complex functions.
|
||||
|
||||
Linker support is found in @file{elflink.c} and @file{elflink.h}. The
|
||||
latter file is compiled twice, for both 32 and 64 bit support. The
|
||||
Linker support is found in @file{elflink.c}. The
|
||||
linker support is only used if the processor specific file defines
|
||||
@samp{elf_backend_relocate_section}, which is required to relocate the
|
||||
section contents. If that macro is not defined, the generic linker code
|
||||
@@ -1566,7 +1560,7 @@ relocations. @samp{Rela} relocations will require more space in object
|
||||
files (but not in executables, except when using dynamic linking).
|
||||
However, this is outweighed by the simplicity of addend handling when
|
||||
using @samp{Rela} relocations. With @samp{Rel} relocations, the addend
|
||||
must be stored in the section contents, which makes relocateable links
|
||||
must be stored in the section contents, which makes relocatable links
|
||||
more complex.
|
||||
|
||||
For example, consider C code like @code{i = a[1000];} where @samp{a} is
|
||||
@@ -1578,7 +1572,7 @@ relocations, that addend must be stored in the instructions themselves.
|
||||
If you are adding support for a RISC chip which uses two or more
|
||||
instructions to load an address, then the addend may not fit in a single
|
||||
instruction, and will have to be somehow split among the instructions.
|
||||
This makes linking awkward, particularly when doing a relocateable link
|
||||
This makes linking awkward, particularly when doing a relocatable link
|
||||
in which the addend may have to be updated. It can be done---the MIPS
|
||||
ELF support does it---but it should be avoided when possible.
|
||||
|
||||
@@ -1611,7 +1605,7 @@ called @file{@var{cpu}.h}. This file should define any target specific
|
||||
information which may be needed outside of the BFD code. In particular
|
||||
it should use the @samp{START_RELOC_NUMBERS}, @samp{RELOC_NUMBER},
|
||||
@samp{FAKE_RELOC}, @samp{EMPTY_RELOC} and @samp{END_RELOC_NUMBERS}
|
||||
macros to create a table mapping the number used to indentify a
|
||||
macros to create a table mapping the number used to identify a
|
||||
relocation to a name describing that relocation.
|
||||
|
||||
While not a BFD component, you probably also want to make the binutils
|
||||
@@ -1645,7 +1639,7 @@ information, and modify the section contents according to the relocation
|
||||
information. In simple cases, this is little more than a loop over the
|
||||
relocations which computes the value of each relocation and calls
|
||||
@samp{_bfd_final_link_relocate}. The function must check for a
|
||||
relocateable link, and in that case normally needs to do nothing other
|
||||
relocatable link, and in that case normally needs to do nothing other
|
||||
than adjust the addend for relocations against a section symbol.
|
||||
|
||||
The complex cases generally have to do with dynamic linker support. GOT
|
||||
@@ -1788,7 +1782,7 @@ The implementation within BFD of a particular object file format. The
|
||||
set of functions which appear in a particular target vector.
|
||||
|
||||
@item BFD
|
||||
The BFD library itself. Also, each object file, archive, or exectable
|
||||
The BFD library itself. Also, each object file, archive, or executable
|
||||
opened by the BFD library has the type @samp{bfd *}, and is sometimes
|
||||
referred to as a bfd.
|
||||
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
@findex bfd_get_mtime
|
||||
@subsubsection @code{bfd_get_mtime}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
long bfd_get_mtime (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return the file modification time (as read from the file system, or
|
||||
from the archive header for archive members).
|
||||
|
||||
@findex bfd_get_size
|
||||
@subsubsection @code{bfd_get_size}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
long bfd_get_size (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return the file size (as read from file system) for the file
|
||||
associated with BFD @var{abfd}.
|
||||
|
||||
The initial motivation for, and use of, this routine is not
|
||||
so we can get the exact size of the object the BFD applies to, since
|
||||
that might not be generally possible (archive members for example).
|
||||
It would be ideal if someone could eventually modify
|
||||
it so that such results were guaranteed.
|
||||
|
||||
Instead, we want to ask questions like "is this NNN byte sized
|
||||
object I'm about to try read from file offset YYY reasonable?"
|
||||
As as example of where we might do this, some object formats
|
||||
use string tables for which the first @code{sizeof (long)} bytes of the
|
||||
table contain the size of the table itself, including the size bytes.
|
||||
If an application tries to read what it thinks is one of these
|
||||
string tables, without some way to validate the size, and for
|
||||
some reason the size is wrong (byte swapping error, wrong location
|
||||
for the string table, etc.), the only clue is likely to be a read
|
||||
error when it tries to read the table, or a "virtual memory
|
||||
exhausted" error when it tries to allocate 15 bazillon bytes
|
||||
of space for the 15 bazillon byte table it is about to read.
|
||||
This function at least allows us to answer the question, "is the
|
||||
size reasonable?".
|
||||
|
||||
+118
-103
@@ -10,8 +10,11 @@ to the rest of the data.
|
||||
|
||||
@example
|
||||
|
||||
struct _bfd
|
||||
struct bfd
|
||||
@{
|
||||
/* A unique identifier of the BFD */
|
||||
unsigned int id;
|
||||
|
||||
/* The filename the application opened the BFD with. */
|
||||
const char *filename;
|
||||
|
||||
@@ -25,33 +28,33 @@ struct _bfd
|
||||
is the result of an fopen on the filename. However, if the
|
||||
BFD_IN_MEMORY flag is set, then iostream is actually a pointer
|
||||
to a bfd_in_memory struct. */
|
||||
PTR iostream;
|
||||
void *iostream;
|
||||
|
||||
/* Is the file descriptor being cached? That is, can it be closed as
|
||||
needed, and re-opened when accessed later? */
|
||||
boolean cacheable;
|
||||
bfd_boolean cacheable;
|
||||
|
||||
/* Marks whether there was a default target specified when the
|
||||
BFD was opened. This is used to select which matching algorithm
|
||||
to use to choose the back end. */
|
||||
boolean target_defaulted;
|
||||
bfd_boolean target_defaulted;
|
||||
|
||||
/* The caching routines use these to maintain a
|
||||
least-recently-used list of BFDs. */
|
||||
struct _bfd *lru_prev, *lru_next;
|
||||
struct bfd *lru_prev, *lru_next;
|
||||
|
||||
/* When a file is closed by the caching routines, BFD retains
|
||||
state information on the file here... */
|
||||
ufile_ptr where;
|
||||
|
||||
/* ... and here: (``once'' means at least once). */
|
||||
boolean opened_once;
|
||||
bfd_boolean opened_once;
|
||||
|
||||
/* Set if we have a locally maintained mtime value, rather than
|
||||
getting it from the file each time. */
|
||||
boolean mtime_set;
|
||||
bfd_boolean mtime_set;
|
||||
|
||||
/* File modified time, if mtime_set is true. */
|
||||
/* File modified time, if mtime_set is TRUE. */
|
||||
long mtime;
|
||||
|
||||
/* Reserved for an unimplemented file locking extension. */
|
||||
@@ -80,16 +83,16 @@ struct _bfd
|
||||
|
||||
/* Remember when output has begun, to stop strange things
|
||||
from happening. */
|
||||
boolean output_has_begun;
|
||||
bfd_boolean output_has_begun;
|
||||
|
||||
/* A hash table for section names. */
|
||||
struct bfd_hash_table section_htab;
|
||||
|
||||
/* Pointer to linked list of sections. */
|
||||
struct sec *sections;
|
||||
struct bfd_section *sections;
|
||||
|
||||
/* The place where we add to the section list. */
|
||||
struct sec **section_tail;
|
||||
struct bfd_section **section_tail;
|
||||
|
||||
/* The number of sections. */
|
||||
unsigned int section_count;
|
||||
@@ -102,7 +105,7 @@ struct _bfd
|
||||
unsigned int symcount;
|
||||
|
||||
/* Symbol table for output BFD (with symcount entries). */
|
||||
struct symbol_cache_entry **outsymbols;
|
||||
struct bfd_symbol **outsymbols;
|
||||
|
||||
/* Used for slurped dynamic symbol tables. */
|
||||
unsigned int dynsymcount;
|
||||
@@ -111,14 +114,14 @@ struct _bfd
|
||||
const struct bfd_arch_info *arch_info;
|
||||
|
||||
/* Stuff only useful for archives. */
|
||||
PTR arelt_data;
|
||||
struct _bfd *my_archive; /* The containing archive BFD. */
|
||||
struct _bfd *next; /* The next BFD in the archive. */
|
||||
struct _bfd *archive_head; /* The first BFD in the archive. */
|
||||
boolean has_armap;
|
||||
void *arelt_data;
|
||||
struct bfd *my_archive; /* The containing archive BFD. */
|
||||
struct bfd *next; /* The next BFD in the archive. */
|
||||
struct bfd *archive_head; /* The first BFD in the archive. */
|
||||
bfd_boolean has_armap;
|
||||
|
||||
/* A chain of BFD structures involved in a link. */
|
||||
struct _bfd *link_next;
|
||||
struct bfd *link_next;
|
||||
|
||||
/* A field used by _bfd_generic_link_add_archive_symbols. This will
|
||||
be used only for archive elements. */
|
||||
@@ -156,17 +159,22 @@ struct _bfd
|
||||
struct cisco_core_struct *cisco_core_data;
|
||||
struct versados_data_struct *versados_data;
|
||||
struct netbsd_core_struct *netbsd_core_data;
|
||||
PTR any;
|
||||
struct mach_o_data_struct *mach_o_data;
|
||||
struct mach_o_fat_data_struct *mach_o_fat_data;
|
||||
struct bfd_pef_data_struct *pef_data;
|
||||
struct bfd_pef_xlib_data_struct *pef_xlib_data;
|
||||
struct bfd_sym_data_struct *sym_data;
|
||||
void *any;
|
||||
@}
|
||||
tdata;
|
||||
|
||||
/* Used by the application to hold private data. */
|
||||
PTR usrdata;
|
||||
void *usrdata;
|
||||
|
||||
/* Where all the allocated stuff under this BFD goes. This is a
|
||||
struct objalloc *, but we use PTR to avoid requiring the inclusion of
|
||||
objalloc.h. */
|
||||
PTR memory;
|
||||
struct objalloc *, but we use void * to avoid requiring the inclusion
|
||||
of objalloc.h. */
|
||||
void *memory;
|
||||
@};
|
||||
|
||||
@end example
|
||||
@@ -258,14 +266,14 @@ by @var{message}, a colon, and a space. It is followed by a newline.
|
||||
@subsection BFD error handler
|
||||
Some BFD functions want to print messages describing the
|
||||
problem. They call a BFD error handler function. This
|
||||
function may be overriden by the program.
|
||||
function may be overridden by the program.
|
||||
|
||||
The BFD error handler acts like printf.
|
||||
|
||||
|
||||
@example
|
||||
|
||||
typedef void (*bfd_error_handler_type) PARAMS ((const char *, ...));
|
||||
typedef void (*bfd_error_handler_type) (const char *, ...);
|
||||
|
||||
@end example
|
||||
@findex bfd_set_error_handler
|
||||
@@ -317,7 +325,7 @@ returns the file name.
|
||||
@subsubsection @code{bfd_get_reloc_upper_bound}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
long bfd_get_reloc_upper_bound(bfd *abfd, asection *sect);
|
||||
long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return the number of bytes required to store the
|
||||
@@ -329,10 +337,7 @@ attached to bfd @var{abfd}. If an error occurs, return -1.
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
long bfd_canonicalize_reloc
|
||||
(bfd *abfd,
|
||||
asection *sec,
|
||||
arelent **loc,
|
||||
asymbol **syms);
|
||||
(bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Call the back end associated with the open BFD
|
||||
@@ -362,7 +367,7 @@ The argument @var{abfd} is ignored.
|
||||
@subsubsection @code{bfd_set_file_flags}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_set_file_flags(bfd *abfd, flagword flags);
|
||||
bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Set the flag word in the BFD @var{abfd} to the value @var{flags}.
|
||||
@@ -418,60 +423,19 @@ not sign extend addresses, and @code{-1} otherwise.
|
||||
@subsubsection @code{bfd_set_start_address}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_set_start_address(bfd *abfd, bfd_vma vma);
|
||||
bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Make @var{vma} the entry point of output BFD @var{abfd}.
|
||||
|
||||
@strong{Returns}@*
|
||||
Returns @code{true} on success, @code{false} otherwise.
|
||||
|
||||
@findex bfd_get_mtime
|
||||
@subsubsection @code{bfd_get_mtime}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
long bfd_get_mtime(bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return the file modification time (as read from the file system, or
|
||||
from the archive header for archive members).
|
||||
|
||||
@findex bfd_get_size
|
||||
@subsubsection @code{bfd_get_size}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
long bfd_get_size(bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return the file size (as read from file system) for the file
|
||||
associated with BFD @var{abfd}.
|
||||
|
||||
The initial motivation for, and use of, this routine is not
|
||||
so we can get the exact size of the object the BFD applies to, since
|
||||
that might not be generally possible (archive members for example).
|
||||
It would be ideal if someone could eventually modify
|
||||
it so that such results were guaranteed.
|
||||
|
||||
Instead, we want to ask questions like "is this NNN byte sized
|
||||
object I'm about to try read from file offset YYY reasonable?"
|
||||
As as example of where we might do this, some object formats
|
||||
use string tables for which the first @code{sizeof (long)} bytes of the
|
||||
table contain the size of the table itself, including the size bytes.
|
||||
If an application tries to read what it thinks is one of these
|
||||
string tables, without some way to validate the size, and for
|
||||
some reason the size is wrong (byte swapping error, wrong location
|
||||
for the string table, etc.), the only clue is likely to be a read
|
||||
error when it tries to read the table, or a "virtual memory
|
||||
exhausted" error when it tries to allocate 15 bazillon bytes
|
||||
of space for the 15 bazillon byte table it is about to read.
|
||||
This function at least allows us to answer the quesion, "is the
|
||||
size reasonable?".
|
||||
Returns @code{TRUE} on success, @code{FALSE} otherwise.
|
||||
|
||||
@findex bfd_get_gp_size
|
||||
@subsubsection @code{bfd_get_gp_size}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
unsigned int bfd_get_gp_size(bfd *abfd);
|
||||
unsigned int bfd_get_gp_size (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return the maximum size of objects to be optimized using the GP
|
||||
@@ -482,7 +446,7 @@ argument to the compiler, assembler or linker.
|
||||
@subsubsection @code{bfd_set_gp_size}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
void bfd_set_gp_size(bfd *abfd, unsigned int i);
|
||||
void bfd_set_gp_size (bfd *abfd, unsigned int i);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Set the maximum size of objects to be optimized using the GP
|
||||
@@ -493,7 +457,7 @@ the @code{-G} argument to the compiler, assembler or linker.
|
||||
@subsubsection @code{bfd_scan_vma}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
bfd_vma bfd_scan_vma(const char *string, const char **end, int base);
|
||||
bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Convert, like @code{strtoul}, a numerical expression
|
||||
@@ -512,11 +476,11 @@ returned.
|
||||
@subsubsection @code{bfd_copy_private_bfd_data}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_copy_private_bfd_data(bfd *ibfd, bfd *obfd);
|
||||
bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Copy private BFD information from the BFD @var{ibfd} to the
|
||||
the BFD @var{obfd}. Return @code{true} on success, @code{false} on error.
|
||||
the BFD @var{obfd}. Return @code{TRUE} on success, @code{FALSE} on error.
|
||||
Possible error returns are:
|
||||
|
||||
@itemize @bullet
|
||||
@@ -535,12 +499,12 @@ Not enough memory exists to create private data for @var{obfd}.
|
||||
@subsubsection @code{bfd_merge_private_bfd_data}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_merge_private_bfd_data(bfd *ibfd, bfd *obfd);
|
||||
bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Merge private BFD information from the BFD @var{ibfd} to the
|
||||
the output file BFD @var{obfd} when linking. Return @code{true}
|
||||
on success, @code{false} on error. Possible error returns are:
|
||||
the output file BFD @var{obfd} when linking. Return @code{TRUE}
|
||||
on success, @code{FALSE} on error. Possible error returns are:
|
||||
|
||||
@itemize @bullet
|
||||
|
||||
@@ -558,11 +522,11 @@ Not enough memory exists to create private data for @var{obfd}.
|
||||
@subsubsection @code{bfd_set_private_flags}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_set_private_flags(bfd *abfd, flagword flags);
|
||||
bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Set private BFD flag information in the BFD @var{abfd}.
|
||||
Return @code{true} on success, @code{false} on error. Possible error
|
||||
Return @code{TRUE} on success, @code{FALSE} on error. Possible error
|
||||
returns are:
|
||||
|
||||
@itemize @bullet
|
||||
@@ -573,40 +537,38 @@ Not enough memory exists to create private data for @var{obfd}.
|
||||
@end itemize
|
||||
@example
|
||||
#define bfd_set_private_flags(abfd, flags) \
|
||||
BFD_SEND (abfd, _bfd_set_private_flags, \
|
||||
(abfd, flags))
|
||||
BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
|
||||
@end example
|
||||
|
||||
@findex stuff
|
||||
@subsubsection @code{stuff}
|
||||
@findex Other functions
|
||||
@subsubsection @code{Other functions}
|
||||
@strong{Description}@*
|
||||
Stuff which should be documented:
|
||||
The following functions exist but have not yet been documented.
|
||||
@example
|
||||
#define bfd_sizeof_headers(abfd, reloc) \
|
||||
BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, reloc))
|
||||
BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, reloc))
|
||||
|
||||
#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
|
||||
BFD_SEND (abfd, _bfd_find_nearest_line, (abfd, sec, syms, off, file, func, line))
|
||||
BFD_SEND (abfd, _bfd_find_nearest_line, \
|
||||
(abfd, sec, syms, off, file, func, line))
|
||||
|
||||
/* Do these three do anything useful at all, for any back end? */
|
||||
#define bfd_debug_info_start(abfd) \
|
||||
BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
|
||||
BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
|
||||
|
||||
#define bfd_debug_info_end(abfd) \
|
||||
BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
|
||||
BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
|
||||
|
||||
#define bfd_debug_info_accumulate(abfd, section) \
|
||||
BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
|
||||
|
||||
BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
|
||||
|
||||
#define bfd_stat_arch_elt(abfd, stat) \
|
||||
BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
|
||||
BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
|
||||
|
||||
#define bfd_update_armap_timestamp(abfd) \
|
||||
BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
|
||||
BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
|
||||
|
||||
#define bfd_set_arch_mach(abfd, arch, mach)\
|
||||
BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
|
||||
BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
|
||||
|
||||
#define bfd_relax_section(abfd, section, link_info, again) \
|
||||
BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
|
||||
@@ -654,9 +616,8 @@ Stuff which should be documented:
|
||||
BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
|
||||
|
||||
extern bfd_byte *bfd_get_relocated_section_contents
|
||||
PARAMS ((bfd *, struct bfd_link_info *,
|
||||
struct bfd_link_order *, bfd_byte *,
|
||||
boolean, asymbol **));
|
||||
(bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
|
||||
bfd_boolean, asymbol **);
|
||||
|
||||
@end example
|
||||
|
||||
@@ -664,7 +625,7 @@ extern bfd_byte *bfd_get_relocated_section_contents
|
||||
@subsubsection @code{bfd_alt_mach_code}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_alt_mach_code(bfd *abfd, int alternative);
|
||||
bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
When more than one machine code number is available for the
|
||||
@@ -673,3 +634,57 @@ the preferred one (alternative == 0) and any others. Currently,
|
||||
only ELF supports this feature, with up to two alternate
|
||||
machine codes.
|
||||
|
||||
|
||||
@example
|
||||
struct bfd_preserve
|
||||
@{
|
||||
void *marker;
|
||||
void *tdata;
|
||||
flagword flags;
|
||||
const struct bfd_arch_info *arch_info;
|
||||
struct bfd_section *sections;
|
||||
struct bfd_section **section_tail;
|
||||
unsigned int section_count;
|
||||
struct bfd_hash_table section_htab;
|
||||
@};
|
||||
|
||||
@end example
|
||||
@findex bfd_preserve_save
|
||||
@subsubsection @code{bfd_preserve_save}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
When testing an object for compatibility with a particular
|
||||
target back-end, the back-end object_p function needs to set
|
||||
up certain fields in the bfd on successfully recognizing the
|
||||
object. This typically happens in a piecemeal fashion, with
|
||||
failures possible at many points. On failure, the bfd is
|
||||
supposed to be restored to its initial state, which is
|
||||
virtually impossible. However, restoring a subset of the bfd
|
||||
state works in practice. This function stores the subset and
|
||||
reinitializes the bfd.
|
||||
|
||||
@findex bfd_preserve_restore
|
||||
@subsubsection @code{bfd_preserve_restore}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
void bfd_preserve_restore (bfd *, struct bfd_preserve *);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
This function restores bfd state saved by bfd_preserve_save.
|
||||
If MARKER is non-NULL in struct bfd_preserve then that block
|
||||
and all subsequently bfd_alloc'd memory is freed.
|
||||
|
||||
@findex bfd_preserve_finish
|
||||
@subsubsection @code{bfd_preserve_finish}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
void bfd_preserve_finish (bfd *, struct bfd_preserve *);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
This function should be called when the bfd state saved by
|
||||
bfd_preserve_save is no longer needed. ie. when the back-end
|
||||
object_p function returns with success.
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
@findex
|
||||
@subsubsection @code{}
|
||||
@@ -48,7 +48,7 @@ otherwise, it has to perform the complicated lookup function.
|
||||
@subsubsection @code{bfd_cache_init}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_cache_init (bfd *abfd);
|
||||
bfd_boolean bfd_cache_init (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Add a newly opened BFD to the cache.
|
||||
@@ -57,21 +57,21 @@ Add a newly opened BFD to the cache.
|
||||
@subsubsection @code{bfd_cache_close}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_cache_close (bfd *abfd);
|
||||
bfd_boolean bfd_cache_close (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Remove the BFD @var{abfd} from the cache. If the attached file is open,
|
||||
then close it too.
|
||||
|
||||
@strong{Returns}@*
|
||||
@code{false} is returned if closing the file fails, @code{true} is
|
||||
@code{FALSE} is returned if closing the file fails, @code{TRUE} is
|
||||
returned if all is well.
|
||||
|
||||
@findex bfd_open_file
|
||||
@subsubsection @code{bfd_open_file}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
FILE* bfd_open_file(bfd *abfd);
|
||||
FILE* bfd_open_file (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Call the OS to open a file for @var{abfd}. Return the @code{FILE *}
|
||||
@@ -84,7 +84,7 @@ cache, so it won't have to be removed from it.
|
||||
@subsubsection @code{bfd_cache_lookup_worker}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
FILE *bfd_cache_lookup_worker(bfd *abfd);
|
||||
FILE *bfd_cache_lookup_worker (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Called when the macro @code{bfd_cache_lookup} fails to find a
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* chew
|
||||
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2001,
|
||||
2002
|
||||
2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by steve chamberlain @cygnus
|
||||
|
||||
@@ -494,8 +494,11 @@ paramstuff ()
|
||||
string_type out;
|
||||
init_string (&out);
|
||||
|
||||
#define NO_PARAMS 1
|
||||
|
||||
/* Make sure that it's not already param'd or proto'd. */
|
||||
if (find (tos, "PARAMS") || find (tos, "PROTO") || !find (tos, "("))
|
||||
if (NO_PARAMS
|
||||
|| find (tos, "PARAMS") || find (tos, "PROTO") || !find (tos, "("))
|
||||
{
|
||||
catstr (&out, tos);
|
||||
}
|
||||
|
||||
@@ -188,7 +188,7 @@ section. This transformation uses the
|
||||
This routine runs though the provided symbol table and uses
|
||||
the offsets generated by the previous pass and the pointers
|
||||
generated when the symbol table was read in to create the
|
||||
structured hierachy required by coff. It changes each pointer
|
||||
structured hierarchy required by coff. It changes each pointer
|
||||
to a symbol into the index into the symbol table of the asymbol.
|
||||
|
||||
@itemize @bullet
|
||||
@@ -259,7 +259,7 @@ typedef struct coff_symbol_struct
|
||||
struct lineno_cache_entry *lineno;
|
||||
|
||||
/* Have the line numbers been relocated yet ? */
|
||||
boolean done_lineno;
|
||||
bfd_boolean done_lineno;
|
||||
@} coff_symbol_type;
|
||||
@end example
|
||||
@findex bfd_coff_backend_data
|
||||
@@ -325,10 +325,10 @@ typedef struct
|
||||
unsigned int _bfd_relsz;
|
||||
unsigned int _bfd_linesz;
|
||||
unsigned int _bfd_filnmlen;
|
||||
boolean _bfd_coff_long_filenames;
|
||||
boolean _bfd_coff_long_section_names;
|
||||
bfd_boolean _bfd_coff_long_filenames;
|
||||
bfd_boolean _bfd_coff_long_section_names;
|
||||
unsigned int _bfd_coff_default_section_alignment_power;
|
||||
boolean _bfd_coff_force_symnames_in_strings;
|
||||
bfd_boolean _bfd_coff_force_symnames_in_strings;
|
||||
unsigned int _bfd_coff_debug_string_prefix_length;
|
||||
|
||||
void (*_bfd_coff_swap_filehdr_in)
|
||||
@@ -343,32 +343,32 @@ typedef struct
|
||||
void (*_bfd_coff_swap_reloc_in)
|
||||
PARAMS ((bfd *abfd, PTR, PTR));
|
||||
|
||||
boolean (*_bfd_coff_bad_format_hook)
|
||||
bfd_boolean (*_bfd_coff_bad_format_hook)
|
||||
PARAMS ((bfd *, PTR));
|
||||
|
||||
boolean (*_bfd_coff_set_arch_mach_hook)
|
||||
bfd_boolean (*_bfd_coff_set_arch_mach_hook)
|
||||
PARAMS ((bfd *, PTR));
|
||||
|
||||
PTR (*_bfd_coff_mkobject_hook)
|
||||
PARAMS ((bfd *, PTR, PTR));
|
||||
|
||||
boolean (*_bfd_styp_to_sec_flags_hook)
|
||||
bfd_boolean (*_bfd_styp_to_sec_flags_hook)
|
||||
PARAMS ((bfd *, PTR, const char *, asection *, flagword *));
|
||||
|
||||
void (*_bfd_set_alignment_hook)
|
||||
PARAMS ((bfd *, asection *, PTR));
|
||||
|
||||
boolean (*_bfd_coff_slurp_symbol_table)
|
||||
bfd_boolean (*_bfd_coff_slurp_symbol_table)
|
||||
PARAMS ((bfd *));
|
||||
|
||||
boolean (*_bfd_coff_symname_in_debug)
|
||||
bfd_boolean (*_bfd_coff_symname_in_debug)
|
||||
PARAMS ((bfd *, struct internal_syment *));
|
||||
|
||||
boolean (*_bfd_coff_pointerize_aux_hook)
|
||||
bfd_boolean (*_bfd_coff_pointerize_aux_hook)
|
||||
PARAMS ((bfd *, combined_entry_type *, combined_entry_type *,
|
||||
unsigned int, combined_entry_type *));
|
||||
|
||||
boolean (*_bfd_coff_print_aux)
|
||||
bfd_boolean (*_bfd_coff_print_aux)
|
||||
PARAMS ((bfd *, FILE *, combined_entry_type *, combined_entry_type *,
|
||||
combined_entry_type *, unsigned int));
|
||||
|
||||
@@ -383,13 +383,13 @@ typedef struct
|
||||
enum coff_symbol_classification (*_bfd_coff_classify_symbol)
|
||||
PARAMS ((bfd *, struct internal_syment *));
|
||||
|
||||
boolean (*_bfd_coff_compute_section_file_positions)
|
||||
bfd_boolean (*_bfd_coff_compute_section_file_positions)
|
||||
PARAMS ((bfd *));
|
||||
|
||||
boolean (*_bfd_coff_start_final_link)
|
||||
bfd_boolean (*_bfd_coff_start_final_link)
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
|
||||
boolean (*_bfd_coff_relocate_section)
|
||||
bfd_boolean (*_bfd_coff_relocate_section)
|
||||
PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
|
||||
struct internal_reloc *, struct internal_syment *, asection **));
|
||||
|
||||
@@ -398,19 +398,19 @@ typedef struct
|
||||
struct coff_link_hash_entry *, struct internal_syment *,
|
||||
bfd_vma *));
|
||||
|
||||
boolean (*_bfd_coff_adjust_symndx)
|
||||
bfd_boolean (*_bfd_coff_adjust_symndx)
|
||||
PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *,
|
||||
struct internal_reloc *, boolean *));
|
||||
struct internal_reloc *, bfd_boolean *));
|
||||
|
||||
boolean (*_bfd_coff_link_add_one_symbol)
|
||||
bfd_boolean (*_bfd_coff_link_add_one_symbol)
|
||||
PARAMS ((struct bfd_link_info *, bfd *, const char *, flagword,
|
||||
asection *, bfd_vma, const char *, boolean, boolean,
|
||||
asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
|
||||
struct bfd_link_hash_entry **));
|
||||
|
||||
boolean (*_bfd_coff_link_output_has_begun)
|
||||
bfd_boolean (*_bfd_coff_link_output_has_begun)
|
||||
PARAMS ((bfd *, struct coff_final_link_info *));
|
||||
|
||||
boolean (*_bfd_coff_final_link_postscript)
|
||||
bfd_boolean (*_bfd_coff_final_link_postscript)
|
||||
PARAMS ((bfd *, struct coff_final_link_info *));
|
||||
|
||||
@} bfd_coff_backend_data;
|
||||
@@ -480,7 +480,8 @@ typedef struct
|
||||
#define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
|
||||
((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
|
||||
#define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
|
||||
((coff_backend_info (abfd)->_bfd_coff_mkobject_hook) (abfd, filehdr, aouthdr))
|
||||
((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
|
||||
(abfd, filehdr, aouthdr))
|
||||
|
||||
#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
|
||||
((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
|
||||
@@ -505,7 +506,8 @@ typedef struct
|
||||
((coff_backend_info (abfd)->_bfd_coff_print_aux)\
|
||||
(abfd, file, base, symbol, aux, indaux))
|
||||
|
||||
#define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)\
|
||||
#define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
|
||||
reloc, data, src_ptr, dst_ptr)\
|
||||
((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
|
||||
(abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
|
||||
|
||||
@@ -533,7 +535,8 @@ typedef struct
|
||||
#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
|
||||
((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
|
||||
(obfd, info, ibfd, sec, rel, adjustedp))
|
||||
#define bfd_coff_link_add_one_symbol(info,abfd,name,flags,section,value,string,cp,coll,hashp)\
|
||||
#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
|
||||
value, string, cp, coll, hashp)\
|
||||
((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
|
||||
(info, abfd, name, flags, section, value, string, cp, coll, hashp))
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ These are functions pertaining to core files.
|
||||
@subsubsection @code{bfd_core_file_failing_command}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
const char *bfd_core_file_failing_command(bfd *abfd);
|
||||
const char *bfd_core_file_failing_command (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return a read-only string explaining which program was running
|
||||
@@ -18,7 +18,7 @@ when it failed and produced the core file @var{abfd}.
|
||||
@subsubsection @code{bfd_core_file_failing_signal}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
int bfd_core_file_failing_signal(bfd *abfd);
|
||||
int bfd_core_file_failing_signal (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Returns the signal number which caused the core dump which
|
||||
@@ -28,11 +28,11 @@ generated the file the BFD @var{abfd} is attached to.
|
||||
@subsubsection @code{core_file_matches_executable_p}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean core_file_matches_executable_p
|
||||
bfd_boolean core_file_matches_executable_p
|
||||
(bfd *core_bfd, bfd *exec_bfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return @code{true} if the core file attached to @var{core_bfd}
|
||||
Return @code{TRUE} if the core file attached to @var{core_bfd}
|
||||
was generated by a run of the executable file attached to
|
||||
@var{exec_bfd}, @code{false} otherwise.
|
||||
@var{exec_bfd}, @code{FALSE} otherwise.
|
||||
|
||||
|
||||
@@ -0,0 +1,366 @@
|
||||
@c -*-texinfo-*-
|
||||
@appendix GNU Free Documentation License
|
||||
@center Version 1.1, March 2000
|
||||
|
||||
@display
|
||||
Copyright (C) 2000, Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
@end display
|
||||
@sp 1
|
||||
@enumerate 0
|
||||
@item
|
||||
PREAMBLE
|
||||
|
||||
The purpose of this License is to make a manual, textbook, or other
|
||||
written document ``free'' in the sense of freedom: to assure everyone
|
||||
the effective freedom to copy and redistribute it, with or without
|
||||
modifying it, either commercially or noncommercially. Secondarily,
|
||||
this License preserves for the author and publisher a way to get
|
||||
credit for their work, while not being considered responsible for
|
||||
modifications made by others.
|
||||
|
||||
This License is a kind of ``copyleft'', which means that derivative
|
||||
works of the document must themselves be free in the same sense. It
|
||||
complements the GNU General Public License, which is a copyleft
|
||||
license designed for free software.
|
||||
|
||||
We have designed this License in order to use it for manuals for free
|
||||
software, because free software needs free documentation: a free
|
||||
program should come with manuals providing the same freedoms that the
|
||||
software does. But this License is not limited to software manuals;
|
||||
it can be used for any textual work, regardless of subject matter or
|
||||
whether it is published as a printed book. We recommend this License
|
||||
principally for works whose purpose is instruction or reference.
|
||||
|
||||
@sp 1
|
||||
@item
|
||||
APPLICABILITY AND DEFINITIONS
|
||||
|
||||
This License applies to any manual or other work that contains a
|
||||
notice placed by the copyright holder saying it can be distributed
|
||||
under the terms of this License. The ``Document'', below, refers to any
|
||||
such manual or work. Any member of the public is a licensee, and is
|
||||
addressed as ``you.''
|
||||
|
||||
A ``Modified Version'' of the Document means any work containing the
|
||||
Document or a portion of it, either copied verbatim, or with
|
||||
modifications and/or translated into another language.
|
||||
|
||||
A ``Secondary Section'' is a named appendix or a front-matter section of
|
||||
the Document that deals exclusively with the relationship of the
|
||||
publishers or authors of the Document to the Document's overall subject
|
||||
(or to related matters) and contains nothing that could fall directly
|
||||
within that overall subject. (For example, if the Document is in part a
|
||||
textbook of mathematics, a Secondary Section may not explain any
|
||||
mathematics.) The relationship could be a matter of historical
|
||||
connection with the subject or with related matters, or of legal,
|
||||
commercial, philosophical, ethical or political position regarding
|
||||
them.
|
||||
|
||||
The ``Invariant Sections'' are certain Secondary Sections whose titles
|
||||
are designated, as being those of Invariant Sections, in the notice
|
||||
that says that the Document is released under this License.
|
||||
|
||||
The ``Cover Texts'' are certain short passages of text that are listed,
|
||||
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
||||
the Document is released under this License.
|
||||
|
||||
A ``Transparent'' copy of the Document means a machine-readable copy,
|
||||
represented in a format whose specification is available to the
|
||||
general public, whose contents can be viewed and edited directly and
|
||||
straightforwardly with generic text editors or (for images composed of
|
||||
pixels) generic paint programs or (for drawings) some widely available
|
||||
drawing editor, and that is suitable for input to text formatters or
|
||||
for automatic translation to a variety of formats suitable for input
|
||||
to text formatters. A copy made in an otherwise Transparent file
|
||||
format whose markup has been designed to thwart or discourage
|
||||
subsequent modification by readers is not Transparent. A copy that is
|
||||
not ``Transparent'' is called ``Opaque.''
|
||||
|
||||
Examples of suitable formats for Transparent copies include plain
|
||||
ASCII without markup, Texinfo input format, LaTeX input format, SGML
|
||||
or XML using a publicly available DTD, and standard-conforming simple
|
||||
HTML designed for human modification. Opaque formats include
|
||||
PostScript, PDF, proprietary formats that can be read and edited only
|
||||
by proprietary word processors, SGML or XML for which the DTD and/or
|
||||
processing tools are not generally available, and the
|
||||
machine-generated HTML produced by some word processors for output
|
||||
purposes only.
|
||||
|
||||
The ``Title Page'' means, for a printed book, the title page itself,
|
||||
plus such following pages as are needed to hold, legibly, the material
|
||||
this License requires to appear in the title page. For works in
|
||||
formats which do not have any title page as such, ``Title Page'' means
|
||||
the text near the most prominent appearance of the work's title,
|
||||
preceding the beginning of the body of the text.
|
||||
@sp 1
|
||||
@item
|
||||
VERBATIM COPYING
|
||||
|
||||
You may copy and distribute the Document in any medium, either
|
||||
commercially or noncommercially, provided that this License, the
|
||||
copyright notices, and the license notice saying this License applies
|
||||
to the Document are reproduced in all copies, and that you add no other
|
||||
conditions whatsoever to those of this License. You may not use
|
||||
technical measures to obstruct or control the reading or further
|
||||
copying of the copies you make or distribute. However, you may accept
|
||||
compensation in exchange for copies. If you distribute a large enough
|
||||
number of copies you must also follow the conditions in section 3.
|
||||
|
||||
You may also lend copies, under the same conditions stated above, and
|
||||
you may publicly display copies.
|
||||
@sp 1
|
||||
@item
|
||||
COPYING IN QUANTITY
|
||||
|
||||
If you publish printed copies of the Document numbering more than 100,
|
||||
and the Document's license notice requires Cover Texts, you must enclose
|
||||
the copies in covers that carry, clearly and legibly, all these Cover
|
||||
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
||||
the back cover. Both covers must also clearly and legibly identify
|
||||
you as the publisher of these copies. The front cover must present
|
||||
the full title with all words of the title equally prominent and
|
||||
visible. You may add other material on the covers in addition.
|
||||
Copying with changes limited to the covers, as long as they preserve
|
||||
the title of the Document and satisfy these conditions, can be treated
|
||||
as verbatim copying in other respects.
|
||||
|
||||
If the required texts for either cover are too voluminous to fit
|
||||
legibly, you should put the first ones listed (as many as fit
|
||||
reasonably) on the actual cover, and continue the rest onto adjacent
|
||||
pages.
|
||||
|
||||
If you publish or distribute Opaque copies of the Document numbering
|
||||
more than 100, you must either include a machine-readable Transparent
|
||||
copy along with each Opaque copy, or state in or with each Opaque copy
|
||||
a publicly-accessible computer-network location containing a complete
|
||||
Transparent copy of the Document, free of added material, which the
|
||||
general network-using public has access to download anonymously at no
|
||||
charge using public-standard network protocols. If you use the latter
|
||||
option, you must take reasonably prudent steps, when you begin
|
||||
distribution of Opaque copies in quantity, to ensure that this
|
||||
Transparent copy will remain thus accessible at the stated location
|
||||
until at least one year after the last time you distribute an Opaque
|
||||
copy (directly or through your agents or retailers) of that edition to
|
||||
the public.
|
||||
|
||||
It is requested, but not required, that you contact the authors of the
|
||||
Document well before redistributing any large number of copies, to give
|
||||
them a chance to provide you with an updated version of the Document.
|
||||
@sp 1
|
||||
@item
|
||||
MODIFICATIONS
|
||||
|
||||
You may copy and distribute a Modified Version of the Document under
|
||||
the conditions of sections 2 and 3 above, provided that you release
|
||||
the Modified Version under precisely this License, with the Modified
|
||||
Version filling the role of the Document, thus licensing distribution
|
||||
and modification of the Modified Version to whoever possesses a copy
|
||||
of it. In addition, you must do these things in the Modified Version:
|
||||
|
||||
A. Use in the Title Page (and on the covers, if any) a title distinct
|
||||
from that of the Document, and from those of previous versions
|
||||
(which should, if there were any, be listed in the History section
|
||||
of the Document). You may use the same title as a previous version
|
||||
if the original publisher of that version gives permission.@*
|
||||
B. List on the Title Page, as authors, one or more persons or entities
|
||||
responsible for authorship of the modifications in the Modified
|
||||
Version, together with at least five of the principal authors of the
|
||||
Document (all of its principal authors, if it has less than five).@*
|
||||
C. State on the Title page the name of the publisher of the
|
||||
Modified Version, as the publisher.@*
|
||||
D. Preserve all the copyright notices of the Document.@*
|
||||
E. Add an appropriate copyright notice for your modifications
|
||||
adjacent to the other copyright notices.@*
|
||||
F. Include, immediately after the copyright notices, a license notice
|
||||
giving the public permission to use the Modified Version under the
|
||||
terms of this License, in the form shown in the Addendum below.@*
|
||||
G. Preserve in that license notice the full lists of Invariant Sections
|
||||
and required Cover Texts given in the Document's license notice.@*
|
||||
H. Include an unaltered copy of this License.@*
|
||||
I. Preserve the section entitled ``History'', and its title, and add to
|
||||
it an item stating at least the title, year, new authors, and
|
||||
publisher of the Modified Version as given on the Title Page. If
|
||||
there is no section entitled ``History'' in the Document, create one
|
||||
stating the title, year, authors, and publisher of the Document as
|
||||
given on its Title Page, then add an item describing the Modified
|
||||
Version as stated in the previous sentence.@*
|
||||
J. Preserve the network location, if any, given in the Document for
|
||||
public access to a Transparent copy of the Document, and likewise
|
||||
the network locations given in the Document for previous versions
|
||||
it was based on. These may be placed in the ``History'' section.
|
||||
You may omit a network location for a work that was published at
|
||||
least four years before the Document itself, or if the original
|
||||
publisher of the version it refers to gives permission.@*
|
||||
K. In any section entitled ``Acknowledgements'' or ``Dedications'',
|
||||
preserve the section's title, and preserve in the section all the
|
||||
substance and tone of each of the contributor acknowledgements
|
||||
and/or dedications given therein.@*
|
||||
L. Preserve all the Invariant Sections of the Document,
|
||||
unaltered in their text and in their titles. Section numbers
|
||||
or the equivalent are not considered part of the section titles.@*
|
||||
M. Delete any section entitled ``Endorsements.'' Such a section
|
||||
may not be included in the Modified Version.@*
|
||||
N. Do not retitle any existing section as ``Endorsements''
|
||||
or to conflict in title with any Invariant Section.@*
|
||||
@sp 1
|
||||
If the Modified Version includes new front-matter sections or
|
||||
appendices that qualify as Secondary Sections and contain no material
|
||||
copied from the Document, you may at your option designate some or all
|
||||
of these sections as invariant. To do this, add their titles to the
|
||||
list of Invariant Sections in the Modified Version's license notice.
|
||||
These titles must be distinct from any other section titles.
|
||||
|
||||
You may add a section entitled ``Endorsements'', provided it contains
|
||||
nothing but endorsements of your Modified Version by various
|
||||
parties--for example, statements of peer review or that the text has
|
||||
been approved by an organization as the authoritative definition of a
|
||||
standard.
|
||||
|
||||
You may add a passage of up to five words as a Front-Cover Text, and a
|
||||
passage of up to 25 words as a Back-Cover Text, to the end of the list
|
||||
of Cover Texts in the Modified Version. Only one passage of
|
||||
Front-Cover Text and one of Back-Cover Text may be added by (or
|
||||
through arrangements made by) any one entity. If the Document already
|
||||
includes a cover text for the same cover, previously added by you or
|
||||
by arrangement made by the same entity you are acting on behalf of,
|
||||
you may not add another; but you may replace the old one, on explicit
|
||||
permission from the previous publisher that added the old one.
|
||||
|
||||
The author(s) and publisher(s) of the Document do not by this License
|
||||
give permission to use their names for publicity for or to assert or
|
||||
imply endorsement of any Modified Version.
|
||||
@sp 1
|
||||
@item
|
||||
COMBINING DOCUMENTS
|
||||
|
||||
You may combine the Document with other documents released under this
|
||||
License, under the terms defined in section 4 above for modified
|
||||
versions, provided that you include in the combination all of the
|
||||
Invariant Sections of all of the original documents, unmodified, and
|
||||
list them all as Invariant Sections of your combined work in its
|
||||
license notice.
|
||||
|
||||
The combined work need only contain one copy of this License, and
|
||||
multiple identical Invariant Sections may be replaced with a single
|
||||
copy. If there are multiple Invariant Sections with the same name but
|
||||
different contents, make the title of each such section unique by
|
||||
adding at the end of it, in parentheses, the name of the original
|
||||
author or publisher of that section if known, or else a unique number.
|
||||
Make the same adjustment to the section titles in the list of
|
||||
Invariant Sections in the license notice of the combined work.
|
||||
|
||||
In the combination, you must combine any sections entitled ``History''
|
||||
in the various original documents, forming one section entitled
|
||||
``History''; likewise combine any sections entitled ``Acknowledgements'',
|
||||
and any sections entitled ``Dedications.'' You must delete all sections
|
||||
entitled ``Endorsements.''
|
||||
@sp 1
|
||||
@item
|
||||
COLLECTIONS OF DOCUMENTS
|
||||
|
||||
You may make a collection consisting of the Document and other documents
|
||||
released under this License, and replace the individual copies of this
|
||||
License in the various documents with a single copy that is included in
|
||||
the collection, provided that you follow the rules of this License for
|
||||
verbatim copying of each of the documents in all other respects.
|
||||
|
||||
You may extract a single document from such a collection, and distribute
|
||||
it individually under this License, provided you insert a copy of this
|
||||
License into the extracted document, and follow this License in all
|
||||
other respects regarding verbatim copying of that document.
|
||||
@sp 1
|
||||
@item
|
||||
AGGREGATION WITH INDEPENDENT WORKS
|
||||
|
||||
A compilation of the Document or its derivatives with other separate
|
||||
and independent documents or works, in or on a volume of a storage or
|
||||
distribution medium, does not as a whole count as a Modified Version
|
||||
of the Document, provided no compilation copyright is claimed for the
|
||||
compilation. Such a compilation is called an ``aggregate'', and this
|
||||
License does not apply to the other self-contained works thus compiled
|
||||
with the Document, on account of their being thus compiled, if they
|
||||
are not themselves derivative works of the Document.
|
||||
|
||||
If the Cover Text requirement of section 3 is applicable to these
|
||||
copies of the Document, then if the Document is less than one quarter
|
||||
of the entire aggregate, the Document's Cover Texts may be placed on
|
||||
covers that surround only the Document within the aggregate.
|
||||
Otherwise they must appear on covers around the whole aggregate.
|
||||
@sp 1
|
||||
@item
|
||||
TRANSLATION
|
||||
|
||||
Translation is considered a kind of modification, so you may
|
||||
distribute translations of the Document under the terms of section 4.
|
||||
Replacing Invariant Sections with translations requires special
|
||||
permission from their copyright holders, but you may include
|
||||
translations of some or all Invariant Sections in addition to the
|
||||
original versions of these Invariant Sections. You may include a
|
||||
translation of this License provided that you also include the
|
||||
original English version of this License. In case of a disagreement
|
||||
between the translation and the original English version of this
|
||||
License, the original English version will prevail.
|
||||
@sp 1
|
||||
@item
|
||||
TERMINATION
|
||||
|
||||
You may not copy, modify, sublicense, or distribute the Document except
|
||||
as expressly provided for under this License. Any other attempt to
|
||||
copy, modify, sublicense or distribute the Document is void, and will
|
||||
automatically terminate your rights under this License. However,
|
||||
parties who have received copies, or rights, from you under this
|
||||
License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
@sp 1
|
||||
@item
|
||||
FUTURE REVISIONS OF THIS LICENSE
|
||||
|
||||
The Free Software Foundation may publish new, revised versions
|
||||
of the GNU Free Documentation License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns. See
|
||||
http://www.gnu.org/copyleft/.
|
||||
|
||||
Each version of the License is given a distinguishing version number.
|
||||
If the Document specifies that a particular numbered version of this
|
||||
License ``or any later version'' applies to it, you have the option of
|
||||
following the terms and conditions either of that specified version or
|
||||
of any later version that has been published (not as a draft) by the
|
||||
Free Software Foundation. If the Document does not specify a version
|
||||
number of this License, you may choose any version ever published (not
|
||||
as a draft) by the Free Software Foundation.
|
||||
|
||||
@end enumerate
|
||||
|
||||
@unnumberedsec ADDENDUM: How to use this License for your documents
|
||||
|
||||
To use this License in a document you have written, include a copy of
|
||||
the License in the document and put the following copyright and
|
||||
license notices just after the title page:
|
||||
|
||||
@smallexample
|
||||
@group
|
||||
Copyright (C) @var{year} @var{your name}.
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1
|
||||
or any later version published by the Free Software Foundation;
|
||||
with the Invariant Sections being @var{list their titles}, with the
|
||||
Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}.
|
||||
A copy of the license is included in the section entitled "GNU
|
||||
Free Documentation License."
|
||||
@end group
|
||||
@end smallexample
|
||||
|
||||
If you have no Invariant Sections, write ``with no Invariant Sections''
|
||||
instead of saying which ones are invariant. If you have no
|
||||
Front-Cover Texts, write ``no Front-Cover Texts'' instead of
|
||||
``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts.
|
||||
|
||||
If your document contains nontrivial examples of program code, we
|
||||
recommend releasing these examples in parallel under your choice of
|
||||
free software license, such as the GNU General Public License,
|
||||
to permit their use in free software.
|
||||
@@ -27,7 +27,7 @@ The BFD contains the result of an executable core dump.
|
||||
@subsubsection @code{bfd_check_format}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_check_format(bfd *abfd, bfd_format format);
|
||||
bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Verify if the file attached to the BFD @var{abfd} is compatible
|
||||
@@ -42,7 +42,7 @@ interrogated to determine a match. If the default target
|
||||
matches, it is used. If not, exactly one target must recognize
|
||||
the file, or an error results.
|
||||
|
||||
The function returns @code{true} on success, otherwise @code{false}
|
||||
The function returns @code{TRUE} on success, otherwise @code{FALSE}
|
||||
with one of the following error codes:
|
||||
|
||||
@itemize @bullet
|
||||
@@ -70,10 +70,11 @@ more than one backend recognised the file format.
|
||||
@subsubsection @code{bfd_check_format_matches}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_check_format_matches(bfd *abfd, bfd_format format, char ***matching);
|
||||
bfd_boolean bfd_check_format_matches
|
||||
(bfd *abfd, bfd_format format, char ***matching);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Like @code{bfd_check_format}, except when it returns false with
|
||||
Like @code{bfd_check_format}, except when it returns FALSE with
|
||||
@code{bfd_errno} set to @code{bfd_error_file_ambiguously_recognized}. In that
|
||||
case, if @var{matching} is not NULL, it will be filled in with
|
||||
a NULL-terminated list of the names of the formats that matched,
|
||||
@@ -87,7 +88,7 @@ should free it.
|
||||
@subsubsection @code{bfd_set_format}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_set_format(bfd *abfd, bfd_format format);
|
||||
bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
This function sets the file format of the BFD @var{abfd} to the
|
||||
@@ -99,7 +100,7 @@ is not open for writing, then an error occurs.
|
||||
@subsubsection @code{bfd_format_string}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
const char *bfd_format_string(bfd_format format);
|
||||
const char *bfd_format_string (bfd_format format);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return a pointer to a const string
|
||||
|
||||
@@ -35,7 +35,7 @@ bfd_hash_table} (defined in @code{bfd.h}) and call
|
||||
@code{bfd_hash_table_init} (if you know approximately how many
|
||||
entries you will need, the function @code{bfd_hash_table_init_n},
|
||||
which takes a @var{size} argument, may be used).
|
||||
@code{bfd_hash_table_init} returns @code{false} if some sort of
|
||||
@code{bfd_hash_table_init} returns @code{FALSE} if some sort of
|
||||
error occurs.
|
||||
|
||||
@findex bfd_hash_newfunc
|
||||
@@ -61,24 +61,24 @@ been allocated for a hash table. This will not free up the
|
||||
The function @code{bfd_hash_lookup} is used both to look up a
|
||||
string in the hash table and to create a new entry.
|
||||
|
||||
If the @var{create} argument is @code{false}, @code{bfd_hash_lookup}
|
||||
If the @var{create} argument is @code{FALSE}, @code{bfd_hash_lookup}
|
||||
will look up a string. If the string is found, it will
|
||||
returns a pointer to a @code{struct bfd_hash_entry}. If the
|
||||
string is not found in the table @code{bfd_hash_lookup} will
|
||||
return @code{NULL}. You should not modify any of the fields in
|
||||
the returns @code{struct bfd_hash_entry}.
|
||||
|
||||
If the @var{create} argument is @code{true}, the string will be
|
||||
If the @var{create} argument is @code{TRUE}, the string will be
|
||||
entered into the hash table if it is not already there.
|
||||
Either way a pointer to a @code{struct bfd_hash_entry} will be
|
||||
returned, either to the existing structure or to a newly
|
||||
created one. In this case, a @code{NULL} return means that an
|
||||
error occurred.
|
||||
|
||||
If the @var{create} argument is @code{true}, and a new entry is
|
||||
If the @var{create} argument is @code{TRUE}, and a new entry is
|
||||
created, the @var{copy} argument is used to decide whether to
|
||||
copy the string onto the hash table objalloc or not. If
|
||||
@var{copy} is passed as @code{false}, you must be careful not to
|
||||
@var{copy} is passed as @code{FALSE}, you must be careful not to
|
||||
deallocate or modify the string as long as the hash table
|
||||
exists.
|
||||
|
||||
@@ -95,7 +95,7 @@ hash table entry (a @code{struct bfd_hash_entry *}) and the
|
||||
generic pointer passed to @code{bfd_hash_traverse}. The function
|
||||
must return a @code{boolean} value, which indicates whether to
|
||||
continue traversing the hash table. If the function returns
|
||||
@code{false}, @code{bfd_hash_traverse} will stop the traversal and
|
||||
@code{FALSE}, @code{bfd_hash_traverse} will stop the traversal and
|
||||
return immediately.
|
||||
|
||||
@node Deriving a New Hash Table Type, , Traversing a Hash Table, Hash Tables
|
||||
|
||||
@@ -5,7 +5,7 @@ These are the functions that handle initializing a BFD.
|
||||
@subsubsection @code{bfd_init}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
void bfd_init(void);
|
||||
void bfd_init (void);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
This routine must be called before any other BFD function to
|
||||
|
||||
@@ -10,7 +10,7 @@ completeness.
|
||||
@subsubsection @code{bfd_write_bigendian_4byte_int}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
|
||||
bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Write a 4 byte integer @var{i} to the output BFD @var{abfd}, in big
|
||||
@@ -43,54 +43,54 @@ To detect calling these with less than a @code{bfd_vma}, use
|
||||
/* Byte swapping macros for user section data. */
|
||||
|
||||
#define bfd_put_8(abfd, val, ptr) \
|
||||
((void) (*((unsigned char *) (ptr)) = (unsigned char) (val)))
|
||||
((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
|
||||
#define bfd_put_signed_8 \
|
||||
bfd_put_8
|
||||
bfd_put_8
|
||||
#define bfd_get_8(abfd, ptr) \
|
||||
(*(unsigned char *) (ptr) & 0xff)
|
||||
(*(unsigned char *) (ptr) & 0xff)
|
||||
#define bfd_get_signed_8(abfd, ptr) \
|
||||
(((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
|
||||
(((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
|
||||
|
||||
#define bfd_put_16(abfd, val, ptr) \
|
||||
BFD_SEND(abfd, bfd_putx16, ((val),(ptr)))
|
||||
BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
|
||||
#define bfd_put_signed_16 \
|
||||
bfd_put_16
|
||||
bfd_put_16
|
||||
#define bfd_get_16(abfd, ptr) \
|
||||
BFD_SEND(abfd, bfd_getx16, (ptr))
|
||||
BFD_SEND (abfd, bfd_getx16, (ptr))
|
||||
#define bfd_get_signed_16(abfd, ptr) \
|
||||
BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
|
||||
BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
|
||||
|
||||
#define bfd_put_32(abfd, val, ptr) \
|
||||
BFD_SEND(abfd, bfd_putx32, ((val),(ptr)))
|
||||
BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
|
||||
#define bfd_put_signed_32 \
|
||||
bfd_put_32
|
||||
bfd_put_32
|
||||
#define bfd_get_32(abfd, ptr) \
|
||||
BFD_SEND(abfd, bfd_getx32, (ptr))
|
||||
BFD_SEND (abfd, bfd_getx32, (ptr))
|
||||
#define bfd_get_signed_32(abfd, ptr) \
|
||||
BFD_SEND(abfd, bfd_getx_signed_32, (ptr))
|
||||
BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
|
||||
|
||||
#define bfd_put_64(abfd, val, ptr) \
|
||||
BFD_SEND(abfd, bfd_putx64, ((val), (ptr)))
|
||||
BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
|
||||
#define bfd_put_signed_64 \
|
||||
bfd_put_64
|
||||
bfd_put_64
|
||||
#define bfd_get_64(abfd, ptr) \
|
||||
BFD_SEND(abfd, bfd_getx64, (ptr))
|
||||
BFD_SEND (abfd, bfd_getx64, (ptr))
|
||||
#define bfd_get_signed_64(abfd, ptr) \
|
||||
BFD_SEND(abfd, bfd_getx_signed_64, (ptr))
|
||||
BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
|
||||
|
||||
#define bfd_get(bits, abfd, ptr) \
|
||||
( (bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \
|
||||
: (bits) == 16 ? bfd_get_16 (abfd, ptr) \
|
||||
: (bits) == 32 ? bfd_get_32 (abfd, ptr) \
|
||||
: (bits) == 64 ? bfd_get_64 (abfd, ptr) \
|
||||
: (abort (), (bfd_vma) - 1))
|
||||
#define bfd_get(bits, abfd, ptr) \
|
||||
((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \
|
||||
: (bits) == 16 ? bfd_get_16 (abfd, ptr) \
|
||||
: (bits) == 32 ? bfd_get_32 (abfd, ptr) \
|
||||
: (bits) == 64 ? bfd_get_64 (abfd, ptr) \
|
||||
: (abort (), (bfd_vma) - 1))
|
||||
|
||||
#define bfd_put(bits, abfd, val, ptr) \
|
||||
( (bits) == 8 ? bfd_put_8 (abfd, val, ptr) \
|
||||
: (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \
|
||||
: (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \
|
||||
: (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
|
||||
: (abort (), (void) 0))
|
||||
#define bfd_put(bits, abfd, val, ptr) \
|
||||
((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \
|
||||
: (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \
|
||||
: (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \
|
||||
: (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
|
||||
: (abort (), (void) 0))
|
||||
|
||||
@end example
|
||||
|
||||
@@ -142,52 +142,24 @@ order and their data in little endian order.
|
||||
#define bfd_h_get_signed_64(abfd, ptr) \
|
||||
BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
|
||||
|
||||
/* Refinements on the above, which should eventually go away. Save
|
||||
cluttering the source with (bfd_vma) and (bfd_byte *) casts. */
|
||||
/* Aliases for the above, which should eventually go away. */
|
||||
|
||||
#define H_PUT_64(abfd, val, where) \
|
||||
bfd_h_put_64 ((abfd), (bfd_vma) (val), (bfd_byte *) (where))
|
||||
|
||||
#define H_PUT_32(abfd, val, where) \
|
||||
bfd_h_put_32 ((abfd), (bfd_vma) (val), (bfd_byte *) (where))
|
||||
|
||||
#define H_PUT_16(abfd, val, where) \
|
||||
bfd_h_put_16 ((abfd), (bfd_vma) (val), (bfd_byte *) (where))
|
||||
|
||||
#define H_PUT_8 bfd_h_put_8
|
||||
|
||||
#define H_PUT_S64(abfd, val, where) \
|
||||
bfd_h_put_signed_64 ((abfd), (bfd_vma) (val), (bfd_byte *) (where))
|
||||
|
||||
#define H_PUT_S32(abfd, val, where) \
|
||||
bfd_h_put_signed_32 ((abfd), (bfd_vma) (val), (bfd_byte *) (where))
|
||||
|
||||
#define H_PUT_S16(abfd, val, where) \
|
||||
bfd_h_put_signed_16 ((abfd), (bfd_vma) (val), (bfd_byte *) (where))
|
||||
|
||||
#define H_PUT_S8 bfd_h_put_signed_8
|
||||
|
||||
#define H_GET_64(abfd, where) \
|
||||
bfd_h_get_64 ((abfd), (bfd_byte *) (where))
|
||||
|
||||
#define H_GET_32(abfd, where) \
|
||||
bfd_h_get_32 ((abfd), (bfd_byte *) (where))
|
||||
|
||||
#define H_GET_16(abfd, where) \
|
||||
bfd_h_get_16 ((abfd), (bfd_byte *) (where))
|
||||
|
||||
#define H_GET_8 bfd_h_get_8
|
||||
|
||||
#define H_GET_S64(abfd, where) \
|
||||
bfd_h_get_signed_64 ((abfd), (bfd_byte *) (where))
|
||||
|
||||
#define H_GET_S32(abfd, where) \
|
||||
bfd_h_get_signed_32 ((abfd), (bfd_byte *) (where))
|
||||
|
||||
#define H_GET_S16(abfd, where) \
|
||||
bfd_h_get_signed_16 ((abfd), (bfd_byte *) (where))
|
||||
|
||||
#define H_GET_S8 bfd_h_get_signed_8
|
||||
#define H_PUT_64 bfd_h_put_64
|
||||
#define H_PUT_32 bfd_h_put_32
|
||||
#define H_PUT_16 bfd_h_put_16
|
||||
#define H_PUT_8 bfd_h_put_8
|
||||
#define H_PUT_S64 bfd_h_put_signed_64
|
||||
#define H_PUT_S32 bfd_h_put_signed_32
|
||||
#define H_PUT_S16 bfd_h_put_signed_16
|
||||
#define H_PUT_S8 bfd_h_put_signed_8
|
||||
#define H_GET_64 bfd_h_get_64
|
||||
#define H_GET_32 bfd_h_get_32
|
||||
#define H_GET_16 bfd_h_get_16
|
||||
#define H_GET_8 bfd_h_get_8
|
||||
#define H_GET_S64 bfd_h_get_signed_64
|
||||
#define H_GET_S32 bfd_h_get_signed_32
|
||||
#define H_GET_S16 bfd_h_get_signed_16
|
||||
#define H_GET_S8 bfd_h_get_signed_8
|
||||
|
||||
|
||||
@end example
|
||||
|
||||
@@ -55,7 +55,7 @@ however, some additional information will be needed.
|
||||
|
||||
For example, with each entry in the hash table the a.out
|
||||
linker keeps the index the symbol has in the final output file
|
||||
(this index number is used so that when doing a relocateable
|
||||
(this index number is used so that when doing a relocatable
|
||||
link the symbol index used in the output file can be quickly
|
||||
filled in when copying over a reloc). The a.out linker code
|
||||
defines the required structures and functions for a hash table
|
||||
@@ -158,7 +158,7 @@ If the @code{_bfd_final_link} routine is also going to need to
|
||||
read the symbol information, the @code{_bfd_link_add_symbols}
|
||||
routine should save it somewhere attached to the object file
|
||||
BFD. However, the information should only be saved if the
|
||||
@code{keep_memory} field of the @code{info} argument is true, so
|
||||
@code{keep_memory} field of the @code{info} argument is TRUE, so
|
||||
that the @code{-no-keep-memory} linker switch is effective.
|
||||
|
||||
The a.out function which adds symbols from an object file is
|
||||
@@ -229,7 +229,7 @@ which has several aspects. It must relocate the contents of
|
||||
the input sections and copy the data into the output sections.
|
||||
It must build an output symbol table including any local
|
||||
symbols from the input files and the global symbols from the
|
||||
hash table. When producing relocateable output, it must
|
||||
hash table. When producing relocatable output, it must
|
||||
modify the input relocs and write them into the output file.
|
||||
There may also be object format dependent work to be done.
|
||||
|
||||
@@ -266,7 +266,7 @@ various input sections, fill constants, and, eventually, other
|
||||
types of information. They also describe relocs that must be
|
||||
created by the BFD backend, but do not correspond to any input
|
||||
file; this is used to support -Ur, which builds constructors
|
||||
while generating a relocateable object file.
|
||||
while generating a relocatable object file.
|
||||
|
||||
@node Relocating the section contents, Writing the symbol table, Information provided by the linker, Performing the Final Link
|
||||
@subsubsection Relocating the section contents
|
||||
@@ -285,7 +285,7 @@ output section in terms of a section belonging to one of the
|
||||
input files. The @code{_bfd_final_link} function should read the
|
||||
contents of the section and any associated relocs, apply the
|
||||
relocs to the section contents, and write out the modified
|
||||
section contents. If performing a relocateable link, the
|
||||
section contents. If performing a relocatable link, the
|
||||
relocs themselves must also be modified and written out.
|
||||
|
||||
@findex _bfd_relocate_contents
|
||||
@@ -352,7 +352,7 @@ file at the end of @code{NAME(aout,final_link)}.
|
||||
@subsubsection @code{bfd_link_split_section}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_link_split_section(bfd *abfd, asection *sec);
|
||||
bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return nonzero if @var{sec} should be split during a
|
||||
|
||||
@@ -0,0 +1,365 @@
|
||||
@section mmo backend
|
||||
The mmo object format is used exclusively together with Professor
|
||||
Donald E.@: Knuth's educational 64-bit processor MMIX. The simulator
|
||||
@command{mmix} which is available at
|
||||
@url{http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz}
|
||||
understands this format. That package also includes a combined
|
||||
assembler and linker called @command{mmixal}. The mmo format has
|
||||
no advantages feature-wise compared to e.g. ELF. It is a simple
|
||||
non-relocatable object format with no support for archives or
|
||||
debugging information, except for symbol value information and
|
||||
line numbers (which is not yet implemented in BFD). See
|
||||
@url{http://www-cs-faculty.stanford.edu/~knuth/mmix.html} for more
|
||||
information about MMIX. The ELF format is used for intermediate
|
||||
object files in the BFD implementation.
|
||||
|
||||
@c We want to xref the symbol table node. A feature in "chew"
|
||||
@c requires that "commands" do not contain spaces in the
|
||||
@c arguments. Hence the hyphen in "Symbol-table".
|
||||
@menu
|
||||
* File layout::
|
||||
* Symbol-table::
|
||||
* mmo section mapping::
|
||||
@end menu
|
||||
|
||||
@node File layout, Symbol-table, mmo, mmo
|
||||
@subsection File layout
|
||||
The mmo file contents is not partitioned into named sections as
|
||||
with e.g.@: ELF. Memory areas is formed by specifying the
|
||||
location of the data that follows. Only the memory area
|
||||
@samp{0x0000@dots{}00} to @samp{0x01ff@dots{}ff} is executable, so
|
||||
it is used for code (and constants) and the area
|
||||
@samp{0x2000@dots{}00} to @samp{0x20ff@dots{}ff} is used for
|
||||
writable data. @xref{mmo section mapping}.
|
||||
|
||||
Contents is entered as 32-bit words, xor:ed over previous
|
||||
contents, always zero-initialized. A word that starts with the
|
||||
byte @samp{0x98} forms a command called a @samp{lopcode}, where
|
||||
the next byte distinguished between the thirteen lopcodes. The
|
||||
two remaining bytes, called the @samp{Y} and @samp{Z} fields, or
|
||||
the @samp{YZ} field (a 16-bit big-endian number), are used for
|
||||
various purposes different for each lopcode. As documented in
|
||||
@url{http://www-cs-faculty.stanford.edu/~knuth/mmixal-intro.ps.gz},
|
||||
the lopcodes are:
|
||||
|
||||
There is provision for specifying ``special data'' of 65536
|
||||
different types. We use type 80 (decimal), arbitrarily chosen the
|
||||
same as the ELF @code{e_machine} number for MMIX, filling it with
|
||||
section information normally found in ELF objects. @xref{mmo
|
||||
section mapping}.
|
||||
|
||||
@table @code
|
||||
@item lop_quote
|
||||
0x98000001. The next word is contents, regardless of whether it
|
||||
starts with 0x98 or not.
|
||||
|
||||
@item lop_loc
|
||||
0x9801YYZZ, where @samp{Z} is 1 or 2. This is a location
|
||||
directive, setting the location for the next data to the next
|
||||
32-bit word (for @math{Z = 1}) or 64-bit word (for @math{Z = 2}),
|
||||
plus @math{Y * 2^56}. Normally @samp{Y} is 0 for the text segment
|
||||
and 2 for the data segment.
|
||||
|
||||
@item lop_skip
|
||||
0x9802YYZZ. Increase the current location by @samp{YZ} bytes.
|
||||
|
||||
@item lop_fixo
|
||||
0x9803YYZZ, where @samp{Z} is 1 or 2. Store the current location
|
||||
as 64 bits into the location pointed to by the next 32-bit
|
||||
(@math{Z = 1}) or 64-bit (@math{Z = 2}) word, plus @math{Y *
|
||||
2^56}.
|
||||
|
||||
@item lop_fixr
|
||||
0x9804YYZZ. @samp{YZ} is stored into the current location plus
|
||||
@math{2 - 4 * YZ}.
|
||||
|
||||
@item lop_fixrx
|
||||
0x980500ZZ. @samp{Z} is 16 or 24. A value @samp{L} derived from
|
||||
the following 32-bit word are used in a manner similar to
|
||||
@samp{YZ} in lop_fixr: it is xor:ed into the current location
|
||||
minus @math{4 * L}. The first byte of the word is 0 or 1. If it
|
||||
is 1, then @math{L = (@var{lowest 24 bits of word}) - 2^Z}, if 0,
|
||||
then @math{L = (@var{lowest 24 bits of word})}.
|
||||
|
||||
@item lop_file
|
||||
0x9806YYZZ. @samp{Y} is the file number, @samp{Z} is count of
|
||||
32-bit words. Set the file number to @samp{Y} and the line
|
||||
counter to 0. The next @math{Z * 4} bytes contain the file name,
|
||||
padded with zeros if the count is not a multiple of four. The
|
||||
same @samp{Y} may occur multiple times, but @samp{Z} must be 0 for
|
||||
all but the first occurrence.
|
||||
|
||||
@item lop_line
|
||||
0x9807YYZZ. @samp{YZ} is the line number. Together with
|
||||
lop_file, it forms the source location for the next 32-bit word.
|
||||
Note that for each non-lopcode 32-bit word, line numbers are
|
||||
assumed incremented by one.
|
||||
|
||||
@item lop_spec
|
||||
0x9808YYZZ. @samp{YZ} is the type number. Data until the next
|
||||
lopcode other than lop_quote forms special data of type @samp{YZ}.
|
||||
@xref{mmo section mapping}.
|
||||
|
||||
Other types than 80, (or type 80 with a content that does not
|
||||
parse) is stored in sections named @code{.MMIX.spec_data.@var{n}}
|
||||
where @var{n} is the @samp{YZ}-type. The flags for such a
|
||||
sections say not to allocate or load the data. The vma is 0.
|
||||
Contents of multiple occurrences of special data @var{n} is
|
||||
concatenated to the data of the previous lop_spec @var{n}s. The
|
||||
location in data or code at which the lop_spec occurred is lost.
|
||||
|
||||
@item lop_pre
|
||||
0x980901ZZ. The first lopcode in a file. The @samp{Z} field forms the
|
||||
length of header information in 32-bit words, where the first word
|
||||
tells the time in seconds since @samp{00:00:00 GMT Jan 1 1970}.
|
||||
|
||||
@item lop_post
|
||||
0x980a00ZZ. @math{Z > 32}. This lopcode follows after all
|
||||
content-generating lopcodes in a program. The @samp{Z} field
|
||||
denotes the value of @samp{rG} at the beginning of the program.
|
||||
The following @math{256 - Z} big-endian 64-bit words are loaded
|
||||
into global registers @samp{$G} @dots{} @samp{$255}.
|
||||
|
||||
@item lop_stab
|
||||
0x980b0000. The next-to-last lopcode in a program. Must follow
|
||||
immediately after the lop_post lopcode and its data. After this
|
||||
lopcode follows all symbols in a compressed format
|
||||
(@pxref{Symbol-table}).
|
||||
|
||||
@item lop_end
|
||||
0x980cYYZZ. The last lopcode in a program. It must follow the
|
||||
lop_stab lopcode and its data. The @samp{YZ} field contains the
|
||||
number of 32-bit words of symbol table information after the
|
||||
preceding lop_stab lopcode.
|
||||
@end table
|
||||
|
||||
Note that the lopcode "fixups"; @code{lop_fixr}, @code{lop_fixrx} and
|
||||
@code{lop_fixo} are not generated by BFD, but are handled. They are
|
||||
generated by @code{mmixal}.
|
||||
|
||||
This trivial one-label, one-instruction file:
|
||||
|
||||
@example
|
||||
:Main TRAP 1,2,3
|
||||
@end example
|
||||
|
||||
can be represented this way in mmo:
|
||||
|
||||
@example
|
||||
0x98090101 - lop_pre, one 32-bit word with timestamp.
|
||||
<timestamp>
|
||||
0x98010002 - lop_loc, text segment, using a 64-bit address.
|
||||
Note that mmixal does not emit this for the file above.
|
||||
0x00000000 - Address, high 32 bits.
|
||||
0x00000000 - Address, low 32 bits.
|
||||
0x98060002 - lop_file, 2 32-bit words for file-name.
|
||||
0x74657374 - "test"
|
||||
0x2e730000 - ".s\0\0"
|
||||
0x98070001 - lop_line, line 1.
|
||||
0x00010203 - TRAP 1,2,3
|
||||
0x980a00ff - lop_post, setting $255 to 0.
|
||||
0x00000000
|
||||
0x00000000
|
||||
0x980b0000 - lop_stab for ":Main" = 0, serial 1.
|
||||
0x203a4040 @xref{Symbol-table}.
|
||||
0x10404020
|
||||
0x4d206120
|
||||
0x69016e00
|
||||
0x81000000
|
||||
0x980c0005 - lop_end; symbol table contained five 32-bit words.
|
||||
@end example
|
||||
@node Symbol-table, mmo section mapping, File layout, mmo
|
||||
@subsection Symbol table format
|
||||
From mmixal.w (or really, the generated mmixal.tex) in
|
||||
@url{http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz}):
|
||||
``Symbols are stored and retrieved by means of a @samp{ternary
|
||||
search trie}, following ideas of Bentley and Sedgewick. (See
|
||||
ACM--SIAM Symp.@: on Discrete Algorithms @samp{8} (1997), 360--369;
|
||||
R.@:Sedgewick, @samp{Algorithms in C} (Reading, Mass.@:
|
||||
Addison--Wesley, 1998), @samp{15.4}.) Each trie node stores a
|
||||
character, and there are branches to subtries for the cases where
|
||||
a given character is less than, equal to, or greater than the
|
||||
character in the trie. There also is a pointer to a symbol table
|
||||
entry if a symbol ends at the current node.''
|
||||
|
||||
So it's a tree encoded as a stream of bytes. The stream of bytes
|
||||
acts on a single virtual global symbol, adding and removing
|
||||
characters and signalling complete symbol points. Here, we read
|
||||
the stream and create symbols at the completion points.
|
||||
|
||||
First, there's a control byte @code{m}. If any of the listed bits
|
||||
in @code{m} is nonzero, we execute what stands at the right, in
|
||||
the listed order:
|
||||
|
||||
@example
|
||||
(MMO3_LEFT)
|
||||
0x40 - Traverse left trie.
|
||||
(Read a new command byte and recurse.)
|
||||
|
||||
(MMO3_SYMBITS)
|
||||
0x2f - Read the next byte as a character and store it in the
|
||||
current character position; increment character position.
|
||||
Test the bits of @code{m}:
|
||||
|
||||
(MMO3_WCHAR)
|
||||
0x80 - The character is 16-bit (so read another byte,
|
||||
merge into current character.
|
||||
|
||||
(MMO3_TYPEBITS)
|
||||
0xf - We have a complete symbol; parse the type, value
|
||||
and serial number and do what should be done
|
||||
with a symbol. The type and length information
|
||||
is in j = (m & 0xf).
|
||||
|
||||
(MMO3_REGQUAL_BITS)
|
||||
j == 0xf: A register variable. The following
|
||||
byte tells which register.
|
||||
j <= 8: An absolute symbol. Read j bytes as the
|
||||
big-endian number the symbol equals.
|
||||
A j = 2 with two zero bytes denotes an
|
||||
unknown symbol.
|
||||
j > 8: As with j <= 8, but add (0x20 << 56)
|
||||
to the value in the following j - 8
|
||||
bytes.
|
||||
|
||||
Then comes the serial number, as a variant of
|
||||
uleb128, but better named ubeb128:
|
||||
Read bytes and shift the previous value left 7
|
||||
(multiply by 128). Add in the new byte, repeat
|
||||
until a byte has bit 7 set. The serial number
|
||||
is the computed value minus 128.
|
||||
|
||||
(MMO3_MIDDLE)
|
||||
0x20 - Traverse middle trie. (Read a new command byte
|
||||
and recurse.) Decrement character position.
|
||||
|
||||
(MMO3_RIGHT)
|
||||
0x10 - Traverse right trie. (Read a new command byte and
|
||||
recurse.)
|
||||
@end example
|
||||
|
||||
Let's look again at the @code{lop_stab} for the trivial file
|
||||
(@pxref{File layout}).
|
||||
|
||||
@example
|
||||
0x980b0000 - lop_stab for ":Main" = 0, serial 1.
|
||||
0x203a4040
|
||||
0x10404020
|
||||
0x4d206120
|
||||
0x69016e00
|
||||
0x81000000
|
||||
@end example
|
||||
|
||||
This forms the trivial trie (note that the path between ``:'' and
|
||||
``M'' is redundant):
|
||||
|
||||
@example
|
||||
203a ":"
|
||||
40 /
|
||||
40 /
|
||||
10 \
|
||||
40 /
|
||||
40 /
|
||||
204d "M"
|
||||
2061 "a"
|
||||
2069 "i"
|
||||
016e "n" is the last character in a full symbol, and
|
||||
with a value represented in one byte.
|
||||
00 The value is 0.
|
||||
81 The serial number is 1.
|
||||
@end example
|
||||
|
||||
@node mmo section mapping, , Symbol-table, mmo
|
||||
@subsection mmo section mapping
|
||||
The implementation in BFD uses special data type 80 (decimal) to
|
||||
encapsulate and describe named sections, containing e.g.@: debug
|
||||
information. If needed, any datum in the encapsulation will be
|
||||
quoted using lop_quote. First comes a 32-bit word holding the
|
||||
number of 32-bit words containing the zero-terminated zero-padded
|
||||
segment name. After the name there's a 32-bit word holding flags
|
||||
describing the section type. Then comes a 64-bit big-endian word
|
||||
with the section length (in bytes), then another with the section
|
||||
start address. Depending on the type of section, the contents
|
||||
might follow, zero-padded to 32-bit boundary. For a loadable
|
||||
section (such as data or code), the contents might follow at some
|
||||
later point, not necessarily immediately, as a lop_loc with the
|
||||
same start address as in the section description, followed by the
|
||||
contents. This in effect forms a descriptor that must be emitted
|
||||
before the actual contents. Sections described this way must not
|
||||
overlap.
|
||||
|
||||
For areas that don't have such descriptors, synthetic sections are
|
||||
formed by BFD. Consecutive contents in the two memory areas
|
||||
@samp{0x0000@dots{}00} to @samp{0x01ff@dots{}ff} and
|
||||
@samp{0x2000@dots{}00} to @samp{0x20ff@dots{}ff} are entered in
|
||||
sections named @code{.text} and @code{.data} respectively. If an area
|
||||
is not otherwise described, but would together with a neighboring
|
||||
lower area be less than @samp{0x40000000} bytes long, it is joined
|
||||
with the lower area and the gap is zero-filled. For other cases,
|
||||
a new section is formed, named @code{.MMIX.sec.@var{n}}. Here,
|
||||
@var{n} is a number, a running count through the mmo file,
|
||||
starting at 0.
|
||||
|
||||
A loadable section specified as:
|
||||
|
||||
@example
|
||||
.section secname,"ax"
|
||||
TETRA 1,2,3,4,-1,-2009
|
||||
BYTE 80
|
||||
@end example
|
||||
|
||||
and linked to address @samp{0x4}, is represented by the sequence:
|
||||
|
||||
@example
|
||||
0x98080050 - lop_spec 80
|
||||
0x00000002 - two 32-bit words for the section name
|
||||
0x7365636e - "secn"
|
||||
0x616d6500 - "ame\0"
|
||||
0x00000033 - flags CODE, READONLY, LOAD, ALLOC
|
||||
0x00000000 - high 32 bits of section length
|
||||
0x0000001c - section length is 28 bytes; 6 * 4 + 1 + alignment to 32 bits
|
||||
0x00000000 - high 32 bits of section address
|
||||
0x00000004 - section address is 4
|
||||
0x98010002 - 64 bits with address of following data
|
||||
0x00000000 - high 32 bits of address
|
||||
0x00000004 - low 32 bits: data starts at address 4
|
||||
0x00000001 - 1
|
||||
0x00000002 - 2
|
||||
0x00000003 - 3
|
||||
0x00000004 - 4
|
||||
0xffffffff - -1
|
||||
0xfffff827 - -2009
|
||||
0x50000000 - 80 as a byte, padded with zeros.
|
||||
@end example
|
||||
|
||||
Note that the lop_spec wrapping does not include the section
|
||||
contents. Compare this to a non-loaded section specified as:
|
||||
|
||||
@example
|
||||
.section thirdsec
|
||||
TETRA 200001,100002
|
||||
BYTE 38,40
|
||||
@end example
|
||||
|
||||
This, when linked to address @samp{0x200000000000001c}, is
|
||||
represented by:
|
||||
|
||||
@example
|
||||
0x98080050 - lop_spec 80
|
||||
0x00000002 - two 32-bit words for the section name
|
||||
0x7365636e - "thir"
|
||||
0x616d6500 - "dsec"
|
||||
0x00000010 - flag READONLY
|
||||
0x00000000 - high 32 bits of section length
|
||||
0x0000000c - section length is 12 bytes; 2 * 4 + 2 + alignment to 32 bits
|
||||
0x20000000 - high 32 bits of address
|
||||
0x0000001c - low 32 bits of address 0x200000000000001c
|
||||
0x00030d41 - 200001
|
||||
0x000186a2 - 100002
|
||||
0x26280000 - 38, 40 as bytes, padded with zeros
|
||||
@end example
|
||||
|
||||
For the latter example, the section contents must not be
|
||||
loaded in memory, and is therefore specified as part of the
|
||||
special data. The address is usually unimportant but might
|
||||
provide information for e.g.@: the DWARF 2 debugging format.
|
||||
@@ -5,7 +5,7 @@
|
||||
@subsubsection @code{bfd_openr}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
bfd *bfd_openr(const char *filename, const char *target);
|
||||
bfd *bfd_openr (const char *filename, const char *target);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Open the file @var{filename} (using @code{fopen}) with the target
|
||||
@@ -15,37 +15,38 @@ Calls @code{bfd_find_target}, so @var{target} is interpreted as by
|
||||
that function.
|
||||
|
||||
If @code{NULL} is returned then an error has occured. Possible errors
|
||||
are @code{bfd_error_no_memory}, @code{bfd_error_invalid_target} or @code{system_call} error.
|
||||
are @code{bfd_error_no_memory}, @code{bfd_error_invalid_target} or
|
||||
@code{system_call} error.
|
||||
|
||||
@findex bfd_fdopenr
|
||||
@subsubsection @code{bfd_fdopenr}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
bfd *bfd_fdopenr(const char *filename, const char *target, int fd);
|
||||
bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
@code{bfd_fdopenr} is to @code{bfd_fopenr} much like @code{fdopen} is to @code{fopen}.
|
||||
It opens a BFD on a file already described by the @var{fd}
|
||||
supplied.
|
||||
@code{bfd_fdopenr} is to @code{bfd_fopenr} much like @code{fdopen} is to
|
||||
@code{fopen}. It opens a BFD on a file already described by the
|
||||
@var{fd} supplied.
|
||||
|
||||
When the file is later @code{bfd_close}d, the file descriptor will be closed.
|
||||
When the file is later @code{bfd_close}d, the file descriptor will
|
||||
be closed. If the caller desires that this file descriptor be
|
||||
cached by BFD (opened as needed, closed as needed to free
|
||||
descriptors for other opens), with the supplied @var{fd} used as
|
||||
an initial file descriptor (but subject to closure at any time),
|
||||
call bfd_set_cacheable(bfd, 1) on the returned BFD. The default
|
||||
is to assume no caching; the file descriptor will remain open
|
||||
until @code{bfd_close}, and will not be affected by BFD operations
|
||||
on other files.
|
||||
|
||||
If the caller desires that this file descriptor be cached by BFD
|
||||
(opened as needed, closed as needed to free descriptors for
|
||||
other opens), with the supplied @var{fd} used as an initial
|
||||
file descriptor (but subject to closure at any time), call
|
||||
bfd_set_cacheable(bfd, 1) on the returned BFD. The default is to
|
||||
assume no cacheing; the file descriptor will remain open until
|
||||
@code{bfd_close}, and will not be affected by BFD operations on other
|
||||
files.
|
||||
|
||||
Possible errors are @code{bfd_error_no_memory}, @code{bfd_error_invalid_target} and @code{bfd_error_system_call}.
|
||||
Possible errors are @code{bfd_error_no_memory},
|
||||
@code{bfd_error_invalid_target} and @code{bfd_error_system_call}.
|
||||
|
||||
@findex bfd_openstreamr
|
||||
@subsubsection @code{bfd_openstreamr}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
bfd *bfd_openstreamr(const char *, const char *, PTR);
|
||||
bfd *bfd_openstreamr (const char *, const char *, void *);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Open a BFD for read access on an existing stdio stream. When
|
||||
@@ -55,7 +56,7 @@ the BFD is passed to @code{bfd_close}, the stream will be closed.
|
||||
@subsubsection @code{bfd_openw}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
bfd *bfd_openw(const char *filename, const char *target);
|
||||
bfd *bfd_openw (const char *filename, const char *target);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Create a BFD, associated with file @var{filename}, using the
|
||||
@@ -68,13 +69,13 @@ Possible errors are @code{bfd_error_system_call}, @code{bfd_error_no_memory},
|
||||
@subsubsection @code{bfd_close}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_close(bfd *abfd);
|
||||
bfd_boolean bfd_close (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Close a BFD. If the BFD was open for writing,
|
||||
then pending operations are completed and the file written out
|
||||
and closed. If the created file is executable, then
|
||||
@code{chmod} is called to mark it as such.
|
||||
Close a BFD. If the BFD was open for writing, then pending
|
||||
operations are completed and the file written out and closed.
|
||||
If the created file is executable, then @code{chmod} is called
|
||||
to mark it as such.
|
||||
|
||||
All memory attached to the BFD is released.
|
||||
|
||||
@@ -82,19 +83,19 @@ The file descriptor associated with the BFD is closed (even
|
||||
if it was passed in to BFD by @code{bfd_fdopenr}).
|
||||
|
||||
@strong{Returns}@*
|
||||
@code{true} is returned if all is ok, otherwise @code{false}.
|
||||
@code{TRUE} is returned if all is ok, otherwise @code{FALSE}.
|
||||
|
||||
@findex bfd_close_all_done
|
||||
@subsubsection @code{bfd_close_all_done}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_close_all_done(bfd *);
|
||||
bfd_boolean bfd_close_all_done (bfd *);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Close a BFD. Differs from @code{bfd_close}
|
||||
since it does not complete any pending operations. This
|
||||
routine would be used if the application had just used BFD for
|
||||
swapping and didn't want to use any of the writing code.
|
||||
Close a BFD. Differs from @code{bfd_close} since it does not
|
||||
complete any pending operations. This routine would be used
|
||||
if the application had just used BFD for swapping and didn't
|
||||
want to use any of the writing code.
|
||||
|
||||
If the created file is executable, then @code{chmod} is called
|
||||
to mark it as such.
|
||||
@@ -102,25 +103,24 @@ to mark it as such.
|
||||
All memory attached to the BFD is released.
|
||||
|
||||
@strong{Returns}@*
|
||||
@code{true} is returned if all is ok, otherwise @code{false}.
|
||||
@code{TRUE} is returned if all is ok, otherwise @code{FALSE}.
|
||||
|
||||
@findex bfd_create
|
||||
@subsubsection @code{bfd_create}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
bfd *bfd_create(const char *filename, bfd *templ);
|
||||
bfd *bfd_create (const char *filename, bfd *templ);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Create a new BFD in the manner of
|
||||
@code{bfd_openw}, but without opening a file. The new BFD
|
||||
takes the target from the target used by @var{template}. The
|
||||
format is always set to @code{bfd_object}.
|
||||
Create a new BFD in the manner of @code{bfd_openw}, but without
|
||||
opening a file. The new BFD takes the target from the target
|
||||
used by @var{template}. The format is always set to @code{bfd_object}.
|
||||
|
||||
@findex bfd_make_writable
|
||||
@subsubsection @code{bfd_make_writable}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_make_writable(bfd *abfd);
|
||||
bfd_boolean bfd_make_writable (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Takes a BFD as created by @code{bfd_create} and converts it
|
||||
@@ -129,13 +129,13 @@ by converting the BFD to BFD_IN_MEMORY. It's assumed that
|
||||
you will call @code{bfd_make_readable} on this bfd later.
|
||||
|
||||
@strong{Returns}@*
|
||||
@code{true} is returned if all is ok, otherwise @code{false}.
|
||||
@code{TRUE} is returned if all is ok, otherwise @code{FALSE}.
|
||||
|
||||
@findex bfd_make_readable
|
||||
@subsubsection @code{bfd_make_readable}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_make_readable(bfd *abfd);
|
||||
bfd_boolean bfd_make_readable (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Takes a BFD as created by @code{bfd_create} and
|
||||
@@ -145,15 +145,121 @@ contents out to the memory buffer, then reversing the
|
||||
direction.
|
||||
|
||||
@strong{Returns}@*
|
||||
@code{true} is returned if all is ok, otherwise @code{false}.
|
||||
@code{TRUE} is returned if all is ok, otherwise @code{FALSE}.
|
||||
|
||||
@findex bfd_alloc
|
||||
@subsubsection @code{bfd_alloc}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
PTR bfd_alloc (bfd *abfd, size_t wanted);
|
||||
void *bfd_alloc (bfd *abfd, size_t wanted);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Allocate a block of @var{wanted} bytes of memory attached to
|
||||
@code{abfd} and return a pointer to it.
|
||||
|
||||
@findex bfd_calc_gnu_debuglink_crc32
|
||||
@subsubsection @code{bfd_calc_gnu_debuglink_crc32}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
unsigned long bfd_calc_gnu_debuglink_crc32
|
||||
(unsigned long crc, const unsigned char *buf, bfd_size_type len);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Computes a CRC value as used in the .gnu_debuglink section.
|
||||
Advances the previously computed @var{crc} value by computing
|
||||
and adding in the crc32 for @var{len} bytes of @var{buf}.
|
||||
|
||||
@strong{Returns}@*
|
||||
Return the updated CRC32 value.
|
||||
|
||||
@findex get_debug_link_info
|
||||
@subsubsection @code{get_debug_link_info}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
char *get_debug_link_info (bfd *abfd, unsigned long *crc32_out);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
fetch the filename and CRC32 value for any separate debuginfo
|
||||
associated with @var{abfd}. Return NULL if no such info found,
|
||||
otherwise return filename and update @var{crc32_out}.
|
||||
|
||||
@findex separate_debug_file_exists
|
||||
@subsubsection @code{separate_debug_file_exists}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
bfd_boolean separate_debug_file_exists
|
||||
(char *name, unsigned long crc32);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Checks to see if @var{name} is a file and if its contents
|
||||
match @var{crc32}.
|
||||
|
||||
@findex find_separate_debug_file
|
||||
@subsubsection @code{find_separate_debug_file}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
char *find_separate_debug_file (bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Searches @var{abfd} for a reference to separate debugging
|
||||
information, scans various locations in the filesystem, including
|
||||
the file tree rooted at @var{debug_file_directory}, and returns a
|
||||
filename of such debugging information if the file is found and has
|
||||
matching CRC32. Returns NULL if no reference to debugging file
|
||||
exists, or file cannot be found.
|
||||
|
||||
@findex bfd_follow_gnu_debuglink
|
||||
@subsubsection @code{bfd_follow_gnu_debuglink}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Takes a BFD and searches it for a .gnu_debuglink section. If this
|
||||
section is found, it examines the section for the name and checksum
|
||||
of a '.debug' file containing auxiliary debugging information. It
|
||||
then searches the filesystem for this .debug file in some standard
|
||||
locations, including the directory tree rooted at @var{dir}, and if
|
||||
found returns the full filename.
|
||||
|
||||
If @var{dir} is NULL, it will search a default path configured into
|
||||
libbfd at build time. [XXX this feature is not currently
|
||||
implemented].
|
||||
|
||||
@strong{Returns}@*
|
||||
@code{NULL} on any errors or failure to locate the .debug file,
|
||||
otherwise a pointer to a heap-allocated string containing the
|
||||
filename. The caller is responsible for freeing this string.
|
||||
|
||||
@findex bfd_create_gnu_debuglink_section
|
||||
@subsubsection @code{bfd_create_gnu_debuglink_section}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
struct bfd_section *bfd_create_gnu_debuglink_section
|
||||
(bfd *abfd, const char *filename);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Takes a @var{BFD} and adds a .gnu_debuglink section to it. The section is sized
|
||||
to be big enough to contain a link to the specified @var{filename}.
|
||||
|
||||
@strong{Returns}@*
|
||||
A pointer to the new section is returned if all is ok. Otherwise @code{NULL} is
|
||||
returned and bfd_error is set.
|
||||
|
||||
@findex bfd_fill_in_gnu_debuglink_section
|
||||
@subsubsection @code{bfd_fill_in_gnu_debuglink_section}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
bfd_boolean bfd_fill_in_gnu_debuglink_section
|
||||
(bfd *abfd, struct bfd_section *sect, const char *filename);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Takes a @var{BFD} and containing a .gnu_debuglink section @var{SECT}
|
||||
and fills in the contents of the section to contain a link to the
|
||||
specified @var{filename}. The filename should be relative to the
|
||||
current directory.
|
||||
|
||||
@strong{Returns}@*
|
||||
@code{TRUE} is returned if all is ok. Otherwise @code{FALSE} is returned
|
||||
and bfd_error is set.
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ typedef enum bfd_reloc_status
|
||||
typedef struct reloc_cache_entry
|
||||
@{
|
||||
/* A pointer into the canonical table of pointers. */
|
||||
struct symbol_cache_entry **sym_ptr_ptr;
|
||||
struct bfd_symbol **sym_ptr_ptr;
|
||||
|
||||
/* offset in section. */
|
||||
bfd_size_type address;
|
||||
@@ -84,15 +84,16 @@ Here is a description of each of the fields within an @code{arelent}:
|
||||
@code{sym_ptr_ptr}
|
||||
@end itemize
|
||||
The symbol table pointer points to a pointer to the symbol
|
||||
associated with the relocation request. It is
|
||||
the pointer into the table returned by the back end's
|
||||
@code{get_symtab} action. @xref{Symbols}. The symbol is referenced
|
||||
through a pointer to a pointer so that tools like the linker
|
||||
can fix up all the symbols of the same name by modifying only
|
||||
one pointer. The relocation routine looks in the symbol and
|
||||
uses the base of the section the symbol is attached to and the
|
||||
value of the symbol as the initial relocation offset. If the
|
||||
symbol pointer is zero, then the section provided is looked up.
|
||||
associated with the relocation request. It is the pointer
|
||||
into the table returned by the back end's
|
||||
@code{canonicalize_symtab} action. @xref{Symbols}. The symbol is
|
||||
referenced through a pointer to a pointer so that tools like
|
||||
the linker can fix up all the symbols of the same name by
|
||||
modifying only one pointer. The relocation routine looks in
|
||||
the symbol and uses the base of the section the symbol is
|
||||
attached to and the value of the symbol as the initial
|
||||
relocation offset. If the symbol pointer is zero, then the
|
||||
section provided is looked up.
|
||||
|
||||
@itemize @bullet
|
||||
|
||||
@@ -254,7 +255,7 @@ information that libbfd needs to know to tie up a back end's data.
|
||||
|
||||
|
||||
@example
|
||||
struct symbol_cache_entry; /* Forward declaration. */
|
||||
struct bfd_symbol; /* Forward declaration. */
|
||||
|
||||
struct reloc_howto_struct
|
||||
@{
|
||||
@@ -283,7 +284,7 @@ struct reloc_howto_struct
|
||||
data section of the addend. The relocation function will
|
||||
subtract from the relocation value the address of the location
|
||||
being relocated. */
|
||||
boolean pc_relative;
|
||||
bfd_boolean pc_relative;
|
||||
|
||||
/* The bit position of the reloc value in the destination.
|
||||
The relocated value is left shifted by this amount. */
|
||||
@@ -295,11 +296,11 @@ struct reloc_howto_struct
|
||||
|
||||
/* If this field is non null, then the supplied function is
|
||||
called rather than the normal function. This allows really
|
||||
strange relocation methods to be accomodated (e.g., i960 callj
|
||||
strange relocation methods to be accommodated (e.g., i960 callj
|
||||
instructions). */
|
||||
bfd_reloc_status_type (*special_function)
|
||||
PARAMS ((bfd *, arelent *, struct symbol_cache_entry *, PTR, asection *,
|
||||
bfd *, char **));
|
||||
(bfd *, arelent *, struct bfd_symbol *, void *, asection *,
|
||||
bfd *, char **);
|
||||
|
||||
/* The textual name of the relocation type. */
|
||||
char *name;
|
||||
@@ -319,21 +320,20 @@ struct reloc_howto_struct
|
||||
USE_REL targets set this field to TRUE. Why this is so is peculiar
|
||||
to each particular target. For relocs that aren't used in partial
|
||||
links (e.g. GOT stuff) it doesn't matter what this is set to. */
|
||||
boolean partial_inplace;
|
||||
bfd_boolean partial_inplace;
|
||||
|
||||
/* The src_mask selects which parts of the read in data
|
||||
are to be used in the relocation sum. E.g., if this was an 8 bit
|
||||
byte of data which we read and relocated, this would be
|
||||
0x000000ff. When we have relocs which have an addend, such as
|
||||
sun4 extended relocs, the value in the offset part of a
|
||||
relocating field is garbage so we never use it. In this case
|
||||
the mask would be 0x00000000. */
|
||||
/* src_mask selects the part of the instruction (or data) to be used
|
||||
in the relocation sum. If the target relocations don't have an
|
||||
addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
|
||||
dst_mask to extract the addend from the section contents. If
|
||||
relocations do have an addend in the reloc, eg. ELF USE_RELA, this
|
||||
field should be zero. Non-zero values for ELF USE_RELA targets are
|
||||
bogus as in those cases the value in the dst_mask part of the
|
||||
section contents should be treated as garbage. */
|
||||
bfd_vma src_mask;
|
||||
|
||||
/* The dst_mask selects which parts of the instruction are replaced
|
||||
into the instruction. In most cases src_mask == dst_mask,
|
||||
except in the above special case, where dst_mask would be
|
||||
0x000000ff, and src_mask would be 0x00000000. */
|
||||
/* dst_mask selects which parts of the instruction (or data) are
|
||||
replaced with a relocated value. */
|
||||
bfd_vma dst_mask;
|
||||
|
||||
/* When some formats create PC relative instructions, they leave
|
||||
@@ -342,7 +342,7 @@ struct reloc_howto_struct
|
||||
be made just by adding in an ordinary offset (e.g., sun3 a.out).
|
||||
Some formats leave the displacement part of an instruction
|
||||
empty (e.g., m88k bcs); this flag signals the fact. */
|
||||
boolean pcrel_offset;
|
||||
bfd_boolean pcrel_offset;
|
||||
@};
|
||||
|
||||
@end example
|
||||
@@ -361,7 +361,7 @@ moment, we are compatible, so do it this way.
|
||||
@example
|
||||
#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
|
||||
HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
|
||||
NAME, false, 0, 0, IN)
|
||||
NAME, FALSE, 0, 0, IN)
|
||||
|
||||
@end example
|
||||
|
||||
@@ -369,8 +369,8 @@ moment, we are compatible, so do it this way.
|
||||
This is used to fill in an empty howto entry in an array.
|
||||
@example
|
||||
#define EMPTY_HOWTO(C) \
|
||||
HOWTO ((C), 0, 0, 0, false, 0, complain_overflow_dont, NULL, \
|
||||
NULL, false, 0, 0, false)
|
||||
HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
|
||||
NULL, FALSE, 0, 0, FALSE)
|
||||
|
||||
@end example
|
||||
|
||||
@@ -379,7 +379,7 @@ Helper routine to turn a symbol into a relocation value.
|
||||
@example
|
||||
#define HOWTO_PREPARE(relocation, symbol) \
|
||||
@{ \
|
||||
if (symbol != (asymbol *) NULL) \
|
||||
if (symbol != NULL) \
|
||||
@{ \
|
||||
if (bfd_is_com_section (symbol->section)) \
|
||||
@{ \
|
||||
@@ -422,8 +422,7 @@ arelent_chain;
|
||||
@subsubsection @code{bfd_check_overflow}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
bfd_reloc_status_type
|
||||
bfd_check_overflow
|
||||
bfd_reloc_status_type bfd_check_overflow
|
||||
(enum complain_overflow how,
|
||||
unsigned int bitsize,
|
||||
unsigned int rightshift,
|
||||
@@ -441,11 +440,10 @@ Perform overflow checking on @var{relocation} which has
|
||||
@subsubsection @code{bfd_perform_relocation}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
bfd_reloc_status_type
|
||||
bfd_perform_relocation
|
||||
bfd_reloc_status_type bfd_perform_relocation
|
||||
(bfd *abfd,
|
||||
arelent *reloc_entry,
|
||||
PTR data,
|
||||
void *data,
|
||||
asection *input_section,
|
||||
bfd *output_bfd,
|
||||
char **error_message);
|
||||
@@ -470,11 +468,10 @@ this return @code{bfd_reloc_dangerous}.
|
||||
@subsubsection @code{bfd_install_relocation}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
bfd_reloc_status_type
|
||||
bfd_install_relocation
|
||||
bfd_reloc_status_type bfd_install_relocation
|
||||
(bfd *abfd,
|
||||
arelent *reloc_entry,
|
||||
PTR data, bfd_vma data_start,
|
||||
void *data, bfd_vma data_start,
|
||||
asection *input_section,
|
||||
char **error_message);
|
||||
@end example
|
||||
@@ -647,6 +644,32 @@ SPARC64 relocations
|
||||
@deffn {} BFD_RELOC_SPARC_REV32
|
||||
SPARC little endian relocation
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_SPARC_TLS_GD_HI22
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_GD_LO10
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_GD_ADD
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_GD_CALL
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_LDM_HI22
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_LDM_LO10
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_LDM_ADD
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_LDM_CALL
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_LDO_HIX22
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_LDO_LOX10
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_LDO_ADD
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_IE_HI22
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_IE_LO10
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_IE_LD
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_IE_LDX
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_IE_ADD
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_LE_HIX22
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_LE_LOX10
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_DTPMOD32
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_DTPMOD64
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_DTPOFF32
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_DTPOFF64
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_TPOFF32
|
||||
@deffnx {} BFD_RELOC_SPARC_TLS_TPOFF64
|
||||
SPARC TLS relocations
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_ALPHA_GPDISP_HI16
|
||||
Alpha ECOFF and ELF relocations. Some of these treat the symbol or
|
||||
"addend" in some special way.
|
||||
@@ -713,7 +736,7 @@ GP register.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_ALPHA_BRSGP
|
||||
Like BFD_RELOC_23_PCREL_S2, except that the source and target must
|
||||
share a common GP, and the target address is adjusted for
|
||||
share a common GP, and the target address is adjusted for
|
||||
STO_ALPHA_STD_GPLOAD.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_ALPHA_TLSGD
|
||||
@@ -783,6 +806,8 @@ Relocation against a MIPS literal section.
|
||||
@deffnx {} BFD_RELOC_MIPS_REL16
|
||||
@deffnx {} BFD_RELOC_MIPS_RELGOT
|
||||
@deffnx {} BFD_RELOC_MIPS_JALR
|
||||
MIPS ELF relocations.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_FRV_LABEL16
|
||||
@deffnx {} BFD_RELOC_FRV_LABEL24
|
||||
@deffnx {} BFD_RELOC_FRV_LO16
|
||||
@@ -792,9 +817,48 @@ Relocation against a MIPS literal section.
|
||||
@deffnx {} BFD_RELOC_FRV_GPREL32
|
||||
@deffnx {} BFD_RELOC_FRV_GPRELHI
|
||||
@deffnx {} BFD_RELOC_FRV_GPRELLO
|
||||
@deffnx {} BFD_RELOC_FRV_GOT12
|
||||
@deffnx {} BFD_RELOC_FRV_GOTHI
|
||||
@deffnx {} BFD_RELOC_FRV_GOTLO
|
||||
@deffnx {} BFD_RELOC_FRV_FUNCDESC
|
||||
@deffnx {} BFD_RELOC_FRV_FUNCDESC_GOT12
|
||||
@deffnx {} BFD_RELOC_FRV_FUNCDESC_GOTHI
|
||||
@deffnx {} BFD_RELOC_FRV_FUNCDESC_GOTLO
|
||||
@deffnx {} BFD_RELOC_FRV_FUNCDESC_VALUE
|
||||
@deffnx {} BFD_RELOC_FRV_FUNCDESC_GOTOFF12
|
||||
@deffnx {} BFD_RELOC_FRV_FUNCDESC_GOTOFFHI
|
||||
@deffnx {} BFD_RELOC_FRV_FUNCDESC_GOTOFFLO
|
||||
@deffnx {} BFD_RELOC_FRV_GOTOFF12
|
||||
@deffnx {} BFD_RELOC_FRV_GOTOFFHI
|
||||
@deffnx {} BFD_RELOC_FRV_GOTOFFLO
|
||||
Fujitsu Frv Relocations.
|
||||
@end deffn
|
||||
MIPS ELF relocations.
|
||||
@deffn {} BFD_RELOC_MN10300_GOTOFF24
|
||||
This is a 24bit GOT-relative reloc for the mn10300.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_MN10300_GOT32
|
||||
This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
|
||||
in the instruction.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_MN10300_GOT24
|
||||
This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
|
||||
in the instruction.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_MN10300_GOT16
|
||||
This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
|
||||
in the instruction.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_MN10300_COPY
|
||||
Copy symbol at runtime.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_MN10300_GLOB_DAT
|
||||
Create GOT entry.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_MN10300_JMP_SLOT
|
||||
Create PLT entry.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_MN10300_RELATIVE
|
||||
Adjust by program base.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_386_GOT32
|
||||
@deffnx {} BFD_RELOC_386_PLT32
|
||||
@@ -826,6 +890,14 @@ i386/elf relocations
|
||||
@deffnx {} BFD_RELOC_X86_64_RELATIVE
|
||||
@deffnx {} BFD_RELOC_X86_64_GOTPCREL
|
||||
@deffnx {} BFD_RELOC_X86_64_32S
|
||||
@deffnx {} BFD_RELOC_X86_64_DTPMOD64
|
||||
@deffnx {} BFD_RELOC_X86_64_DTPOFF64
|
||||
@deffnx {} BFD_RELOC_X86_64_TPOFF64
|
||||
@deffnx {} BFD_RELOC_X86_64_TLSGD
|
||||
@deffnx {} BFD_RELOC_X86_64_TLSLD
|
||||
@deffnx {} BFD_RELOC_X86_64_DTPOFF32
|
||||
@deffnx {} BFD_RELOC_X86_64_GOTTPOFF
|
||||
@deffnx {} BFD_RELOC_X86_64_TPOFF32
|
||||
x86-64/elf relocations
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_NS32K_IMM_8
|
||||
@@ -909,11 +981,53 @@ Picojava relocs. Not all of these appear in object files.
|
||||
@deffnx {} BFD_RELOC_PPC64_PLTGOT16_LO_DS
|
||||
Power(rs6000) and PowerPC relocations.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_PPC_TLS
|
||||
@deffnx {} BFD_RELOC_PPC_DTPMOD
|
||||
@deffnx {} BFD_RELOC_PPC_TPREL16
|
||||
@deffnx {} BFD_RELOC_PPC_TPREL16_LO
|
||||
@deffnx {} BFD_RELOC_PPC_TPREL16_HI
|
||||
@deffnx {} BFD_RELOC_PPC_TPREL16_HA
|
||||
@deffnx {} BFD_RELOC_PPC_TPREL
|
||||
@deffnx {} BFD_RELOC_PPC_DTPREL16
|
||||
@deffnx {} BFD_RELOC_PPC_DTPREL16_LO
|
||||
@deffnx {} BFD_RELOC_PPC_DTPREL16_HI
|
||||
@deffnx {} BFD_RELOC_PPC_DTPREL16_HA
|
||||
@deffnx {} BFD_RELOC_PPC_DTPREL
|
||||
@deffnx {} BFD_RELOC_PPC_GOT_TLSGD16
|
||||
@deffnx {} BFD_RELOC_PPC_GOT_TLSGD16_LO
|
||||
@deffnx {} BFD_RELOC_PPC_GOT_TLSGD16_HI
|
||||
@deffnx {} BFD_RELOC_PPC_GOT_TLSGD16_HA
|
||||
@deffnx {} BFD_RELOC_PPC_GOT_TLSLD16
|
||||
@deffnx {} BFD_RELOC_PPC_GOT_TLSLD16_LO
|
||||
@deffnx {} BFD_RELOC_PPC_GOT_TLSLD16_HI
|
||||
@deffnx {} BFD_RELOC_PPC_GOT_TLSLD16_HA
|
||||
@deffnx {} BFD_RELOC_PPC_GOT_TPREL16
|
||||
@deffnx {} BFD_RELOC_PPC_GOT_TPREL16_LO
|
||||
@deffnx {} BFD_RELOC_PPC_GOT_TPREL16_HI
|
||||
@deffnx {} BFD_RELOC_PPC_GOT_TPREL16_HA
|
||||
@deffnx {} BFD_RELOC_PPC_GOT_DTPREL16
|
||||
@deffnx {} BFD_RELOC_PPC_GOT_DTPREL16_LO
|
||||
@deffnx {} BFD_RELOC_PPC_GOT_DTPREL16_HI
|
||||
@deffnx {} BFD_RELOC_PPC_GOT_DTPREL16_HA
|
||||
@deffnx {} BFD_RELOC_PPC64_TPREL16_DS
|
||||
@deffnx {} BFD_RELOC_PPC64_TPREL16_LO_DS
|
||||
@deffnx {} BFD_RELOC_PPC64_TPREL16_HIGHER
|
||||
@deffnx {} BFD_RELOC_PPC64_TPREL16_HIGHERA
|
||||
@deffnx {} BFD_RELOC_PPC64_TPREL16_HIGHEST
|
||||
@deffnx {} BFD_RELOC_PPC64_TPREL16_HIGHESTA
|
||||
@deffnx {} BFD_RELOC_PPC64_DTPREL16_DS
|
||||
@deffnx {} BFD_RELOC_PPC64_DTPREL16_LO_DS
|
||||
@deffnx {} BFD_RELOC_PPC64_DTPREL16_HIGHER
|
||||
@deffnx {} BFD_RELOC_PPC64_DTPREL16_HIGHERA
|
||||
@deffnx {} BFD_RELOC_PPC64_DTPREL16_HIGHEST
|
||||
@deffnx {} BFD_RELOC_PPC64_DTPREL16_HIGHESTA
|
||||
PowerPC and PowerPC64 thread-local storage relocations.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_I370_D12
|
||||
IBM 370/390 relocations
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_CTOR
|
||||
The type of reloc used to build a contructor table - at the moment
|
||||
The type of reloc used to build a constructor table - at the moment
|
||||
probably a 32 bit wide absolute relocation, but the target can choose.
|
||||
It generally does map to one of the other relocation types.
|
||||
@end deffn
|
||||
@@ -938,6 +1052,7 @@ field in the instruction.
|
||||
@deffnx {} BFD_RELOC_ARM_SWI
|
||||
@deffnx {} BFD_RELOC_ARM_MULTI
|
||||
@deffnx {} BFD_RELOC_ARM_CP_OFF_IMM
|
||||
@deffnx {} BFD_RELOC_ARM_CP_OFF_IMM_S2
|
||||
@deffnx {} BFD_RELOC_ARM_ADR_IMM
|
||||
@deffnx {} BFD_RELOC_ARM_LDR_IMM
|
||||
@deffnx {} BFD_RELOC_ARM_LITERAL
|
||||
@@ -1034,7 +1149,15 @@ These relocs are only used within the ARM assembler. They are not
|
||||
@deffnx {} BFD_RELOC_SH_IMM_HI16
|
||||
@deffnx {} BFD_RELOC_SH_IMM_HI16_PCREL
|
||||
@deffnx {} BFD_RELOC_SH_PT_16
|
||||
Hitachi SH relocs. Not all of these appear in object files.
|
||||
@deffnx {} BFD_RELOC_SH_TLS_GD_32
|
||||
@deffnx {} BFD_RELOC_SH_TLS_LD_32
|
||||
@deffnx {} BFD_RELOC_SH_TLS_LDO_32
|
||||
@deffnx {} BFD_RELOC_SH_TLS_IE_32
|
||||
@deffnx {} BFD_RELOC_SH_TLS_LE_32
|
||||
@deffnx {} BFD_RELOC_SH_TLS_DTPMOD32
|
||||
@deffnx {} BFD_RELOC_SH_TLS_DTPOFF32
|
||||
@deffnx {} BFD_RELOC_SH_TLS_TPOFF32
|
||||
Renesas / SuperH SH relocs. Not all of these appear in object files.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_THUMB_PCREL_BRANCH9
|
||||
@deffnx {} BFD_RELOC_THUMB_PCREL_BRANCH12
|
||||
@@ -1131,7 +1254,7 @@ DLX relocs
|
||||
DLX relocs
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_M32R_24
|
||||
Mitsubishi M32R relocs.
|
||||
Renesas M32R (formerly Mitsubishi M32R) relocs.
|
||||
This is a 24 bit absolute address.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_M32R_10_PCREL
|
||||
@@ -1158,6 +1281,22 @@ This is a 16-bit reloc containing the lower 16 bits of an address.
|
||||
This is a 16-bit reloc containing the small data area offset for use in
|
||||
add3, load, and store instructions.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_M32R_GOT24
|
||||
@deffnx {} BFD_RELOC_M32R_26_PLTREL
|
||||
@deffnx {} BFD_RELOC_M32R_COPY
|
||||
@deffnx {} BFD_RELOC_M32R_GLOB_DAT
|
||||
@deffnx {} BFD_RELOC_M32R_JMP_SLOT
|
||||
@deffnx {} BFD_RELOC_M32R_RELATIVE
|
||||
@deffnx {} BFD_RELOC_M32R_GOTOFF
|
||||
@deffnx {} BFD_RELOC_M32R_GOTPC24
|
||||
@deffnx {} BFD_RELOC_M32R_GOT16_HI_ULO
|
||||
@deffnx {} BFD_RELOC_M32R_GOT16_HI_SLO
|
||||
@deffnx {} BFD_RELOC_M32R_GOT16_LO
|
||||
@deffnx {} BFD_RELOC_M32R_GOTPC_HI_ULO
|
||||
@deffnx {} BFD_RELOC_M32R_GOTPC_HI_SLO
|
||||
@deffnx {} BFD_RELOC_M32R_GOTPC_LO
|
||||
For PIC.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_V850_9_PCREL
|
||||
This is a 9-bit reloc
|
||||
@end deffn
|
||||
@@ -1201,11 +1340,11 @@ This is a 4 bit offset from the tiny data area pointer.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET
|
||||
This is a 16 bit offset from the short data area pointer, with the
|
||||
bits placed non-contigously in the instruction.
|
||||
bits placed non-contiguously in the instruction.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET
|
||||
This is a 16 bit offset from the zero data area pointer, with the
|
||||
bits placed non-contigously in the instruction.
|
||||
bits placed non-contiguously in the instruction.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_V850_CALLT_6_7_OFFSET
|
||||
This is a 6 bit offset from the call table base pointer.
|
||||
@@ -1213,6 +1352,15 @@ This is a 6 bit offset from the call table base pointer.
|
||||
@deffn {} BFD_RELOC_V850_CALLT_16_16_OFFSET
|
||||
This is a 16 bit offset from the call table base pointer.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_V850_LONGCALL
|
||||
Used for relaxing indirect function calls.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_V850_LONGJUMP
|
||||
Used for relaxing indirect jumps.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_V850_ALIGN
|
||||
Used to maintain alignment whilst relaxing.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_MN10300_32_PCREL
|
||||
This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
|
||||
instruction.
|
||||
@@ -1305,6 +1453,7 @@ These are relocations for a conditional branch instruction.
|
||||
@deffnx {} BFD_RELOC_MMIX_PUSHJ_1
|
||||
@deffnx {} BFD_RELOC_MMIX_PUSHJ_2
|
||||
@deffnx {} BFD_RELOC_MMIX_PUSHJ_3
|
||||
@deffnx {} BFD_RELOC_MMIX_PUSHJ_STUBBABLE
|
||||
These are relocations for the PUSHJ instruction.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_MMIX_JMP
|
||||
@@ -1455,6 +1604,95 @@ PC relative 32 bit shifted by 1.
|
||||
@deffn {} BFD_RELOC_390_GOTENT
|
||||
32 bit rel. offset to GOT entry.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_390_GOTOFF64
|
||||
64 bit offset to GOT.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_390_GOTPLT12
|
||||
12-bit offset to symbol-entry within GOT, with PLT handling.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_390_GOTPLT16
|
||||
16-bit offset to symbol-entry within GOT, with PLT handling.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_390_GOTPLT32
|
||||
32-bit offset to symbol-entry within GOT, with PLT handling.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_390_GOTPLT64
|
||||
64-bit offset to symbol-entry within GOT, with PLT handling.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_390_GOTPLTENT
|
||||
32-bit rel. offset to symbol-entry within GOT, with PLT handling.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_390_PLTOFF16
|
||||
16-bit rel. offset from the GOT to a PLT entry.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_390_PLTOFF32
|
||||
32-bit rel. offset from the GOT to a PLT entry.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_390_PLTOFF64
|
||||
64-bit rel. offset from the GOT to a PLT entry.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_390_TLS_LOAD
|
||||
@deffnx {} BFD_RELOC_390_TLS_GDCALL
|
||||
@deffnx {} BFD_RELOC_390_TLS_LDCALL
|
||||
@deffnx {} BFD_RELOC_390_TLS_GD32
|
||||
@deffnx {} BFD_RELOC_390_TLS_GD64
|
||||
@deffnx {} BFD_RELOC_390_TLS_GOTIE12
|
||||
@deffnx {} BFD_RELOC_390_TLS_GOTIE32
|
||||
@deffnx {} BFD_RELOC_390_TLS_GOTIE64
|
||||
@deffnx {} BFD_RELOC_390_TLS_LDM32
|
||||
@deffnx {} BFD_RELOC_390_TLS_LDM64
|
||||
@deffnx {} BFD_RELOC_390_TLS_IE32
|
||||
@deffnx {} BFD_RELOC_390_TLS_IE64
|
||||
@deffnx {} BFD_RELOC_390_TLS_IEENT
|
||||
@deffnx {} BFD_RELOC_390_TLS_LE32
|
||||
@deffnx {} BFD_RELOC_390_TLS_LE64
|
||||
@deffnx {} BFD_RELOC_390_TLS_LDO32
|
||||
@deffnx {} BFD_RELOC_390_TLS_LDO64
|
||||
@deffnx {} BFD_RELOC_390_TLS_DTPMOD
|
||||
@deffnx {} BFD_RELOC_390_TLS_DTPOFF
|
||||
@deffnx {} BFD_RELOC_390_TLS_TPOFF
|
||||
s390 tls relocations.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_390_20
|
||||
@deffnx {} BFD_RELOC_390_GOT20
|
||||
@deffnx {} BFD_RELOC_390_GOTPLT20
|
||||
@deffnx {} BFD_RELOC_390_TLS_GOTIE20
|
||||
Long displacement extension.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_IP2K_FR9
|
||||
Scenix IP2K - 9-bit register number / data address
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_IP2K_BANK
|
||||
Scenix IP2K - 4-bit register/data bank number
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_IP2K_ADDR16CJP
|
||||
Scenix IP2K - low 13 bits of instruction word address
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_IP2K_PAGE3
|
||||
Scenix IP2K - high 3 bits of instruction word address
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_IP2K_LO8DATA
|
||||
@deffnx {} BFD_RELOC_IP2K_HI8DATA
|
||||
@deffnx {} BFD_RELOC_IP2K_EX8DATA
|
||||
Scenix IP2K - ext/low/high 8 bits of data address
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_IP2K_LO8INSN
|
||||
@deffnx {} BFD_RELOC_IP2K_HI8INSN
|
||||
Scenix IP2K - low/high 8 bits of instruction word address
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_IP2K_PC_SKIP
|
||||
Scenix IP2K - even/odd PC modifier to modify snb pcl.0
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_IP2K_TEXT
|
||||
Scenix IP2K - 16 bit word address in text section.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_IP2K_FR_OFFSET
|
||||
Scenix IP2K - 7-bit sp or dp offset
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_VPE4KMATH_DATA
|
||||
@deffnx {} BFD_RELOC_VPE4KMATH_INSN
|
||||
Scenix VPE4K coprocessor - data/insn-space addressing
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_VTABLE_INHERIT
|
||||
@deffnx {} BFD_RELOC_VTABLE_ENTRY
|
||||
These two relocations are used by the linker to determine which of
|
||||
@@ -1464,7 +1702,7 @@ that are not used, so that the code for those functions need not be
|
||||
included in the output.
|
||||
|
||||
VTABLE_INHERIT is a zero-space relocation used to describe to the
|
||||
linker the inheritence tree of a C++ virtual function table. The
|
||||
linker the inheritance tree of a C++ virtual function table. The
|
||||
relocation's symbol should be the parent class' vtable, and the
|
||||
relocation should be located at the child vtable.
|
||||
|
||||
@@ -1558,15 +1796,50 @@ Intel IA64 Relocations.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_M68HC11_HI8
|
||||
Motorola 68HC11 reloc.
|
||||
This is the 8 bits high part of an absolute address.
|
||||
This is the 8 bit high part of an absolute address.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_M68HC11_LO8
|
||||
Motorola 68HC11 reloc.
|
||||
This is the 8 bits low part of an absolute address.
|
||||
This is the 8 bit low part of an absolute address.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_M68HC11_3B
|
||||
Motorola 68HC11 reloc.
|
||||
This is the 3 bits of a value.
|
||||
This is the 3 bit of a value.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_M68HC11_RL_JUMP
|
||||
Motorola 68HC11 reloc.
|
||||
This reloc marks the beginning of a jump/call instruction.
|
||||
It is used for linker relaxation to correctly identify beginning
|
||||
of instruction and change some branches to use PC-relative
|
||||
addressing mode.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_M68HC11_RL_GROUP
|
||||
Motorola 68HC11 reloc.
|
||||
This reloc marks a group of several instructions that gcc generates
|
||||
and for which the linker relaxation pass can modify and/or remove
|
||||
some of them.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_M68HC11_LO16
|
||||
Motorola 68HC11 reloc.
|
||||
This is the 16-bit lower part of an address. It is used for 'call'
|
||||
instruction to specify the symbol address without any special
|
||||
transformation (due to memory bank window).
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_M68HC11_PAGE
|
||||
Motorola 68HC11 reloc.
|
||||
This is a 8-bit reloc that specifies the page number of an address.
|
||||
It is used by 'call' instruction to specify the page number of
|
||||
the symbol.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_M68HC11_24
|
||||
Motorola 68HC11 reloc.
|
||||
This is a 24-bit reloc that represents the address with a 16-bit
|
||||
value and a 8-bit page number. The symbol address is transformed
|
||||
to follow the 16K memory bank of 68HC12 (seen as mapped in the window).
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_M68HC12_5B
|
||||
Motorola 68HC12 reloc.
|
||||
This is the 5 bits of a value.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_CRIS_BDISP8
|
||||
@deffnx {} BFD_RELOC_CRIS_UNSIGNED_5
|
||||
@@ -1649,6 +1922,7 @@ OpenRISC Relocations.
|
||||
H8 elf Relocations.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_XSTORMY16_REL_12
|
||||
@deffnx {} BFD_RELOC_XSTORMY16_12
|
||||
@deffnx {} BFD_RELOC_XSTORMY16_24
|
||||
@deffnx {} BFD_RELOC_XSTORMY16_FPTR16
|
||||
Sony Xstormy16 Relocations.
|
||||
@@ -1658,6 +1932,50 @@ Sony Xstormy16 Relocations.
|
||||
@deffnx {} BFD_RELOC_VAX_RELATIVE
|
||||
Relocations used by VAX ELF.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_MSP430_10_PCREL
|
||||
@deffnx {} BFD_RELOC_MSP430_16_PCREL
|
||||
@deffnx {} BFD_RELOC_MSP430_16
|
||||
@deffnx {} BFD_RELOC_MSP430_16_PCREL_BYTE
|
||||
@deffnx {} BFD_RELOC_MSP430_16_BYTE
|
||||
msp430 specific relocation codes
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_IQ2000_OFFSET_16
|
||||
@deffnx {} BFD_RELOC_IQ2000_OFFSET_21
|
||||
@deffnx {} BFD_RELOC_IQ2000_UHI16
|
||||
IQ2000 Relocations.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_XTENSA_RTLD
|
||||
Special Xtensa relocation used only by PLT entries in ELF shared
|
||||
objects to indicate that the runtime linker should set the value
|
||||
to one of its own internal functions or data structures.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_XTENSA_GLOB_DAT
|
||||
@deffnx {} BFD_RELOC_XTENSA_JMP_SLOT
|
||||
@deffnx {} BFD_RELOC_XTENSA_RELATIVE
|
||||
Xtensa relocations for ELF shared objects.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_XTENSA_PLT
|
||||
Xtensa relocation used in ELF object files for symbols that may require
|
||||
PLT entries. Otherwise, this is just a generic 32-bit relocation.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_XTENSA_OP0
|
||||
@deffnx {} BFD_RELOC_XTENSA_OP1
|
||||
@deffnx {} BFD_RELOC_XTENSA_OP2
|
||||
Generic Xtensa relocations. Only the operand number is encoded
|
||||
in the relocation. The details are determined by extracting the
|
||||
instruction opcode.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_XTENSA_ASM_EXPAND
|
||||
Xtensa relocation to mark that the assembler expanded the
|
||||
instructions from an original target. The expansion size is
|
||||
encoded in the reloc size.
|
||||
@end deffn
|
||||
@deffn {} BFD_RELOC_XTENSA_ASM_SIMPLIFY
|
||||
Xtensa relocation to mark that the linker should simplify
|
||||
assembler-expanded instructions. This is commonly used
|
||||
internally by the linker after analysis of a
|
||||
BFD_RELOC_XTENSA_ASM_EXPAND.
|
||||
@end deffn
|
||||
|
||||
@example
|
||||
|
||||
@@ -1667,8 +1985,8 @@ typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
|
||||
@subsubsection @code{bfd_reloc_type_lookup}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
reloc_howto_type *
|
||||
bfd_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code);
|
||||
reloc_howto_type *bfd_reloc_type_lookup
|
||||
(bfd *abfd, bfd_reloc_code_real_type code);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return a pointer to a howto structure which, when
|
||||
@@ -1699,21 +2017,22 @@ Useful mainly for printing error messages.
|
||||
@subsubsection @code{bfd_generic_relax_section}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_generic_relax_section
|
||||
bfd_boolean bfd_generic_relax_section
|
||||
(bfd *abfd,
|
||||
asection *section,
|
||||
struct bfd_link_info *,
|
||||
boolean *);
|
||||
bfd_boolean *);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Provides default handling for relaxing for back ends which
|
||||
don't do relaxing -- i.e., does nothing.
|
||||
don't do relaxing -- i.e., does nothing except make sure that the
|
||||
final size of the section is set.
|
||||
|
||||
@findex bfd_generic_gc_sections
|
||||
@subsubsection @code{bfd_generic_gc_sections}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_generic_gc_sections
|
||||
bfd_boolean bfd_generic_gc_sections
|
||||
(bfd *, struct bfd_link_info *);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
@@ -1724,7 +2043,7 @@ don't do section gc -- i.e., does nothing.
|
||||
@subsubsection @code{bfd_generic_merge_sections}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_generic_merge_sections
|
||||
bfd_boolean bfd_generic_merge_sections
|
||||
(bfd *, struct bfd_link_info *);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
@@ -1735,12 +2054,12 @@ which don't have SEC_MERGE support -- i.e., does nothing.
|
||||
@subsubsection @code{bfd_generic_get_relocated_section_contents}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
bfd_byte *
|
||||
bfd_generic_get_relocated_section_contents (bfd *abfd,
|
||||
bfd_byte *bfd_generic_get_relocated_section_contents
|
||||
(bfd *abfd,
|
||||
struct bfd_link_info *link_info,
|
||||
struct bfd_link_order *link_order,
|
||||
bfd_byte *data,
|
||||
boolean relocateable,
|
||||
bfd_boolean relocatable,
|
||||
asymbol **symbols);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
|
||||
@@ -124,7 +124,7 @@ struct bfd_comdat_info
|
||||
long symbol;
|
||||
@};
|
||||
|
||||
typedef struct sec
|
||||
typedef struct bfd_section
|
||||
@{
|
||||
/* The name of the section; the name isn't a copy, the pointer is
|
||||
the same as that passed to bfd_make_section. */
|
||||
@@ -137,7 +137,7 @@ typedef struct sec
|
||||
int index;
|
||||
|
||||
/* The next section in the list belonging to the BFD, or NULL. */
|
||||
struct sec *next;
|
||||
struct bfd_section *next;
|
||||
|
||||
/* The field flags contains attributes of the section. Some
|
||||
flags are read in from the object file, and some are
|
||||
@@ -335,10 +335,39 @@ typedef struct sec
|
||||
/* A mark flag used by some linker backends for garbage collection. */
|
||||
unsigned int gc_mark : 1;
|
||||
|
||||
/* Used by the ELF code to mark sections which have been allocated
|
||||
to segments. */
|
||||
/* The following flags are used by the ELF linker. */
|
||||
|
||||
/* Mark sections which have been allocated to segments. */
|
||||
unsigned int segment_mark : 1;
|
||||
|
||||
/* Type of sec_info information. */
|
||||
unsigned int sec_info_type:3;
|
||||
#define ELF_INFO_TYPE_NONE 0
|
||||
#define ELF_INFO_TYPE_STABS 1
|
||||
#define ELF_INFO_TYPE_MERGE 2
|
||||
#define ELF_INFO_TYPE_EH_FRAME 3
|
||||
#define ELF_INFO_TYPE_JUST_SYMS 4
|
||||
|
||||
/* Nonzero if this section uses RELA relocations, rather than REL. */
|
||||
unsigned int use_rela_p:1;
|
||||
|
||||
/* Bits used by various backends. */
|
||||
unsigned int has_tls_reloc:1;
|
||||
|
||||
/* Nonzero if this section needs the relax finalize pass. */
|
||||
unsigned int need_finalize_relax:1;
|
||||
|
||||
/* Nonzero if this section has a gp reloc. */
|
||||
unsigned int has_gp_reloc:1;
|
||||
|
||||
/* Unused bits. */
|
||||
unsigned int flag13:1;
|
||||
unsigned int flag14:1;
|
||||
unsigned int flag15:1;
|
||||
unsigned int flag16:4;
|
||||
unsigned int flag20:4;
|
||||
unsigned int flag24:8;
|
||||
|
||||
/* End of internal packed boolean fields. */
|
||||
|
||||
/* The virtual memory address of the section - where it will be
|
||||
@@ -374,7 +403,7 @@ typedef struct sec
|
||||
bfd_vma output_offset;
|
||||
|
||||
/* The output section through which to map on output. */
|
||||
struct sec *output_section;
|
||||
struct bfd_section *output_section;
|
||||
|
||||
/* The alignment requirement of the section, as an exponent of 2 -
|
||||
e.g., 3 aligns to 2^3 (or 8). */
|
||||
@@ -404,7 +433,7 @@ typedef struct sec
|
||||
file_ptr line_filepos;
|
||||
|
||||
/* Pointer to data for applications. */
|
||||
PTR userdata;
|
||||
void *userdata;
|
||||
|
||||
/* If the SEC_IN_MEMORY flag is set, this points to the actual
|
||||
contents. */
|
||||
@@ -422,6 +451,10 @@ typedef struct sec
|
||||
/* Optional information about a COMDAT entry; NULL if not COMDAT. */
|
||||
struct bfd_comdat_info *comdat;
|
||||
|
||||
/* Points to the kept section if this section is a link-once section,
|
||||
and is discarded. */
|
||||
struct bfd_section *kept_section;
|
||||
|
||||
/* When a section is being output, this value changes as more
|
||||
linenumbers are written out. */
|
||||
file_ptr moving_line_filepos;
|
||||
@@ -429,7 +462,7 @@ typedef struct sec
|
||||
/* What the section number is in the target world. */
|
||||
int target_index;
|
||||
|
||||
PTR used_by_bfd;
|
||||
void *used_by_bfd;
|
||||
|
||||
/* If this is a constructor section then here is a list of the
|
||||
relocations created to relocate items within it. */
|
||||
@@ -439,8 +472,8 @@ typedef struct sec
|
||||
bfd *owner;
|
||||
|
||||
/* A symbol which points at this section only. */
|
||||
struct symbol_cache_entry *symbol;
|
||||
struct symbol_cache_entry **symbol_ptr_ptr;
|
||||
struct bfd_symbol *symbol;
|
||||
struct bfd_symbol **symbol_ptr_ptr;
|
||||
|
||||
struct bfd_link_order *link_order_head;
|
||||
struct bfd_link_order *link_order_tail;
|
||||
@@ -457,18 +490,18 @@ typedef struct sec
|
||||
#define BFD_IND_SECTION_NAME "*IND*"
|
||||
|
||||
/* The absolute section. */
|
||||
extern const asection bfd_abs_section;
|
||||
extern asection bfd_abs_section;
|
||||
#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
|
||||
#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
|
||||
/* Pointer to the undefined section. */
|
||||
extern const asection bfd_und_section;
|
||||
extern asection bfd_und_section;
|
||||
#define bfd_und_section_ptr ((asection *) &bfd_und_section)
|
||||
#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
|
||||
/* Pointer to the common section. */
|
||||
extern const asection bfd_com_section;
|
||||
extern asection bfd_com_section;
|
||||
#define bfd_com_section_ptr ((asection *) &bfd_com_section)
|
||||
/* Pointer to the indirect section. */
|
||||
extern const asection bfd_ind_section;
|
||||
extern asection bfd_ind_section;
|
||||
#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
|
||||
#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
|
||||
|
||||
@@ -478,13 +511,12 @@ extern const asection bfd_ind_section;
|
||||
|| ((SEC) == bfd_com_section_ptr) \
|
||||
|| ((SEC) == bfd_ind_section_ptr))
|
||||
|
||||
extern const struct symbol_cache_entry * const bfd_abs_symbol;
|
||||
extern const struct symbol_cache_entry * const bfd_com_symbol;
|
||||
extern const struct symbol_cache_entry * const bfd_und_symbol;
|
||||
extern const struct symbol_cache_entry * const bfd_ind_symbol;
|
||||
extern const struct bfd_symbol * const bfd_abs_symbol;
|
||||
extern const struct bfd_symbol * const bfd_com_symbol;
|
||||
extern const struct bfd_symbol * const bfd_und_symbol;
|
||||
extern const struct bfd_symbol * const bfd_ind_symbol;
|
||||
#define bfd_get_section_size_before_reloc(section) \
|
||||
((section)->reloc_done ? (abort (), (bfd_size_type) 1) \
|
||||
: (section)->_raw_size)
|
||||
((section)->_raw_size)
|
||||
#define bfd_get_section_size_after_reloc(section) \
|
||||
((section)->reloc_done ? (section)->_cooked_size \
|
||||
: (abort (), (bfd_size_type) 1))
|
||||
@@ -534,7 +566,7 @@ hash table entries.
|
||||
@subsubsection @code{bfd_get_section_by_name}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
asection *bfd_get_section_by_name(bfd *abfd, const char *name);
|
||||
asection *bfd_get_section_by_name (bfd *abfd, const char *name);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Run through @var{abfd} and return the one of the
|
||||
@@ -550,9 +582,8 @@ or something else) for each section.
|
||||
@subsubsection @code{bfd_get_unique_section_name}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
char *bfd_get_unique_section_name(bfd *abfd,
|
||||
const char *templat,
|
||||
int *count);
|
||||
char *bfd_get_unique_section_name
|
||||
(bfd *abfd, const char *templat, int *count);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Invent a section name that is unique in @var{abfd} by tacking
|
||||
@@ -565,7 +596,7 @@ pointed to by @var{count} will be incremented in this case.
|
||||
@subsubsection @code{bfd_make_section_old_way}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
asection *bfd_make_section_old_way(bfd *abfd, const char *name);
|
||||
asection *bfd_make_section_old_way (bfd *abfd, const char *name);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Create a new empty section called @var{name}
|
||||
@@ -592,7 +623,7 @@ If memory allocation fails.
|
||||
@subsubsection @code{bfd_make_section_anyway}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
asection *bfd_make_section_anyway(bfd *abfd, const char *name);
|
||||
asection *bfd_make_section_anyway (bfd *abfd, const char *name);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Create a new empty section called @var{name} and attach it to the end of
|
||||
@@ -612,7 +643,7 @@ Return @code{NULL} and set @code{bfd_error} on error; possible errors are:
|
||||
@subsubsection @code{bfd_make_section}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
asection *bfd_make_section(bfd *, const char *name);
|
||||
asection *bfd_make_section (bfd *, const char *name);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Like @code{bfd_make_section_anyway}, but return @code{NULL} (without calling
|
||||
@@ -624,12 +655,13 @@ section named @var{name}. If there is an error, return @code{NULL} and set
|
||||
@subsubsection @code{bfd_set_section_flags}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_set_section_flags(bfd *abfd, asection *sec, flagword flags);
|
||||
bfd_boolean bfd_set_section_flags
|
||||
(bfd *abfd, asection *sec, flagword flags);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Set the attributes of the section @var{sec} in the BFD
|
||||
@var{abfd} to the value @var{flags}. Return @code{true} on success,
|
||||
@code{false} on error. Possible error returns are:
|
||||
@var{abfd} to the value @var{flags}. Return @code{TRUE} on success,
|
||||
@code{FALSE} on error. Possible error returns are:
|
||||
|
||||
@itemize @bullet
|
||||
|
||||
@@ -644,11 +676,10 @@ have the @code{SEC_HAS_CONTENTS} field set.
|
||||
@subsubsection @code{bfd_map_over_sections}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
void bfd_map_over_sections(bfd *abfd,
|
||||
void (*func) (bfd *abfd,
|
||||
asection *sect,
|
||||
PTR obj),
|
||||
PTR obj);
|
||||
void bfd_map_over_sections
|
||||
(bfd *abfd,
|
||||
void (*func) (bfd *abfd, asection *sect, void *obj),
|
||||
void *obj);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Call the provided function @var{func} for each section
|
||||
@@ -656,27 +687,28 @@ attached to the BFD @var{abfd}, passing @var{obj} as an
|
||||
argument. The function will be called as if by
|
||||
|
||||
@example
|
||||
func(abfd, the_section, obj);
|
||||
func (abfd, the_section, obj);
|
||||
@end example
|
||||
|
||||
This is the prefered method for iterating over sections; an
|
||||
This is the preferred method for iterating over sections; an
|
||||
alternative would be to use a loop:
|
||||
|
||||
@example
|
||||
section *p;
|
||||
for (p = abfd->sections; p != NULL; p = p->next)
|
||||
func(abfd, p, ...)
|
||||
func (abfd, p, ...)
|
||||
@end example
|
||||
|
||||
@findex bfd_set_section_size
|
||||
@subsubsection @code{bfd_set_section_size}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_set_section_size(bfd *abfd, asection *sec, bfd_size_type val);
|
||||
bfd_boolean bfd_set_section_size
|
||||
(bfd *abfd, asection *sec, bfd_size_type val);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Set @var{sec} to the size @var{val}. If the operation is
|
||||
ok, then @code{true} is returned, else @code{false}.
|
||||
ok, then @code{TRUE} is returned, else @code{FALSE}.
|
||||
|
||||
Possible error returns:
|
||||
@itemize @bullet
|
||||
@@ -690,9 +722,9 @@ Writing has started to the BFD, so setting the size is invalid.
|
||||
@subsubsection @code{bfd_set_section_contents}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_set_section_contents (bfd *abfd, asection *section,
|
||||
PTR data, file_ptr offset,
|
||||
bfd_size_type count);
|
||||
bfd_boolean bfd_set_section_contents
|
||||
(bfd *abfd, asection *section, const void *data,
|
||||
file_ptr offset, bfd_size_type count);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Sets the contents of the section @var{section} in BFD
|
||||
@@ -700,7 +732,7 @@ Sets the contents of the section @var{section} in BFD
|
||||
data is written to the output section starting at offset
|
||||
@var{offset} for @var{count} octets.
|
||||
|
||||
Normally @code{true} is returned, else @code{false}. Possible error
|
||||
Normally @code{TRUE} is returned, else @code{FALSE}. Possible error
|
||||
returns are:
|
||||
@itemize @bullet
|
||||
|
||||
@@ -718,8 +750,8 @@ This routine is front end to the back end function
|
||||
@subsubsection @code{bfd_get_section_contents}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_get_section_contents (bfd *abfd, asection *section,
|
||||
PTR location, file_ptr offset,
|
||||
bfd_boolean bfd_get_section_contents
|
||||
(bfd *abfd, asection *section, void *location, file_ptr offset,
|
||||
bfd_size_type count);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
@@ -731,20 +763,20 @@ and is read for @var{count} bytes.
|
||||
If the contents of a constructor with the @code{SEC_CONSTRUCTOR}
|
||||
flag set are requested or if the section does not have the
|
||||
@code{SEC_HAS_CONTENTS} flag set, then the @var{location} is filled
|
||||
with zeroes. If no errors occur, @code{true} is returned, else
|
||||
@code{false}.
|
||||
with zeroes. If no errors occur, @code{TRUE} is returned, else
|
||||
@code{FALSE}.
|
||||
|
||||
@findex bfd_copy_private_section_data
|
||||
@subsubsection @code{bfd_copy_private_section_data}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_copy_private_section_data (bfd *ibfd, asection *isec,
|
||||
bfd *obfd, asection *osec);
|
||||
bfd_boolean bfd_copy_private_section_data
|
||||
(bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Copy private section information from @var{isec} in the BFD
|
||||
@var{ibfd} to the section @var{osec} in the BFD @var{obfd}.
|
||||
Return @code{true} on success, @code{false} on error. Possible error
|
||||
Return @code{TRUE} on success, @code{FALSE} on error. Possible error
|
||||
returns are:
|
||||
|
||||
@itemize @bullet
|
||||
@@ -778,7 +810,7 @@ to remove sections.
|
||||
@subsubsection @code{bfd_generic_discard_group}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_generic_discard_group (bfd *abfd, asection *group);
|
||||
bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Remove all members of @var{group} from the output.
|
||||
|
||||
@@ -47,10 +47,10 @@ excerpt from an application which reads the symbol table:
|
||||
if (storage_needed < 0)
|
||||
FAIL
|
||||
|
||||
if (storage_needed == 0) @{
|
||||
return ;
|
||||
@}
|
||||
symbol_table = (asymbol **) xmalloc (storage_needed);
|
||||
if (storage_needed == 0)
|
||||
return;
|
||||
|
||||
symbol_table = xmalloc (storage_needed);
|
||||
...
|
||||
number_of_symbols =
|
||||
bfd_canonicalize_symtab (abfd, symbol_table);
|
||||
@@ -58,9 +58,8 @@ excerpt from an application which reads the symbol table:
|
||||
if (number_of_symbols < 0)
|
||||
FAIL
|
||||
|
||||
for (i = 0; i < number_of_symbols; i++) @{
|
||||
process_symbol (symbol_table[i]);
|
||||
@}
|
||||
for (i = 0; i < number_of_symbols; i++)
|
||||
process_symbol (symbol_table[i]);
|
||||
@end example
|
||||
|
||||
All storage for the symbols themselves is in an objalloc
|
||||
@@ -80,25 +79,26 @@ example showing the creation of a symbol table with only one element:
|
||||
|
||||
@example
|
||||
#include "bfd.h"
|
||||
main()
|
||||
int main (void)
|
||||
@{
|
||||
bfd *abfd;
|
||||
asymbol *ptrs[2];
|
||||
asymbol *new;
|
||||
|
||||
abfd = bfd_openw("foo","a.out-sunos-big");
|
||||
bfd_set_format(abfd, bfd_object);
|
||||
new = bfd_make_empty_symbol(abfd);
|
||||
abfd = bfd_openw ("foo","a.out-sunos-big");
|
||||
bfd_set_format (abfd, bfd_object);
|
||||
new = bfd_make_empty_symbol (abfd);
|
||||
new->name = "dummy_symbol";
|
||||
new->section = bfd_make_section_old_way(abfd, ".text");
|
||||
new->section = bfd_make_section_old_way (abfd, ".text");
|
||||
new->flags = BSF_GLOBAL;
|
||||
new->value = 0x12345;
|
||||
|
||||
ptrs[0] = new;
|
||||
ptrs[1] = (asymbol *)0;
|
||||
ptrs[1] = 0;
|
||||
|
||||
bfd_set_symtab(abfd, ptrs, 1);
|
||||
bfd_close(abfd);
|
||||
bfd_set_symtab (abfd, ptrs, 1);
|
||||
bfd_close (abfd);
|
||||
return 0;
|
||||
@}
|
||||
|
||||
./makesym
|
||||
@@ -106,9 +106,9 @@ example showing the creation of a symbol table with only one element:
|
||||
00012345 A dummy_symbol
|
||||
@end example
|
||||
|
||||
Many formats cannot represent arbitary symbol information; for
|
||||
Many formats cannot represent arbitrary symbol information; for
|
||||
instance, the @code{a.out} object format does not allow an
|
||||
arbitary number of sections. A symbol pointing to a section
|
||||
arbitrary number of sections. A symbol pointing to a section
|
||||
which is not one of @code{.text}, @code{.data} or @code{.bss} cannot
|
||||
be described.
|
||||
|
||||
@@ -139,7 +139,7 @@ An @code{asymbol} has the form:
|
||||
|
||||
@example
|
||||
|
||||
typedef struct symbol_cache_entry
|
||||
typedef struct bfd_symbol
|
||||
@{
|
||||
/* A pointer to the BFD which owns the symbol. This information
|
||||
is necessary so that a back end can work out what additional
|
||||
@@ -150,7 +150,7 @@ typedef struct symbol_cache_entry
|
||||
instead, except that some symbols point to the global sections
|
||||
bfd_@{abs,com,und@}_section. This could be fixed by making
|
||||
these globals be per-bfd (or per-target-flavor). FIXME. */
|
||||
struct _bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
|
||||
struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
|
||||
|
||||
/* The text of the symbol. The name is left alone, and not copied; the
|
||||
application may not alter it. */
|
||||
@@ -180,7 +180,7 @@ typedef struct symbol_cache_entry
|
||||
@code{BSF_LOCAL}, @code{BSF_FORT_COMM}, @code{BSF_UNDEFINED} or
|
||||
@code{BSF_GLOBAL}. */
|
||||
|
||||
/* The symbol is a debugging record. The value has an arbitary
|
||||
/* The symbol is a debugging record. The value has an arbitrary
|
||||
meaning, unless BSF_DEBUGGING_RELOC is also set. */
|
||||
#define BSF_DEBUGGING 0x08
|
||||
|
||||
@@ -251,12 +251,12 @@ typedef struct symbol_cache_entry
|
||||
/* A pointer to the section to which this symbol is
|
||||
relative. This will always be non NULL, there are special
|
||||
sections for undefined and absolute symbols. */
|
||||
struct sec *section;
|
||||
struct bfd_section *section;
|
||||
|
||||
/* Back end special data. */
|
||||
union
|
||||
@{
|
||||
PTR p;
|
||||
void *p;
|
||||
bfd_vma i;
|
||||
@}
|
||||
udata;
|
||||
@@ -286,26 +286,26 @@ the BFD, then return 0. If an error occurs, return -1.
|
||||
@subsubsection @code{bfd_is_local_label}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_is_local_label(bfd *abfd, asymbol *sym);
|
||||
bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return true if the given symbol @var{sym} in the BFD @var{abfd} is
|
||||
a compiler generated local label, else return false.
|
||||
Return TRUE if the given symbol @var{sym} in the BFD @var{abfd} is
|
||||
a compiler generated local label, else return FALSE.
|
||||
|
||||
@findex bfd_is_local_label_name
|
||||
@subsubsection @code{bfd_is_local_label_name}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_is_local_label_name(bfd *abfd, const char *name);
|
||||
bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return true if a symbol with the name @var{name} in the BFD
|
||||
Return TRUE if a symbol with the name @var{name} in the BFD
|
||||
@var{abfd} is a compiler generated local label, else return
|
||||
false. This just checks whether the name has the form of a
|
||||
FALSE. This just checks whether the name has the form of a
|
||||
local label.
|
||||
@example
|
||||
#define bfd_is_local_label_name(abfd, name) \
|
||||
BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
|
||||
BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
|
||||
|
||||
@end example
|
||||
|
||||
@@ -319,8 +319,7 @@ Return the actual number of symbol pointers, not
|
||||
including the NULL.
|
||||
@example
|
||||
#define bfd_canonicalize_symtab(abfd, location) \
|
||||
BFD_SEND (abfd, _bfd_canonicalize_symtab,\
|
||||
(abfd, location))
|
||||
BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
|
||||
|
||||
@end example
|
||||
|
||||
@@ -328,7 +327,8 @@ including the NULL.
|
||||
@subsubsection @code{bfd_set_symtab}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_set_symtab (bfd *abfd, asymbol **location, unsigned int count);
|
||||
bfd_boolean bfd_set_symtab
|
||||
(bfd *abfd, asymbol **location, unsigned int count);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Arrange that when the output BFD @var{abfd} is closed,
|
||||
@@ -339,7 +339,7 @@ will be written.
|
||||
@subsubsection @code{bfd_print_symbol_vandf}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
void bfd_print_symbol_vandf(bfd *abfd, PTR file, asymbol *symbol);
|
||||
void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Print the value and flags of the @var{symbol} supplied to the
|
||||
@@ -357,7 +357,7 @@ information surrounding the @code{asymbol}. Building your own
|
||||
information, and will cause problems later on.
|
||||
@example
|
||||
#define bfd_make_empty_symbol(abfd) \
|
||||
BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
|
||||
BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
|
||||
|
||||
@end example
|
||||
|
||||
@@ -381,7 +381,7 @@ to be used as a debugging symbol. Further details of its use have
|
||||
yet to be worked out.
|
||||
@example
|
||||
#define bfd_make_debug_symbol(abfd,ptr,size) \
|
||||
BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
|
||||
BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
|
||||
|
||||
@end example
|
||||
|
||||
@@ -393,7 +393,7 @@ class of @var{symbol}, or '?' for an unknown class.
|
||||
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
int bfd_decode_symclass(asymbol *symbol);
|
||||
int bfd_decode_symclass (asymbol *symbol);
|
||||
@end example
|
||||
@findex bfd_is_undefined_symclass
|
||||
@subsubsection @code{bfd_is_undefined_symclass}
|
||||
@@ -404,7 +404,7 @@ Returns zero otherwise.
|
||||
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_is_undefined_symclass (int symclass);
|
||||
bfd_boolean bfd_is_undefined_symclass (int symclass);
|
||||
@end example
|
||||
@findex bfd_symbol_info
|
||||
@subsubsection @code{bfd_symbol_info}
|
||||
@@ -415,18 +415,19 @@ calling this function.
|
||||
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
void bfd_symbol_info(asymbol *symbol, symbol_info *ret);
|
||||
void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
|
||||
@end example
|
||||
@findex bfd_copy_private_symbol_data
|
||||
@subsubsection @code{bfd_copy_private_symbol_data}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_copy_private_symbol_data(bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
|
||||
bfd_boolean bfd_copy_private_symbol_data
|
||||
(bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Copy private symbol information from @var{isym} in the BFD
|
||||
@var{ibfd} to the symbol @var{osym} in the BFD @var{obfd}.
|
||||
Return @code{true} on success, @code{false} on error. Possible error
|
||||
Return @code{TRUE} on success, @code{FALSE} on error. Possible error
|
||||
returns are:
|
||||
|
||||
@itemize @bullet
|
||||
@@ -437,8 +438,8 @@ Not enough memory exists to create private data for @var{osec}.
|
||||
@end itemize
|
||||
@example
|
||||
#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
|
||||
BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
|
||||
(ibfd, isymbol, obfd, osymbol))
|
||||
BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
|
||||
(ibfd, isymbol, obfd, osymbol))
|
||||
|
||||
@end example
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
|
||||
@strong{Description}@*
|
||||
Each port of BFD to a different machine requries the creation
|
||||
Each port of BFD to a different machine requires the creation
|
||||
of a target back end. All the back end provides to the root
|
||||
part of BFD is a structure containing pointers to functions
|
||||
which perform certain low level operations on files. BFD
|
||||
@@ -50,7 +50,7 @@ format may be determined. This is done by calling
|
||||
@code{bfd_check_format} on the BFD with a suggested format.
|
||||
If @code{target_defaulted} has been set, each possible target
|
||||
type is tried to see if it recognizes the specified format.
|
||||
@code{bfd_check_format} returns @code{true} when the caller guesses right.
|
||||
@code{bfd_check_format} returns @code{TRUE} when the caller guesses right.
|
||||
@menu
|
||||
* bfd_target::
|
||||
@end menu
|
||||
@@ -79,7 +79,7 @@ They make the documentation (more) unpleasant to read, so if
|
||||
someone wants to fix this and not break the above, please do.
|
||||
@example
|
||||
#define BFD_SEND(bfd, message, arglist) \
|
||||
((*((bfd)->xvec->message)) arglist)
|
||||
((*((bfd)->xvec->message)) arglist)
|
||||
|
||||
#ifdef DEBUG_BFD_SEND
|
||||
#undef BFD_SEND
|
||||
@@ -92,7 +92,7 @@ someone wants to fix this and not break the above, please do.
|
||||
For operations which index on the BFD format:
|
||||
@example
|
||||
#define BFD_SEND_FMT(bfd, message, arglist) \
|
||||
(((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
|
||||
(((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
|
||||
|
||||
#ifdef DEBUG_BFD_SEND
|
||||
#undef BFD_SEND_FMT
|
||||
@@ -132,7 +132,11 @@ enum bfd_flavour
|
||||
bfd_target_msdos_flavour,
|
||||
bfd_target_ovax_flavour,
|
||||
bfd_target_evax_flavour,
|
||||
bfd_target_mmo_flavour
|
||||
bfd_target_mmo_flavour,
|
||||
bfd_target_mach_o_flavour,
|
||||
bfd_target_pef_flavour,
|
||||
bfd_target_pef_xlib_flavour,
|
||||
bfd_target_sym_flavour
|
||||
@};
|
||||
|
||||
enum bfd_endian @{ BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN @};
|
||||
@@ -176,38 +180,38 @@ typedef struct bfd_target
|
||||
/* Entries for byte swapping for data. These are different from the
|
||||
other entry points, since they don't take a BFD asthe first argument.
|
||||
Certain other handlers could do the same. */
|
||||
bfd_vma (*bfd_getx64) PARAMS ((const bfd_byte *));
|
||||
bfd_signed_vma (*bfd_getx_signed_64) PARAMS ((const bfd_byte *));
|
||||
void (*bfd_putx64) PARAMS ((bfd_vma, bfd_byte *));
|
||||
bfd_vma (*bfd_getx32) PARAMS ((const bfd_byte *));
|
||||
bfd_signed_vma (*bfd_getx_signed_32) PARAMS ((const bfd_byte *));
|
||||
void (*bfd_putx32) PARAMS ((bfd_vma, bfd_byte *));
|
||||
bfd_vma (*bfd_getx16) PARAMS ((const bfd_byte *));
|
||||
bfd_signed_vma (*bfd_getx_signed_16) PARAMS ((const bfd_byte *));
|
||||
void (*bfd_putx16) PARAMS ((bfd_vma, bfd_byte *));
|
||||
bfd_uint64_t (*bfd_getx64) (const void *);
|
||||
bfd_int64_t (*bfd_getx_signed_64) (const void *);
|
||||
void (*bfd_putx64) (bfd_uint64_t, void *);
|
||||
bfd_vma (*bfd_getx32) (const void *);
|
||||
bfd_signed_vma (*bfd_getx_signed_32) (const void *);
|
||||
void (*bfd_putx32) (bfd_vma, void *);
|
||||
bfd_vma (*bfd_getx16) (const void *);
|
||||
bfd_signed_vma (*bfd_getx_signed_16) (const void *);
|
||||
void (*bfd_putx16) (bfd_vma, void *);
|
||||
|
||||
/* Byte swapping for the headers. */
|
||||
bfd_vma (*bfd_h_getx64) PARAMS ((const bfd_byte *));
|
||||
bfd_signed_vma (*bfd_h_getx_signed_64) PARAMS ((const bfd_byte *));
|
||||
void (*bfd_h_putx64) PARAMS ((bfd_vma, bfd_byte *));
|
||||
bfd_vma (*bfd_h_getx32) PARAMS ((const bfd_byte *));
|
||||
bfd_signed_vma (*bfd_h_getx_signed_32) PARAMS ((const bfd_byte *));
|
||||
void (*bfd_h_putx32) PARAMS ((bfd_vma, bfd_byte *));
|
||||
bfd_vma (*bfd_h_getx16) PARAMS ((const bfd_byte *));
|
||||
bfd_signed_vma (*bfd_h_getx_signed_16) PARAMS ((const bfd_byte *));
|
||||
void (*bfd_h_putx16) PARAMS ((bfd_vma, bfd_byte *));
|
||||
bfd_uint64_t (*bfd_h_getx64) (const void *);
|
||||
bfd_int64_t (*bfd_h_getx_signed_64) (const void *);
|
||||
void (*bfd_h_putx64) (bfd_uint64_t, void *);
|
||||
bfd_vma (*bfd_h_getx32) (const void *);
|
||||
bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
|
||||
void (*bfd_h_putx32) (bfd_vma, void *);
|
||||
bfd_vma (*bfd_h_getx16) (const void *);
|
||||
bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
|
||||
void (*bfd_h_putx16) (bfd_vma, void *);
|
||||
|
||||
/* Format dependent routines: these are vectors of entry points
|
||||
within the target vector structure, one for each format to check. */
|
||||
|
||||
/* Check the format of a file being read. Return a @code{bfd_target *} or zero. */
|
||||
const struct bfd_target *(*_bfd_check_format[bfd_type_end]) PARAMS ((bfd *));
|
||||
const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
|
||||
|
||||
/* Set the format of a file being written. */
|
||||
boolean (*_bfd_set_format[bfd_type_end]) PARAMS ((bfd *));
|
||||
bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
|
||||
|
||||
/* Write cached information into a file being written, at @code{bfd_close}. */
|
||||
boolean (*_bfd_write_contents[bfd_type_end]) PARAMS ((bfd *));
|
||||
bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
|
||||
|
||||
@end example
|
||||
The general target vector. These vectors are initialized using the
|
||||
@@ -215,227 +219,229 @@ BFD_JUMP_TABLE macros.
|
||||
@example
|
||||
|
||||
/* Generic entry points. */
|
||||
@end example
|
||||
Do not "beautify" the CONCAT* macro args. Traditional C will not
|
||||
remove whitespace added here, and thus will fail to concatenate
|
||||
the tokens.
|
||||
@example
|
||||
#define BFD_JUMP_TABLE_GENERIC(NAME) \
|
||||
CONCAT2 (NAME,_close_and_cleanup), \
|
||||
CONCAT2 (NAME,_bfd_free_cached_info), \
|
||||
CONCAT2 (NAME,_new_section_hook), \
|
||||
CONCAT2 (NAME,_get_section_contents), \
|
||||
CONCAT2 (NAME,_get_section_contents_in_window)
|
||||
NAME##_close_and_cleanup, \
|
||||
NAME##_bfd_free_cached_info, \
|
||||
NAME##_new_section_hook, \
|
||||
NAME##_get_section_contents, \
|
||||
NAME##_get_section_contents_in_window
|
||||
|
||||
/* Called when the BFD is being closed to do any necessary cleanup. */
|
||||
boolean (*_close_and_cleanup) PARAMS ((bfd *));
|
||||
bfd_boolean (*_close_and_cleanup) (bfd *);
|
||||
/* Ask the BFD to free all cached information. */
|
||||
boolean (*_bfd_free_cached_info) PARAMS ((bfd *));
|
||||
bfd_boolean (*_bfd_free_cached_info) (bfd *);
|
||||
/* Called when a new section is created. */
|
||||
boolean (*_new_section_hook) PARAMS ((bfd *, sec_ptr));
|
||||
bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
|
||||
/* Read the contents of a section. */
|
||||
boolean (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR,
|
||||
file_ptr, bfd_size_type));
|
||||
boolean (*_bfd_get_section_contents_in_window)
|
||||
PARAMS ((bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type));
|
||||
bfd_boolean (*_bfd_get_section_contents)
|
||||
(bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
|
||||
bfd_boolean (*_bfd_get_section_contents_in_window)
|
||||
(bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
|
||||
|
||||
/* Entry points to copy private data. */
|
||||
#define BFD_JUMP_TABLE_COPY(NAME) \
|
||||
CONCAT2 (NAME,_bfd_copy_private_bfd_data), \
|
||||
CONCAT2 (NAME,_bfd_merge_private_bfd_data), \
|
||||
CONCAT2 (NAME,_bfd_copy_private_section_data), \
|
||||
CONCAT2 (NAME,_bfd_copy_private_symbol_data), \
|
||||
CONCAT2 (NAME,_bfd_set_private_flags), \
|
||||
CONCAT2 (NAME,_bfd_print_private_bfd_data) \
|
||||
NAME##_bfd_copy_private_bfd_data, \
|
||||
NAME##_bfd_merge_private_bfd_data, \
|
||||
NAME##_bfd_copy_private_section_data, \
|
||||
NAME##_bfd_copy_private_symbol_data, \
|
||||
NAME##_bfd_set_private_flags, \
|
||||
NAME##_bfd_print_private_bfd_data
|
||||
|
||||
/* Called to copy BFD general private data from one object file
|
||||
to another. */
|
||||
boolean (*_bfd_copy_private_bfd_data) PARAMS ((bfd *, bfd *));
|
||||
bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
|
||||
/* Called to merge BFD general private data from one object file
|
||||
to a common output file when linking. */
|
||||
boolean (*_bfd_merge_private_bfd_data) PARAMS ((bfd *, bfd *));
|
||||
bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
|
||||
/* Called to copy BFD private section data from one object file
|
||||
to another. */
|
||||
boolean (*_bfd_copy_private_section_data) PARAMS ((bfd *, sec_ptr,
|
||||
bfd *, sec_ptr));
|
||||
bfd_boolean (*_bfd_copy_private_section_data)
|
||||
(bfd *, sec_ptr, bfd *, sec_ptr);
|
||||
/* Called to copy BFD private symbol data from one symbol
|
||||
to another. */
|
||||
boolean (*_bfd_copy_private_symbol_data) PARAMS ((bfd *, asymbol *,
|
||||
bfd *, asymbol *));
|
||||
bfd_boolean (*_bfd_copy_private_symbol_data)
|
||||
(bfd *, asymbol *, bfd *, asymbol *);
|
||||
/* Called to set private backend flags. */
|
||||
boolean (*_bfd_set_private_flags) PARAMS ((bfd *, flagword));
|
||||
bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
|
||||
|
||||
/* Called to print private BFD data. */
|
||||
boolean (*_bfd_print_private_bfd_data) PARAMS ((bfd *, PTR));
|
||||
bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
|
||||
|
||||
/* Core file entry points. */
|
||||
#define BFD_JUMP_TABLE_CORE(NAME) \
|
||||
CONCAT2 (NAME,_core_file_failing_command), \
|
||||
CONCAT2 (NAME,_core_file_failing_signal), \
|
||||
CONCAT2 (NAME,_core_file_matches_executable_p)
|
||||
char * (*_core_file_failing_command) PARAMS ((bfd *));
|
||||
int (*_core_file_failing_signal) PARAMS ((bfd *));
|
||||
boolean (*_core_file_matches_executable_p) PARAMS ((bfd *, bfd *));
|
||||
NAME##_core_file_failing_command, \
|
||||
NAME##_core_file_failing_signal, \
|
||||
NAME##_core_file_matches_executable_p
|
||||
|
||||
char * (*_core_file_failing_command) (bfd *);
|
||||
int (*_core_file_failing_signal) (bfd *);
|
||||
bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
|
||||
|
||||
/* Archive entry points. */
|
||||
#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
|
||||
CONCAT2 (NAME,_slurp_armap), \
|
||||
CONCAT2 (NAME,_slurp_extended_name_table), \
|
||||
CONCAT2 (NAME,_construct_extended_name_table), \
|
||||
CONCAT2 (NAME,_truncate_arname), \
|
||||
CONCAT2 (NAME,_write_armap), \
|
||||
CONCAT2 (NAME,_read_ar_hdr), \
|
||||
CONCAT2 (NAME,_openr_next_archived_file), \
|
||||
CONCAT2 (NAME,_get_elt_at_index), \
|
||||
CONCAT2 (NAME,_generic_stat_arch_elt), \
|
||||
CONCAT2 (NAME,_update_armap_timestamp)
|
||||
boolean (*_bfd_slurp_armap) PARAMS ((bfd *));
|
||||
boolean (*_bfd_slurp_extended_name_table) PARAMS ((bfd *));
|
||||
boolean (*_bfd_construct_extended_name_table)
|
||||
PARAMS ((bfd *, char **, bfd_size_type *, const char **));
|
||||
void (*_bfd_truncate_arname) PARAMS ((bfd *, const char *, char *));
|
||||
boolean (*write_armap)
|
||||
PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int));
|
||||
PTR (*_bfd_read_ar_hdr_fn) PARAMS ((bfd *));
|
||||
bfd * (*openr_next_archived_file) PARAMS ((bfd *, bfd *));
|
||||
#define bfd_get_elt_at_index(b,i) BFD_SEND(b, _bfd_get_elt_at_index, (b,i))
|
||||
bfd * (*_bfd_get_elt_at_index) PARAMS ((bfd *, symindex));
|
||||
int (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *));
|
||||
boolean (*_bfd_update_armap_timestamp) PARAMS ((bfd *));
|
||||
NAME##_slurp_armap, \
|
||||
NAME##_slurp_extended_name_table, \
|
||||
NAME##_construct_extended_name_table, \
|
||||
NAME##_truncate_arname, \
|
||||
NAME##_write_armap, \
|
||||
NAME##_read_ar_hdr, \
|
||||
NAME##_openr_next_archived_file, \
|
||||
NAME##_get_elt_at_index, \
|
||||
NAME##_generic_stat_arch_elt, \
|
||||
NAME##_update_armap_timestamp
|
||||
|
||||
bfd_boolean (*_bfd_slurp_armap) (bfd *);
|
||||
bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
|
||||
bfd_boolean (*_bfd_construct_extended_name_table)
|
||||
(bfd *, char **, bfd_size_type *, const char **);
|
||||
void (*_bfd_truncate_arname) (bfd *, const char *, char *);
|
||||
bfd_boolean (*write_armap)
|
||||
(bfd *, unsigned int, struct orl *, unsigned int, int);
|
||||
void * (*_bfd_read_ar_hdr_fn) (bfd *);
|
||||
bfd * (*openr_next_archived_file) (bfd *, bfd *);
|
||||
#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
|
||||
bfd * (*_bfd_get_elt_at_index) (bfd *, symindex);
|
||||
int (*_bfd_stat_arch_elt) (bfd *, struct stat *);
|
||||
bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
|
||||
|
||||
/* Entry points used for symbols. */
|
||||
#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
|
||||
CONCAT2 (NAME,_get_symtab_upper_bound), \
|
||||
CONCAT2 (NAME,_get_symtab), \
|
||||
CONCAT2 (NAME,_make_empty_symbol), \
|
||||
CONCAT2 (NAME,_print_symbol), \
|
||||
CONCAT2 (NAME,_get_symbol_info), \
|
||||
CONCAT2 (NAME,_bfd_is_local_label_name), \
|
||||
CONCAT2 (NAME,_get_lineno), \
|
||||
CONCAT2 (NAME,_find_nearest_line), \
|
||||
CONCAT2 (NAME,_bfd_make_debug_symbol), \
|
||||
CONCAT2 (NAME,_read_minisymbols), \
|
||||
CONCAT2 (NAME,_minisymbol_to_symbol)
|
||||
long (*_bfd_get_symtab_upper_bound) PARAMS ((bfd *));
|
||||
long (*_bfd_canonicalize_symtab) PARAMS ((bfd *,
|
||||
struct symbol_cache_entry **));
|
||||
struct symbol_cache_entry *
|
||||
(*_bfd_make_empty_symbol) PARAMS ((bfd *));
|
||||
void (*_bfd_print_symbol) PARAMS ((bfd *, PTR,
|
||||
struct symbol_cache_entry *,
|
||||
bfd_print_symbol_type));
|
||||
#define bfd_print_symbol(b,p,s,e) BFD_SEND(b, _bfd_print_symbol, (b,p,s,e))
|
||||
void (*_bfd_get_symbol_info) PARAMS ((bfd *,
|
||||
struct symbol_cache_entry *,
|
||||
symbol_info *));
|
||||
#define bfd_get_symbol_info(b,p,e) BFD_SEND(b, _bfd_get_symbol_info, (b,p,e))
|
||||
boolean (*_bfd_is_local_label_name) PARAMS ((bfd *, const char *));
|
||||
NAME##_get_symtab_upper_bound, \
|
||||
NAME##_canonicalize_symtab, \
|
||||
NAME##_make_empty_symbol, \
|
||||
NAME##_print_symbol, \
|
||||
NAME##_get_symbol_info, \
|
||||
NAME##_bfd_is_local_label_name, \
|
||||
NAME##_get_lineno, \
|
||||
NAME##_find_nearest_line, \
|
||||
NAME##_bfd_make_debug_symbol, \
|
||||
NAME##_read_minisymbols, \
|
||||
NAME##_minisymbol_to_symbol
|
||||
|
||||
alent * (*_get_lineno) PARAMS ((bfd *, struct symbol_cache_entry *));
|
||||
boolean (*_bfd_find_nearest_line)
|
||||
PARAMS ((bfd *, struct sec *, struct symbol_cache_entry **, bfd_vma,
|
||||
const char **, const char **, unsigned int *));
|
||||
long (*_bfd_get_symtab_upper_bound) (bfd *);
|
||||
long (*_bfd_canonicalize_symtab)
|
||||
(bfd *, struct bfd_symbol **);
|
||||
struct bfd_symbol *
|
||||
(*_bfd_make_empty_symbol) (bfd *);
|
||||
void (*_bfd_print_symbol)
|
||||
(bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
|
||||
#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
|
||||
void (*_bfd_get_symbol_info)
|
||||
(bfd *, struct bfd_symbol *, symbol_info *);
|
||||
#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
|
||||
bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
|
||||
|
||||
alent * (*_get_lineno) (bfd *, struct bfd_symbol *);
|
||||
bfd_boolean (*_bfd_find_nearest_line)
|
||||
(bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
|
||||
const char **, const char **, unsigned int *);
|
||||
/* Back-door to allow format-aware applications to create debug symbols
|
||||
while using BFD for everything else. Currently used by the assembler
|
||||
when creating COFF files. */
|
||||
asymbol *(*_bfd_make_debug_symbol) PARAMS ((bfd *, void *,
|
||||
unsigned long size));
|
||||
asymbol * (*_bfd_make_debug_symbol)
|
||||
(bfd *, void *, unsigned long size);
|
||||
#define bfd_read_minisymbols(b, d, m, s) \
|
||||
BFD_SEND (b, _read_minisymbols, (b, d, m, s))
|
||||
long (*_read_minisymbols) PARAMS ((bfd *, boolean, PTR *,
|
||||
unsigned int *));
|
||||
long (*_read_minisymbols)
|
||||
(bfd *, bfd_boolean, void **, unsigned int *);
|
||||
#define bfd_minisymbol_to_symbol(b, d, m, f) \
|
||||
BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
|
||||
asymbol *(*_minisymbol_to_symbol) PARAMS ((bfd *, boolean, const PTR,
|
||||
asymbol *));
|
||||
asymbol * (*_minisymbol_to_symbol)
|
||||
(bfd *, bfd_boolean, const void *, asymbol *);
|
||||
|
||||
/* Routines for relocs. */
|
||||
#define BFD_JUMP_TABLE_RELOCS(NAME) \
|
||||
CONCAT2 (NAME,_get_reloc_upper_bound), \
|
||||
CONCAT2 (NAME,_canonicalize_reloc), \
|
||||
CONCAT2 (NAME,_bfd_reloc_type_lookup)
|
||||
long (*_get_reloc_upper_bound) PARAMS ((bfd *, sec_ptr));
|
||||
long (*_bfd_canonicalize_reloc) PARAMS ((bfd *, sec_ptr, arelent **,
|
||||
struct symbol_cache_entry **));
|
||||
NAME##_get_reloc_upper_bound, \
|
||||
NAME##_canonicalize_reloc, \
|
||||
NAME##_bfd_reloc_type_lookup
|
||||
|
||||
long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
|
||||
long (*_bfd_canonicalize_reloc)
|
||||
(bfd *, sec_ptr, arelent **, struct bfd_symbol **);
|
||||
/* See documentation on reloc types. */
|
||||
reloc_howto_type *
|
||||
(*reloc_type_lookup) PARAMS ((bfd *, bfd_reloc_code_real_type));
|
||||
(*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
|
||||
|
||||
/* Routines used when writing an object file. */
|
||||
#define BFD_JUMP_TABLE_WRITE(NAME) \
|
||||
CONCAT2 (NAME,_set_arch_mach), \
|
||||
CONCAT2 (NAME,_set_section_contents)
|
||||
boolean (*_bfd_set_arch_mach) PARAMS ((bfd *, enum bfd_architecture,
|
||||
unsigned long));
|
||||
boolean (*_bfd_set_section_contents) PARAMS ((bfd *, sec_ptr, PTR,
|
||||
file_ptr, bfd_size_type));
|
||||
NAME##_set_arch_mach, \
|
||||
NAME##_set_section_contents
|
||||
|
||||
bfd_boolean (*_bfd_set_arch_mach)
|
||||
(bfd *, enum bfd_architecture, unsigned long);
|
||||
bfd_boolean (*_bfd_set_section_contents)
|
||||
(bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
|
||||
|
||||
/* Routines used by the linker. */
|
||||
#define BFD_JUMP_TABLE_LINK(NAME) \
|
||||
CONCAT2 (NAME,_sizeof_headers), \
|
||||
CONCAT2 (NAME,_bfd_get_relocated_section_contents), \
|
||||
CONCAT2 (NAME,_bfd_relax_section), \
|
||||
CONCAT2 (NAME,_bfd_link_hash_table_create), \
|
||||
CONCAT2 (NAME,_bfd_link_hash_table_free), \
|
||||
CONCAT2 (NAME,_bfd_link_add_symbols), \
|
||||
CONCAT2 (NAME,_bfd_link_just_syms), \
|
||||
CONCAT2 (NAME,_bfd_final_link), \
|
||||
CONCAT2 (NAME,_bfd_link_split_section), \
|
||||
CONCAT2 (NAME,_bfd_gc_sections), \
|
||||
CONCAT2 (NAME,_bfd_merge_sections), \
|
||||
CONCAT2 (NAME,_bfd_discard_group)
|
||||
int (*_bfd_sizeof_headers) PARAMS ((bfd *, boolean));
|
||||
bfd_byte *(*_bfd_get_relocated_section_contents)
|
||||
PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *,
|
||||
bfd_byte *, boolean, struct symbol_cache_entry **));
|
||||
NAME##_sizeof_headers, \
|
||||
NAME##_bfd_get_relocated_section_contents, \
|
||||
NAME##_bfd_relax_section, \
|
||||
NAME##_bfd_link_hash_table_create, \
|
||||
NAME##_bfd_link_hash_table_free, \
|
||||
NAME##_bfd_link_add_symbols, \
|
||||
NAME##_bfd_link_just_syms, \
|
||||
NAME##_bfd_final_link, \
|
||||
NAME##_bfd_link_split_section, \
|
||||
NAME##_bfd_gc_sections, \
|
||||
NAME##_bfd_merge_sections, \
|
||||
NAME##_bfd_discard_group
|
||||
|
||||
boolean (*_bfd_relax_section)
|
||||
PARAMS ((bfd *, struct sec *, struct bfd_link_info *, boolean *));
|
||||
int (*_bfd_sizeof_headers) (bfd *, bfd_boolean);
|
||||
bfd_byte * (*_bfd_get_relocated_section_contents)
|
||||
(bfd *, struct bfd_link_info *, struct bfd_link_order *,
|
||||
bfd_byte *, bfd_boolean, struct bfd_symbol **);
|
||||
|
||||
bfd_boolean (*_bfd_relax_section)
|
||||
(bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
|
||||
|
||||
/* Create a hash table for the linker. Different backends store
|
||||
different information in this table. */
|
||||
struct bfd_link_hash_table *(*_bfd_link_hash_table_create) PARAMS ((bfd *));
|
||||
struct bfd_link_hash_table *
|
||||
(*_bfd_link_hash_table_create) (bfd *);
|
||||
|
||||
/* Release the memory associated with the linker hash table. */
|
||||
void (*_bfd_link_hash_table_free) PARAMS ((struct bfd_link_hash_table *));
|
||||
void (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
|
||||
|
||||
/* Add symbols from this object file into the hash table. */
|
||||
boolean (*_bfd_link_add_symbols) PARAMS ((bfd *, struct bfd_link_info *));
|
||||
bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
|
||||
|
||||
/* Indicate that we are only retrieving symbol values from this section. */
|
||||
void (*_bfd_link_just_syms) PARAMS ((asection *, struct bfd_link_info *));
|
||||
void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
|
||||
|
||||
/* Do a link based on the link_order structures attached to each
|
||||
section of the BFD. */
|
||||
boolean (*_bfd_final_link) PARAMS ((bfd *, struct bfd_link_info *));
|
||||
bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
|
||||
|
||||
/* Should this section be split up into smaller pieces during linking. */
|
||||
boolean (*_bfd_link_split_section) PARAMS ((bfd *, struct sec *));
|
||||
bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
|
||||
|
||||
/* Remove sections that are not referenced from the output. */
|
||||
boolean (*_bfd_gc_sections) PARAMS ((bfd *, struct bfd_link_info *));
|
||||
bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
|
||||
|
||||
/* Attempt to merge SEC_MERGE sections. */
|
||||
boolean (*_bfd_merge_sections) PARAMS ((bfd *, struct bfd_link_info *));
|
||||
bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
|
||||
|
||||
/* Discard members of a group. */
|
||||
boolean (*_bfd_discard_group) PARAMS ((bfd *, struct sec *));
|
||||
bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
|
||||
|
||||
/* Routines to handle dynamic symbols and relocs. */
|
||||
#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
|
||||
CONCAT2 (NAME,_get_dynamic_symtab_upper_bound), \
|
||||
CONCAT2 (NAME,_canonicalize_dynamic_symtab), \
|
||||
CONCAT2 (NAME,_get_dynamic_reloc_upper_bound), \
|
||||
CONCAT2 (NAME,_canonicalize_dynamic_reloc)
|
||||
NAME##_get_dynamic_symtab_upper_bound, \
|
||||
NAME##_canonicalize_dynamic_symtab, \
|
||||
NAME##_get_dynamic_reloc_upper_bound, \
|
||||
NAME##_canonicalize_dynamic_reloc
|
||||
|
||||
/* Get the amount of memory required to hold the dynamic symbols. */
|
||||
long (*_bfd_get_dynamic_symtab_upper_bound) PARAMS ((bfd *));
|
||||
long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
|
||||
/* Read in the dynamic symbols. */
|
||||
long (*_bfd_canonicalize_dynamic_symtab)
|
||||
PARAMS ((bfd *, struct symbol_cache_entry **));
|
||||
long (*_bfd_canonicalize_dynamic_symtab)
|
||||
(bfd *, struct bfd_symbol **);
|
||||
/* Get the amount of memory required to hold the dynamic relocs. */
|
||||
long (*_bfd_get_dynamic_reloc_upper_bound) PARAMS ((bfd *));
|
||||
long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
|
||||
/* Read in the dynamic relocs. */
|
||||
long (*_bfd_canonicalize_dynamic_reloc)
|
||||
PARAMS ((bfd *, arelent **, struct symbol_cache_entry **));
|
||||
long (*_bfd_canonicalize_dynamic_reloc)
|
||||
(bfd *, arelent **, struct bfd_symbol **);
|
||||
|
||||
@end example
|
||||
A pointer to an alternative bfd_target in case the current one is not
|
||||
@@ -449,7 +455,7 @@ to find an alternative output format that is suitable.
|
||||
|
||||
/* Data for use by back-end routines, which isn't
|
||||
generic enough to belong in this structure. */
|
||||
PTR backend_data;
|
||||
const void *backend_data;
|
||||
|
||||
@} bfd_target;
|
||||
|
||||
@@ -459,7 +465,7 @@ to find an alternative output format that is suitable.
|
||||
@subsubsection @code{bfd_set_default_target}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
boolean bfd_set_default_target (const char *name);
|
||||
bfd_boolean bfd_set_default_target (const char *name);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Set the default target vector to use when recognizing a BFD.
|
||||
@@ -470,7 +476,7 @@ name or a configuration triplet.
|
||||
@subsubsection @code{bfd_find_target}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
const bfd_target *bfd_find_target(const char *target_name, bfd *abfd);
|
||||
const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return a pointer to the transfer vector for the object target
|
||||
@@ -487,7 +493,7 @@ targets to find the one that matches the file being read.
|
||||
@subsubsection @code{bfd_target_list}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
const char **bfd_target_list(void);
|
||||
const char ** bfd_target_list (void);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return a freshly malloced NULL-terminated
|
||||
@@ -498,7 +504,9 @@ modify the names.
|
||||
@subsubsection @code{bfd_seach_for_target}
|
||||
@strong{Synopsis}
|
||||
@example
|
||||
const bfd_target * bfd_search_for_target (int (* search_func) (const bfd_target *, void *), void *);
|
||||
const bfd_target *bfd_search_for_target
|
||||
(int (*search_func) (const bfd_target *, void *),
|
||||
void *);
|
||||
@end example
|
||||
@strong{Description}@*
|
||||
Return a pointer to the first transfer vector in the list of
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* DWARF 1 find nearest line (_bfd_dwarf1_find_nearest_line).
|
||||
Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
Written by Gavin Romig-Koch of Cygnus Solutions (gavin@cygnus.com).
|
||||
|
||||
@@ -126,15 +126,17 @@ struct linenumber {
|
||||
/* Find the form of an attr, from the attr field. */
|
||||
#define FORM_FROM_ATTR(attr) ((attr) & 0xF) /* Implicitly specified */
|
||||
|
||||
static struct dwarf1_unit *alloc_dwarf1_unit PARAMS ((struct dwarf1_debug *));
|
||||
static struct dwarf1_unit *alloc_dwarf1_unit
|
||||
PARAMS ((struct dwarf1_debug *));
|
||||
static struct dwarf1_func *alloc_dwarf1_func
|
||||
PARAMS ((struct dwarf1_debug *, struct dwarf1_unit *));
|
||||
static boolean parse_die PARAMS ((bfd *, struct die_info *, char *, char *));
|
||||
static boolean parse_line_table
|
||||
static bfd_boolean parse_die
|
||||
PARAMS ((bfd *, struct die_info *, char *, char *));
|
||||
static bfd_boolean parse_line_table
|
||||
PARAMS ((struct dwarf1_debug *, struct dwarf1_unit *));
|
||||
static boolean parse_functions_in_unit
|
||||
static bfd_boolean parse_functions_in_unit
|
||||
PARAMS ((struct dwarf1_debug *, struct dwarf1_unit *));
|
||||
static boolean dwarf1_unit_find_nearest_line
|
||||
static bfd_boolean dwarf1_unit_find_nearest_line
|
||||
PARAMS ((struct dwarf1_debug *, struct dwarf1_unit *, unsigned long,
|
||||
const char **, const char **, unsigned int *));
|
||||
|
||||
@@ -176,9 +178,9 @@ alloc_dwarf1_func (stash, aUnit)
|
||||
'abfd' must be the bfd from which the section that 'aDiePtr'
|
||||
points to was pulled from.
|
||||
|
||||
Return false if the die is invalidly formatted; true otherwise. */
|
||||
Return FALSE if the die is invalidly formatted; TRUE otherwise. */
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
parse_die (abfd, aDieInfo, aDiePtr, aDiePtrEnd)
|
||||
bfd* abfd;
|
||||
struct die_info* aDieInfo;
|
||||
@@ -195,12 +197,12 @@ parse_die (abfd, aDieInfo, aDiePtr, aDiePtrEnd)
|
||||
xptr += 4;
|
||||
if (aDieInfo->length == 0
|
||||
|| (this_die + aDieInfo->length) >= aDiePtrEnd)
|
||||
return false;
|
||||
return FALSE;
|
||||
if (aDieInfo->length < 6)
|
||||
{
|
||||
/* Just padding bytes. */
|
||||
aDieInfo->tag = TAG_padding;
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Then the tag. */
|
||||
@@ -259,14 +261,14 @@ parse_die (abfd, aDieInfo, aDiePtr, aDiePtrEnd)
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Parse a dwarf1 line number table for 'aUnit->stmt_list_offset'
|
||||
into 'aUnit->linenumber_table'. Return false if an error
|
||||
occurs; true otherwise. */
|
||||
into 'aUnit->linenumber_table'. Return FALSE if an error
|
||||
occurs; TRUE otherwise. */
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
parse_line_table (stash, aUnit)
|
||||
struct dwarf1_debug* stash;
|
||||
struct dwarf1_unit* aUnit;
|
||||
@@ -281,19 +283,19 @@ parse_line_table (stash, aUnit)
|
||||
|
||||
msec = bfd_get_section_by_name (stash->abfd, ".line");
|
||||
if (! msec)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
size = bfd_get_section_size_before_reloc (msec);
|
||||
stash->line_section = (char *) bfd_alloc (stash->abfd, size);
|
||||
|
||||
if (! stash->line_section)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
if (! bfd_get_section_contents (stash->abfd, msec, stash->line_section,
|
||||
(bfd_vma) 0, size))
|
||||
{
|
||||
stash->line_section = 0;
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
stash->line_section_end = stash->line_section + size;
|
||||
@@ -341,15 +343,15 @@ parse_line_table (stash, aUnit)
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Parse each function die in a compilation unit 'aUnit'.
|
||||
The first child die of 'aUnit' should be in 'aUnit->first_child',
|
||||
the result is placed in 'aUnit->func_list'.
|
||||
Return false if error; true otherwise. */
|
||||
Return FALSE if error; TRUE otherwise. */
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
parse_functions_in_unit (stash, aUnit)
|
||||
struct dwarf1_debug* stash;
|
||||
struct dwarf1_unit* aUnit;
|
||||
@@ -365,7 +367,7 @@ parse_functions_in_unit (stash, aUnit)
|
||||
|
||||
if (! parse_die (stash->abfd, &eachDieInfo, eachDie,
|
||||
stash->debug_section_end))
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
if (eachDieInfo.tag == TAG_global_subroutine
|
||||
|| eachDieInfo.tag == TAG_subroutine
|
||||
@@ -386,13 +388,13 @@ parse_functions_in_unit (stash, aUnit)
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Find the nearest line to 'addr' in 'aUnit'.
|
||||
Return whether we found the line (or a function) without error. */
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
dwarf1_unit_find_nearest_line (stash, aUnit, addr,
|
||||
filename_ptr, functionname_ptr,
|
||||
linenumber_ptr)
|
||||
@@ -403,8 +405,8 @@ dwarf1_unit_find_nearest_line (stash, aUnit, addr,
|
||||
const char **functionname_ptr;
|
||||
unsigned int *linenumber_ptr;
|
||||
{
|
||||
int line_p = false;
|
||||
int func_p = false;
|
||||
int line_p = FALSE;
|
||||
int func_p = FALSE;
|
||||
|
||||
if (aUnit->low_pc <= addr && addr < aUnit->high_pc)
|
||||
{
|
||||
@@ -416,13 +418,13 @@ dwarf1_unit_find_nearest_line (stash, aUnit, addr,
|
||||
if (! aUnit->linenumber_table)
|
||||
{
|
||||
if (! parse_line_table (stash, aUnit))
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (! aUnit->func_list)
|
||||
{
|
||||
if (! parse_functions_in_unit (stash, aUnit))
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
for (i = 0; i < aUnit->line_count; i++)
|
||||
@@ -432,7 +434,7 @@ dwarf1_unit_find_nearest_line (stash, aUnit, addr,
|
||||
{
|
||||
*filename_ptr = aUnit->name;
|
||||
*linenumber_ptr = aUnit->linenumber_table[i].linenumber;
|
||||
line_p = true;
|
||||
line_p = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -445,7 +447,7 @@ dwarf1_unit_find_nearest_line (stash, aUnit, addr,
|
||||
&& addr < eachFunc->high_pc)
|
||||
{
|
||||
*functionname_ptr = eachFunc->name;
|
||||
func_p = true;
|
||||
func_p = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -456,9 +458,9 @@ dwarf1_unit_find_nearest_line (stash, aUnit, addr,
|
||||
}
|
||||
|
||||
/* The DWARF 1 version of find_nearest line.
|
||||
Return true if the line is found without error. */
|
||||
Return TRUE if the line is found without error. */
|
||||
|
||||
boolean
|
||||
bfd_boolean
|
||||
_bfd_dwarf1_find_nearest_line (abfd, section, symbols, offset,
|
||||
filename_ptr, functionname_ptr, linenumber_ptr)
|
||||
bfd *abfd;
|
||||
@@ -489,7 +491,7 @@ _bfd_dwarf1_find_nearest_line (abfd, section, symbols, offset,
|
||||
= (struct dwarf1_debug *) bfd_zalloc (abfd, size);
|
||||
|
||||
if (! stash)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
msec = bfd_get_section_by_name (abfd, ".debug");
|
||||
if (! msec)
|
||||
@@ -497,20 +499,20 @@ _bfd_dwarf1_find_nearest_line (abfd, section, symbols, offset,
|
||||
/* No dwarf1 info. Note that at this point the stash
|
||||
has been allocated, but contains zeros, this lets
|
||||
future calls to this function fail quicker. */
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
size = bfd_get_section_size_before_reloc (msec);
|
||||
stash->debug_section = (char *) bfd_alloc (abfd, size);
|
||||
|
||||
if (! stash->debug_section)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
if (! bfd_get_section_contents (abfd, msec, stash->debug_section,
|
||||
(bfd_vma) 0, size))
|
||||
{
|
||||
stash->debug_section = 0;
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
stash->debug_section_end = stash->debug_section + size;
|
||||
@@ -522,7 +524,7 @@ _bfd_dwarf1_find_nearest_line (abfd, section, symbols, offset,
|
||||
or that an error occured while setting up the stash. */
|
||||
|
||||
if (! stash->debug_section)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
/* Look at the previously parsed units to see if any contain
|
||||
the addr. */
|
||||
@@ -541,7 +543,7 @@ _bfd_dwarf1_find_nearest_line (abfd, section, symbols, offset,
|
||||
|
||||
if (! parse_die (stash->abfd, &aDieInfo, stash->currentDie,
|
||||
stash->debug_section_end))
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
if (aDieInfo.tag == TAG_compile_unit)
|
||||
{
|
||||
@@ -578,7 +580,7 @@ _bfd_dwarf1_find_nearest_line (abfd, section, symbols, offset,
|
||||
stash->currentDie += aDieInfo.length;
|
||||
}
|
||||
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
||||
+266
-447
File diff suppressed because it is too large
Load Diff
+269
-252
File diff suppressed because it is too large
Load Diff
+301
-191
File diff suppressed because it is too large
Load Diff
+132
-103
@@ -1,23 +1,23 @@
|
||||
/* Generic ECOFF swapping routines, for BFD.
|
||||
Copyright 1992, 1993, 1994, 1995, 1996, 2000, 2001
|
||||
Copyright 1992, 1993, 1994, 1995, 1996, 2000, 2001, 2002
|
||||
Free Software Foundation, Inc.
|
||||
Written by Cygnus Support.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
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 2 of the License, or
|
||||
(at your option) any later version.
|
||||
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 2 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.
|
||||
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* NOTE: This is a header file, but it contains executable routines.
|
||||
This is done this way because these routines are substantially
|
||||
@@ -220,7 +220,7 @@ ecoff_swap_fdr_in (abfd, ext_copy, intern)
|
||||
intern->rfdBase = H_GET_32 (abfd, ext->f_rfdBase);
|
||||
intern->crfd = H_GET_32 (abfd, ext->f_crfd);
|
||||
|
||||
/* now the fun stuff... */
|
||||
/* Now the fun stuff... */
|
||||
if (bfd_header_big_endian (abfd))
|
||||
{
|
||||
intern->lang = ((ext->f_bits1[0] & FDR_BITS1_LANG_BIG)
|
||||
@@ -263,7 +263,8 @@ ecoff_swap_fdr_out (abfd, intern_copy, ext_ptr)
|
||||
struct fdr_ext *ext = (struct fdr_ext *) ext_ptr;
|
||||
FDR intern[1];
|
||||
|
||||
*intern = *intern_copy; /* Make it reasonable to do in-place. */
|
||||
/* Make it reasonable to do in-place. */
|
||||
*intern = *intern_copy;
|
||||
|
||||
ECOFF_PUT_OFF (abfd, intern->adr, ext->f_adr);
|
||||
H_PUT_32 (abfd, intern->rss, ext->f_rss);
|
||||
@@ -288,7 +289,7 @@ ecoff_swap_fdr_out (abfd, intern_copy, ext_ptr)
|
||||
H_PUT_32 (abfd, intern->rfdBase, ext->f_rfdBase);
|
||||
H_PUT_32 (abfd, intern->crfd, ext->f_crfd);
|
||||
|
||||
/* now the fun stuff... */
|
||||
/* Now the fun stuff... */
|
||||
if (bfd_header_big_endian (abfd))
|
||||
{
|
||||
ext->f_bits1[0] = (((intern->lang << FDR_BITS1_LANG_SH_BIG)
|
||||
@@ -355,6 +356,11 @@ ecoff_swap_pdr_in (abfd, ext_copy, intern)
|
||||
intern->cbLineOffset = ECOFF_GET_OFF (abfd, ext->p_cbLineOffset);
|
||||
|
||||
#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
|
||||
if (intern->isym == (signed long) 0xffffffff)
|
||||
intern->isym = -1;
|
||||
if (intern->iline == (signed long) 0xffffffff)
|
||||
intern->iline = -1;
|
||||
|
||||
intern->gp_prologue = H_GET_8 (abfd, ext->p_gp_prologue);
|
||||
if (bfd_header_big_endian (abfd))
|
||||
{
|
||||
@@ -396,7 +402,8 @@ ecoff_swap_pdr_out (abfd, intern_copy, ext_ptr)
|
||||
struct pdr_ext *ext = (struct pdr_ext *) ext_ptr;
|
||||
PDR intern[1];
|
||||
|
||||
*intern = *intern_copy; /* Make it reasonable to do in-place. */
|
||||
/* Make it reasonable to do in-place. */
|
||||
*intern = *intern_copy;
|
||||
|
||||
ECOFF_PUT_OFF (abfd, intern->adr, ext->p_adr);
|
||||
H_PUT_32 (abfd, intern->isym, ext->p_isym);
|
||||
@@ -494,7 +501,8 @@ ecoff_swap_pdr_out (abfd, intern_copy, ext_ptr)
|
||||
struct pdr_ext *ext = (struct pdr_ext *) ext_ptr;
|
||||
PDR intern[1];
|
||||
|
||||
*intern = *intern_copy; /* Make it reasonable to do in-place. */
|
||||
/* Make it reasonable to do in-place. */
|
||||
*intern = *intern_copy;
|
||||
|
||||
ECOFF_PUT_OFF (abfd, intern->adr, ext->p_adr);
|
||||
H_PUT_32 (abfd, intern->isym, ext->p_isym);
|
||||
@@ -533,33 +541,41 @@ ecoff_swap_sym_in (abfd, ext_copy, intern)
|
||||
intern->iss = H_GET_32 (abfd, ext->s_iss);
|
||||
intern->value = ECOFF_GET_OFF (abfd, ext->s_value);
|
||||
|
||||
/* now the fun stuff... */
|
||||
if (bfd_header_big_endian (abfd)) {
|
||||
intern->st = (ext->s_bits1[0] & SYM_BITS1_ST_BIG)
|
||||
>> SYM_BITS1_ST_SH_BIG;
|
||||
intern->sc = ((ext->s_bits1[0] & SYM_BITS1_SC_BIG)
|
||||
<< SYM_BITS1_SC_SH_LEFT_BIG)
|
||||
| ((ext->s_bits2[0] & SYM_BITS2_SC_BIG)
|
||||
>> SYM_BITS2_SC_SH_BIG);
|
||||
intern->reserved = 0 != (ext->s_bits2[0] & SYM_BITS2_RESERVED_BIG);
|
||||
intern->index = ((ext->s_bits2[0] & SYM_BITS2_INDEX_BIG)
|
||||
<< SYM_BITS2_INDEX_SH_LEFT_BIG)
|
||||
| (ext->s_bits3[0] << SYM_BITS3_INDEX_SH_LEFT_BIG)
|
||||
| (ext->s_bits4[0] << SYM_BITS4_INDEX_SH_LEFT_BIG);
|
||||
} else {
|
||||
intern->st = (ext->s_bits1[0] & SYM_BITS1_ST_LITTLE)
|
||||
>> SYM_BITS1_ST_SH_LITTLE;
|
||||
intern->sc = ((ext->s_bits1[0] & SYM_BITS1_SC_LITTLE)
|
||||
>> SYM_BITS1_SC_SH_LITTLE)
|
||||
| ((ext->s_bits2[0] & SYM_BITS2_SC_LITTLE)
|
||||
<< SYM_BITS2_SC_SH_LEFT_LITTLE);
|
||||
intern->reserved = 0 != (ext->s_bits2[0] & SYM_BITS2_RESERVED_LITTLE);
|
||||
intern->index = ((ext->s_bits2[0] & SYM_BITS2_INDEX_LITTLE)
|
||||
>> SYM_BITS2_INDEX_SH_LITTLE)
|
||||
| (ext->s_bits3[0] << SYM_BITS3_INDEX_SH_LEFT_LITTLE)
|
||||
| ((unsigned int) ext->s_bits4[0]
|
||||
<< SYM_BITS4_INDEX_SH_LEFT_LITTLE);
|
||||
}
|
||||
#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
|
||||
if (intern->iss == (signed long) 0xffffffff)
|
||||
intern->iss = -1;
|
||||
#endif
|
||||
|
||||
/* Now the fun stuff... */
|
||||
if (bfd_header_big_endian (abfd))
|
||||
{
|
||||
intern->st = (ext->s_bits1[0] & SYM_BITS1_ST_BIG)
|
||||
>> SYM_BITS1_ST_SH_BIG;
|
||||
intern->sc = ((ext->s_bits1[0] & SYM_BITS1_SC_BIG)
|
||||
<< SYM_BITS1_SC_SH_LEFT_BIG)
|
||||
| ((ext->s_bits2[0] & SYM_BITS2_SC_BIG)
|
||||
>> SYM_BITS2_SC_SH_BIG);
|
||||
intern->reserved = 0 != (ext->s_bits2[0] & SYM_BITS2_RESERVED_BIG);
|
||||
intern->index = ((ext->s_bits2[0] & SYM_BITS2_INDEX_BIG)
|
||||
<< SYM_BITS2_INDEX_SH_LEFT_BIG)
|
||||
| (ext->s_bits3[0] << SYM_BITS3_INDEX_SH_LEFT_BIG)
|
||||
| (ext->s_bits4[0] << SYM_BITS4_INDEX_SH_LEFT_BIG);
|
||||
}
|
||||
else
|
||||
{
|
||||
intern->st = (ext->s_bits1[0] & SYM_BITS1_ST_LITTLE)
|
||||
>> SYM_BITS1_ST_SH_LITTLE;
|
||||
intern->sc = ((ext->s_bits1[0] & SYM_BITS1_SC_LITTLE)
|
||||
>> SYM_BITS1_SC_SH_LITTLE)
|
||||
| ((ext->s_bits2[0] & SYM_BITS2_SC_LITTLE)
|
||||
<< SYM_BITS2_SC_SH_LEFT_LITTLE);
|
||||
intern->reserved = 0 != (ext->s_bits2[0] & SYM_BITS2_RESERVED_LITTLE);
|
||||
intern->index = ((ext->s_bits2[0] & SYM_BITS2_INDEX_LITTLE)
|
||||
>> SYM_BITS2_INDEX_SH_LITTLE)
|
||||
| (ext->s_bits3[0] << SYM_BITS3_INDEX_SH_LEFT_LITTLE)
|
||||
| ((unsigned int) ext->s_bits4[0]
|
||||
<< SYM_BITS4_INDEX_SH_LEFT_LITTLE);
|
||||
}
|
||||
|
||||
#ifdef TEST
|
||||
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
|
||||
@@ -578,37 +594,41 @@ ecoff_swap_sym_out (abfd, intern_copy, ext_ptr)
|
||||
struct sym_ext *ext = (struct sym_ext *) ext_ptr;
|
||||
SYMR intern[1];
|
||||
|
||||
*intern = *intern_copy; /* Make it reasonable to do in-place. */
|
||||
/* Make it reasonable to do in-place. */
|
||||
*intern = *intern_copy;
|
||||
|
||||
H_PUT_32 (abfd, intern->iss, ext->s_iss);
|
||||
ECOFF_PUT_OFF (abfd, intern->value, ext->s_value);
|
||||
|
||||
/* now the fun stuff... */
|
||||
if (bfd_header_big_endian (abfd)) {
|
||||
ext->s_bits1[0] = (((intern->st << SYM_BITS1_ST_SH_BIG)
|
||||
& SYM_BITS1_ST_BIG)
|
||||
| ((intern->sc >> SYM_BITS1_SC_SH_LEFT_BIG)
|
||||
& SYM_BITS1_SC_BIG));
|
||||
ext->s_bits2[0] = (((intern->sc << SYM_BITS2_SC_SH_BIG)
|
||||
& SYM_BITS2_SC_BIG)
|
||||
| (intern->reserved ? SYM_BITS2_RESERVED_BIG : 0)
|
||||
| ((intern->index >> SYM_BITS2_INDEX_SH_LEFT_BIG)
|
||||
& SYM_BITS2_INDEX_BIG));
|
||||
ext->s_bits3[0] = (intern->index >> SYM_BITS3_INDEX_SH_LEFT_BIG) & 0xff;
|
||||
ext->s_bits4[0] = (intern->index >> SYM_BITS4_INDEX_SH_LEFT_BIG) & 0xff;
|
||||
} else {
|
||||
ext->s_bits1[0] = (((intern->st << SYM_BITS1_ST_SH_LITTLE)
|
||||
& SYM_BITS1_ST_LITTLE)
|
||||
| ((intern->sc << SYM_BITS1_SC_SH_LITTLE)
|
||||
& SYM_BITS1_SC_LITTLE));
|
||||
ext->s_bits2[0] = (((intern->sc >> SYM_BITS2_SC_SH_LEFT_LITTLE)
|
||||
& SYM_BITS2_SC_LITTLE)
|
||||
| (intern->reserved ? SYM_BITS2_RESERVED_LITTLE : 0)
|
||||
| ((intern->index << SYM_BITS2_INDEX_SH_LITTLE)
|
||||
& SYM_BITS2_INDEX_LITTLE));
|
||||
ext->s_bits3[0] = (intern->index >> SYM_BITS3_INDEX_SH_LEFT_LITTLE) & 0xff;
|
||||
ext->s_bits4[0] = (intern->index >> SYM_BITS4_INDEX_SH_LEFT_LITTLE) & 0xff;
|
||||
}
|
||||
/* Now the fun stuff... */
|
||||
if (bfd_header_big_endian (abfd))
|
||||
{
|
||||
ext->s_bits1[0] = (((intern->st << SYM_BITS1_ST_SH_BIG)
|
||||
& SYM_BITS1_ST_BIG)
|
||||
| ((intern->sc >> SYM_BITS1_SC_SH_LEFT_BIG)
|
||||
& SYM_BITS1_SC_BIG));
|
||||
ext->s_bits2[0] = (((intern->sc << SYM_BITS2_SC_SH_BIG)
|
||||
& SYM_BITS2_SC_BIG)
|
||||
| (intern->reserved ? SYM_BITS2_RESERVED_BIG : 0)
|
||||
| ((intern->index >> SYM_BITS2_INDEX_SH_LEFT_BIG)
|
||||
& SYM_BITS2_INDEX_BIG));
|
||||
ext->s_bits3[0] = (intern->index >> SYM_BITS3_INDEX_SH_LEFT_BIG) & 0xff;
|
||||
ext->s_bits4[0] = (intern->index >> SYM_BITS4_INDEX_SH_LEFT_BIG) & 0xff;
|
||||
}
|
||||
else
|
||||
{
|
||||
ext->s_bits1[0] = (((intern->st << SYM_BITS1_ST_SH_LITTLE)
|
||||
& SYM_BITS1_ST_LITTLE)
|
||||
| ((intern->sc << SYM_BITS1_SC_SH_LITTLE)
|
||||
& SYM_BITS1_SC_LITTLE));
|
||||
ext->s_bits2[0] = (((intern->sc >> SYM_BITS2_SC_SH_LEFT_LITTLE)
|
||||
& SYM_BITS2_SC_LITTLE)
|
||||
| (intern->reserved ? SYM_BITS2_RESERVED_LITTLE : 0)
|
||||
| ((intern->index << SYM_BITS2_INDEX_SH_LITTLE)
|
||||
& SYM_BITS2_INDEX_LITTLE));
|
||||
ext->s_bits3[0] = (intern->index >> SYM_BITS3_INDEX_SH_LEFT_LITTLE) & 0xff;
|
||||
ext->s_bits4[0] = (intern->index >> SYM_BITS4_INDEX_SH_LEFT_LITTLE) & 0xff;
|
||||
}
|
||||
|
||||
#ifdef TEST
|
||||
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
|
||||
@@ -628,23 +648,26 @@ ecoff_swap_ext_in (abfd, ext_copy, intern)
|
||||
|
||||
*ext = *(struct ext_ext *) ext_copy;
|
||||
|
||||
/* now the fun stuff... */
|
||||
if (bfd_header_big_endian (abfd)) {
|
||||
intern->jmptbl = 0 != (ext->es_bits1[0] & EXT_BITS1_JMPTBL_BIG);
|
||||
intern->cobol_main = 0 != (ext->es_bits1[0] & EXT_BITS1_COBOL_MAIN_BIG);
|
||||
intern->weakext = 0 != (ext->es_bits1[0] & EXT_BITS1_WEAKEXT_BIG);
|
||||
} else {
|
||||
intern->jmptbl = 0 != (ext->es_bits1[0] & EXT_BITS1_JMPTBL_LITTLE);
|
||||
intern->cobol_main = 0 != (ext->es_bits1[0] & EXT_BITS1_COBOL_MAIN_LITTLE);
|
||||
intern->weakext = 0 != (ext->es_bits1[0] & EXT_BITS1_WEAKEXT_LITTLE);
|
||||
}
|
||||
/* Now the fun stuff... */
|
||||
if (bfd_header_big_endian (abfd))
|
||||
{
|
||||
intern->jmptbl = 0 != (ext->es_bits1[0] & EXT_BITS1_JMPTBL_BIG);
|
||||
intern->cobol_main = 0 != (ext->es_bits1[0] & EXT_BITS1_COBOL_MAIN_BIG);
|
||||
intern->weakext = 0 != (ext->es_bits1[0] & EXT_BITS1_WEAKEXT_BIG);
|
||||
}
|
||||
else
|
||||
{
|
||||
intern->jmptbl = 0 != (ext->es_bits1[0] & EXT_BITS1_JMPTBL_LITTLE);
|
||||
intern->cobol_main = 0 != (ext->es_bits1[0] & EXT_BITS1_COBOL_MAIN_LITTLE);
|
||||
intern->weakext = 0 != (ext->es_bits1[0] & EXT_BITS1_WEAKEXT_LITTLE);
|
||||
}
|
||||
intern->reserved = 0;
|
||||
|
||||
#if defined (ECOFF_32) || defined (ECOFF_SIGNED_32)
|
||||
intern->ifd = H_GET_S16 (abfd, ext->es_ifd);
|
||||
intern->ifd = H_GET_S16 (abfd, ext->es_ifd);
|
||||
#endif
|
||||
#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
|
||||
intern->ifd = H_GET_S32 (abfd, ext->es_ifd);
|
||||
intern->ifd = H_GET_S32 (abfd, ext->es_ifd);
|
||||
#endif
|
||||
|
||||
ecoff_swap_sym_in (abfd, &ext->es_asym, &intern->asym);
|
||||
@@ -666,28 +689,32 @@ ecoff_swap_ext_out (abfd, intern_copy, ext_ptr)
|
||||
struct ext_ext *ext = (struct ext_ext *) ext_ptr;
|
||||
EXTR intern[1];
|
||||
|
||||
*intern = *intern_copy; /* Make it reasonable to do in-place. */
|
||||
/* Make it reasonable to do in-place. */
|
||||
*intern = *intern_copy;
|
||||
|
||||
/* now the fun stuff... */
|
||||
if (bfd_header_big_endian (abfd)) {
|
||||
ext->es_bits1[0] = ((intern->jmptbl ? EXT_BITS1_JMPTBL_BIG : 0)
|
||||
| (intern->cobol_main ? EXT_BITS1_COBOL_MAIN_BIG : 0)
|
||||
| (intern->weakext ? EXT_BITS1_WEAKEXT_BIG : 0));
|
||||
ext->es_bits2[0] = 0;
|
||||
/* Now the fun stuff... */
|
||||
if (bfd_header_big_endian (abfd))
|
||||
{
|
||||
ext->es_bits1[0] = ((intern->jmptbl ? EXT_BITS1_JMPTBL_BIG : 0)
|
||||
| (intern->cobol_main ? EXT_BITS1_COBOL_MAIN_BIG : 0)
|
||||
| (intern->weakext ? EXT_BITS1_WEAKEXT_BIG : 0));
|
||||
ext->es_bits2[0] = 0;
|
||||
#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
|
||||
ext->es_bits2[1] = 0;
|
||||
ext->es_bits2[2] = 0;
|
||||
ext->es_bits2[1] = 0;
|
||||
ext->es_bits2[2] = 0;
|
||||
#endif
|
||||
} else {
|
||||
ext->es_bits1[0] = ((intern->jmptbl ? EXT_BITS1_JMPTBL_LITTLE : 0)
|
||||
| (intern->cobol_main ? EXT_BITS1_COBOL_MAIN_LITTLE : 0)
|
||||
| (intern->weakext ? EXT_BITS1_WEAKEXT_LITTLE : 0));
|
||||
ext->es_bits2[0] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ext->es_bits1[0] = ((intern->jmptbl ? EXT_BITS1_JMPTBL_LITTLE : 0)
|
||||
| (intern->cobol_main ? EXT_BITS1_COBOL_MAIN_LITTLE : 0)
|
||||
| (intern->weakext ? EXT_BITS1_WEAKEXT_LITTLE : 0));
|
||||
ext->es_bits2[0] = 0;
|
||||
#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
|
||||
ext->es_bits2[1] = 0;
|
||||
ext->es_bits2[2] = 0;
|
||||
ext->es_bits2[1] = 0;
|
||||
ext->es_bits2[2] = 0;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#if defined (ECOFF_32) || defined (ECOFF_SIGNED_32)
|
||||
H_PUT_S16 (abfd, intern->ifd, ext->es_ifd);
|
||||
@@ -792,7 +819,8 @@ ecoff_swap_opt_out (abfd, intern_copy, ext_ptr)
|
||||
struct opt_ext *ext = (struct opt_ext *) ext_ptr;
|
||||
OPTR intern[1];
|
||||
|
||||
*intern = *intern_copy; /* Make it reasonable to do in-place. */
|
||||
/* Make it reasonable to do in-place. */
|
||||
*intern = *intern_copy;
|
||||
|
||||
if (bfd_header_big_endian (abfd))
|
||||
{
|
||||
@@ -852,7 +880,8 @@ ecoff_swap_dnr_out (abfd, intern_copy, ext_ptr)
|
||||
struct dnr_ext *ext = (struct dnr_ext *) ext_ptr;
|
||||
DNR intern[1];
|
||||
|
||||
*intern = *intern_copy; /* Make it reasonable to do in-place. */
|
||||
/* Make it reasonable to do in-place. */
|
||||
*intern = *intern_copy;
|
||||
|
||||
H_PUT_32 (abfd, intern->rfd, ext->d_rfd);
|
||||
H_PUT_32 (abfd, intern->index, ext->d_index);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* BFD back-end for Intel IA-32 EFI application files.
|
||||
Copyright 1999, 2000 Free Software Foundation, Inc.
|
||||
Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
Contributed by David Mosberger <davidm@hpl.hp.com>
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@@ -25,7 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
#define TARGET_NAME "efi-app-ia32"
|
||||
#define COFF_IMAGE_WITH_PE
|
||||
#define COFF_WITH_PE
|
||||
#define PCRELOFFSET true
|
||||
#define PCRELOFFSET TRUE
|
||||
#define TARGET_UNDERSCORE '_'
|
||||
#define COFF_LONG_SECTION_NAMES
|
||||
#define PEI_TARGET_SUBSYSTEM IMAGE_SUBSYSTEM_EFI_APPLICATION
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* BFD back-end for HP/Intel IA-64 EFI application files.
|
||||
Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
Contributed by David Mosberger <davidm@hpl.hp.com>
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@@ -26,7 +26,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
#define COFF_IMAGE_WITH_PE
|
||||
#define COFF_WITH_PE
|
||||
#define COFF_WITH_pep
|
||||
#define PCRELOFFSET true
|
||||
#define PCRELOFFSET TRUE
|
||||
#define TARGET_UNDERSCORE '_'
|
||||
#define COFF_LONG_SECTION_NAMES
|
||||
#define PEI_TARGET_SUBSYSTEM IMAGE_SUBSYSTEM_EFI_APPLICATION
|
||||
|
||||
+754
-600
File diff suppressed because it is too large
Load Diff
+264
-285
@@ -1,22 +1,22 @@
|
||||
/* .eh_frame section optimization.
|
||||
Copyright 2001, 2002 Free Software Foundation, Inc.
|
||||
Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
Written by Jakub Jelinek <jakub@redhat.com>.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
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 2 of the License, or
|
||||
(at your option) any later version.
|
||||
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 2 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.
|
||||
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include "bfd.h"
|
||||
#include "sysdep.h"
|
||||
@@ -26,129 +26,44 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#define EH_FRAME_HDR_SIZE 8
|
||||
|
||||
struct cie_header
|
||||
{
|
||||
unsigned int length;
|
||||
unsigned int id;
|
||||
};
|
||||
|
||||
struct cie
|
||||
{
|
||||
struct cie_header hdr;
|
||||
unsigned char version;
|
||||
unsigned char augmentation[20];
|
||||
unsigned int code_align;
|
||||
int data_align;
|
||||
unsigned int ra_column;
|
||||
unsigned int augmentation_size;
|
||||
struct elf_link_hash_entry *personality;
|
||||
unsigned char per_encoding;
|
||||
unsigned char lsda_encoding;
|
||||
unsigned char fde_encoding;
|
||||
unsigned char initial_insn_length;
|
||||
unsigned char make_relative;
|
||||
unsigned char make_lsda_relative;
|
||||
unsigned char initial_instructions[50];
|
||||
};
|
||||
|
||||
struct eh_cie_fde
|
||||
{
|
||||
unsigned int offset;
|
||||
unsigned int size;
|
||||
asection *sec;
|
||||
unsigned int new_offset;
|
||||
unsigned char fde_encoding;
|
||||
unsigned char lsda_encoding;
|
||||
unsigned char lsda_offset;
|
||||
unsigned char cie : 1;
|
||||
unsigned char removed : 1;
|
||||
unsigned char make_relative : 1;
|
||||
unsigned char make_lsda_relative : 1;
|
||||
unsigned char per_encoding_relative : 1;
|
||||
};
|
||||
|
||||
struct eh_frame_sec_info
|
||||
{
|
||||
unsigned int count;
|
||||
unsigned int alloced;
|
||||
struct eh_cie_fde entry[1];
|
||||
};
|
||||
|
||||
struct eh_frame_array_ent
|
||||
{
|
||||
bfd_vma initial_loc;
|
||||
bfd_vma fde;
|
||||
};
|
||||
|
||||
struct eh_frame_hdr_info
|
||||
{
|
||||
struct cie last_cie;
|
||||
asection *last_cie_sec;
|
||||
unsigned int last_cie_offset;
|
||||
unsigned int fde_count, array_count;
|
||||
struct eh_frame_array_ent *array;
|
||||
/* TRUE if .eh_frame_hdr should contain the sorted search table.
|
||||
We build it if we successfully read all .eh_frame input sections
|
||||
and recognize them. */
|
||||
boolean table;
|
||||
boolean strip;
|
||||
};
|
||||
|
||||
static bfd_vma read_unsigned_leb128
|
||||
PARAMS ((bfd *, char *, unsigned int *));
|
||||
static bfd_signed_vma read_signed_leb128
|
||||
PARAMS ((bfd *, char *, unsigned int *));
|
||||
static int get_DW_EH_PE_width
|
||||
PARAMS ((int, int));
|
||||
static bfd_vma read_value
|
||||
PARAMS ((bfd *, bfd_byte *, int));
|
||||
static void write_value
|
||||
PARAMS ((bfd *, bfd_byte *, bfd_vma, int));
|
||||
static int cie_compare
|
||||
PARAMS ((struct cie *, struct cie *));
|
||||
static int vma_compare
|
||||
PARAMS ((const PTR a, const PTR b));
|
||||
|
||||
/* Helper function for reading uleb128 encoded data. */
|
||||
|
||||
static bfd_vma
|
||||
read_unsigned_leb128 (abfd, buf, bytes_read_ptr)
|
||||
bfd *abfd ATTRIBUTE_UNUSED;
|
||||
char *buf;
|
||||
unsigned int *bytes_read_ptr;
|
||||
read_unsigned_leb128 (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
char *buf,
|
||||
unsigned int *bytes_read_ptr)
|
||||
{
|
||||
bfd_vma result;
|
||||
unsigned int num_read;
|
||||
int shift;
|
||||
bfd_vma result;
|
||||
unsigned int num_read;
|
||||
int shift;
|
||||
unsigned char byte;
|
||||
|
||||
result = 0;
|
||||
shift = 0;
|
||||
result = 0;
|
||||
shift = 0;
|
||||
num_read = 0;
|
||||
do
|
||||
{
|
||||
byte = bfd_get_8 (abfd, (bfd_byte *) buf);
|
||||
buf ++;
|
||||
num_read ++;
|
||||
buf++;
|
||||
num_read++;
|
||||
result |= (((bfd_vma) byte & 0x7f) << shift);
|
||||
shift += 7;
|
||||
}
|
||||
while (byte & 0x80);
|
||||
* bytes_read_ptr = num_read;
|
||||
*bytes_read_ptr = num_read;
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Helper function for reading sleb128 encoded data. */
|
||||
|
||||
static bfd_signed_vma
|
||||
read_signed_leb128 (abfd, buf, bytes_read_ptr)
|
||||
bfd *abfd ATTRIBUTE_UNUSED;
|
||||
char *buf;
|
||||
unsigned int * bytes_read_ptr;
|
||||
read_signed_leb128 (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
char *buf,
|
||||
unsigned int * bytes_read_ptr)
|
||||
{
|
||||
bfd_vma result;
|
||||
int shift;
|
||||
int num_read;
|
||||
bfd_vma result;
|
||||
int shift;
|
||||
int num_read;
|
||||
unsigned char byte;
|
||||
|
||||
result = 0;
|
||||
@@ -165,7 +80,7 @@ read_signed_leb128 (abfd, buf, bytes_read_ptr)
|
||||
while (byte & 0x80);
|
||||
if (byte & 0x40)
|
||||
result |= (((bfd_vma) -1) << (shift - 7)) << 7;
|
||||
* bytes_read_ptr = num_read;
|
||||
*bytes_read_ptr = num_read;
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -188,8 +103,7 @@ while (0)
|
||||
/* Return 0 if either encoding is variable width, or not yet known to bfd. */
|
||||
|
||||
static
|
||||
int get_DW_EH_PE_width (encoding, ptr_size)
|
||||
int encoding, ptr_size;
|
||||
int get_DW_EH_PE_width (int encoding, int ptr_size)
|
||||
{
|
||||
/* DW_EH_PE_ values of 0x60 and 0x70 weren't defined at the time .eh_frame
|
||||
was added to bfd. */
|
||||
@@ -209,35 +123,47 @@ int get_DW_EH_PE_width (encoding, ptr_size)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define get_DW_EH_PE_signed(encoding) (((encoding) & DW_EH_PE_signed) != 0)
|
||||
|
||||
/* Read a width sized value from memory. */
|
||||
|
||||
static bfd_vma
|
||||
read_value (abfd, buf, width)
|
||||
bfd *abfd;
|
||||
bfd_byte *buf;
|
||||
int width;
|
||||
read_value (bfd *abfd, bfd_byte *buf, int width, int is_signed)
|
||||
{
|
||||
bfd_vma value;
|
||||
|
||||
switch (width)
|
||||
{
|
||||
case 2: value = bfd_get_16 (abfd, buf); break;
|
||||
case 4: value = bfd_get_32 (abfd, buf); break;
|
||||
case 8: value = bfd_get_64 (abfd, buf); break;
|
||||
default: BFD_FAIL (); return 0;
|
||||
case 2:
|
||||
if (is_signed)
|
||||
value = bfd_get_signed_16 (abfd, buf);
|
||||
else
|
||||
value = bfd_get_16 (abfd, buf);
|
||||
break;
|
||||
case 4:
|
||||
if (is_signed)
|
||||
value = bfd_get_signed_32 (abfd, buf);
|
||||
else
|
||||
value = bfd_get_32 (abfd, buf);
|
||||
break;
|
||||
case 8:
|
||||
if (is_signed)
|
||||
value = bfd_get_signed_64 (abfd, buf);
|
||||
else
|
||||
value = bfd_get_64 (abfd, buf);
|
||||
break;
|
||||
default:
|
||||
BFD_FAIL ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
/* Store a width sized value to memory. */
|
||||
|
||||
static void
|
||||
write_value (abfd, buf, value, width)
|
||||
bfd *abfd;
|
||||
bfd_byte *buf;
|
||||
bfd_vma value;
|
||||
int width;
|
||||
write_value (bfd *abfd, bfd_byte *buf, bfd_vma value, int width)
|
||||
{
|
||||
switch (width)
|
||||
{
|
||||
@@ -251,8 +177,7 @@ write_value (abfd, buf, value, width)
|
||||
/* Return zero if C1 and C2 CIEs can be merged. */
|
||||
|
||||
static
|
||||
int cie_compare (c1, c2)
|
||||
struct cie *c1, *c2;
|
||||
int cie_compare (struct cie *c1, struct cie *c2)
|
||||
{
|
||||
if (c1->hdr.length == c2->hdr.length
|
||||
&& c1->version == c2->version
|
||||
@@ -266,8 +191,7 @@ int cie_compare (c1, c2)
|
||||
&& c1->per_encoding == c2->per_encoding
|
||||
&& c1->lsda_encoding == c2->lsda_encoding
|
||||
&& c1->fde_encoding == c2->fde_encoding
|
||||
&& (c1->initial_insn_length
|
||||
== c2->initial_insn_length)
|
||||
&& c1->initial_insn_length == c2->initial_insn_length
|
||||
&& memcmp (c1->initial_instructions,
|
||||
c2->initial_instructions,
|
||||
c1->initial_insn_length) == 0)
|
||||
@@ -278,35 +202,32 @@ int cie_compare (c1, c2)
|
||||
|
||||
/* This function is called for each input file before the .eh_frame
|
||||
section is relocated. It discards duplicate CIEs and FDEs for discarded
|
||||
functions. The function returns true iff any entries have been
|
||||
functions. The function returns TRUE iff any entries have been
|
||||
deleted. */
|
||||
|
||||
boolean
|
||||
_bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
|
||||
reloc_symbol_deleted_p, cookie)
|
||||
bfd *abfd;
|
||||
struct bfd_link_info *info;
|
||||
asection *sec, *ehdrsec;
|
||||
boolean (*reloc_symbol_deleted_p) (bfd_vma, PTR);
|
||||
struct elf_reloc_cookie *cookie;
|
||||
bfd_boolean
|
||||
_bfd_elf_discard_section_eh_frame
|
||||
(bfd *abfd, struct bfd_link_info *info, asection *sec,
|
||||
bfd_boolean (*reloc_symbol_deleted_p) (bfd_vma, void *),
|
||||
struct elf_reloc_cookie *cookie)
|
||||
{
|
||||
bfd_byte *ehbuf = NULL, *buf;
|
||||
bfd_byte *last_cie, *last_fde;
|
||||
struct cie_header hdr;
|
||||
struct cie cie;
|
||||
struct elf_link_hash_table *htab;
|
||||
struct eh_frame_hdr_info *hdr_info;
|
||||
struct eh_frame_sec_info *sec_info = NULL;
|
||||
unsigned int leb128_tmp;
|
||||
unsigned int cie_usage_count, last_cie_ndx, i, offset;
|
||||
unsigned int make_relative, make_lsda_relative;
|
||||
Elf_Internal_Rela *rel;
|
||||
bfd_size_type new_size;
|
||||
unsigned int ptr_size;
|
||||
|
||||
if (sec->_raw_size == 0)
|
||||
{
|
||||
/* This file does not contain .eh_frame information. */
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ((sec->output_section != NULL
|
||||
@@ -314,22 +235,19 @@ _bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
|
||||
{
|
||||
/* At least one of the sections is being discarded from the
|
||||
link, so we should just ignore them. */
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BFD_ASSERT (elf_section_data (ehdrsec)->sec_info_type
|
||||
== ELF_INFO_TYPE_EH_FRAME_HDR);
|
||||
hdr_info = (struct eh_frame_hdr_info *)
|
||||
elf_section_data (ehdrsec)->sec_info;
|
||||
htab = elf_hash_table (info);
|
||||
hdr_info = &htab->eh_info;
|
||||
|
||||
/* Read the frame unwind information from abfd. */
|
||||
|
||||
ehbuf = (bfd_byte *) bfd_malloc (sec->_raw_size);
|
||||
ehbuf = bfd_malloc (sec->_raw_size);
|
||||
if (ehbuf == NULL)
|
||||
goto free_no_table;
|
||||
|
||||
if (! bfd_get_section_contents (abfd, sec, ehbuf, (bfd_vma) 0,
|
||||
sec->_raw_size))
|
||||
if (! bfd_get_section_contents (abfd, sec, ehbuf, 0, sec->_raw_size))
|
||||
goto free_no_table;
|
||||
|
||||
if (sec->_raw_size >= 4
|
||||
@@ -338,7 +256,7 @@ _bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
|
||||
{
|
||||
/* Empty .eh_frame section. */
|
||||
free (ehbuf);
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* If .eh_frame section size doesn't fit into int, we cannot handle
|
||||
@@ -365,7 +283,8 @@ _bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
|
||||
#define ENSURE_NO_RELOCS(buf) \
|
||||
if (cookie->rel < cookie->relend \
|
||||
&& (cookie->rel->r_offset \
|
||||
< (bfd_size_type) ((buf) - ehbuf))) \
|
||||
< (bfd_size_type) ((buf) - ehbuf)) \
|
||||
&& cookie->rel->r_info != 0) \
|
||||
goto free_no_table
|
||||
|
||||
#define SKIP_RELOCS(buf) \
|
||||
@@ -448,11 +367,15 @@ _bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
|
||||
/* CIE */
|
||||
if (last_cie != NULL)
|
||||
{
|
||||
/* Now check if this CIE is identical to last CIE, in which case
|
||||
we can remove it, provided we adjust all FDEs.
|
||||
Also, it can be removed if we have removed all FDEs using
|
||||
that. */
|
||||
if (cie_compare (&cie, &hdr_info->last_cie) == 0
|
||||
/* Now check if this CIE is identical to the last CIE,
|
||||
in which case we can remove it provided we adjust
|
||||
all FDEs. Also, it can be removed if we have removed
|
||||
all FDEs using it. */
|
||||
if ((!info->relocatable
|
||||
&& hdr_info->last_cie_sec
|
||||
&& (sec->output_section
|
||||
== hdr_info->last_cie_sec->output_section)
|
||||
&& cie_compare (&cie, &hdr_info->last_cie) == 0)
|
||||
|| cie_usage_count == 0)
|
||||
{
|
||||
new_size -= cie.hdr.length + 4;
|
||||
@@ -506,6 +429,11 @@ _bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
|
||||
}
|
||||
read_uleb128 (cie.code_align, buf);
|
||||
read_sleb128 (cie.data_align, buf);
|
||||
/* Note - in DWARF2 the return address column is an unsigned byte.
|
||||
In DWARF3 it is a ULEB128. We are following DWARF3. For most
|
||||
ports this will not matter as the value will be less than 128.
|
||||
For the others (eg FRV, SH, MMIX, IA64) they need a fixed GCC
|
||||
which conforms to the DWARF3 standard. */
|
||||
read_uleb128 (cie.ra_column, buf);
|
||||
ENSURE_NO_RELOCS (buf);
|
||||
cie.lsda_encoding = DW_EH_PE_omit;
|
||||
@@ -550,10 +478,9 @@ _bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
|
||||
+ ((buf - ehbuf + per_width - 1)
|
||||
& ~((bfd_size_type) per_width - 1)));
|
||||
ENSURE_NO_RELOCS (buf);
|
||||
rel = GET_RELOC (buf);
|
||||
/* Ensure we have a reloc here, against
|
||||
a global symbol. */
|
||||
if (rel != NULL)
|
||||
if (GET_RELOC (buf) != NULL)
|
||||
{
|
||||
unsigned long r_symndx;
|
||||
|
||||
@@ -591,10 +518,16 @@ _bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
|
||||
/* For shared libraries, try to get rid of as many RELATIVE relocs
|
||||
as possible. */
|
||||
if (info->shared
|
||||
&& (get_elf_backend_data (abfd)
|
||||
->elf_backend_can_make_relative_eh_frame
|
||||
(abfd, info, sec))
|
||||
&& (cie.fde_encoding & 0xf0) == DW_EH_PE_absptr)
|
||||
cie.make_relative = 1;
|
||||
|
||||
if (info->shared
|
||||
&& (get_elf_backend_data (abfd)
|
||||
->elf_backend_can_make_lsda_relative_eh_frame
|
||||
(abfd, info, sec))
|
||||
&& (cie.lsda_encoding & 0xf0) == DW_EH_PE_absptr)
|
||||
cie.make_lsda_relative = 1;
|
||||
|
||||
@@ -621,17 +554,15 @@ _bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
|
||||
goto free_no_table;
|
||||
|
||||
ENSURE_NO_RELOCS (buf);
|
||||
rel = GET_RELOC (buf);
|
||||
if (rel == NULL)
|
||||
if (GET_RELOC (buf) == NULL)
|
||||
/* This should not happen. */
|
||||
goto free_no_table;
|
||||
if ((*reloc_symbol_deleted_p) (buf - ehbuf, cookie))
|
||||
{
|
||||
/* This is a FDE against discarded section, it should
|
||||
/* This is a FDE against a discarded section. It should
|
||||
be deleted. */
|
||||
new_size -= hdr.length + 4;
|
||||
sec_info->entry[sec_info->count].removed = 1;
|
||||
memset (rel, 0, sizeof (*rel));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -640,16 +571,15 @@ _bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
|
||||
&& cie.make_relative == 0)
|
||||
|| (cie.fde_encoding & 0xf0) == DW_EH_PE_aligned))
|
||||
{
|
||||
/* If shared library uses absolute pointers
|
||||
/* If a shared library uses absolute pointers
|
||||
which we cannot turn into PC relative,
|
||||
don't create the binary search table,
|
||||
since it is affected by runtime relocations. */
|
||||
hdr_info->table = false;
|
||||
hdr_info->table = FALSE;
|
||||
}
|
||||
cie_usage_count++;
|
||||
hdr_info->fde_count++;
|
||||
}
|
||||
cookie->rel = rel;
|
||||
if (cie.lsda_encoding != DW_EH_PE_omit)
|
||||
{
|
||||
unsigned int dummy;
|
||||
@@ -672,7 +602,7 @@ _bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
|
||||
}
|
||||
|
||||
elf_section_data (sec)->sec_info = sec_info;
|
||||
elf_section_data (sec)->sec_info_type = ELF_INFO_TYPE_EH_FRAME;
|
||||
sec->sec_info_type = ELF_INFO_TYPE_EH_FRAME;
|
||||
|
||||
/* Ok, now we can assign new offsets. */
|
||||
offset = 0;
|
||||
@@ -730,47 +660,36 @@ _bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec,
|
||||
free (ehbuf);
|
||||
if (sec_info)
|
||||
free (sec_info);
|
||||
hdr_info->table = false;
|
||||
hdr_info->table = FALSE;
|
||||
hdr_info->last_cie.hdr.length = 0;
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* This function is called for .eh_frame_hdr section after
|
||||
_bfd_elf_discard_section_eh_frame has been called on all .eh_frame
|
||||
input sections. It finalizes the size of .eh_frame_hdr section. */
|
||||
|
||||
boolean
|
||||
_bfd_elf_discard_section_eh_frame_hdr (abfd, info, sec)
|
||||
bfd *abfd;
|
||||
struct bfd_link_info *info;
|
||||
asection *sec;
|
||||
bfd_boolean
|
||||
_bfd_elf_discard_section_eh_frame_hdr (bfd *abfd, struct bfd_link_info *info)
|
||||
{
|
||||
struct elf_link_hash_table *htab;
|
||||
struct eh_frame_hdr_info *hdr_info;
|
||||
unsigned int ptr_size;
|
||||
asection *sec;
|
||||
|
||||
ptr_size = (elf_elfheader (abfd)->e_ident[EI_CLASS]
|
||||
== ELFCLASS64) ? 8 : 4;
|
||||
htab = elf_hash_table (info);
|
||||
hdr_info = &htab->eh_info;
|
||||
sec = hdr_info->hdr_sec;
|
||||
if (sec == NULL)
|
||||
return FALSE;
|
||||
|
||||
if ((elf_section_data (sec)->sec_info_type
|
||||
!= ELF_INFO_TYPE_EH_FRAME_HDR)
|
||||
|| ! info->eh_frame_hdr)
|
||||
{
|
||||
_bfd_strip_section_from_output (info, sec);
|
||||
return false;
|
||||
}
|
||||
|
||||
hdr_info = (struct eh_frame_hdr_info *)
|
||||
elf_section_data (sec)->sec_info;
|
||||
if (hdr_info->strip)
|
||||
return false;
|
||||
sec->_cooked_size = EH_FRAME_HDR_SIZE;
|
||||
if (hdr_info->table)
|
||||
sec->_cooked_size += 4 + hdr_info->fde_count * 8;
|
||||
|
||||
/* Request program headers to be recalculated. */
|
||||
elf_tdata (abfd)->program_header_size = 0;
|
||||
elf_tdata (abfd)->eh_frame_hdr = true;
|
||||
return true;
|
||||
elf_tdata (abfd)->eh_frame_hdr = sec;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* This function is called from size_dynamic_sections.
|
||||
@@ -778,25 +697,24 @@ _bfd_elf_discard_section_eh_frame_hdr (abfd, info, sec)
|
||||
because later on it is too late for calling _bfd_strip_section_from_output,
|
||||
since dynamic symbol table has been sized. */
|
||||
|
||||
boolean
|
||||
_bfd_elf_maybe_strip_eh_frame_hdr (info)
|
||||
struct bfd_link_info *info;
|
||||
bfd_boolean
|
||||
_bfd_elf_maybe_strip_eh_frame_hdr (struct bfd_link_info *info)
|
||||
{
|
||||
asection *sec, *o;
|
||||
asection *o;
|
||||
bfd *abfd;
|
||||
struct elf_link_hash_table *htab;
|
||||
struct eh_frame_hdr_info *hdr_info;
|
||||
|
||||
sec = bfd_get_section_by_name (elf_hash_table (info)->dynobj, ".eh_frame_hdr");
|
||||
if (sec == NULL || bfd_is_abs_section (sec->output_section))
|
||||
return true;
|
||||
htab = elf_hash_table (info);
|
||||
hdr_info = &htab->eh_info;
|
||||
if (hdr_info->hdr_sec == NULL)
|
||||
return TRUE;
|
||||
|
||||
hdr_info
|
||||
= bfd_zmalloc (sizeof (struct eh_frame_hdr_info));
|
||||
if (hdr_info == NULL)
|
||||
return false;
|
||||
|
||||
elf_section_data (sec)->sec_info = hdr_info;
|
||||
elf_section_data (sec)->sec_info_type = ELF_INFO_TYPE_EH_FRAME_HDR;
|
||||
if (bfd_is_abs_section (hdr_info->hdr_sec->output_section))
|
||||
{
|
||||
hdr_info->hdr_sec = NULL;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
abfd = NULL;
|
||||
if (info->eh_frame_hdr)
|
||||
@@ -811,12 +729,13 @@ _bfd_elf_maybe_strip_eh_frame_hdr (info)
|
||||
|
||||
if (abfd == NULL)
|
||||
{
|
||||
_bfd_strip_section_from_output (info, sec);
|
||||
hdr_info->strip = true;
|
||||
_bfd_strip_section_from_output (info, hdr_info->hdr_sec);
|
||||
hdr_info->hdr_sec = NULL;
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
hdr_info->table = true;
|
||||
return true;
|
||||
|
||||
hdr_info->table = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Adjust an address in the .eh_frame section. Given OFFSET within
|
||||
@@ -825,18 +744,16 @@ _bfd_elf_maybe_strip_eh_frame_hdr (info)
|
||||
or to offset with dynamic relocation which is no longer needed. */
|
||||
|
||||
bfd_vma
|
||||
_bfd_elf_eh_frame_section_offset (output_bfd, sec, offset)
|
||||
bfd *output_bfd ATTRIBUTE_UNUSED;
|
||||
asection *sec;
|
||||
bfd_vma offset;
|
||||
_bfd_elf_eh_frame_section_offset (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
asection *sec,
|
||||
bfd_vma offset)
|
||||
{
|
||||
struct eh_frame_sec_info *sec_info;
|
||||
unsigned int lo, hi, mid;
|
||||
|
||||
if (elf_section_data (sec)->sec_info_type != ELF_INFO_TYPE_EH_FRAME)
|
||||
if (sec->sec_info_type != ELF_INFO_TYPE_EH_FRAME)
|
||||
return offset;
|
||||
sec_info = (struct eh_frame_sec_info *)
|
||||
elf_section_data (sec)->sec_info;
|
||||
sec_info = elf_section_data (sec)->sec_info;
|
||||
|
||||
if (offset >= sec->_raw_size)
|
||||
return offset - (sec->_cooked_size - sec->_raw_size);
|
||||
@@ -873,9 +790,8 @@ _bfd_elf_eh_frame_section_offset (output_bfd, sec, offset)
|
||||
for run-time relocation against LSDA field. */
|
||||
if (sec_info->entry[mid].make_lsda_relative
|
||||
&& ! sec_info->entry[mid].cie
|
||||
&& (offset
|
||||
== (sec_info->entry[mid].offset + 8
|
||||
+ sec_info->entry[mid].lsda_offset)))
|
||||
&& (offset == (sec_info->entry[mid].offset + 8
|
||||
+ sec_info->entry[mid].lsda_offset)))
|
||||
return (bfd_vma) -2;
|
||||
|
||||
return (offset + sec_info->entry[mid].new_offset
|
||||
@@ -885,13 +801,14 @@ _bfd_elf_eh_frame_section_offset (output_bfd, sec, offset)
|
||||
/* Write out .eh_frame section. This is called with the relocated
|
||||
contents. */
|
||||
|
||||
boolean
|
||||
_bfd_elf_write_section_eh_frame (abfd, sec, ehdrsec, contents)
|
||||
bfd *abfd;
|
||||
asection *sec, *ehdrsec;
|
||||
bfd_byte *contents;
|
||||
bfd_boolean
|
||||
_bfd_elf_write_section_eh_frame (bfd *abfd,
|
||||
struct bfd_link_info *info,
|
||||
asection *sec,
|
||||
bfd_byte *contents)
|
||||
{
|
||||
struct eh_frame_sec_info *sec_info;
|
||||
struct elf_link_hash_table *htab;
|
||||
struct eh_frame_hdr_info *hdr_info;
|
||||
unsigned int i;
|
||||
bfd_byte *p, *buf;
|
||||
@@ -902,26 +819,17 @@ _bfd_elf_write_section_eh_frame (abfd, sec, ehdrsec, contents)
|
||||
ptr_size = (elf_elfheader (sec->owner)->e_ident[EI_CLASS]
|
||||
== ELFCLASS64) ? 8 : 4;
|
||||
|
||||
if (elf_section_data (sec)->sec_info_type != ELF_INFO_TYPE_EH_FRAME)
|
||||
return bfd_set_section_contents (abfd, sec->output_section,
|
||||
contents,
|
||||
(file_ptr) sec->output_offset,
|
||||
sec->_raw_size);
|
||||
sec_info = (struct eh_frame_sec_info *)
|
||||
elf_section_data (sec)->sec_info;
|
||||
hdr_info = NULL;
|
||||
if (ehdrsec
|
||||
&& (elf_section_data (ehdrsec)->sec_info_type
|
||||
== ELF_INFO_TYPE_EH_FRAME_HDR))
|
||||
{
|
||||
hdr_info = (struct eh_frame_hdr_info *)
|
||||
elf_section_data (ehdrsec)->sec_info;
|
||||
if (hdr_info->table && hdr_info->array == NULL)
|
||||
hdr_info->array
|
||||
= bfd_malloc (hdr_info->fde_count * sizeof(*hdr_info->array));
|
||||
if (hdr_info->array == NULL)
|
||||
hdr_info = NULL;
|
||||
}
|
||||
if (sec->sec_info_type != ELF_INFO_TYPE_EH_FRAME)
|
||||
return bfd_set_section_contents (abfd, sec->output_section, contents,
|
||||
sec->output_offset, sec->_raw_size);
|
||||
sec_info = elf_section_data (sec)->sec_info;
|
||||
htab = elf_hash_table (info);
|
||||
hdr_info = &htab->eh_info;
|
||||
if (hdr_info->table && hdr_info->array == NULL)
|
||||
hdr_info->array
|
||||
= bfd_malloc (hdr_info->fde_count * sizeof(*hdr_info->array));
|
||||
if (hdr_info->array == NULL)
|
||||
hdr_info = NULL;
|
||||
|
||||
p = contents;
|
||||
for (i = 0; i < sec_info->count; ++i)
|
||||
@@ -1005,7 +913,9 @@ _bfd_elf_write_section_eh_frame (abfd, sec, ehdrsec, contents)
|
||||
{
|
||||
bfd_vma value;
|
||||
|
||||
value = read_value (abfd, buf, per_width);
|
||||
value = read_value (abfd, buf, per_width,
|
||||
get_DW_EH_PE_signed
|
||||
(per_encoding));
|
||||
value += (sec_info->entry[i].offset
|
||||
- sec_info->entry[i].new_offset);
|
||||
write_value (abfd, buf, value, per_width);
|
||||
@@ -1034,14 +944,16 @@ _bfd_elf_write_section_eh_frame (abfd, sec, ehdrsec, contents)
|
||||
unsigned int width;
|
||||
|
||||
buf = contents + sec_info->entry[i].offset;
|
||||
/* Skip length. */
|
||||
/* Skip length. */
|
||||
buf += 4;
|
||||
bfd_put_32 (abfd,
|
||||
sec_info->entry[i].new_offset + 4 - cie_offset, buf);
|
||||
buf += 4;
|
||||
width = get_DW_EH_PE_width (sec_info->entry[i].fde_encoding,
|
||||
ptr_size);
|
||||
address = value = read_value (abfd, buf, width);
|
||||
address = value = read_value (abfd, buf, width,
|
||||
get_DW_EH_PE_signed
|
||||
(sec_info->entry[i].fde_encoding));
|
||||
if (value)
|
||||
{
|
||||
switch (sec_info->entry[i].fde_encoding & 0xf0)
|
||||
@@ -1085,7 +997,9 @@ _bfd_elf_write_section_eh_frame (abfd, sec, ehdrsec, contents)
|
||||
buf += sec_info->entry[i].lsda_offset;
|
||||
width = get_DW_EH_PE_width (sec_info->entry[i].lsda_encoding,
|
||||
ptr_size);
|
||||
value = read_value (abfd, buf, width);
|
||||
value = read_value (abfd, buf, width,
|
||||
get_DW_EH_PE_signed
|
||||
(sec_info->entry[i].lsda_encoding));
|
||||
if (value)
|
||||
{
|
||||
if ((sec_info->entry[i].lsda_encoding & 0xf0)
|
||||
@@ -1121,6 +1035,42 @@ _bfd_elf_write_section_eh_frame (abfd, sec, ehdrsec, contents)
|
||||
and 3xDW_CFA_nop as pad */
|
||||
p += 16;
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned int alignment = 1 << sec->alignment_power;
|
||||
unsigned int pad = sec->_cooked_size % alignment;
|
||||
|
||||
/* Don't pad beyond the raw size of the output section. It
|
||||
can happen at the last input section. */
|
||||
if (pad
|
||||
&& ((sec->output_offset + sec->_cooked_size + pad)
|
||||
<= sec->output_section->_raw_size))
|
||||
{
|
||||
/* Find the last CIE/FDE. */
|
||||
for (i = sec_info->count - 1; i > 0; i--)
|
||||
if (! sec_info->entry[i].removed)
|
||||
break;
|
||||
|
||||
/* The size of the last CIE/FDE must be at least 4. */
|
||||
if (sec_info->entry[i].removed
|
||||
|| sec_info->entry[i].size < 4)
|
||||
abort ();
|
||||
|
||||
pad = alignment - pad;
|
||||
|
||||
buf = contents + sec_info->entry[i].new_offset;
|
||||
|
||||
/* Update length. */
|
||||
sec_info->entry[i].size += pad;
|
||||
bfd_put_32 (abfd, sec_info->entry[i].size - 4, buf);
|
||||
|
||||
/* Pad it with DW_CFA_nop */
|
||||
memset (p, 0, pad);
|
||||
p += pad;
|
||||
|
||||
sec->_cooked_size += pad;
|
||||
}
|
||||
}
|
||||
|
||||
BFD_ASSERT ((bfd_size_type) (p - contents) == sec->_cooked_size);
|
||||
|
||||
@@ -1133,12 +1083,10 @@ _bfd_elf_write_section_eh_frame (abfd, sec, ehdrsec, contents)
|
||||
VMA of FDE initial location. */
|
||||
|
||||
static int
|
||||
vma_compare (a, b)
|
||||
const PTR a;
|
||||
const PTR b;
|
||||
vma_compare (const void *a, const void *b)
|
||||
{
|
||||
struct eh_frame_array_ent *p = (struct eh_frame_array_ent *) a;
|
||||
struct eh_frame_array_ent *q = (struct eh_frame_array_ent *) b;
|
||||
const struct eh_frame_array_ent *p = a;
|
||||
const struct eh_frame_array_ent *q = b;
|
||||
if (p->initial_loc > q->initial_loc)
|
||||
return 1;
|
||||
if (p->initial_loc < q->initial_loc)
|
||||
@@ -1166,55 +1114,58 @@ vma_compare (a, b)
|
||||
fde_count x [encoded] initial_loc, fde
|
||||
(array of encoded pairs containing
|
||||
FDE initial_location field and FDE address,
|
||||
sorted by increasing initial_loc) */
|
||||
sorted by increasing initial_loc). */
|
||||
|
||||
boolean
|
||||
_bfd_elf_write_section_eh_frame_hdr (abfd, sec)
|
||||
bfd *abfd;
|
||||
asection *sec;
|
||||
bfd_boolean
|
||||
_bfd_elf_write_section_eh_frame_hdr (bfd *abfd, struct bfd_link_info *info)
|
||||
{
|
||||
struct elf_link_hash_table *htab;
|
||||
struct eh_frame_hdr_info *hdr_info;
|
||||
unsigned int ptr_size;
|
||||
asection *sec;
|
||||
bfd_byte *contents;
|
||||
asection *eh_frame_sec;
|
||||
bfd_size_type size;
|
||||
bfd_boolean retval;
|
||||
bfd_vma encoded_eh_frame;
|
||||
|
||||
ptr_size = (elf_elfheader (sec->owner)->e_ident[EI_CLASS]
|
||||
== ELFCLASS64) ? 8 : 4;
|
||||
|
||||
BFD_ASSERT (elf_section_data (sec)->sec_info_type
|
||||
== ELF_INFO_TYPE_EH_FRAME_HDR);
|
||||
hdr_info = (struct eh_frame_hdr_info *)
|
||||
elf_section_data (sec)->sec_info;
|
||||
if (hdr_info->strip)
|
||||
return true;
|
||||
htab = elf_hash_table (info);
|
||||
hdr_info = &htab->eh_info;
|
||||
sec = hdr_info->hdr_sec;
|
||||
if (sec == NULL)
|
||||
return TRUE;
|
||||
|
||||
size = EH_FRAME_HDR_SIZE;
|
||||
if (hdr_info->array && hdr_info->array_count == hdr_info->fde_count)
|
||||
size += 4 + hdr_info->fde_count * 8;
|
||||
contents = bfd_malloc (size);
|
||||
if (contents == NULL)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
eh_frame_sec = bfd_get_section_by_name (abfd, ".eh_frame");
|
||||
if (eh_frame_sec == NULL)
|
||||
return false;
|
||||
{
|
||||
free (contents);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
memset (contents, 0, EH_FRAME_HDR_SIZE);
|
||||
contents[0] = 1; /* Version */
|
||||
contents[1] = DW_EH_PE_pcrel | DW_EH_PE_sdata4; /* .eh_frame offset */
|
||||
contents[0] = 1; /* Version. */
|
||||
contents[1] = get_elf_backend_data (abfd)->elf_backend_encode_eh_address
|
||||
(abfd, info, eh_frame_sec, 0, sec, 4,
|
||||
&encoded_eh_frame); /* .eh_frame offset. */
|
||||
|
||||
if (hdr_info->array && hdr_info->array_count == hdr_info->fde_count)
|
||||
{
|
||||
contents[2] = DW_EH_PE_udata4; /* FDE count encoding */
|
||||
contents[3] = DW_EH_PE_datarel | DW_EH_PE_sdata4; /* search table enc */
|
||||
contents[2] = DW_EH_PE_udata4; /* FDE count encoding. */
|
||||
contents[3] = DW_EH_PE_datarel | DW_EH_PE_sdata4; /* Search table enc. */
|
||||
}
|
||||
else
|
||||
{
|
||||
contents[2] = DW_EH_PE_omit;
|
||||
contents[3] = DW_EH_PE_omit;
|
||||
}
|
||||
bfd_put_32 (abfd, eh_frame_sec->vma - sec->output_section->vma - 4,
|
||||
contents + 4);
|
||||
bfd_put_32 (abfd, encoded_eh_frame, contents + 4);
|
||||
|
||||
if (contents[2] != DW_EH_PE_omit)
|
||||
{
|
||||
unsigned int i;
|
||||
@@ -1234,7 +1185,35 @@ _bfd_elf_write_section_eh_frame_hdr (abfd, sec)
|
||||
}
|
||||
}
|
||||
|
||||
return bfd_set_section_contents (abfd, sec->output_section,
|
||||
contents, (file_ptr) sec->output_offset,
|
||||
sec->_cooked_size);
|
||||
retval = bfd_set_section_contents (abfd, sec->output_section,
|
||||
contents, (file_ptr) sec->output_offset,
|
||||
sec->_cooked_size);
|
||||
free (contents);
|
||||
return retval;
|
||||
}
|
||||
|
||||
/* Decide whether we can use a PC-relative encoding within the given
|
||||
EH frame section. This is the default implementation. */
|
||||
|
||||
bfd_boolean
|
||||
_bfd_elf_can_make_relative (bfd *input_bfd ATTRIBUTE_UNUSED,
|
||||
struct bfd_link_info *info ATTRIBUTE_UNUSED,
|
||||
asection *eh_frame_section ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Select an encoding for the given address. Preference is given to
|
||||
PC-relative addressing modes. */
|
||||
|
||||
bfd_byte
|
||||
_bfd_elf_encode_eh_address (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
struct bfd_link_info *info ATTRIBUTE_UNUSED,
|
||||
asection *osec, bfd_vma offset,
|
||||
asection *loc_sec, bfd_vma loc_offset,
|
||||
bfd_vma *encoded)
|
||||
{
|
||||
*encoded = osec->vma + offset -
|
||||
(loc_sec->output_section->vma + loc_sec->output_offset + loc_offset);
|
||||
return DW_EH_PE_pcrel | DW_EH_PE_sdata4;
|
||||
}
|
||||
|
||||
+110
-171
@@ -1,5 +1,5 @@
|
||||
/* ELF strtab with GC and suffix merging support.
|
||||
Copyright 2001, 2002 Free Software Foundation, Inc.
|
||||
Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
Written by Jakub Jelinek <jakub@redhat.com>.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@@ -30,15 +30,14 @@
|
||||
struct elf_strtab_hash_entry
|
||||
{
|
||||
struct bfd_hash_entry root;
|
||||
/* Length of this entry. */
|
||||
unsigned int len;
|
||||
/* Length of this entry. This includes the zero terminator. */
|
||||
int len;
|
||||
unsigned int refcount;
|
||||
union {
|
||||
/* Index within the merged section. */
|
||||
bfd_size_type index;
|
||||
/* Entry this is a suffix of (if len is 0). */
|
||||
/* Entry this is a suffix of (if len < 0). */
|
||||
struct elf_strtab_hash_entry *suffix;
|
||||
struct elf_strtab_hash_entry *next;
|
||||
} u;
|
||||
};
|
||||
|
||||
@@ -57,53 +56,46 @@ struct elf_strtab_hash
|
||||
struct elf_strtab_hash_entry **array;
|
||||
};
|
||||
|
||||
static struct bfd_hash_entry *elf_strtab_hash_newfunc
|
||||
PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
|
||||
static int cmplengthentry PARAMS ((const PTR, const PTR));
|
||||
static int last4_eq PARAMS ((const PTR, const PTR));
|
||||
|
||||
/* Routine to create an entry in a section merge hashtab. */
|
||||
|
||||
static struct bfd_hash_entry *
|
||||
elf_strtab_hash_newfunc (entry, table, string)
|
||||
struct bfd_hash_entry *entry;
|
||||
struct bfd_hash_table *table;
|
||||
const char *string;
|
||||
elf_strtab_hash_newfunc (struct bfd_hash_entry *entry,
|
||||
struct bfd_hash_table *table,
|
||||
const char *string)
|
||||
{
|
||||
struct elf_strtab_hash_entry *ret = (struct elf_strtab_hash_entry *) entry;
|
||||
|
||||
/* Allocate the structure if it has not already been allocated by a
|
||||
subclass. */
|
||||
if (ret == (struct elf_strtab_hash_entry *) NULL)
|
||||
ret = ((struct elf_strtab_hash_entry *)
|
||||
bfd_hash_allocate (table, sizeof (struct elf_strtab_hash_entry)));
|
||||
if (ret == (struct elf_strtab_hash_entry *) NULL)
|
||||
if (entry == NULL)
|
||||
entry = bfd_hash_allocate (table, sizeof (struct elf_strtab_hash_entry));
|
||||
if (entry == NULL)
|
||||
return NULL;
|
||||
|
||||
/* Call the allocation method of the superclass. */
|
||||
ret = ((struct elf_strtab_hash_entry *)
|
||||
bfd_hash_newfunc ((struct bfd_hash_entry *) ret, table, string));
|
||||
entry = bfd_hash_newfunc (entry, table, string);
|
||||
|
||||
if (ret)
|
||||
if (entry)
|
||||
{
|
||||
/* Initialize the local fields. */
|
||||
struct elf_strtab_hash_entry *ret;
|
||||
|
||||
ret = (struct elf_strtab_hash_entry *) entry;
|
||||
ret->u.index = -1;
|
||||
ret->refcount = 0;
|
||||
ret->len = 0;
|
||||
}
|
||||
|
||||
return (struct bfd_hash_entry *)ret;
|
||||
return entry;
|
||||
}
|
||||
|
||||
/* Create a new hash table. */
|
||||
|
||||
struct elf_strtab_hash *
|
||||
_bfd_elf_strtab_init ()
|
||||
_bfd_elf_strtab_init (void)
|
||||
{
|
||||
struct elf_strtab_hash *table;
|
||||
bfd_size_type amt = sizeof (struct elf_strtab_hash);
|
||||
|
||||
table = (struct elf_strtab_hash *) bfd_malloc (amt);
|
||||
table = bfd_malloc (amt);
|
||||
if (table == NULL)
|
||||
return NULL;
|
||||
|
||||
@@ -117,8 +109,7 @@ _bfd_elf_strtab_init ()
|
||||
table->size = 1;
|
||||
table->alloced = 64;
|
||||
amt = sizeof (struct elf_strtab_hasn_entry *);
|
||||
table->array = (struct elf_strtab_hash_entry **)
|
||||
bfd_malloc (table->alloced * amt);
|
||||
table->array = bfd_malloc (table->alloced * amt);
|
||||
if (table->array == NULL)
|
||||
{
|
||||
free (table);
|
||||
@@ -133,8 +124,7 @@ _bfd_elf_strtab_init ()
|
||||
/* Free a strtab. */
|
||||
|
||||
void
|
||||
_bfd_elf_strtab_free (tab)
|
||||
struct elf_strtab_hash *tab;
|
||||
_bfd_elf_strtab_free (struct elf_strtab_hash *tab)
|
||||
{
|
||||
bfd_hash_table_free (&tab->table);
|
||||
free (tab->array);
|
||||
@@ -145,10 +135,9 @@ _bfd_elf_strtab_free (tab)
|
||||
already present. */
|
||||
|
||||
bfd_size_type
|
||||
_bfd_elf_strtab_add (tab, str, copy)
|
||||
struct elf_strtab_hash *tab;
|
||||
const char *str;
|
||||
boolean copy;
|
||||
_bfd_elf_strtab_add (struct elf_strtab_hash *tab,
|
||||
const char *str,
|
||||
bfd_boolean copy)
|
||||
{
|
||||
register struct elf_strtab_hash_entry *entry;
|
||||
|
||||
@@ -159,7 +148,7 @@ _bfd_elf_strtab_add (tab, str, copy)
|
||||
|
||||
BFD_ASSERT (tab->sec_size == 0);
|
||||
entry = (struct elf_strtab_hash_entry *)
|
||||
bfd_hash_lookup (&tab->table, str, true, copy);
|
||||
bfd_hash_lookup (&tab->table, str, TRUE, copy);
|
||||
|
||||
if (entry == NULL)
|
||||
return (bfd_size_type) -1;
|
||||
@@ -168,12 +157,13 @@ _bfd_elf_strtab_add (tab, str, copy)
|
||||
if (entry->len == 0)
|
||||
{
|
||||
entry->len = strlen (str) + 1;
|
||||
/* 2G strings lose. */
|
||||
BFD_ASSERT (entry->len > 0);
|
||||
if (tab->size == tab->alloced)
|
||||
{
|
||||
bfd_size_type amt = sizeof (struct elf_strtab_hash_entry *);
|
||||
tab->alloced *= 2;
|
||||
tab->array = (struct elf_strtab_hash_entry **)
|
||||
bfd_realloc (tab->array, tab->alloced * amt);
|
||||
tab->array = bfd_realloc (tab->array, tab->alloced * amt);
|
||||
if (tab->array == NULL)
|
||||
return (bfd_size_type) -1;
|
||||
}
|
||||
@@ -185,9 +175,7 @@ _bfd_elf_strtab_add (tab, str, copy)
|
||||
}
|
||||
|
||||
void
|
||||
_bfd_elf_strtab_addref (tab, idx)
|
||||
struct elf_strtab_hash *tab;
|
||||
bfd_size_type idx;
|
||||
_bfd_elf_strtab_addref (struct elf_strtab_hash *tab, bfd_size_type idx)
|
||||
{
|
||||
if (idx == 0 || idx == (bfd_size_type) -1)
|
||||
return;
|
||||
@@ -197,9 +185,7 @@ _bfd_elf_strtab_addref (tab, idx)
|
||||
}
|
||||
|
||||
void
|
||||
_bfd_elf_strtab_delref (tab, idx)
|
||||
struct elf_strtab_hash *tab;
|
||||
bfd_size_type idx;
|
||||
_bfd_elf_strtab_delref (struct elf_strtab_hash *tab, bfd_size_type idx)
|
||||
{
|
||||
if (idx == 0 || idx == (bfd_size_type) -1)
|
||||
return;
|
||||
@@ -210,8 +196,7 @@ _bfd_elf_strtab_delref (tab, idx)
|
||||
}
|
||||
|
||||
void
|
||||
_bfd_elf_strtab_clear_all_refs (tab)
|
||||
struct elf_strtab_hash *tab;
|
||||
_bfd_elf_strtab_clear_all_refs (struct elf_strtab_hash *tab)
|
||||
{
|
||||
bfd_size_type idx;
|
||||
|
||||
@@ -220,16 +205,13 @@ _bfd_elf_strtab_clear_all_refs (tab)
|
||||
}
|
||||
|
||||
bfd_size_type
|
||||
_bfd_elf_strtab_size (tab)
|
||||
struct elf_strtab_hash *tab;
|
||||
_bfd_elf_strtab_size (struct elf_strtab_hash *tab)
|
||||
{
|
||||
return tab->sec_size ? tab->sec_size : tab->size;
|
||||
}
|
||||
|
||||
bfd_size_type
|
||||
_bfd_elf_strtab_offset (tab, idx)
|
||||
struct elf_strtab_hash *tab;
|
||||
bfd_size_type idx;
|
||||
_bfd_elf_strtab_offset (struct elf_strtab_hash *tab, bfd_size_type idx)
|
||||
{
|
||||
struct elf_strtab_hash_entry *entry;
|
||||
|
||||
@@ -243,88 +225,80 @@ _bfd_elf_strtab_offset (tab, idx)
|
||||
return tab->array[idx]->u.index;
|
||||
}
|
||||
|
||||
boolean
|
||||
_bfd_elf_strtab_emit (abfd, tab)
|
||||
register bfd *abfd;
|
||||
struct elf_strtab_hash *tab;
|
||||
bfd_boolean
|
||||
_bfd_elf_strtab_emit (register bfd *abfd, struct elf_strtab_hash *tab)
|
||||
{
|
||||
bfd_size_type off = 1, i;
|
||||
|
||||
if (bfd_bwrite ("", 1, abfd) != 1)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
for (i = 1; i < tab->size; ++i)
|
||||
{
|
||||
register const char *str;
|
||||
register size_t len;
|
||||
register unsigned int len;
|
||||
|
||||
str = tab->array[i]->root.string;
|
||||
len = tab->array[i]->len;
|
||||
BFD_ASSERT (tab->array[i]->refcount == 0);
|
||||
if (len == 0)
|
||||
len = tab->array[i]->len;
|
||||
if ((int) len < 0)
|
||||
continue;
|
||||
|
||||
if (bfd_bwrite ((PTR) str, (bfd_size_type) len, abfd) != len)
|
||||
return false;
|
||||
str = tab->array[i]->root.string;
|
||||
if (bfd_bwrite (str, len, abfd) != len)
|
||||
return FALSE;
|
||||
|
||||
off += len;
|
||||
}
|
||||
|
||||
BFD_ASSERT (off == tab->sec_size);
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Compare two elf_strtab_hash_entry structures. This is called via qsort. */
|
||||
/* Compare two elf_strtab_hash_entry structures. Called via qsort. */
|
||||
|
||||
static int
|
||||
cmplengthentry (a, b)
|
||||
const PTR a;
|
||||
const PTR b;
|
||||
strrevcmp (const void *a, const void *b)
|
||||
{
|
||||
struct elf_strtab_hash_entry * A = *(struct elf_strtab_hash_entry **) a;
|
||||
struct elf_strtab_hash_entry * B = *(struct elf_strtab_hash_entry **) b;
|
||||
struct elf_strtab_hash_entry *A = *(struct elf_strtab_hash_entry **) a;
|
||||
struct elf_strtab_hash_entry *B = *(struct elf_strtab_hash_entry **) b;
|
||||
unsigned int lenA = A->len;
|
||||
unsigned int lenB = B->len;
|
||||
const unsigned char *s = A->root.string + lenA - 1;
|
||||
const unsigned char *t = B->root.string + lenB - 1;
|
||||
int l = lenA < lenB ? lenA : lenB;
|
||||
|
||||
if (A->len < B->len)
|
||||
return 1;
|
||||
else if (A->len > B->len)
|
||||
return -1;
|
||||
|
||||
return memcmp (A->root.string, B->root.string, A->len);
|
||||
while (l)
|
||||
{
|
||||
if (*s != *t)
|
||||
return (int) *s - (int) *t;
|
||||
s--;
|
||||
t--;
|
||||
l--;
|
||||
}
|
||||
return lenA - lenB;
|
||||
}
|
||||
|
||||
static int
|
||||
last4_eq (a, b)
|
||||
const PTR a;
|
||||
const PTR b;
|
||||
static inline int
|
||||
is_suffix (const struct elf_strtab_hash_entry *A,
|
||||
const struct elf_strtab_hash_entry *B)
|
||||
{
|
||||
struct elf_strtab_hash_entry * A = (struct elf_strtab_hash_entry *) a;
|
||||
struct elf_strtab_hash_entry * B = (struct elf_strtab_hash_entry *) b;
|
||||
|
||||
if (memcmp (A->root.string + A->len - 5, B->root.string + B->len - 5, 4)
|
||||
!= 0)
|
||||
/* This was a hashtable collision. */
|
||||
return 0;
|
||||
|
||||
if (A->len <= B->len)
|
||||
/* B cannot be a suffix of A unless A is equal to B, which is guaranteed
|
||||
not to be equal by the hash table. */
|
||||
return 0;
|
||||
|
||||
return memcmp (A->root.string + (A->len - B->len),
|
||||
B->root.string, B->len - 5) == 0;
|
||||
B->root.string, B->len - 1) == 0;
|
||||
}
|
||||
|
||||
/* This function assigns final string table offsets for used strings,
|
||||
merging strings matching suffixes of longer strings if possible. */
|
||||
|
||||
void
|
||||
_bfd_elf_strtab_finalize (tab)
|
||||
struct elf_strtab_hash *tab;
|
||||
_bfd_elf_strtab_finalize (struct elf_strtab_hash *tab)
|
||||
{
|
||||
struct elf_strtab_hash_entry **array, **a, **end, *e;
|
||||
htab_t last4tab = NULL;
|
||||
struct elf_strtab_hash_entry **array, **a, *e;
|
||||
bfd_size_type size, amt;
|
||||
struct elf_strtab_hash_entry *last[256], **last_ptr[256];
|
||||
|
||||
/* GCC 2.91.66 (egcs-1.1.2) on i386 miscompiles this function when i is
|
||||
a 64-bit bfd_size_type: a 64-bit target or --enable-64-bit-bfd.
|
||||
@@ -332,105 +306,71 @@ _bfd_elf_strtab_finalize (tab)
|
||||
cycles. */
|
||||
size_t i;
|
||||
|
||||
/* Now sort the strings by length, longest first. */
|
||||
array = NULL;
|
||||
/* Sort the strings by suffix and length. */
|
||||
amt = tab->size * sizeof (struct elf_strtab_hash_entry *);
|
||||
array = (struct elf_strtab_hash_entry **) bfd_malloc (amt);
|
||||
array = bfd_malloc (amt);
|
||||
if (array == NULL)
|
||||
goto alloc_failure;
|
||||
|
||||
memset (last, 0, sizeof (last));
|
||||
for (i = 0; i < 256; ++i)
|
||||
last_ptr[i] = &last[i];
|
||||
for (i = 1, a = array; i < tab->size; ++i)
|
||||
if (tab->array[i]->refcount)
|
||||
*a++ = tab->array[i];
|
||||
else
|
||||
tab->array[i]->len = 0;
|
||||
|
||||
size = a - array;
|
||||
|
||||
qsort (array, size, sizeof (struct elf_strtab_hash_entry *), cmplengthentry);
|
||||
|
||||
last4tab = htab_create_alloc (size * 4, NULL, last4_eq, NULL, calloc, free);
|
||||
if (last4tab == NULL)
|
||||
goto alloc_failure;
|
||||
|
||||
/* Now insert the strings into hash tables (strings with last 4 characters
|
||||
and strings with last character equal), look for longer strings which
|
||||
we're suffix of. */
|
||||
for (a = array, end = array + size; a < end; a++)
|
||||
{
|
||||
register hashval_t hash;
|
||||
unsigned int c;
|
||||
unsigned int j;
|
||||
const unsigned char *s;
|
||||
PTR *p;
|
||||
|
||||
e = *a;
|
||||
if (e->len > 4)
|
||||
e = tab->array[i];
|
||||
if (e->refcount)
|
||||
{
|
||||
s = e->root.string + e->len - 1;
|
||||
hash = 0;
|
||||
for (j = 0; j < 4; j++)
|
||||
{
|
||||
c = *--s;
|
||||
hash += c + (c << 17);
|
||||
hash ^= hash >> 2;
|
||||
}
|
||||
p = htab_find_slot_with_hash (last4tab, e, hash, INSERT);
|
||||
if (p == NULL)
|
||||
goto alloc_failure;
|
||||
if (*p)
|
||||
{
|
||||
struct elf_strtab_hash_entry *ent;
|
||||
|
||||
ent = (struct elf_strtab_hash_entry *) *p;
|
||||
e->u.suffix = ent;
|
||||
e->len = 0;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
*p = (PTR) e;
|
||||
*a++ = e;
|
||||
/* Adjust the length to not include the zero terminator. */
|
||||
e->len -= 1;
|
||||
}
|
||||
else
|
||||
e->len = 0;
|
||||
}
|
||||
|
||||
size = a - array;
|
||||
if (size != 0)
|
||||
{
|
||||
qsort (array, size, sizeof (struct elf_strtab_hash_entry *), strrevcmp);
|
||||
|
||||
/* Loop over the sorted array and merge suffixes. Start from the
|
||||
end because we want eg.
|
||||
|
||||
s1 -> "d"
|
||||
s2 -> "bcd"
|
||||
s3 -> "abcd"
|
||||
|
||||
to end up as
|
||||
|
||||
s3 -> "abcd"
|
||||
s2 _____^
|
||||
s1 _______^
|
||||
|
||||
ie. we don't want s1 pointing into the old s2. */
|
||||
e = *--a;
|
||||
e->len += 1;
|
||||
while (--a >= array)
|
||||
{
|
||||
struct elf_strtab_hash_entry *tem;
|
||||
struct elf_strtab_hash_entry *cmp = *a;
|
||||
|
||||
c = e->root.string[e->len - 2] & 0xff;
|
||||
|
||||
for (tem = last[c]; tem; tem = tem->u.next)
|
||||
if (tem->len > e->len
|
||||
&& memcmp (tem->root.string + (tem->len - e->len),
|
||||
e->root.string, e->len - 1) == 0)
|
||||
break;
|
||||
if (tem)
|
||||
cmp->len += 1;
|
||||
if (is_suffix (e, cmp))
|
||||
{
|
||||
e->u.suffix = tem;
|
||||
e->len = 0;
|
||||
continue;
|
||||
cmp->u.suffix = e;
|
||||
cmp->len = -cmp->len;
|
||||
}
|
||||
else
|
||||
e = cmp;
|
||||
}
|
||||
|
||||
c = e->root.string[e->len - 2] & 0xff;
|
||||
/* Put longest strings first. */
|
||||
*last_ptr[c] = e;
|
||||
last_ptr[c] = &e->u.next;
|
||||
e->u.next = NULL;
|
||||
}
|
||||
|
||||
alloc_failure:
|
||||
if (array)
|
||||
free (array);
|
||||
if (last4tab)
|
||||
htab_delete (last4tab);
|
||||
|
||||
/* Now assign positions to the strings we want to keep. */
|
||||
/* Assign positions to the strings we want to keep. */
|
||||
size = 1;
|
||||
for (i = 1; i < tab->size; ++i)
|
||||
{
|
||||
e = tab->array[i];
|
||||
if (e->refcount && e->len)
|
||||
if (e->refcount && e->len > 0)
|
||||
{
|
||||
e->u.index = size;
|
||||
size += e->len;
|
||||
@@ -439,12 +379,11 @@ _bfd_elf_strtab_finalize (tab)
|
||||
|
||||
tab->sec_size = size;
|
||||
|
||||
/* And now adjust the rest. */
|
||||
/* Adjust the rest. */
|
||||
for (i = 1; i < tab->size; ++i)
|
||||
{
|
||||
e = tab->array[i];
|
||||
if (e->refcount && ! e->len)
|
||||
e->u.index = e->u.suffix->u.index
|
||||
+ (e->u.suffix->len - strlen (e->root.string) - 1);
|
||||
if (e->refcount && e->len < 0)
|
||||
e->u.index = e->u.suffix->u.index + (e->u.suffix->len + e->len);
|
||||
}
|
||||
}
|
||||
|
||||
+1324
-1150
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,6 @@
|
||||
/* ARC-specific support for 32-bit ELF
|
||||
Copyright 1994, 1995, 1997, 1999, 2001 Free Software Foundation, Inc.
|
||||
Copyright 1994, 1995, 1997, 1999, 2001, 2002
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Doug Evans (dje@cygnus.com).
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@@ -28,18 +29,18 @@
|
||||
static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup
|
||||
PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
|
||||
static void arc_info_to_howto_rel
|
||||
PARAMS ((bfd *, arelent *, Elf32_Internal_Rel *));
|
||||
static boolean arc_elf_object_p
|
||||
PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
|
||||
static bfd_boolean arc_elf_object_p
|
||||
PARAMS ((bfd *));
|
||||
static void arc_elf_final_write_processing
|
||||
PARAMS ((bfd *, boolean));
|
||||
PARAMS ((bfd *, bfd_boolean));
|
||||
static bfd_reloc_status_type arc_elf_b22_pcrel
|
||||
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
|
||||
|
||||
/* Try to minimize the amount of space occupied by relocation tables
|
||||
on the ROM (not that the ROM won't be swamped by other ELF overhead). */
|
||||
|
||||
#define USE_REL
|
||||
#define USE_REL 1
|
||||
|
||||
static reloc_howto_type elf_arc_howto_table[] =
|
||||
{
|
||||
@@ -48,60 +49,60 @@ static reloc_howto_type elf_arc_howto_table[] =
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
32, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_bitfield, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_ARC_NONE", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* A standard 32 bit relocation. */
|
||||
HOWTO (R_ARC_32, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
32, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_bitfield, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_ARC_32", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0xffffffff, /* src_mask */
|
||||
0xffffffff, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* A 26 bit absolute branch, right shifted by 2. */
|
||||
HOWTO (R_ARC_B26, /* type */
|
||||
2, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
26, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_bitfield, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_ARC_B26", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0x00ffffff, /* src_mask */
|
||||
0x00ffffff, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* A relative 22 bit branch; bits 21-2 are stored in bits 26-7. */
|
||||
HOWTO (R_ARC_B22_PCREL, /* type */
|
||||
2, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
22, /* bitsize */
|
||||
true, /* pc_relative */
|
||||
TRUE, /* pc_relative */
|
||||
7, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
arc_elf_b22_pcrel, /* special_function */
|
||||
"R_ARC_B22_PCREL", /* name */
|
||||
true, /* partial_inplace */
|
||||
TRUE, /* partial_inplace */
|
||||
0x07ffff80, /* src_mask */
|
||||
0x07ffff80, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
FALSE), /* pcrel_offset */
|
||||
};
|
||||
|
||||
/* Map BFD reloc types to ARC ELF reloc types. */
|
||||
@@ -141,7 +142,7 @@ static void
|
||||
arc_info_to_howto_rel (abfd, cache_ptr, dst)
|
||||
bfd *abfd ATTRIBUTE_UNUSED;
|
||||
arelent *cache_ptr;
|
||||
Elf32_Internal_Rel *dst;
|
||||
Elf_Internal_Rela *dst;
|
||||
{
|
||||
unsigned int r_type;
|
||||
|
||||
@@ -152,7 +153,7 @@ arc_info_to_howto_rel (abfd, cache_ptr, dst)
|
||||
|
||||
/* Set the right machine number for an ARC ELF file. */
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
arc_elf_object_p (abfd)
|
||||
bfd *abfd;
|
||||
{
|
||||
@@ -188,7 +189,7 @@ arc_elf_object_p (abfd)
|
||||
static void
|
||||
arc_elf_final_write_processing (abfd, linker)
|
||||
bfd *abfd;
|
||||
boolean linker ATTRIBUTE_UNUSED;
|
||||
bfd_boolean linker ATTRIBUTE_UNUSED;
|
||||
{
|
||||
unsigned long val;
|
||||
|
||||
@@ -225,7 +226,7 @@ arc_elf_b22_pcrel (abfd, reloc_entry, symbol, data, input_section,
|
||||
{
|
||||
/* If linking, back up the final symbol address by the address of the
|
||||
reloc. This cannot be accomplished by setting the pcrel_offset
|
||||
field to true, as bfd_install_relocation will detect this and refuse
|
||||
field to TRUE, as bfd_install_relocation will detect this and refuse
|
||||
to install the offset in the first place, but bfd_perform_relocation
|
||||
will still insist on removing it. */
|
||||
if (output_bfd == (bfd *) NULL)
|
||||
|
||||
+1151
-696
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user