mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-02 08:42:48 +00:00
This commit was generated by cvs2svn to compensate for changes in r130561,
which included commits to RCS files with non-trunk default branches.
This commit is contained in:
commit
ad6e3f2b73
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=130562
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.
|
||||
|
210
contrib/binutils/Makefile.def
Normal file
210
contrib/binutils/Makefile.def
Normal file
@ -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 ; };
|
File diff suppressed because it is too large
Load Diff
1435
contrib/binutils/Makefile.tpl
Normal file
1435
contrib/binutils/Makefile.tpl
Normal file
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
|
||||
|
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>
|
||||
|
||||
|
11405
contrib/binutils/bfd/ChangeLog-0203
Normal file
11405
contrib/binutils/bfd/ChangeLog-0203
Normal file
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
@ -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
|
||||
|
71
contrib/binutils/bfd/aclocal.m4
vendored
71
contrib/binutils/bfd/aclocal.m4
vendored
@ -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
|
||||
|
File diff suppressed because it is too large
Load Diff
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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
442
contrib/binutils/bfd/bfdio.c
Normal file
442
contrib/binutils/bfd/bfdio.c
Normal file
@ -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;
|
||||
}
|
251
contrib/binutils/bfd/bfdwin.c
Normal file
251
contrib/binutils/bfd/bfdwin.c
Normal file
@ -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;
|
||||
}
|
||||
|
1579
contrib/binutils/bfd/bout.c
Normal file
1579
contrib/binutils/bfd/bout.c
Normal file
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;
|
||||
}
|
||||
|
||||
|
@ -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. */
|
||||
|
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
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
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
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;
|
||||
}
|
||||
|
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
|
||||
|
@ -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
|
||||
|
||||
|
1507
contrib/binutils/bfd/configure
vendored
1507
contrib/binutils/bfd/configure
vendored
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. */
|
||||
|
||||
|
@ -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:
|
||||
|
594
contrib/binutils/bfd/doc/ChangeLog-9103
Normal file
594
contrib/binutils/bfd/doc/ChangeLog-9103
Normal file
@ -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.
|
||||
|
||||
|
41
contrib/binutils/bfd/doc/bfdio.texi
Normal file
41
contrib/binutils/bfd/doc/bfdio.texi
Normal file
@ -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?".
|
||||
|
@ -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.
|
||||
|
||||
|
2
contrib/binutils/bfd/doc/bfdwin.texi
Normal file
2
contrib/binutils/bfd/doc/bfdwin.texi
Normal file
@ -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.
|
||||
|
||||
|
366
contrib/binutils/bfd/doc/fdl.texi
Normal file
366
contrib/binutils/bfd/doc/fdl.texi
Normal file
@ -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
|
||||
|
365
contrib/binutils/bfd/doc/mmo.texi
Normal file
365
contrib/binutils/bfd/doc/mmo.texi
Normal file
@ -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 */
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,6 @@
|
||||
/* Generic support for 32-bit ELF
|
||||
Copyright 1993, 1995, 1998, 1999, 2001 Free Software Foundation, Inc.
|
||||
Copyright 1993, 1995, 1998, 1999, 2001, 2002, 2004
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
@ -30,28 +31,28 @@ static reloc_howto_type dummy =
|
||||
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 */
|
||||
NULL, /* special_function */
|
||||
"UNKNOWN", /* name */
|
||||
false, /* partial_inplace */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
false); /* pcrel_offset */
|
||||
FALSE); /* pcrel_offset */
|
||||
|
||||
static void elf_generic_info_to_howto
|
||||
PARAMS ((bfd *, arelent *, Elf32_Internal_Rela *));
|
||||
PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
|
||||
static void elf_generic_info_to_howto_rel
|
||||
PARAMS ((bfd *, arelent *, Elf32_Internal_Rel *));
|
||||
static boolean elf32_generic_link_add_symbols
|
||||
PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
|
||||
static bfd_boolean elf32_generic_link_add_symbols
|
||||
PARAMS ((bfd *, struct bfd_link_info *));
|
||||
|
||||
static void
|
||||
elf_generic_info_to_howto (abfd, bfd_reloc, elf_reloc)
|
||||
bfd *abfd ATTRIBUTE_UNUSED;
|
||||
arelent *bfd_reloc;
|
||||
Elf32_Internal_Rela *elf_reloc ATTRIBUTE_UNUSED;
|
||||
Elf_Internal_Rela *elf_reloc ATTRIBUTE_UNUSED;
|
||||
{
|
||||
bfd_reloc->howto = &dummy;
|
||||
}
|
||||
@ -60,12 +61,12 @@ static void
|
||||
elf_generic_info_to_howto_rel (abfd, bfd_reloc, elf_reloc)
|
||||
bfd *abfd ATTRIBUTE_UNUSED;
|
||||
arelent *bfd_reloc;
|
||||
Elf32_Internal_Rel *elf_reloc ATTRIBUTE_UNUSED;
|
||||
Elf_Internal_Rela *elf_reloc ATTRIBUTE_UNUSED;
|
||||
{
|
||||
bfd_reloc->howto = &dummy;
|
||||
}
|
||||
|
||||
static boolean
|
||||
static bfd_boolean
|
||||
elf32_generic_link_add_symbols (abfd, info)
|
||||
bfd *abfd;
|
||||
struct bfd_link_info *info;
|
||||
@ -84,10 +85,10 @@ elf32_generic_link_add_symbols (abfd, info)
|
||||
ehdrp->e_machine);
|
||||
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return bfd_elf32_bfd_link_add_symbols (abfd, info);
|
||||
return bfd_elf_link_add_symbols (abfd, info);
|
||||
}
|
||||
|
||||
#define TARGET_LITTLE_SYM bfd_elf32_little_generic_vec
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user