1999-05-03 15:29:11 +08:00
|
|
|
|
/* Main header file for the bfd library -- portable access to object files.
|
2003-02-28 05:24:36 +08:00
|
|
|
|
|
2020-01-01 15:57:01 +08:00
|
|
|
|
Copyright (C) 1990-2020 Free Software Foundation, Inc.
|
2003-02-28 05:24:36 +08:00
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
|
Contributed by Cygnus Support.
|
|
|
|
|
|
2002-05-30 00:03:04 +08:00
|
|
|
|
This file is part of BFD, the Binary File Descriptor library.
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
2002-05-30 00:03:04 +08:00
|
|
|
|
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
|
2007-07-03 22:26:43 +08:00
|
|
|
|
the Free Software Foundation; either version 3 of the License, or
|
2002-05-30 00:03:04 +08:00
|
|
|
|
(at your option) any later version.
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
2002-05-30 00:03:04 +08:00
|
|
|
|
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.
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
2002-05-30 00:03:04 +08:00
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
|
along with this program; if not, write to the Free Software
|
2005-05-04 23:53:43 +08:00
|
|
|
|
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
|
|
#ifndef __BFD_H_SEEN__
|
|
|
|
|
#define __BFD_H_SEEN__
|
|
|
|
|
|
2012-05-18 18:29:12 +08:00
|
|
|
|
/* PR 14072: Ensure that config.h is included first. */
|
|
|
|
|
#if !defined PACKAGE && !defined PACKAGE_VERSION
|
2012-05-17 23:13:28 +08:00
|
|
|
|
#error config.h must be included before this header
|
|
|
|
|
#endif
|
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#include "ansidecl.h"
|
2001-10-02 13:58:41 +08:00
|
|
|
|
#include "symcat.h"
|
2018-12-18 16:33:51 +08:00
|
|
|
|
#include "bfd_stdint.h"
|
2018-06-05 01:01:34 +08:00
|
|
|
|
#include "diagnostics.h"
|
2016-09-30 09:33:52 +08:00
|
|
|
|
#include <stdarg.h>
|
2011-10-24 19:23:40 +08:00
|
|
|
|
#include <sys/stat.h>
|
|
|
|
|
|
2001-10-02 13:58:41 +08:00
|
|
|
|
#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
|
|
|
|
|
#ifndef SABER
|
|
|
|
|
/* This hack is to avoid a problem with some strict ANSI C preprocessors.
|
|
|
|
|
The problem is, "32_" is not a valid preprocessing token, and we don't
|
|
|
|
|
want extra underscores (e.g., "nlm_32_"). The XCONCAT2 macro will
|
|
|
|
|
cause the inner CONCAT2 macros to be evaluated first, producing
|
|
|
|
|
still-valid pp-tokens. Then the final concatenation can be done. */
|
|
|
|
|
#undef CONCAT4
|
|
|
|
|
#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
2006-09-17 02:12:17 +08:00
|
|
|
|
/* This is a utility macro to handle the situation where the code
|
|
|
|
|
wants to place a constant string into the code, followed by a
|
|
|
|
|
comma and then the length of the string. Doing this by hand
|
2007-10-26 05:01:55 +08:00
|
|
|
|
is error prone, so using this macro is safer. */
|
|
|
|
|
#define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1)
|
2006-09-17 02:12:17 +08:00
|
|
|
|
/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
|
|
|
|
|
to create the arguments to another macro, since the preprocessor
|
|
|
|
|
will mis-count the number of arguments to the outer macro (by not
|
|
|
|
|
evaluating STRING_COMMA_LEN and so missing the comma). This is a
|
|
|
|
|
problem for example when trying to use STRING_COMMA_LEN to build
|
|
|
|
|
the arguments to the strncmp() macro. Hence this alternative
|
|
|
|
|
definition of strncmp is provided here.
|
2013-01-11 04:03:55 +08:00
|
|
|
|
|
2006-09-17 02:12:17 +08:00
|
|
|
|
Note - these macros do NOT work if STR2 is not a constant string. */
|
|
|
|
|
#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
|
2006-09-28 20:59:25 +08:00
|
|
|
|
/* strcpy() can have a similar problem, but since we know we are
|
|
|
|
|
copying a constant string, we can use memcpy which will be faster
|
|
|
|
|
since there is no need to check for a NUL byte inside STR. We
|
|
|
|
|
can also save time if we do not need to copy the terminating NUL. */
|
|
|
|
|
#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
|
|
|
|
|
#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
|
2006-09-17 02:12:17 +08:00
|
|
|
|
|
|
|
|
|
|
2009-05-26 22:12:03 +08:00
|
|
|
|
#define BFD_SUPPORTS_PLUGINS @supports_plugins@
|
|
|
|
|
|
2001-08-17 11:54:53 +08:00
|
|
|
|
/* 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. */
|
1999-05-03 15:29:11 +08:00
|
|
|
|
#define BFD_ARCH_SIZE @wordsize@
|
2001-08-17 11:54:53 +08:00
|
|
|
|
|
|
|
|
|
/* The word size of the default bfd target. */
|
|
|
|
|
#define BFD_DEFAULT_TARGET_SIZE @bfd_default_target_size@
|
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
|
#define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@
|
2007-07-12 15:16:41 +08:00
|
|
|
|
#define BFD_HOST_64BIT_LONG_LONG @BFD_HOST_64BIT_LONG_LONG@
|
1999-05-03 15:29:11 +08:00
|
|
|
|
#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@
|
* bfd-in.h (bfd_int64_t, bfd_uint64_t): New types.
(BFD_HOST_64_BIT, BFD_HOST_U_64_BIT): Don't define here.
(bfd_getb64, bfd_getl64, bfd_get_bits): Return bfd_uint64_t.
(bfd_getb_signed_64, bfd_getl_signed_64): Return bfd_int64_t.
(bfd_putb64, bfd_putl64, bfd_put_bits): Accept bfd_uint64_t.
* configure.in (HOST_U_64BIT_TYPE): Set when sizeof long is 8.
(BFD_HOST_64_BIT_DEFINED, BFD_HOST_64_BIT, BFD_HOST_U_64_BIT): Set
when using long.
* libbfd.c (EIGHT_GAZILLION, COERCE64): Use bfd_int64_t.
(bfd_getb64): Return bfd_uint64_t. Enable when BFD_HOST_64_BIT.
(bfd_getl64, bfd_getb_signed_64, bfd_getl_signed_64): Likewise.
(bfd_putb64): Accept bfd_uint64_t. Enable when BFD_HOST_64_BIT.
(bfd_putl64, bfd_put_bits, bfd_get_bits): Likewise.
* dwarf2.c (struct attribute): Use bfd_int64_t and bfd_uint64_t.
(read_8_bytes, read_indirect_string, read_address): Likewise.
(read_abbrevs, parse_comp_unit): Likewise.
* targets.c (struct bfd_target): Likewise.
* aix386-core.c (NO_GET64, NO_PUT64, NO_GETS64): Define and use.
* hppabsd-core.c: Likewise. Formatting.
* hpux-core.c: Likewise.
* irix-core.c: Likewise.
* netbsd-core.c: Likewise.
* osf-core.c: Likewise.
* ptrace-core.c: Likewise.
* sco5-core.c: Likewise.
* trad-core.c: Likewise.
* configure: Regenerate.
* bfd-in2.h: Regenerate.
2004-03-15 22:21:43 +08:00
|
|
|
|
typedef BFD_HOST_64_BIT bfd_int64_t;
|
|
|
|
|
typedef BFD_HOST_U_64_BIT bfd_uint64_t;
|
1999-05-03 15:29:11 +08:00
|
|
|
|
#endif
|
|
|
|
|
|
%L conversions
* bfd-in.h: Include inttypes.h or if not available define
PRId64, PRIu64 and PRIx64.
* bfd.c (_bfd_doprnt, _bfd_doprnt_scan): Remove support for L
modifier to print bfd_vma.
* coff-arm.c, * coff-mcore.c, * coff-ppc.c, * coff-rs6000.c,
* coff-sh.c, * coff-tic80.c, * coffcode.h, * coffgen.c, * cofflink.c,
* compress.c, * dwarf2.c, * elf-m10300.c, * elf.c, * elf32-arc.c,
* elf32-arm.c, * elf32-bfin.c, * elf32-cris.c, * elf32-hppa.c,
* elf32-i386.c, * elf32-ip2k.c, * elf32-lm32.c, * elf32-m32r.c,
* elf32-m68k.c, * elf32-metag.c, * elf32-nds32.c, * elf32-nios2.c,
* elf32-ppc.c, * elf32-rx.c, * elf32-s390.c, * elf32-score.c,
* elf32-score7.c, * elf32-sh.c, * elf32-sh64.c, * elf32-spu.c,
* elf32-tic6x.c, * elf32-tilepro.c, * elf32-v850.c, * elf32-vax.c,
* elf32-xtensa.c, * elf64-alpha.c, * elf64-hppa.c, * elf64-ia64-vms.c,
* elf64-mmix.c, * elf64-s390.c, * elf64-sh64.c, * elf64-x86-64.c,
* elfcode.h, * elfcore.h, * elflink.c, * elfnn-aarch64.c,
* elfnn-ia64.c, * elfnn-riscv.c, * elfxx-mips.c, * elfxx-sparc.c,
* elfxx-tilegx.c, * ieee.c, * ihex.c, * mach-o.c, * merge.c, * mmo.c,
* peXXigen.c, * xcofflink.c: Replace use of Lx modifier with PRIx64,
and cast input to uint64_t, and similarly for Ld and Lu.
* bfd-in2.h: Regenerate.
2018-02-19 16:04:15 +08:00
|
|
|
|
#ifdef HAVE_INTTYPES_H
|
|
|
|
|
# include <inttypes.h>
|
|
|
|
|
#else
|
|
|
|
|
# if BFD_HOST_64BIT_LONG
|
|
|
|
|
# define BFD_PRI64 "l"
|
|
|
|
|
# elif defined (__MSVCRT__)
|
|
|
|
|
# define BFD_PRI64 "I64"
|
|
|
|
|
# else
|
|
|
|
|
# define BFD_PRI64 "ll"
|
|
|
|
|
# endif
|
|
|
|
|
# undef PRId64
|
|
|
|
|
# define PRId64 BFD_PRI64 "d"
|
|
|
|
|
# undef PRIu64
|
|
|
|
|
# define PRIu64 BFD_PRI64 "u"
|
|
|
|
|
# undef PRIx64
|
|
|
|
|
# define PRIx64 BFD_PRI64 "x"
|
|
|
|
|
#endif
|
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
|
#if BFD_ARCH_SIZE >= 64
|
|
|
|
|
#define BFD64
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifndef INLINE
|
|
|
|
|
#if __GNUC__ >= 2
|
|
|
|
|
#define INLINE __inline__
|
|
|
|
|
#else
|
|
|
|
|
#define INLINE
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
2007-07-12 15:16:41 +08:00
|
|
|
|
/* Declaring a type wide enough to hold a host long and a host pointer. */
|
BFD whitespace fixes
Binutils is supposed to use tabs. In my git config I have
whitespace = indent-with-non-tab,space-before-tab,trailing-space
and I got annoyed enough seeing red in "git diff" output to fix
the problems.
* doc/header.sed: Trim trailing space when splitting lines.
* aix386-core.c, * aout-adobe.c, * aout-arm.c, * aout-cris.c,
* aout-ns32k.c, * aout-target.h, * aout-tic30.c, * aoutf1.h, * aoutx.h,
* arc-got.h, * arc-plt.def, * arc-plt.h, * archive.c, * archive64.c,
* archures.c, * armnetbsd.c, * bfd-in.h, * bfd.c, * bfdio.c, * binary.c,
* bout.c, * cache.c, * cisco-core.c, * coff-alpha.c, * coff-apollo.c,
* coff-arm.c, * coff-h8300.c, * coff-i386.c, * coff-i860.c,
* coff-i960.c, * coff-m68k.c, * coff-m88k.c, * coff-mcore.c,
* coff-mips.c, * coff-ppc.c, * coff-rs6000.c, * coff-sh.c,
* coff-stgo32.c, * coff-tic4x.c, * coff-tic54x.c, * coff-tic80.c,
* coff-we32k.c, * coff-x86_64.c, * coff-z80.c, * coff-z8k.c,
* coff64-rs6000.c, * coffcode.h, * coffgen.c, * cofflink.c,
* coffswap.h, * compress.c, * corefile.c, * cpu-alpha.c, * cpu-arm.c,
* cpu-avr.c, * cpu-bfin.c, * cpu-cr16.c, * cpu-cr16c.c, * cpu-crx.c,
* cpu-d10v.c, * cpu-frv.c, * cpu-ft32.c, * cpu-i370.c, * cpu-i960.c,
* cpu-ia64-opc.c, * cpu-ip2k.c, * cpu-lm32.c, * cpu-m32r.c,
* cpu-mcore.c, * cpu-microblaze.c, * cpu-mips.c, * cpu-moxie.c,
* cpu-mt.c, * cpu-nios2.c, * cpu-ns32k.c, * cpu-or1k.c, * cpu-powerpc.c,
* cpu-pru.c, * cpu-sh.c, * cpu-spu.c, * cpu-v850.c, * cpu-v850_rh850.c,
* cpu-xgate.c, * cpu-z80.c, * dwarf1.c, * dwarf2.c, * ecoff.c,
* ecofflink.c, * ecoffswap.h, * elf-bfd.h, * elf-eh-frame.c,
* elf-hppa.h, * elf-m10200.c, * elf-m10300.c, * elf-s390-common.c,
* elf-strtab.c, * elf-vxworks.c, * elf.c, * elf32-am33lin.c,
* elf32-arc.c, * elf32-arm.c, * elf32-avr.c, * elf32-avr.h,
* elf32-bfin.c, * elf32-cr16.c, * elf32-cr16c.c, * elf32-cris.c,
* elf32-crx.c, * elf32-d10v.c, * elf32-d30v.c, * elf32-dlx.c,
* elf32-epiphany.c, * elf32-fr30.c, * elf32-frv.c, * elf32-ft32.c,
* elf32-h8300.c, * elf32-hppa.c, * elf32-i386.c, * elf32-i860.c,
* elf32-i960.c, * elf32-ip2k.c, * elf32-lm32.c, * elf32-m32c.c,
* elf32-m32r.c, * elf32-m68hc11.c, * elf32-m68hc12.c, * elf32-m68hc1x.c,
* elf32-m68hc1x.h, * elf32-m68k.c, * elf32-m88k.c, * elf32-mcore.c,
* elf32-mep.c, * elf32-metag.c, * elf32-microblaze.c, * elf32-mips.c,
* elf32-moxie.c, * elf32-msp430.c, * elf32-mt.c, * elf32-nds32.c,
* elf32-nds32.h, * elf32-nios2.c, * elf32-or1k.c, * elf32-pj.c,
* elf32-ppc.c, * elf32-ppc.h, * elf32-pru.c, * elf32-rl78.c,
* elf32-rx.c, * elf32-s390.c, * elf32-score.c, * elf32-score.h,
* elf32-score7.c, * elf32-sh-symbian.c, * elf32-sh.c, * elf32-sh64.c,
* elf32-sparc.c, * elf32-spu.c, * elf32-tic6x.c, * elf32-tilegx.c,
* elf32-tilegx.h, * elf32-tilepro.c, * elf32-tilepro.h, * elf32-v850.c,
* elf32-vax.c, * elf32-wasm32.c, * elf32-xc16x.c, * elf32-xgate.c,
* elf32-xgate.h, * elf32-xstormy16.c, * elf32-xtensa.c, * elf64-alpha.c,
* elf64-hppa.c, * elf64-ia64-vms.c, * elf64-mips.c, * elf64-mmix.c,
* elf64-ppc.c, * elf64-s390.c, * elf64-sh64.c, * elf64-sparc.c,
* elf64-tilegx.c, * elf64-tilegx.h, * elf64-x86-64.c, * elfcore.h,
* elflink.c, * elfn32-mips.c, * elfnn-aarch64.c, * elfnn-ia64.c,
* elfnn-riscv.c, * elfxx-aarch64.c, * elfxx-aarch64.h, * elfxx-ia64.c,
* elfxx-ia64.h, * elfxx-mips.c, * elfxx-riscv.c, * elfxx-sparc.c,
* elfxx-tilegx.c, * elfxx-x86.c, * elfxx-x86.h, * freebsd.h, * hash.c,
* host-aout.c, * hp300hpux.c, * hppabsd-core.c, * hpux-core.c,
* i386aout.c, * i386linux.c, * i386lynx.c, * i386mach3.c, * i386msdos.c,
* i386netbsd.c, * ieee.c, * ihex.c, * irix-core.c, * libaout.h,
* libbfd-in.h, * libbfd.c, * libcoff-in.h, * libnlm.h, * libpei.h,
* libxcoff.h, * linker.c, * lynx-core.c, * m68k4knetbsd.c,
* m68klinux.c, * m68knetbsd.c, * m88kmach3.c, * mach-o-aarch64.c,
* mach-o-arm.c, * mach-o-i386.c, * mach-o-target.c, * mach-o-x86-64.c,
* mach-o.c, * mach-o.h, * merge.c, * mipsbsd.c, * mmo.c, * netbsd.h,
* netbsd-core.c, * newsos3.c, * nlm-target.h, * nlm32-ppc.c,
* nlm32-sparc.c, * nlmcode.h, * ns32k.h, * ns32knetbsd.c, * oasys.c,
* opncls.c, * pc532-mach.c, * pdp11.c, * pe-arm.c, * pe-i386.c,
* pe-mcore.c, * pe-mips.c, * pe-x86_64.c, * peXXigen.c, * pef.c,
* pef.h, * pei-arm.c, * pei-i386.c, * pei-mcore.c, * pei-x86_64.c,
* peicode.h, * plugin.c, * ppcboot.c, * ptrace-core.c, * reloc.c,
* riscix.c, * rs6000-core.c, * section.c, * som.c, * som.h,
* sparclinux.c, * sparcnetbsd.c, * srec.c, * stabs.c, * sunos.c,
* syms.c, * targets.c, * tekhex.c, * trad-core.c, * vax1knetbsd.c,
* vaxnetbsd.c, * verilog.c, * versados.c, * vms-alpha.c, * vms-lib.c,
* vms-misc.c, * wasm-module.c, * wasm-module.h, * xcofflink.c,
* xsym.c, * xsym.h: Whitespace fixes.
* bfd-in2.h, * libbfd.h, * libcoff.h: Regenerate.
2017-12-06 06:56:00 +08:00
|
|
|
|
#define BFD_HOSTPTR_T @BFD_HOSTPTR_T@
|
2007-07-12 15:16:41 +08:00
|
|
|
|
typedef BFD_HOSTPTR_T bfd_hostptr_t;
|
|
|
|
|
|
2002-01-31 02:12:17 +08:00
|
|
|
|
/* Forward declaration. */
|
2003-02-28 05:24:36 +08:00
|
|
|
|
typedef struct bfd bfd;
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
2002-11-30 16:39:46 +08:00
|
|
|
|
/* Boolean type used in bfd. Too many systems define their own
|
|
|
|
|
versions of "boolean" for us to safely typedef a "boolean" of
|
2002-12-08 11:34:38 +08:00
|
|
|
|
our own. Using an enum for "bfd_boolean" has its own set of
|
2002-11-30 16:39:46 +08:00
|
|
|
|
problems, with strange looking casts required to avoid warnings
|
|
|
|
|
on some older compilers. Thus we just use an int.
|
|
|
|
|
|
2002-12-08 11:34:38 +08:00
|
|
|
|
General rule: Functions which are bfd_boolean return TRUE on
|
2002-11-30 16:39:46 +08:00
|
|
|
|
success and FALSE on failure (unless they're a predicate). */
|
|
|
|
|
|
|
|
|
|
typedef int bfd_boolean;
|
|
|
|
|
#undef FALSE
|
|
|
|
|
#undef TRUE
|
|
|
|
|
#define FALSE 0
|
|
|
|
|
#define TRUE 1
|
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
|
#ifdef BFD64
|
|
|
|
|
|
|
|
|
|
#ifndef BFD_HOST_64_BIT
|
|
|
|
|
#error No 64 bit integer type available
|
|
|
|
|
#endif /* ! defined (BFD_HOST_64_BIT) */
|
|
|
|
|
|
|
|
|
|
typedef BFD_HOST_U_64_BIT bfd_vma;
|
|
|
|
|
typedef BFD_HOST_64_BIT bfd_signed_vma;
|
|
|
|
|
typedef BFD_HOST_U_64_BIT bfd_size_type;
|
|
|
|
|
typedef BFD_HOST_U_64_BIT symvalue;
|
|
|
|
|
|
|
|
|
|
#if BFD_HOST_64BIT_LONG
|
2008-07-28 12:07:32 +08:00
|
|
|
|
#define BFD_VMA_FMT "l"
|
|
|
|
|
#elif defined (__MSVCRT__)
|
|
|
|
|
#define BFD_VMA_FMT "I64"
|
2008-01-26 00:18:41 +08:00
|
|
|
|
#else
|
2008-07-28 12:07:32 +08:00
|
|
|
|
#define BFD_VMA_FMT "ll"
|
1999-05-03 15:29:11 +08:00
|
|
|
|
#endif
|
2008-07-28 12:07:32 +08:00
|
|
|
|
|
|
|
|
|
#ifndef fprintf_vma
|
|
|
|
|
#define sprintf_vma(s,x) sprintf (s, "%016" BFD_VMA_FMT "x", x)
|
|
|
|
|
#define fprintf_vma(f,x) fprintf (f, "%016" BFD_VMA_FMT "x", x)
|
1999-05-03 15:29:11 +08:00
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#else /* not BFD64 */
|
|
|
|
|
|
|
|
|
|
/* Represent a target address. Also used as a generic unsigned type
|
|
|
|
|
which is guaranteed to be big enough to hold any arithmetic types
|
|
|
|
|
we need to deal with. */
|
|
|
|
|
typedef unsigned long bfd_vma;
|
|
|
|
|
|
|
|
|
|
/* A generic signed type which is guaranteed to be big enough to hold any
|
|
|
|
|
arithmetic types we need to deal with. Can be assumed to be compatible
|
|
|
|
|
with bfd_vma in the same way that signed and unsigned ints are compatible
|
|
|
|
|
(as parameters, in assignment, etc). */
|
|
|
|
|
typedef long bfd_signed_vma;
|
|
|
|
|
|
|
|
|
|
typedef unsigned long symvalue;
|
|
|
|
|
typedef unsigned long bfd_size_type;
|
|
|
|
|
|
|
|
|
|
/* Print a bfd_vma x on stream s. */
|
2008-07-28 12:07:32 +08:00
|
|
|
|
#define BFD_VMA_FMT "l"
|
|
|
|
|
#define fprintf_vma(s,x) fprintf (s, "%08" BFD_VMA_FMT "x", x)
|
|
|
|
|
#define sprintf_vma(s,x) sprintf (s, "%08" BFD_VMA_FMT "x", x)
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
|
|
#endif /* not BFD64 */
|
|
|
|
|
|
* libbfd-in.h (bfd_malloc2, bfd_realloc2, bfd_zmalloc2, bfd_alloc2,
bfd_zalloc2): New prototypes.
* bfd-in.h (HALF_BFD_SIZE_TYPE): Define.
* libbfd.c (bfd_malloc2, bfd_realloc2, bfd_zmalloc2): New functions.
* opncls.c (bfd_alloc2, bfd_zalloc2): New functions.
* elf.c (bfd_elf_get_elf_syms, setup_group, assign_section_numbers,
elf_map_symbols, map_sections_to_segments,
assign_file_positions_for_segments, copy_private_bfd_data,
swap_out_syms, _bfd_elf_slurp_version_tables): Use bfd_*alloc2
where appropriate.
* bfd-in2.h: Rebuilt.
* libbfd.h: Rebuilt.
* elf.c (_bfd_elf_print_private_bfd_data): Don't crash on bogus
verdef or verneed section.
(_bfd_elf_slurp_version_tables): Handle corrupt verdef and/or
verneed sections gracefully.
* elfxx-sparc.c (_bfd_sparc_elf_info_to_howto_ptr): Don't crash on
bogus relocation values.
* elf64-ppc.c (ppc64_elf_info_to_howto): Likewise.
* elf64-s390.c (elf_s390_info_to_howto): Likewise.
* elf32-s390.c (elf_s390_info_to_howto): Likewise.
* elf64-x86-64.c (elf64_x86_64_info_to_howto): Likewise.
* elfxx-ia64.c (lookup_howto): Likewise.
2005-07-05 17:44:20 +08:00
|
|
|
|
#define HALF_BFD_SIZE_TYPE \
|
|
|
|
|
(((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
|
|
|
|
|
|
* bfd-in.h (bfd_int64_t, bfd_uint64_t): New types.
(BFD_HOST_64_BIT, BFD_HOST_U_64_BIT): Don't define here.
(bfd_getb64, bfd_getl64, bfd_get_bits): Return bfd_uint64_t.
(bfd_getb_signed_64, bfd_getl_signed_64): Return bfd_int64_t.
(bfd_putb64, bfd_putl64, bfd_put_bits): Accept bfd_uint64_t.
* configure.in (HOST_U_64BIT_TYPE): Set when sizeof long is 8.
(BFD_HOST_64_BIT_DEFINED, BFD_HOST_64_BIT, BFD_HOST_U_64_BIT): Set
when using long.
* libbfd.c (EIGHT_GAZILLION, COERCE64): Use bfd_int64_t.
(bfd_getb64): Return bfd_uint64_t. Enable when BFD_HOST_64_BIT.
(bfd_getl64, bfd_getb_signed_64, bfd_getl_signed_64): Likewise.
(bfd_putb64): Accept bfd_uint64_t. Enable when BFD_HOST_64_BIT.
(bfd_putl64, bfd_put_bits, bfd_get_bits): Likewise.
* dwarf2.c (struct attribute): Use bfd_int64_t and bfd_uint64_t.
(read_8_bytes, read_indirect_string, read_address): Likewise.
(read_abbrevs, parse_comp_unit): Likewise.
* targets.c (struct bfd_target): Likewise.
* aix386-core.c (NO_GET64, NO_PUT64, NO_GETS64): Define and use.
* hppabsd-core.c: Likewise. Formatting.
* hpux-core.c: Likewise.
* irix-core.c: Likewise.
* netbsd-core.c: Likewise.
* osf-core.c: Likewise.
* ptrace-core.c: Likewise.
* sco5-core.c: Likewise.
* trad-core.c: Likewise.
* configure: Regenerate.
* bfd-in2.h: Regenerate.
2004-03-15 22:21:43 +08:00
|
|
|
|
#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
|
|
|
|
|
|
2004-02-17 02:46:40 +08:00
|
|
|
|
/* 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;
|
Touches most files in bfd/, so likely will be blamed for everything..
o bfd_read and bfd_write lose an unnecessary param and become
bfd_bread and bfd_bwrite.
o bfd_*alloc now all take a bfd_size_type arg, and will error if
size_t is too small. eg. 32 bit host, 64 bit bfd, verrry big files
or bugs in linker scripts etc.
o file_ptr becomes a bfd_signed_vma. Besides matching sizes with
various other types involved in handling sections, this should make
it easier for bfd to support a 64 bit off_t on 32 bit hosts that
provide it.
o I've made the H_GET_* and H_PUT_* macros (which invoke bfd_h_{get,put}_*)
generally available. They now cast their args to bfd_vma and
bfd_byte * as appropriate, which removes a swag of casts from the
source.
o Bug fixes to bfd_get8, aix386_core_vec, elf32_h8_relax_section, and
aout-encap.c.
o Zillions of formatting and -Wconversion fixes.
2001-09-18 17:57:26 +08:00
|
|
|
|
|
2003-06-29 18:06:40 +08:00
|
|
|
|
extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
|
|
|
|
|
extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
|
2001-08-10 00:00:21 +08:00
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
|
#define printf_vma(x) fprintf_vma(stdout,x)
|
2001-08-10 00:00:21 +08:00
|
|
|
|
#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
|
|
typedef unsigned int flagword; /* 32 bits of flags */
|
|
|
|
|
typedef unsigned char bfd_byte;
|
|
|
|
|
|
2002-01-31 02:12:17 +08:00
|
|
|
|
/* File formats. */
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
2002-01-31 02:12:17 +08:00
|
|
|
|
typedef enum bfd_format
|
|
|
|
|
{
|
|
|
|
|
bfd_unknown = 0, /* File format is unknown. */
|
2003-11-25 02:06:40 +08:00
|
|
|
|
bfd_object, /* Linker/assembler/compiler output. */
|
2002-01-31 02:12:17 +08:00
|
|
|
|
bfd_archive, /* Object archive file. */
|
|
|
|
|
bfd_core, /* Core dump. */
|
|
|
|
|
bfd_type_end /* Marks the end; don't use it! */
|
|
|
|
|
}
|
|
|
|
|
bfd_format;
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
2002-01-31 02:12:17 +08:00
|
|
|
|
/* Symbols and relocation. */
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
|
|
/* A count of carsyms (canonical archive symbols). */
|
|
|
|
|
typedef unsigned long symindex;
|
|
|
|
|
|
|
|
|
|
#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
|
|
|
|
|
|
|
|
|
|
/* A canonical archive symbol. */
|
2002-01-31 02:12:17 +08:00
|
|
|
|
/* This is a type pun with struct ranlib on purpose! */
|
|
|
|
|
typedef struct carsym
|
|
|
|
|
{
|
2019-09-18 13:34:27 +08:00
|
|
|
|
const char *name;
|
2002-01-31 02:12:17 +08:00
|
|
|
|
file_ptr file_offset; /* Look here to find the file. */
|
|
|
|
|
}
|
|
|
|
|
carsym; /* To make these you call a carsymogen. */
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
|
|
/* Used in generating armaps (archive tables of contents).
|
2002-01-31 02:12:17 +08:00
|
|
|
|
Perhaps just a forward definition would do? */
|
BFD whitespace fixes
Binutils is supposed to use tabs. In my git config I have
whitespace = indent-with-non-tab,space-before-tab,trailing-space
and I got annoyed enough seeing red in "git diff" output to fix
the problems.
* doc/header.sed: Trim trailing space when splitting lines.
* aix386-core.c, * aout-adobe.c, * aout-arm.c, * aout-cris.c,
* aout-ns32k.c, * aout-target.h, * aout-tic30.c, * aoutf1.h, * aoutx.h,
* arc-got.h, * arc-plt.def, * arc-plt.h, * archive.c, * archive64.c,
* archures.c, * armnetbsd.c, * bfd-in.h, * bfd.c, * bfdio.c, * binary.c,
* bout.c, * cache.c, * cisco-core.c, * coff-alpha.c, * coff-apollo.c,
* coff-arm.c, * coff-h8300.c, * coff-i386.c, * coff-i860.c,
* coff-i960.c, * coff-m68k.c, * coff-m88k.c, * coff-mcore.c,
* coff-mips.c, * coff-ppc.c, * coff-rs6000.c, * coff-sh.c,
* coff-stgo32.c, * coff-tic4x.c, * coff-tic54x.c, * coff-tic80.c,
* coff-we32k.c, * coff-x86_64.c, * coff-z80.c, * coff-z8k.c,
* coff64-rs6000.c, * coffcode.h, * coffgen.c, * cofflink.c,
* coffswap.h, * compress.c, * corefile.c, * cpu-alpha.c, * cpu-arm.c,
* cpu-avr.c, * cpu-bfin.c, * cpu-cr16.c, * cpu-cr16c.c, * cpu-crx.c,
* cpu-d10v.c, * cpu-frv.c, * cpu-ft32.c, * cpu-i370.c, * cpu-i960.c,
* cpu-ia64-opc.c, * cpu-ip2k.c, * cpu-lm32.c, * cpu-m32r.c,
* cpu-mcore.c, * cpu-microblaze.c, * cpu-mips.c, * cpu-moxie.c,
* cpu-mt.c, * cpu-nios2.c, * cpu-ns32k.c, * cpu-or1k.c, * cpu-powerpc.c,
* cpu-pru.c, * cpu-sh.c, * cpu-spu.c, * cpu-v850.c, * cpu-v850_rh850.c,
* cpu-xgate.c, * cpu-z80.c, * dwarf1.c, * dwarf2.c, * ecoff.c,
* ecofflink.c, * ecoffswap.h, * elf-bfd.h, * elf-eh-frame.c,
* elf-hppa.h, * elf-m10200.c, * elf-m10300.c, * elf-s390-common.c,
* elf-strtab.c, * elf-vxworks.c, * elf.c, * elf32-am33lin.c,
* elf32-arc.c, * elf32-arm.c, * elf32-avr.c, * elf32-avr.h,
* elf32-bfin.c, * elf32-cr16.c, * elf32-cr16c.c, * elf32-cris.c,
* elf32-crx.c, * elf32-d10v.c, * elf32-d30v.c, * elf32-dlx.c,
* elf32-epiphany.c, * elf32-fr30.c, * elf32-frv.c, * elf32-ft32.c,
* elf32-h8300.c, * elf32-hppa.c, * elf32-i386.c, * elf32-i860.c,
* elf32-i960.c, * elf32-ip2k.c, * elf32-lm32.c, * elf32-m32c.c,
* elf32-m32r.c, * elf32-m68hc11.c, * elf32-m68hc12.c, * elf32-m68hc1x.c,
* elf32-m68hc1x.h, * elf32-m68k.c, * elf32-m88k.c, * elf32-mcore.c,
* elf32-mep.c, * elf32-metag.c, * elf32-microblaze.c, * elf32-mips.c,
* elf32-moxie.c, * elf32-msp430.c, * elf32-mt.c, * elf32-nds32.c,
* elf32-nds32.h, * elf32-nios2.c, * elf32-or1k.c, * elf32-pj.c,
* elf32-ppc.c, * elf32-ppc.h, * elf32-pru.c, * elf32-rl78.c,
* elf32-rx.c, * elf32-s390.c, * elf32-score.c, * elf32-score.h,
* elf32-score7.c, * elf32-sh-symbian.c, * elf32-sh.c, * elf32-sh64.c,
* elf32-sparc.c, * elf32-spu.c, * elf32-tic6x.c, * elf32-tilegx.c,
* elf32-tilegx.h, * elf32-tilepro.c, * elf32-tilepro.h, * elf32-v850.c,
* elf32-vax.c, * elf32-wasm32.c, * elf32-xc16x.c, * elf32-xgate.c,
* elf32-xgate.h, * elf32-xstormy16.c, * elf32-xtensa.c, * elf64-alpha.c,
* elf64-hppa.c, * elf64-ia64-vms.c, * elf64-mips.c, * elf64-mmix.c,
* elf64-ppc.c, * elf64-s390.c, * elf64-sh64.c, * elf64-sparc.c,
* elf64-tilegx.c, * elf64-tilegx.h, * elf64-x86-64.c, * elfcore.h,
* elflink.c, * elfn32-mips.c, * elfnn-aarch64.c, * elfnn-ia64.c,
* elfnn-riscv.c, * elfxx-aarch64.c, * elfxx-aarch64.h, * elfxx-ia64.c,
* elfxx-ia64.h, * elfxx-mips.c, * elfxx-riscv.c, * elfxx-sparc.c,
* elfxx-tilegx.c, * elfxx-x86.c, * elfxx-x86.h, * freebsd.h, * hash.c,
* host-aout.c, * hp300hpux.c, * hppabsd-core.c, * hpux-core.c,
* i386aout.c, * i386linux.c, * i386lynx.c, * i386mach3.c, * i386msdos.c,
* i386netbsd.c, * ieee.c, * ihex.c, * irix-core.c, * libaout.h,
* libbfd-in.h, * libbfd.c, * libcoff-in.h, * libnlm.h, * libpei.h,
* libxcoff.h, * linker.c, * lynx-core.c, * m68k4knetbsd.c,
* m68klinux.c, * m68knetbsd.c, * m88kmach3.c, * mach-o-aarch64.c,
* mach-o-arm.c, * mach-o-i386.c, * mach-o-target.c, * mach-o-x86-64.c,
* mach-o.c, * mach-o.h, * merge.c, * mipsbsd.c, * mmo.c, * netbsd.h,
* netbsd-core.c, * newsos3.c, * nlm-target.h, * nlm32-ppc.c,
* nlm32-sparc.c, * nlmcode.h, * ns32k.h, * ns32knetbsd.c, * oasys.c,
* opncls.c, * pc532-mach.c, * pdp11.c, * pe-arm.c, * pe-i386.c,
* pe-mcore.c, * pe-mips.c, * pe-x86_64.c, * peXXigen.c, * pef.c,
* pef.h, * pei-arm.c, * pei-i386.c, * pei-mcore.c, * pei-x86_64.c,
* peicode.h, * plugin.c, * ppcboot.c, * ptrace-core.c, * reloc.c,
* riscix.c, * rs6000-core.c, * section.c, * som.c, * som.h,
* sparclinux.c, * sparcnetbsd.c, * srec.c, * stabs.c, * sunos.c,
* syms.c, * targets.c, * tekhex.c, * trad-core.c, * vax1knetbsd.c,
* vaxnetbsd.c, * verilog.c, * versados.c, * vms-alpha.c, * vms-lib.c,
* vms-misc.c, * wasm-module.c, * wasm-module.h, * xcofflink.c,
* xsym.c, * xsym.h: Whitespace fixes.
* bfd-in2.h, * libbfd.h, * libcoff.h: Regenerate.
2017-12-06 06:56:00 +08:00
|
|
|
|
struct orl /* Output ranlib. */
|
2002-01-31 02:12:17 +08:00
|
|
|
|
{
|
|
|
|
|
char **name; /* Symbol name. */
|
|
|
|
|
union
|
|
|
|
|
{
|
Touches most files in bfd/, so likely will be blamed for everything..
o bfd_read and bfd_write lose an unnecessary param and become
bfd_bread and bfd_bwrite.
o bfd_*alloc now all take a bfd_size_type arg, and will error if
size_t is too small. eg. 32 bit host, 64 bit bfd, verrry big files
or bugs in linker scripts etc.
o file_ptr becomes a bfd_signed_vma. Besides matching sizes with
various other types involved in handling sections, this should make
it easier for bfd to support a 64 bit off_t on 32 bit hosts that
provide it.
o I've made the H_GET_* and H_PUT_* macros (which invoke bfd_h_{get,put}_*)
generally available. They now cast their args to bfd_vma and
bfd_byte * as appropriate, which removes a swag of casts from the
source.
o Bug fixes to bfd_get8, aix386_core_vec, elf32_h8_relax_section, and
aout-encap.c.
o Zillions of formatting and -Wconversion fixes.
2001-09-18 17:57:26 +08:00
|
|
|
|
file_ptr pos;
|
|
|
|
|
bfd *abfd;
|
2002-01-31 02:12:17 +08:00
|
|
|
|
} u; /* bfd* or file position. */
|
|
|
|
|
int namidx; /* Index into string table. */
|
1999-05-03 15:29:11 +08:00
|
|
|
|
};
|
2016-07-16 11:55:11 +08:00
|
|
|
|
|
2002-01-31 02:12:17 +08:00
|
|
|
|
/* Linenumber stuff. */
|
|
|
|
|
typedef struct lineno_cache_entry
|
|
|
|
|
{
|
|
|
|
|
unsigned int line_number; /* Linenumber from start of function. */
|
|
|
|
|
union
|
|
|
|
|
{
|
Index: sim/frv/ChangeLog
2003-10-30 Andrew Cagney <cagney@redhat.com>
* traps.c: Replace "struct symbol_cache_entry" with "struct
bfd_symbol".
Index: sim/d10v/ChangeLog
2003-10-30 Andrew Cagney <cagney@redhat.com>
* simops.c: Replace "struct symbol_cache_entry" with "struct
bfd_symbol".
Index: sim/common/ChangeLog
2003-10-30 Andrew Cagney <cagney@redhat.com>
* sim-trace.c, sim-base.h: Replace "struct symbol_cache_entry"
with "struct bfd_symbol".
Index: ld/ChangeLog
2003-10-30 Andrew Cagney <cagney@redhat.com>
* emultempl/pe.em, pe-dll.c: Replace "struct symbol_cache_entry"
with "struct bfd_symbol".
Index: bfd/ChangeLog
2003-10-30 Andrew Cagney <cagney@redhat.com>
* syms.c: Replace "struct symbol_cache_entry" with "struct
bfd_symbol".
* vms.h, targets.c, section.c, reloc.c, peicode.h: Ditto.
* mipsbsd.c, elf.c, linker.c, elf-bfd.h, ecoff.c: Ditto.
* cpu-z8k.c, cpu-ns32k.c, cpu-h8500.c, bfd.c, bfd-in.h: Ditto.
* bfd-in2.h: Re-generate.
2003-10-31 13:32:46 +08:00
|
|
|
|
struct bfd_symbol *sym; /* Function name. */
|
BFD whitespace fixes
Binutils is supposed to use tabs. In my git config I have
whitespace = indent-with-non-tab,space-before-tab,trailing-space
and I got annoyed enough seeing red in "git diff" output to fix
the problems.
* doc/header.sed: Trim trailing space when splitting lines.
* aix386-core.c, * aout-adobe.c, * aout-arm.c, * aout-cris.c,
* aout-ns32k.c, * aout-target.h, * aout-tic30.c, * aoutf1.h, * aoutx.h,
* arc-got.h, * arc-plt.def, * arc-plt.h, * archive.c, * archive64.c,
* archures.c, * armnetbsd.c, * bfd-in.h, * bfd.c, * bfdio.c, * binary.c,
* bout.c, * cache.c, * cisco-core.c, * coff-alpha.c, * coff-apollo.c,
* coff-arm.c, * coff-h8300.c, * coff-i386.c, * coff-i860.c,
* coff-i960.c, * coff-m68k.c, * coff-m88k.c, * coff-mcore.c,
* coff-mips.c, * coff-ppc.c, * coff-rs6000.c, * coff-sh.c,
* coff-stgo32.c, * coff-tic4x.c, * coff-tic54x.c, * coff-tic80.c,
* coff-we32k.c, * coff-x86_64.c, * coff-z80.c, * coff-z8k.c,
* coff64-rs6000.c, * coffcode.h, * coffgen.c, * cofflink.c,
* coffswap.h, * compress.c, * corefile.c, * cpu-alpha.c, * cpu-arm.c,
* cpu-avr.c, * cpu-bfin.c, * cpu-cr16.c, * cpu-cr16c.c, * cpu-crx.c,
* cpu-d10v.c, * cpu-frv.c, * cpu-ft32.c, * cpu-i370.c, * cpu-i960.c,
* cpu-ia64-opc.c, * cpu-ip2k.c, * cpu-lm32.c, * cpu-m32r.c,
* cpu-mcore.c, * cpu-microblaze.c, * cpu-mips.c, * cpu-moxie.c,
* cpu-mt.c, * cpu-nios2.c, * cpu-ns32k.c, * cpu-or1k.c, * cpu-powerpc.c,
* cpu-pru.c, * cpu-sh.c, * cpu-spu.c, * cpu-v850.c, * cpu-v850_rh850.c,
* cpu-xgate.c, * cpu-z80.c, * dwarf1.c, * dwarf2.c, * ecoff.c,
* ecofflink.c, * ecoffswap.h, * elf-bfd.h, * elf-eh-frame.c,
* elf-hppa.h, * elf-m10200.c, * elf-m10300.c, * elf-s390-common.c,
* elf-strtab.c, * elf-vxworks.c, * elf.c, * elf32-am33lin.c,
* elf32-arc.c, * elf32-arm.c, * elf32-avr.c, * elf32-avr.h,
* elf32-bfin.c, * elf32-cr16.c, * elf32-cr16c.c, * elf32-cris.c,
* elf32-crx.c, * elf32-d10v.c, * elf32-d30v.c, * elf32-dlx.c,
* elf32-epiphany.c, * elf32-fr30.c, * elf32-frv.c, * elf32-ft32.c,
* elf32-h8300.c, * elf32-hppa.c, * elf32-i386.c, * elf32-i860.c,
* elf32-i960.c, * elf32-ip2k.c, * elf32-lm32.c, * elf32-m32c.c,
* elf32-m32r.c, * elf32-m68hc11.c, * elf32-m68hc12.c, * elf32-m68hc1x.c,
* elf32-m68hc1x.h, * elf32-m68k.c, * elf32-m88k.c, * elf32-mcore.c,
* elf32-mep.c, * elf32-metag.c, * elf32-microblaze.c, * elf32-mips.c,
* elf32-moxie.c, * elf32-msp430.c, * elf32-mt.c, * elf32-nds32.c,
* elf32-nds32.h, * elf32-nios2.c, * elf32-or1k.c, * elf32-pj.c,
* elf32-ppc.c, * elf32-ppc.h, * elf32-pru.c, * elf32-rl78.c,
* elf32-rx.c, * elf32-s390.c, * elf32-score.c, * elf32-score.h,
* elf32-score7.c, * elf32-sh-symbian.c, * elf32-sh.c, * elf32-sh64.c,
* elf32-sparc.c, * elf32-spu.c, * elf32-tic6x.c, * elf32-tilegx.c,
* elf32-tilegx.h, * elf32-tilepro.c, * elf32-tilepro.h, * elf32-v850.c,
* elf32-vax.c, * elf32-wasm32.c, * elf32-xc16x.c, * elf32-xgate.c,
* elf32-xgate.h, * elf32-xstormy16.c, * elf32-xtensa.c, * elf64-alpha.c,
* elf64-hppa.c, * elf64-ia64-vms.c, * elf64-mips.c, * elf64-mmix.c,
* elf64-ppc.c, * elf64-s390.c, * elf64-sh64.c, * elf64-sparc.c,
* elf64-tilegx.c, * elf64-tilegx.h, * elf64-x86-64.c, * elfcore.h,
* elflink.c, * elfn32-mips.c, * elfnn-aarch64.c, * elfnn-ia64.c,
* elfnn-riscv.c, * elfxx-aarch64.c, * elfxx-aarch64.h, * elfxx-ia64.c,
* elfxx-ia64.h, * elfxx-mips.c, * elfxx-riscv.c, * elfxx-sparc.c,
* elfxx-tilegx.c, * elfxx-x86.c, * elfxx-x86.h, * freebsd.h, * hash.c,
* host-aout.c, * hp300hpux.c, * hppabsd-core.c, * hpux-core.c,
* i386aout.c, * i386linux.c, * i386lynx.c, * i386mach3.c, * i386msdos.c,
* i386netbsd.c, * ieee.c, * ihex.c, * irix-core.c, * libaout.h,
* libbfd-in.h, * libbfd.c, * libcoff-in.h, * libnlm.h, * libpei.h,
* libxcoff.h, * linker.c, * lynx-core.c, * m68k4knetbsd.c,
* m68klinux.c, * m68knetbsd.c, * m88kmach3.c, * mach-o-aarch64.c,
* mach-o-arm.c, * mach-o-i386.c, * mach-o-target.c, * mach-o-x86-64.c,
* mach-o.c, * mach-o.h, * merge.c, * mipsbsd.c, * mmo.c, * netbsd.h,
* netbsd-core.c, * newsos3.c, * nlm-target.h, * nlm32-ppc.c,
* nlm32-sparc.c, * nlmcode.h, * ns32k.h, * ns32knetbsd.c, * oasys.c,
* opncls.c, * pc532-mach.c, * pdp11.c, * pe-arm.c, * pe-i386.c,
* pe-mcore.c, * pe-mips.c, * pe-x86_64.c, * peXXigen.c, * pef.c,
* pef.h, * pei-arm.c, * pei-i386.c, * pei-mcore.c, * pei-x86_64.c,
* peicode.h, * plugin.c, * ppcboot.c, * ptrace-core.c, * reloc.c,
* riscix.c, * rs6000-core.c, * section.c, * som.c, * som.h,
* sparclinux.c, * sparcnetbsd.c, * srec.c, * stabs.c, * sunos.c,
* syms.c, * targets.c, * tekhex.c, * trad-core.c, * vax1knetbsd.c,
* vaxnetbsd.c, * verilog.c, * versados.c, * vms-alpha.c, * vms-lib.c,
* vms-misc.c, * wasm-module.c, * wasm-module.h, * xcofflink.c,
* xsym.c, * xsym.h: Whitespace fixes.
* bfd-in2.h, * libbfd.h, * libcoff.h: Regenerate.
2017-12-06 06:56:00 +08:00
|
|
|
|
bfd_vma offset; /* Offset into section. */
|
1999-05-03 15:29:11 +08:00
|
|
|
|
} u;
|
2002-01-31 02:12:17 +08:00
|
|
|
|
}
|
|
|
|
|
alent;
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
2002-01-31 02:12:17 +08:00
|
|
|
|
/* Object and core file sections. */
|
2016-07-16 11:55:11 +08:00
|
|
|
|
typedef struct bfd_section *sec_ptr;
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
|
|
#define align_power(addr, align) \
|
2015-11-10 00:12:56 +08:00
|
|
|
|
(((addr) + ((bfd_vma) 1 << (align)) - 1) & (-((bfd_vma) 1 << (align))))
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
2016-07-16 11:55:11 +08:00
|
|
|
|
/* Align an address upward to a boundary, expressed as a number of bytes.
|
|
|
|
|
E.g. align to an 8-byte boundary with argument of 8. Take care never
|
|
|
|
|
to wrap around if the address is within boundary-1 of the end of the
|
|
|
|
|
address space. */
|
|
|
|
|
#define BFD_ALIGN(this, boundary) \
|
|
|
|
|
((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this)) \
|
|
|
|
|
? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
|
|
|
|
|
: ~ (bfd_vma) 0)
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
|
|
typedef enum bfd_print_symbol
|
2000-06-19 09:22:44 +08:00
|
|
|
|
{
|
1999-05-03 15:29:11 +08:00
|
|
|
|
bfd_print_symbol_name,
|
|
|
|
|
bfd_print_symbol_more,
|
|
|
|
|
bfd_print_symbol_all
|
|
|
|
|
} bfd_print_symbol_type;
|
2000-06-19 09:22:44 +08:00
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
|
/* Information about a symbol that nm needs. */
|
|
|
|
|
|
|
|
|
|
typedef struct _symbol_info
|
|
|
|
|
{
|
|
|
|
|
symvalue value;
|
|
|
|
|
char type;
|
BFD whitespace fixes
Binutils is supposed to use tabs. In my git config I have
whitespace = indent-with-non-tab,space-before-tab,trailing-space
and I got annoyed enough seeing red in "git diff" output to fix
the problems.
* doc/header.sed: Trim trailing space when splitting lines.
* aix386-core.c, * aout-adobe.c, * aout-arm.c, * aout-cris.c,
* aout-ns32k.c, * aout-target.h, * aout-tic30.c, * aoutf1.h, * aoutx.h,
* arc-got.h, * arc-plt.def, * arc-plt.h, * archive.c, * archive64.c,
* archures.c, * armnetbsd.c, * bfd-in.h, * bfd.c, * bfdio.c, * binary.c,
* bout.c, * cache.c, * cisco-core.c, * coff-alpha.c, * coff-apollo.c,
* coff-arm.c, * coff-h8300.c, * coff-i386.c, * coff-i860.c,
* coff-i960.c, * coff-m68k.c, * coff-m88k.c, * coff-mcore.c,
* coff-mips.c, * coff-ppc.c, * coff-rs6000.c, * coff-sh.c,
* coff-stgo32.c, * coff-tic4x.c, * coff-tic54x.c, * coff-tic80.c,
* coff-we32k.c, * coff-x86_64.c, * coff-z80.c, * coff-z8k.c,
* coff64-rs6000.c, * coffcode.h, * coffgen.c, * cofflink.c,
* coffswap.h, * compress.c, * corefile.c, * cpu-alpha.c, * cpu-arm.c,
* cpu-avr.c, * cpu-bfin.c, * cpu-cr16.c, * cpu-cr16c.c, * cpu-crx.c,
* cpu-d10v.c, * cpu-frv.c, * cpu-ft32.c, * cpu-i370.c, * cpu-i960.c,
* cpu-ia64-opc.c, * cpu-ip2k.c, * cpu-lm32.c, * cpu-m32r.c,
* cpu-mcore.c, * cpu-microblaze.c, * cpu-mips.c, * cpu-moxie.c,
* cpu-mt.c, * cpu-nios2.c, * cpu-ns32k.c, * cpu-or1k.c, * cpu-powerpc.c,
* cpu-pru.c, * cpu-sh.c, * cpu-spu.c, * cpu-v850.c, * cpu-v850_rh850.c,
* cpu-xgate.c, * cpu-z80.c, * dwarf1.c, * dwarf2.c, * ecoff.c,
* ecofflink.c, * ecoffswap.h, * elf-bfd.h, * elf-eh-frame.c,
* elf-hppa.h, * elf-m10200.c, * elf-m10300.c, * elf-s390-common.c,
* elf-strtab.c, * elf-vxworks.c, * elf.c, * elf32-am33lin.c,
* elf32-arc.c, * elf32-arm.c, * elf32-avr.c, * elf32-avr.h,
* elf32-bfin.c, * elf32-cr16.c, * elf32-cr16c.c, * elf32-cris.c,
* elf32-crx.c, * elf32-d10v.c, * elf32-d30v.c, * elf32-dlx.c,
* elf32-epiphany.c, * elf32-fr30.c, * elf32-frv.c, * elf32-ft32.c,
* elf32-h8300.c, * elf32-hppa.c, * elf32-i386.c, * elf32-i860.c,
* elf32-i960.c, * elf32-ip2k.c, * elf32-lm32.c, * elf32-m32c.c,
* elf32-m32r.c, * elf32-m68hc11.c, * elf32-m68hc12.c, * elf32-m68hc1x.c,
* elf32-m68hc1x.h, * elf32-m68k.c, * elf32-m88k.c, * elf32-mcore.c,
* elf32-mep.c, * elf32-metag.c, * elf32-microblaze.c, * elf32-mips.c,
* elf32-moxie.c, * elf32-msp430.c, * elf32-mt.c, * elf32-nds32.c,
* elf32-nds32.h, * elf32-nios2.c, * elf32-or1k.c, * elf32-pj.c,
* elf32-ppc.c, * elf32-ppc.h, * elf32-pru.c, * elf32-rl78.c,
* elf32-rx.c, * elf32-s390.c, * elf32-score.c, * elf32-score.h,
* elf32-score7.c, * elf32-sh-symbian.c, * elf32-sh.c, * elf32-sh64.c,
* elf32-sparc.c, * elf32-spu.c, * elf32-tic6x.c, * elf32-tilegx.c,
* elf32-tilegx.h, * elf32-tilepro.c, * elf32-tilepro.h, * elf32-v850.c,
* elf32-vax.c, * elf32-wasm32.c, * elf32-xc16x.c, * elf32-xgate.c,
* elf32-xgate.h, * elf32-xstormy16.c, * elf32-xtensa.c, * elf64-alpha.c,
* elf64-hppa.c, * elf64-ia64-vms.c, * elf64-mips.c, * elf64-mmix.c,
* elf64-ppc.c, * elf64-s390.c, * elf64-sh64.c, * elf64-sparc.c,
* elf64-tilegx.c, * elf64-tilegx.h, * elf64-x86-64.c, * elfcore.h,
* elflink.c, * elfn32-mips.c, * elfnn-aarch64.c, * elfnn-ia64.c,
* elfnn-riscv.c, * elfxx-aarch64.c, * elfxx-aarch64.h, * elfxx-ia64.c,
* elfxx-ia64.h, * elfxx-mips.c, * elfxx-riscv.c, * elfxx-sparc.c,
* elfxx-tilegx.c, * elfxx-x86.c, * elfxx-x86.h, * freebsd.h, * hash.c,
* host-aout.c, * hp300hpux.c, * hppabsd-core.c, * hpux-core.c,
* i386aout.c, * i386linux.c, * i386lynx.c, * i386mach3.c, * i386msdos.c,
* i386netbsd.c, * ieee.c, * ihex.c, * irix-core.c, * libaout.h,
* libbfd-in.h, * libbfd.c, * libcoff-in.h, * libnlm.h, * libpei.h,
* libxcoff.h, * linker.c, * lynx-core.c, * m68k4knetbsd.c,
* m68klinux.c, * m68knetbsd.c, * m88kmach3.c, * mach-o-aarch64.c,
* mach-o-arm.c, * mach-o-i386.c, * mach-o-target.c, * mach-o-x86-64.c,
* mach-o.c, * mach-o.h, * merge.c, * mipsbsd.c, * mmo.c, * netbsd.h,
* netbsd-core.c, * newsos3.c, * nlm-target.h, * nlm32-ppc.c,
* nlm32-sparc.c, * nlmcode.h, * ns32k.h, * ns32knetbsd.c, * oasys.c,
* opncls.c, * pc532-mach.c, * pdp11.c, * pe-arm.c, * pe-i386.c,
* pe-mcore.c, * pe-mips.c, * pe-x86_64.c, * peXXigen.c, * pef.c,
* pef.h, * pei-arm.c, * pei-i386.c, * pei-mcore.c, * pei-x86_64.c,
* peicode.h, * plugin.c, * ppcboot.c, * ptrace-core.c, * reloc.c,
* riscix.c, * rs6000-core.c, * section.c, * som.c, * som.h,
* sparclinux.c, * sparcnetbsd.c, * srec.c, * stabs.c, * sunos.c,
* syms.c, * targets.c, * tekhex.c, * trad-core.c, * vax1knetbsd.c,
* vaxnetbsd.c, * verilog.c, * versados.c, * vms-alpha.c, * vms-lib.c,
* vms-misc.c, * wasm-module.c, * wasm-module.h, * xcofflink.c,
* xsym.c, * xsym.h: Whitespace fixes.
* bfd-in2.h, * libbfd.h, * libcoff.h: Regenerate.
2017-12-06 06:56:00 +08:00
|
|
|
|
const char *name; /* Symbol name. */
|
|
|
|
|
unsigned char stab_type; /* Stab type. */
|
|
|
|
|
char stab_other; /* Stab other. */
|
|
|
|
|
short stab_desc; /* Stab desc. */
|
|
|
|
|
const char *stab_name; /* String for stab type. */
|
1999-05-03 15:29:11 +08:00
|
|
|
|
} symbol_info;
|
|
|
|
|
|
|
|
|
|
/* Get the name of a stabs type code. */
|
|
|
|
|
|
2003-06-29 18:06:40 +08:00
|
|
|
|
extern const char *bfd_get_stab_name (int);
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
|
|
/* Hash table routines. There is no way to free up a hash table. */
|
|
|
|
|
|
|
|
|
|
/* An element in the hash table. Most uses will actually use a larger
|
|
|
|
|
structure, and an instance of this will be the first field. */
|
|
|
|
|
|
|
|
|
|
struct bfd_hash_entry
|
|
|
|
|
{
|
|
|
|
|
/* Next entry for this hash code. */
|
|
|
|
|
struct bfd_hash_entry *next;
|
|
|
|
|
/* String being hashed. */
|
|
|
|
|
const char *string;
|
|
|
|
|
/* Hash code. This is the full hash code, not the index into the
|
|
|
|
|
table. */
|
|
|
|
|
unsigned long hash;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* A hash table. */
|
|
|
|
|
|
|
|
|
|
struct bfd_hash_table
|
|
|
|
|
{
|
|
|
|
|
/* The hash array. */
|
|
|
|
|
struct bfd_hash_entry **table;
|
|
|
|
|
/* A function used to create new elements in the hash table. The
|
|
|
|
|
first entry is itself a pointer to an element. When this
|
|
|
|
|
function is first invoked, this pointer will be NULL. However,
|
|
|
|
|
having the pointer permits a hierarchy of method functions to be
|
|
|
|
|
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. */
|
2002-11-30 16:39:46 +08:00
|
|
|
|
struct bfd_hash_entry *(*newfunc)
|
2003-06-29 18:06:40 +08:00
|
|
|
|
(struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
|
BFD whitespace fixes
Binutils is supposed to use tabs. In my git config I have
whitespace = indent-with-non-tab,space-before-tab,trailing-space
and I got annoyed enough seeing red in "git diff" output to fix
the problems.
* doc/header.sed: Trim trailing space when splitting lines.
* aix386-core.c, * aout-adobe.c, * aout-arm.c, * aout-cris.c,
* aout-ns32k.c, * aout-target.h, * aout-tic30.c, * aoutf1.h, * aoutx.h,
* arc-got.h, * arc-plt.def, * arc-plt.h, * archive.c, * archive64.c,
* archures.c, * armnetbsd.c, * bfd-in.h, * bfd.c, * bfdio.c, * binary.c,
* bout.c, * cache.c, * cisco-core.c, * coff-alpha.c, * coff-apollo.c,
* coff-arm.c, * coff-h8300.c, * coff-i386.c, * coff-i860.c,
* coff-i960.c, * coff-m68k.c, * coff-m88k.c, * coff-mcore.c,
* coff-mips.c, * coff-ppc.c, * coff-rs6000.c, * coff-sh.c,
* coff-stgo32.c, * coff-tic4x.c, * coff-tic54x.c, * coff-tic80.c,
* coff-we32k.c, * coff-x86_64.c, * coff-z80.c, * coff-z8k.c,
* coff64-rs6000.c, * coffcode.h, * coffgen.c, * cofflink.c,
* coffswap.h, * compress.c, * corefile.c, * cpu-alpha.c, * cpu-arm.c,
* cpu-avr.c, * cpu-bfin.c, * cpu-cr16.c, * cpu-cr16c.c, * cpu-crx.c,
* cpu-d10v.c, * cpu-frv.c, * cpu-ft32.c, * cpu-i370.c, * cpu-i960.c,
* cpu-ia64-opc.c, * cpu-ip2k.c, * cpu-lm32.c, * cpu-m32r.c,
* cpu-mcore.c, * cpu-microblaze.c, * cpu-mips.c, * cpu-moxie.c,
* cpu-mt.c, * cpu-nios2.c, * cpu-ns32k.c, * cpu-or1k.c, * cpu-powerpc.c,
* cpu-pru.c, * cpu-sh.c, * cpu-spu.c, * cpu-v850.c, * cpu-v850_rh850.c,
* cpu-xgate.c, * cpu-z80.c, * dwarf1.c, * dwarf2.c, * ecoff.c,
* ecofflink.c, * ecoffswap.h, * elf-bfd.h, * elf-eh-frame.c,
* elf-hppa.h, * elf-m10200.c, * elf-m10300.c, * elf-s390-common.c,
* elf-strtab.c, * elf-vxworks.c, * elf.c, * elf32-am33lin.c,
* elf32-arc.c, * elf32-arm.c, * elf32-avr.c, * elf32-avr.h,
* elf32-bfin.c, * elf32-cr16.c, * elf32-cr16c.c, * elf32-cris.c,
* elf32-crx.c, * elf32-d10v.c, * elf32-d30v.c, * elf32-dlx.c,
* elf32-epiphany.c, * elf32-fr30.c, * elf32-frv.c, * elf32-ft32.c,
* elf32-h8300.c, * elf32-hppa.c, * elf32-i386.c, * elf32-i860.c,
* elf32-i960.c, * elf32-ip2k.c, * elf32-lm32.c, * elf32-m32c.c,
* elf32-m32r.c, * elf32-m68hc11.c, * elf32-m68hc12.c, * elf32-m68hc1x.c,
* elf32-m68hc1x.h, * elf32-m68k.c, * elf32-m88k.c, * elf32-mcore.c,
* elf32-mep.c, * elf32-metag.c, * elf32-microblaze.c, * elf32-mips.c,
* elf32-moxie.c, * elf32-msp430.c, * elf32-mt.c, * elf32-nds32.c,
* elf32-nds32.h, * elf32-nios2.c, * elf32-or1k.c, * elf32-pj.c,
* elf32-ppc.c, * elf32-ppc.h, * elf32-pru.c, * elf32-rl78.c,
* elf32-rx.c, * elf32-s390.c, * elf32-score.c, * elf32-score.h,
* elf32-score7.c, * elf32-sh-symbian.c, * elf32-sh.c, * elf32-sh64.c,
* elf32-sparc.c, * elf32-spu.c, * elf32-tic6x.c, * elf32-tilegx.c,
* elf32-tilegx.h, * elf32-tilepro.c, * elf32-tilepro.h, * elf32-v850.c,
* elf32-vax.c, * elf32-wasm32.c, * elf32-xc16x.c, * elf32-xgate.c,
* elf32-xgate.h, * elf32-xstormy16.c, * elf32-xtensa.c, * elf64-alpha.c,
* elf64-hppa.c, * elf64-ia64-vms.c, * elf64-mips.c, * elf64-mmix.c,
* elf64-ppc.c, * elf64-s390.c, * elf64-sh64.c, * elf64-sparc.c,
* elf64-tilegx.c, * elf64-tilegx.h, * elf64-x86-64.c, * elfcore.h,
* elflink.c, * elfn32-mips.c, * elfnn-aarch64.c, * elfnn-ia64.c,
* elfnn-riscv.c, * elfxx-aarch64.c, * elfxx-aarch64.h, * elfxx-ia64.c,
* elfxx-ia64.h, * elfxx-mips.c, * elfxx-riscv.c, * elfxx-sparc.c,
* elfxx-tilegx.c, * elfxx-x86.c, * elfxx-x86.h, * freebsd.h, * hash.c,
* host-aout.c, * hp300hpux.c, * hppabsd-core.c, * hpux-core.c,
* i386aout.c, * i386linux.c, * i386lynx.c, * i386mach3.c, * i386msdos.c,
* i386netbsd.c, * ieee.c, * ihex.c, * irix-core.c, * libaout.h,
* libbfd-in.h, * libbfd.c, * libcoff-in.h, * libnlm.h, * libpei.h,
* libxcoff.h, * linker.c, * lynx-core.c, * m68k4knetbsd.c,
* m68klinux.c, * m68knetbsd.c, * m88kmach3.c, * mach-o-aarch64.c,
* mach-o-arm.c, * mach-o-i386.c, * mach-o-target.c, * mach-o-x86-64.c,
* mach-o.c, * mach-o.h, * merge.c, * mipsbsd.c, * mmo.c, * netbsd.h,
* netbsd-core.c, * newsos3.c, * nlm-target.h, * nlm32-ppc.c,
* nlm32-sparc.c, * nlmcode.h, * ns32k.h, * ns32knetbsd.c, * oasys.c,
* opncls.c, * pc532-mach.c, * pdp11.c, * pe-arm.c, * pe-i386.c,
* pe-mcore.c, * pe-mips.c, * pe-x86_64.c, * peXXigen.c, * pef.c,
* pef.h, * pei-arm.c, * pei-i386.c, * pei-mcore.c, * pei-x86_64.c,
* peicode.h, * plugin.c, * ppcboot.c, * ptrace-core.c, * reloc.c,
* riscix.c, * rs6000-core.c, * section.c, * som.c, * som.h,
* sparclinux.c, * sparcnetbsd.c, * srec.c, * stabs.c, * sunos.c,
* syms.c, * targets.c, * tekhex.c, * trad-core.c, * vax1knetbsd.c,
* vaxnetbsd.c, * verilog.c, * versados.c, * vms-alpha.c, * vms-lib.c,
* vms-misc.c, * wasm-module.c, * wasm-module.h, * xcofflink.c,
* xsym.c, * xsym.h: Whitespace fixes.
* bfd-in2.h, * libbfd.h, * libcoff.h: Regenerate.
2017-12-06 06:56:00 +08:00
|
|
|
|
/* An objalloc for this hash table. This is a struct objalloc *,
|
2003-06-29 18:06:40 +08:00
|
|
|
|
but we use void * to avoid requiring the inclusion of objalloc.h. */
|
|
|
|
|
void *memory;
|
2006-11-20 09:38:38 +08:00
|
|
|
|
/* The number of slots in the hash table. */
|
|
|
|
|
unsigned int size;
|
|
|
|
|
/* The number of entries in the hash table. */
|
|
|
|
|
unsigned int count;
|
|
|
|
|
/* The size of elements. */
|
|
|
|
|
unsigned int entsize;
|
|
|
|
|
/* If non-zero, don't grow the hash table. */
|
|
|
|
|
unsigned int frozen:1;
|
1999-05-03 15:29:11 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* Initialize a hash table. */
|
2002-11-30 16:39:46 +08:00
|
|
|
|
extern bfd_boolean bfd_hash_table_init
|
2003-06-29 18:06:40 +08:00
|
|
|
|
(struct bfd_hash_table *,
|
|
|
|
|
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
|
|
|
|
struct bfd_hash_table *,
|
2006-03-16 20:20:16 +08:00
|
|
|
|
const char *),
|
|
|
|
|
unsigned int);
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
|
|
/* Initialize a hash table specifying a size. */
|
2002-11-30 16:39:46 +08:00
|
|
|
|
extern bfd_boolean bfd_hash_table_init_n
|
2003-06-29 18:06:40 +08:00
|
|
|
|
(struct bfd_hash_table *,
|
|
|
|
|
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
|
|
|
|
|
struct bfd_hash_table *,
|
|
|
|
|
const char *),
|
2006-03-16 20:20:16 +08:00
|
|
|
|
unsigned int, unsigned int);
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
|
|
/* Free up a hash table. */
|
2002-11-30 16:39:46 +08:00
|
|
|
|
extern void bfd_hash_table_free
|
2003-06-29 18:06:40 +08:00
|
|
|
|
(struct bfd_hash_table *);
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
2002-11-30 16:39:46 +08:00
|
|
|
|
/* Look up a string in a hash table. If CREATE is TRUE, a new entry
|
1999-05-03 15:29:11 +08:00
|
|
|
|
will be created for this string if one does not already exist. The
|
2002-11-30 16:39:46 +08:00
|
|
|
|
COPY argument must be TRUE if this routine should copy the string
|
1999-05-03 15:29:11 +08:00
|
|
|
|
into newly allocated memory when adding an entry. */
|
|
|
|
|
extern struct bfd_hash_entry *bfd_hash_lookup
|
2003-06-29 18:06:40 +08:00
|
|
|
|
(struct bfd_hash_table *, const char *, bfd_boolean create,
|
|
|
|
|
bfd_boolean copy);
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
2007-09-19 20:08:34 +08:00
|
|
|
|
/* Insert an entry in a hash table. */
|
|
|
|
|
extern struct bfd_hash_entry *bfd_hash_insert
|
|
|
|
|
(struct bfd_hash_table *, const char *, unsigned long);
|
|
|
|
|
|
2010-11-08 10:48:57 +08:00
|
|
|
|
/* Rename an entry in a hash table. */
|
|
|
|
|
extern void bfd_hash_rename
|
|
|
|
|
(struct bfd_hash_table *, const char *, struct bfd_hash_entry *);
|
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
|
/* Replace an entry in a hash table. */
|
|
|
|
|
extern void bfd_hash_replace
|
2003-06-29 18:06:40 +08:00
|
|
|
|
(struct bfd_hash_table *, struct bfd_hash_entry *old,
|
|
|
|
|
struct bfd_hash_entry *nw);
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
|
|
/* Base method for creating a hash table entry. */
|
|
|
|
|
extern struct bfd_hash_entry *bfd_hash_newfunc
|
2003-06-29 18:06:40 +08:00
|
|
|
|
(struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
|
|
/* Grab some space for a hash table entry. */
|
2003-06-29 18:06:40 +08:00
|
|
|
|
extern void *bfd_hash_allocate
|
|
|
|
|
(struct bfd_hash_table *, unsigned int);
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
|
|
/* Traverse a hash table in a random order, calling a function on each
|
2002-11-30 16:39:46 +08:00
|
|
|
|
element. If the function returns FALSE, the traversal stops. The
|
1999-05-03 15:29:11 +08:00
|
|
|
|
INFO argument is passed to the function. */
|
2002-11-30 16:39:46 +08:00
|
|
|
|
extern void bfd_hash_traverse
|
2003-06-29 18:06:40 +08:00
|
|
|
|
(struct bfd_hash_table *,
|
|
|
|
|
bfd_boolean (*) (struct bfd_hash_entry *, void *),
|
|
|
|
|
void *info);
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
2004-05-21 23:38:04 +08:00
|
|
|
|
/* Allows the default size of a hash table to be configured. New hash
|
|
|
|
|
tables allocated using bfd_hash_table_init will be created with
|
|
|
|
|
this size. */
|
2011-04-20 20:52:16 +08:00
|
|
|
|
extern unsigned long bfd_hash_set_default_size (unsigned long);
|
2004-05-21 23:38:04 +08:00
|
|
|
|
|
2015-04-15 13:01:25 +08:00
|
|
|
|
/* Types of compressed DWARF debug sections. We currently support
|
|
|
|
|
zlib. */
|
|
|
|
|
enum compressed_debug_section_type
|
|
|
|
|
{
|
|
|
|
|
COMPRESS_DEBUG_NONE = 0,
|
|
|
|
|
COMPRESS_DEBUG = 1 << 0,
|
2015-06-28 21:30:10 +08:00
|
|
|
|
COMPRESS_DEBUG_GNU_ZLIB = COMPRESS_DEBUG | 1 << 1,
|
|
|
|
|
COMPRESS_DEBUG_GABI_ZLIB = COMPRESS_DEBUG | 1 << 2
|
2015-04-15 13:01:25 +08:00
|
|
|
|
};
|
|
|
|
|
|
2004-06-28 21:57:59 +08:00
|
|
|
|
/* This structure is used to keep track of stabs in sections
|
|
|
|
|
information while linking. */
|
|
|
|
|
|
|
|
|
|
struct stab_info
|
|
|
|
|
{
|
|
|
|
|
/* A hash table used to hold stabs strings. */
|
|
|
|
|
struct bfd_strtab_hash *strings;
|
|
|
|
|
/* The header file hash table. */
|
|
|
|
|
struct bfd_hash_table includes;
|
|
|
|
|
/* The first .stabstr section. */
|
|
|
|
|
struct bfd_section *stabstr;
|
|
|
|
|
};
|
|
|
|
|
|
2003-06-29 18:06:40 +08:00
|
|
|
|
#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
|
2001-10-02 13:58:41 +08:00
|
|
|
|
|
2002-01-31 02:12:17 +08:00
|
|
|
|
/* User program access to BFD facilities. */
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
|
|
/* Direct I/O routines, for programs which know more about the object
|
|
|
|
|
file than BFD does. Use higher level routines if possible. */
|
|
|
|
|
|
2003-06-29 18:06:40 +08:00
|
|
|
|
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);
|
2004-02-12 07:23:20 +08:00
|
|
|
|
extern file_ptr bfd_tell (bfd *);
|
2003-06-29 18:06:40 +08:00
|
|
|
|
extern int bfd_flush (bfd *);
|
|
|
|
|
extern int bfd_stat (bfd *, struct stat *);
|
Touches most files in bfd/, so likely will be blamed for everything..
o bfd_read and bfd_write lose an unnecessary param and become
bfd_bread and bfd_bwrite.
o bfd_*alloc now all take a bfd_size_type arg, and will error if
size_t is too small. eg. 32 bit host, 64 bit bfd, verrry big files
or bugs in linker scripts etc.
o file_ptr becomes a bfd_signed_vma. Besides matching sizes with
various other types involved in handling sections, this should make
it easier for bfd to support a 64 bit off_t on 32 bit hosts that
provide it.
o I've made the H_GET_* and H_PUT_* macros (which invoke bfd_h_{get,put}_*)
generally available. They now cast their args to bfd_vma and
bfd_byte * as appropriate, which removes a swag of casts from the
source.
o Bug fixes to bfd_get8, aix386_core_vec, elf32_h8_relax_section, and
aout-encap.c.
o Zillions of formatting and -Wconversion fixes.
2001-09-18 17:57:26 +08:00
|
|
|
|
|
|
|
|
|
/* Deprecated old routines. */
|
|
|
|
|
#if __GNUC__
|
|
|
|
|
#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
|
2017-02-17 09:26:12 +08:00
|
|
|
|
(_bfd_warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__), \
|
Touches most files in bfd/, so likely will be blamed for everything..
o bfd_read and bfd_write lose an unnecessary param and become
bfd_bread and bfd_bwrite.
o bfd_*alloc now all take a bfd_size_type arg, and will error if
size_t is too small. eg. 32 bit host, 64 bit bfd, verrry big files
or bugs in linker scripts etc.
o file_ptr becomes a bfd_signed_vma. Besides matching sizes with
various other types involved in handling sections, this should make
it easier for bfd to support a 64 bit off_t on 32 bit hosts that
provide it.
o I've made the H_GET_* and H_PUT_* macros (which invoke bfd_h_{get,put}_*)
generally available. They now cast their args to bfd_vma and
bfd_byte * as appropriate, which removes a swag of casts from the
source.
o Bug fixes to bfd_get8, aix386_core_vec, elf32_h8_relax_section, and
aout-encap.c.
o Zillions of formatting and -Wconversion fixes.
2001-09-18 17:57:26 +08:00
|
|
|
|
bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
|
|
|
|
|
#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
|
BFD whitespace fixes
Binutils is supposed to use tabs. In my git config I have
whitespace = indent-with-non-tab,space-before-tab,trailing-space
and I got annoyed enough seeing red in "git diff" output to fix
the problems.
* doc/header.sed: Trim trailing space when splitting lines.
* aix386-core.c, * aout-adobe.c, * aout-arm.c, * aout-cris.c,
* aout-ns32k.c, * aout-target.h, * aout-tic30.c, * aoutf1.h, * aoutx.h,
* arc-got.h, * arc-plt.def, * arc-plt.h, * archive.c, * archive64.c,
* archures.c, * armnetbsd.c, * bfd-in.h, * bfd.c, * bfdio.c, * binary.c,
* bout.c, * cache.c, * cisco-core.c, * coff-alpha.c, * coff-apollo.c,
* coff-arm.c, * coff-h8300.c, * coff-i386.c, * coff-i860.c,
* coff-i960.c, * coff-m68k.c, * coff-m88k.c, * coff-mcore.c,
* coff-mips.c, * coff-ppc.c, * coff-rs6000.c, * coff-sh.c,
* coff-stgo32.c, * coff-tic4x.c, * coff-tic54x.c, * coff-tic80.c,
* coff-we32k.c, * coff-x86_64.c, * coff-z80.c, * coff-z8k.c,
* coff64-rs6000.c, * coffcode.h, * coffgen.c, * cofflink.c,
* coffswap.h, * compress.c, * corefile.c, * cpu-alpha.c, * cpu-arm.c,
* cpu-avr.c, * cpu-bfin.c, * cpu-cr16.c, * cpu-cr16c.c, * cpu-crx.c,
* cpu-d10v.c, * cpu-frv.c, * cpu-ft32.c, * cpu-i370.c, * cpu-i960.c,
* cpu-ia64-opc.c, * cpu-ip2k.c, * cpu-lm32.c, * cpu-m32r.c,
* cpu-mcore.c, * cpu-microblaze.c, * cpu-mips.c, * cpu-moxie.c,
* cpu-mt.c, * cpu-nios2.c, * cpu-ns32k.c, * cpu-or1k.c, * cpu-powerpc.c,
* cpu-pru.c, * cpu-sh.c, * cpu-spu.c, * cpu-v850.c, * cpu-v850_rh850.c,
* cpu-xgate.c, * cpu-z80.c, * dwarf1.c, * dwarf2.c, * ecoff.c,
* ecofflink.c, * ecoffswap.h, * elf-bfd.h, * elf-eh-frame.c,
* elf-hppa.h, * elf-m10200.c, * elf-m10300.c, * elf-s390-common.c,
* elf-strtab.c, * elf-vxworks.c, * elf.c, * elf32-am33lin.c,
* elf32-arc.c, * elf32-arm.c, * elf32-avr.c, * elf32-avr.h,
* elf32-bfin.c, * elf32-cr16.c, * elf32-cr16c.c, * elf32-cris.c,
* elf32-crx.c, * elf32-d10v.c, * elf32-d30v.c, * elf32-dlx.c,
* elf32-epiphany.c, * elf32-fr30.c, * elf32-frv.c, * elf32-ft32.c,
* elf32-h8300.c, * elf32-hppa.c, * elf32-i386.c, * elf32-i860.c,
* elf32-i960.c, * elf32-ip2k.c, * elf32-lm32.c, * elf32-m32c.c,
* elf32-m32r.c, * elf32-m68hc11.c, * elf32-m68hc12.c, * elf32-m68hc1x.c,
* elf32-m68hc1x.h, * elf32-m68k.c, * elf32-m88k.c, * elf32-mcore.c,
* elf32-mep.c, * elf32-metag.c, * elf32-microblaze.c, * elf32-mips.c,
* elf32-moxie.c, * elf32-msp430.c, * elf32-mt.c, * elf32-nds32.c,
* elf32-nds32.h, * elf32-nios2.c, * elf32-or1k.c, * elf32-pj.c,
* elf32-ppc.c, * elf32-ppc.h, * elf32-pru.c, * elf32-rl78.c,
* elf32-rx.c, * elf32-s390.c, * elf32-score.c, * elf32-score.h,
* elf32-score7.c, * elf32-sh-symbian.c, * elf32-sh.c, * elf32-sh64.c,
* elf32-sparc.c, * elf32-spu.c, * elf32-tic6x.c, * elf32-tilegx.c,
* elf32-tilegx.h, * elf32-tilepro.c, * elf32-tilepro.h, * elf32-v850.c,
* elf32-vax.c, * elf32-wasm32.c, * elf32-xc16x.c, * elf32-xgate.c,
* elf32-xgate.h, * elf32-xstormy16.c, * elf32-xtensa.c, * elf64-alpha.c,
* elf64-hppa.c, * elf64-ia64-vms.c, * elf64-mips.c, * elf64-mmix.c,
* elf64-ppc.c, * elf64-s390.c, * elf64-sh64.c, * elf64-sparc.c,
* elf64-tilegx.c, * elf64-tilegx.h, * elf64-x86-64.c, * elfcore.h,
* elflink.c, * elfn32-mips.c, * elfnn-aarch64.c, * elfnn-ia64.c,
* elfnn-riscv.c, * elfxx-aarch64.c, * elfxx-aarch64.h, * elfxx-ia64.c,
* elfxx-ia64.h, * elfxx-mips.c, * elfxx-riscv.c, * elfxx-sparc.c,
* elfxx-tilegx.c, * elfxx-x86.c, * elfxx-x86.h, * freebsd.h, * hash.c,
* host-aout.c, * hp300hpux.c, * hppabsd-core.c, * hpux-core.c,
* i386aout.c, * i386linux.c, * i386lynx.c, * i386mach3.c, * i386msdos.c,
* i386netbsd.c, * ieee.c, * ihex.c, * irix-core.c, * libaout.h,
* libbfd-in.h, * libbfd.c, * libcoff-in.h, * libnlm.h, * libpei.h,
* libxcoff.h, * linker.c, * lynx-core.c, * m68k4knetbsd.c,
* m68klinux.c, * m68knetbsd.c, * m88kmach3.c, * mach-o-aarch64.c,
* mach-o-arm.c, * mach-o-i386.c, * mach-o-target.c, * mach-o-x86-64.c,
* mach-o.c, * mach-o.h, * merge.c, * mipsbsd.c, * mmo.c, * netbsd.h,
* netbsd-core.c, * newsos3.c, * nlm-target.h, * nlm32-ppc.c,
* nlm32-sparc.c, * nlmcode.h, * ns32k.h, * ns32knetbsd.c, * oasys.c,
* opncls.c, * pc532-mach.c, * pdp11.c, * pe-arm.c, * pe-i386.c,
* pe-mcore.c, * pe-mips.c, * pe-x86_64.c, * peXXigen.c, * pef.c,
* pef.h, * pei-arm.c, * pei-i386.c, * pei-mcore.c, * pei-x86_64.c,
* peicode.h, * plugin.c, * ppcboot.c, * ptrace-core.c, * reloc.c,
* riscix.c, * rs6000-core.c, * section.c, * som.c, * som.h,
* sparclinux.c, * sparcnetbsd.c, * srec.c, * stabs.c, * sunos.c,
* syms.c, * targets.c, * tekhex.c, * trad-core.c, * vax1knetbsd.c,
* vaxnetbsd.c, * verilog.c, * versados.c, * vms-alpha.c, * vms-lib.c,
* vms-misc.c, * wasm-module.c, * wasm-module.h, * xcofflink.c,
* xsym.c, * xsym.h: Whitespace fixes.
* bfd-in2.h, * libbfd.h, * libcoff.h: Regenerate.
2017-12-06 06:56:00 +08:00
|
|
|
|
(_bfd_warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \
|
Touches most files in bfd/, so likely will be blamed for everything..
o bfd_read and bfd_write lose an unnecessary param and become
bfd_bread and bfd_bwrite.
o bfd_*alloc now all take a bfd_size_type arg, and will error if
size_t is too small. eg. 32 bit host, 64 bit bfd, verrry big files
or bugs in linker scripts etc.
o file_ptr becomes a bfd_signed_vma. Besides matching sizes with
various other types involved in handling sections, this should make
it easier for bfd to support a 64 bit off_t on 32 bit hosts that
provide it.
o I've made the H_GET_* and H_PUT_* macros (which invoke bfd_h_{get,put}_*)
generally available. They now cast their args to bfd_vma and
bfd_byte * as appropriate, which removes a swag of casts from the
source.
o Bug fixes to bfd_get8, aix386_core_vec, elf32_h8_relax_section, and
aout-encap.c.
o Zillions of formatting and -Wconversion fixes.
2001-09-18 17:57:26 +08:00
|
|
|
|
bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
|
|
|
|
|
#else
|
|
|
|
|
#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
|
2017-02-17 09:26:12 +08:00
|
|
|
|
(_bfd_warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
|
Touches most files in bfd/, so likely will be blamed for everything..
o bfd_read and bfd_write lose an unnecessary param and become
bfd_bread and bfd_bwrite.
o bfd_*alloc now all take a bfd_size_type arg, and will error if
size_t is too small. eg. 32 bit host, 64 bit bfd, verrry big files
or bugs in linker scripts etc.
o file_ptr becomes a bfd_signed_vma. Besides matching sizes with
various other types involved in handling sections, this should make
it easier for bfd to support a 64 bit off_t on 32 bit hosts that
provide it.
o I've made the H_GET_* and H_PUT_* macros (which invoke bfd_h_{get,put}_*)
generally available. They now cast their args to bfd_vma and
bfd_byte * as appropriate, which removes a swag of casts from the
source.
o Bug fixes to bfd_get8, aix386_core_vec, elf32_h8_relax_section, and
aout-encap.c.
o Zillions of formatting and -Wconversion fixes.
2001-09-18 17:57:26 +08:00
|
|
|
|
bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
|
|
|
|
|
#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
|
2017-02-17 09:26:12 +08:00
|
|
|
|
(_bfd_warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
|
Touches most files in bfd/, so likely will be blamed for everything..
o bfd_read and bfd_write lose an unnecessary param and become
bfd_bread and bfd_bwrite.
o bfd_*alloc now all take a bfd_size_type arg, and will error if
size_t is too small. eg. 32 bit host, 64 bit bfd, verrry big files
or bugs in linker scripts etc.
o file_ptr becomes a bfd_signed_vma. Besides matching sizes with
various other types involved in handling sections, this should make
it easier for bfd to support a 64 bit off_t on 32 bit hosts that
provide it.
o I've made the H_GET_* and H_PUT_* macros (which invoke bfd_h_{get,put}_*)
generally available. They now cast their args to bfd_vma and
bfd_byte * as appropriate, which removes a swag of casts from the
source.
o Bug fixes to bfd_get8, aix386_core_vec, elf32_h8_relax_section, and
aout-encap.c.
o Zillions of formatting and -Wconversion fixes.
2001-09-18 17:57:26 +08:00
|
|
|
|
bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
|
|
|
|
|
#endif
|
2017-02-17 09:26:12 +08:00
|
|
|
|
extern void _bfd_warn_deprecated (const char *, const char *, int, const char *);
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
2002-11-30 16:39:46 +08:00
|
|
|
|
extern bfd_boolean bfd_cache_close
|
2003-06-29 18:06:40 +08:00
|
|
|
|
(bfd *abfd);
|
2001-04-26 05:08:02 +08:00
|
|
|
|
/* NB: This declaration should match the autogenerated one in libbfd.h. */
|
|
|
|
|
|
2004-06-17 19:47:51 +08:00
|
|
|
|
extern bfd_boolean bfd_cache_close_all (void);
|
|
|
|
|
|
2002-11-30 16:39:46 +08:00
|
|
|
|
extern bfd_boolean bfd_record_phdr
|
2003-06-29 18:06:40 +08:00
|
|
|
|
(bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
|
2003-10-19 Andrew Cagney <cagney@redhat.com>
* targets.c: Replace "struct sec" with "struct bfd_section"
* syms.c, sparclynx.c, section.c, opncls.c: Ditto.
* libcoff-in.h, libbfd-in.h, elfxx-target.h: Ditto.
* elf.c, coffgen.c, bfd.c, bfd-in.h, aoutf1.h: Ditto.
* aout-tic30.c, aout-target.h:
* bfd-in2.h, libcoff.h, libbfd.h: Regenerate.
Index: binutils/ChangeLog
2003-10-19 Andrew Cagney <cagney@redhat.com>
* coffgrok.h (coff_section): Replace 'struct sec" with "struct
bfd_section".
Index: gdb/ChangeLog
2003-10-19 Andrew Cagney <cagney@redhat.com>
* symtab.c: Replace "struct sec" with "struct bfd_section".
* objfiles.c, linespec.c, blockframe.c, block.c: Ditto.
Index: ld/ChangeLog
2003-10-19 Andrew Cagney <cagney@redhat.com>
* pe-dll.c: Replace "struct sec" with "struct bfd_section".
Index: sim/common/ChangeLog
2003-10-19 Andrew Cagney <cagney@redhat.com>
* sim-base.h: Replace "struct sec" with "struct bfd_section".
2003-10-20 22:38:46 +08:00
|
|
|
|
bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
|
|
|
|
/* Byte swapping routines. */
|
|
|
|
|
|
* bfd-in.h (bfd_int64_t, bfd_uint64_t): New types.
(BFD_HOST_64_BIT, BFD_HOST_U_64_BIT): Don't define here.
(bfd_getb64, bfd_getl64, bfd_get_bits): Return bfd_uint64_t.
(bfd_getb_signed_64, bfd_getl_signed_64): Return bfd_int64_t.
(bfd_putb64, bfd_putl64, bfd_put_bits): Accept bfd_uint64_t.
* configure.in (HOST_U_64BIT_TYPE): Set when sizeof long is 8.
(BFD_HOST_64_BIT_DEFINED, BFD_HOST_64_BIT, BFD_HOST_U_64_BIT): Set
when using long.
* libbfd.c (EIGHT_GAZILLION, COERCE64): Use bfd_int64_t.
(bfd_getb64): Return bfd_uint64_t. Enable when BFD_HOST_64_BIT.
(bfd_getl64, bfd_getb_signed_64, bfd_getl_signed_64): Likewise.
(bfd_putb64): Accept bfd_uint64_t. Enable when BFD_HOST_64_BIT.
(bfd_putl64, bfd_put_bits, bfd_get_bits): Likewise.
* dwarf2.c (struct attribute): Use bfd_int64_t and bfd_uint64_t.
(read_8_bytes, read_indirect_string, read_address): Likewise.
(read_abbrevs, parse_comp_unit): Likewise.
* targets.c (struct bfd_target): Likewise.
* aix386-core.c (NO_GET64, NO_PUT64, NO_GETS64): Define and use.
* hppabsd-core.c: Likewise. Formatting.
* hpux-core.c: Likewise.
* irix-core.c: Likewise.
* netbsd-core.c: Likewise.
* osf-core.c: Likewise.
* ptrace-core.c: Likewise.
* sco5-core.c: Likewise.
* trad-core.c: Likewise.
* configure: Regenerate.
* bfd-in2.h: Regenerate.
2004-03-15 22:21:43 +08:00
|
|
|
|
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-in.h (bfd_getb64, bfd_getl64): Replace bfd_byte* with void*.
(bfd_getb32, bfd_getl32, bfd_getb16, bfd_getl16): Likewise.
(bfd_getb_signed_64, bfd_getl_signed_64): Likewise.
(bfd_getb_signed_32, bfd_getl_signed_32): Likewise.
(bfd_getb_signed_16, bfd_getl_signed_16): Likewise.
(bfd_putb64, bfd_putl64, bfd_putb32, bfd_putl32): Likewise.
(bfd_putb16, bfd_putl16, bfd_get_bits, bfd_put_bits): Likewise.
* libbfd.c: Likewise in function definitions.
(bfd_put_8): Mask with 0xff rather than casting to char.
(bfd_putb16, bfd_putl16, bfd_putb32, bfd_putl32): Likewise.
(bfd_putb64, bfd_putl64, bfd_put_bits): Likewise.
(H_PUT_64, H_PUT_32, H_PUT_16, H_PUT_8): Remove casts, simplify.
(H_PUT_S64, H_PUT_S32, H_PUT_S16, H_PUT_S8): Likewise.
(H_GET_64, H_GET_32, H_GET_16, H_GET_8): Likewise.
(H_GET_S64, H_GET_S32, H_GET_S16, H_GET_S8): Likewise.
* libaout.h (H_PUT_64 H_PUT_32, H_PUT_16): Remove casts, simplify.
(H_PUT_S64, H_PUT_S32, H_PUT_S16): Likewise.
(H_GET_64, H_GET_32, H_GET_16): Likewise.
(H_GET_S64, H_GET_S32, H_GET_S16): Likewise.
* archive.c (do_slurp_coff_armap): Update swap prototype.
* coff-tic54x.c (tic54x_getl32): Replace bfd_byte* with void*.
(tic54x_getl_signed_32): Likewise.
(tic54x_putl32): Likewise. Mask with 0xff rather than casting to char.
* mach-o.c (bfd_mach_o_read_header): Update get32 prototype.
* pdp11.c (bfd_getp32): Make static, replace bfd_byte* with void*.
(bfd_getp_signed_32, bfd_putp32): Likewise.
* targets.c (struct bfd_target): Use void* in place of bfd_byte* for
bfd_getx64, bfd_getx_signed_64, bfd_putx64, bfd_getx32,
bfd_getx_signed_32, bfd_putx32, bfd_getx16, bfd_getx_signed_16,
bfd_putx16, bfd_h_getx64, bfd_h_getx_signed_64, bfd_h_putx64,
bfd_h_getx32, bfd_h_getx_signed_32, bfd_h_putx32, bfd_h_getx16,
bfd_h_getx_signed_16, bfd_h_putx16.
* aix386-core.c (NO_GET, NO_GETS, NO_PUT): Update prototypes.
* hppabsd-core.c: Similarly. Rename NO_SIGNED_GET to NO_GETS.
* hpux-core.c: Likewise.
* irix-core.c: Likewise.
* netbsd-core.c: Likewise.
* osf-core.c: Likewise.
* ptrace-core.c: Likewise.
* sco5-core.c: Likewise.
* trad-core.c: Likewise.
* bfd-in2.h: Regenerate.
2004-03-15 20:23:11 +08:00
|
|
|
|
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 *);
|
* bfd-in.h (bfd_int64_t, bfd_uint64_t): New types.
(BFD_HOST_64_BIT, BFD_HOST_U_64_BIT): Don't define here.
(bfd_getb64, bfd_getl64, bfd_get_bits): Return bfd_uint64_t.
(bfd_getb_signed_64, bfd_getl_signed_64): Return bfd_int64_t.
(bfd_putb64, bfd_putl64, bfd_put_bits): Accept bfd_uint64_t.
* configure.in (HOST_U_64BIT_TYPE): Set when sizeof long is 8.
(BFD_HOST_64_BIT_DEFINED, BFD_HOST_64_BIT, BFD_HOST_U_64_BIT): Set
when using long.
* libbfd.c (EIGHT_GAZILLION, COERCE64): Use bfd_int64_t.
(bfd_getb64): Return bfd_uint64_t. Enable when BFD_HOST_64_BIT.
(bfd_getl64, bfd_getb_signed_64, bfd_getl_signed_64): Likewise.
(bfd_putb64): Accept bfd_uint64_t. Enable when BFD_HOST_64_BIT.
(bfd_putl64, bfd_put_bits, bfd_get_bits): Likewise.
* dwarf2.c (struct attribute): Use bfd_int64_t and bfd_uint64_t.
(read_8_bytes, read_indirect_string, read_address): Likewise.
(read_abbrevs, parse_comp_unit): Likewise.
* targets.c (struct bfd_target): Likewise.
* aix386-core.c (NO_GET64, NO_PUT64, NO_GETS64): Define and use.
* hppabsd-core.c: Likewise. Formatting.
* hpux-core.c: Likewise.
* irix-core.c: Likewise.
* netbsd-core.c: Likewise.
* osf-core.c: Likewise.
* ptrace-core.c: Likewise.
* sco5-core.c: Likewise.
* trad-core.c: Likewise.
* configure: Regenerate.
* bfd-in2.h: Regenerate.
2004-03-15 22:21:43 +08:00
|
|
|
|
void bfd_putb64 (bfd_uint64_t, void *);
|
|
|
|
|
void bfd_putl64 (bfd_uint64_t, void *);
|
* bfd-in.h (bfd_getb64, bfd_getl64): Replace bfd_byte* with void*.
(bfd_getb32, bfd_getl32, bfd_getb16, bfd_getl16): Likewise.
(bfd_getb_signed_64, bfd_getl_signed_64): Likewise.
(bfd_getb_signed_32, bfd_getl_signed_32): Likewise.
(bfd_getb_signed_16, bfd_getl_signed_16): Likewise.
(bfd_putb64, bfd_putl64, bfd_putb32, bfd_putl32): Likewise.
(bfd_putb16, bfd_putl16, bfd_get_bits, bfd_put_bits): Likewise.
* libbfd.c: Likewise in function definitions.
(bfd_put_8): Mask with 0xff rather than casting to char.
(bfd_putb16, bfd_putl16, bfd_putb32, bfd_putl32): Likewise.
(bfd_putb64, bfd_putl64, bfd_put_bits): Likewise.
(H_PUT_64, H_PUT_32, H_PUT_16, H_PUT_8): Remove casts, simplify.
(H_PUT_S64, H_PUT_S32, H_PUT_S16, H_PUT_S8): Likewise.
(H_GET_64, H_GET_32, H_GET_16, H_GET_8): Likewise.
(H_GET_S64, H_GET_S32, H_GET_S16, H_GET_S8): Likewise.
* libaout.h (H_PUT_64 H_PUT_32, H_PUT_16): Remove casts, simplify.
(H_PUT_S64, H_PUT_S32, H_PUT_S16): Likewise.
(H_GET_64, H_GET_32, H_GET_16): Likewise.
(H_GET_S64, H_GET_S32, H_GET_S16): Likewise.
* archive.c (do_slurp_coff_armap): Update swap prototype.
* coff-tic54x.c (tic54x_getl32): Replace bfd_byte* with void*.
(tic54x_getl_signed_32): Likewise.
(tic54x_putl32): Likewise. Mask with 0xff rather than casting to char.
* mach-o.c (bfd_mach_o_read_header): Update get32 prototype.
* pdp11.c (bfd_getp32): Make static, replace bfd_byte* with void*.
(bfd_getp_signed_32, bfd_putp32): Likewise.
* targets.c (struct bfd_target): Use void* in place of bfd_byte* for
bfd_getx64, bfd_getx_signed_64, bfd_putx64, bfd_getx32,
bfd_getx_signed_32, bfd_putx32, bfd_getx16, bfd_getx_signed_16,
bfd_putx16, bfd_h_getx64, bfd_h_getx_signed_64, bfd_h_putx64,
bfd_h_getx32, bfd_h_getx_signed_32, bfd_h_putx32, bfd_h_getx16,
bfd_h_getx_signed_16, bfd_h_putx16.
* aix386-core.c (NO_GET, NO_GETS, NO_PUT): Update prototypes.
* hppabsd-core.c: Similarly. Rename NO_SIGNED_GET to NO_GETS.
* hpux-core.c: Likewise.
* irix-core.c: Likewise.
* netbsd-core.c: Likewise.
* osf-core.c: Likewise.
* ptrace-core.c: Likewise.
* sco5-core.c: Likewise.
* trad-core.c: Likewise.
* bfd-in2.h: Regenerate.
2004-03-15 20:23:11 +08:00
|
|
|
|
void bfd_putb32 (bfd_vma, void *);
|
|
|
|
|
void bfd_putl32 (bfd_vma, void *);
|
2018-05-18 22:26:18 +08:00
|
|
|
|
void bfd_putb24 (bfd_vma, void *);
|
|
|
|
|
void bfd_putl24 (bfd_vma, void *);
|
* bfd-in.h (bfd_getb64, bfd_getl64): Replace bfd_byte* with void*.
(bfd_getb32, bfd_getl32, bfd_getb16, bfd_getl16): Likewise.
(bfd_getb_signed_64, bfd_getl_signed_64): Likewise.
(bfd_getb_signed_32, bfd_getl_signed_32): Likewise.
(bfd_getb_signed_16, bfd_getl_signed_16): Likewise.
(bfd_putb64, bfd_putl64, bfd_putb32, bfd_putl32): Likewise.
(bfd_putb16, bfd_putl16, bfd_get_bits, bfd_put_bits): Likewise.
* libbfd.c: Likewise in function definitions.
(bfd_put_8): Mask with 0xff rather than casting to char.
(bfd_putb16, bfd_putl16, bfd_putb32, bfd_putl32): Likewise.
(bfd_putb64, bfd_putl64, bfd_put_bits): Likewise.
(H_PUT_64, H_PUT_32, H_PUT_16, H_PUT_8): Remove casts, simplify.
(H_PUT_S64, H_PUT_S32, H_PUT_S16, H_PUT_S8): Likewise.
(H_GET_64, H_GET_32, H_GET_16, H_GET_8): Likewise.
(H_GET_S64, H_GET_S32, H_GET_S16, H_GET_S8): Likewise.
* libaout.h (H_PUT_64 H_PUT_32, H_PUT_16): Remove casts, simplify.
(H_PUT_S64, H_PUT_S32, H_PUT_S16): Likewise.
(H_GET_64, H_GET_32, H_GET_16): Likewise.
(H_GET_S64, H_GET_S32, H_GET_S16): Likewise.
* archive.c (do_slurp_coff_armap): Update swap prototype.
* coff-tic54x.c (tic54x_getl32): Replace bfd_byte* with void*.
(tic54x_getl_signed_32): Likewise.
(tic54x_putl32): Likewise. Mask with 0xff rather than casting to char.
* mach-o.c (bfd_mach_o_read_header): Update get32 prototype.
* pdp11.c (bfd_getp32): Make static, replace bfd_byte* with void*.
(bfd_getp_signed_32, bfd_putp32): Likewise.
* targets.c (struct bfd_target): Use void* in place of bfd_byte* for
bfd_getx64, bfd_getx_signed_64, bfd_putx64, bfd_getx32,
bfd_getx_signed_32, bfd_putx32, bfd_getx16, bfd_getx_signed_16,
bfd_putx16, bfd_h_getx64, bfd_h_getx_signed_64, bfd_h_putx64,
bfd_h_getx32, bfd_h_getx_signed_32, bfd_h_putx32, bfd_h_getx16,
bfd_h_getx_signed_16, bfd_h_putx16.
* aix386-core.c (NO_GET, NO_GETS, NO_PUT): Update prototypes.
* hppabsd-core.c: Similarly. Rename NO_SIGNED_GET to NO_GETS.
* hpux-core.c: Likewise.
* irix-core.c: Likewise.
* netbsd-core.c: Likewise.
* osf-core.c: Likewise.
* ptrace-core.c: Likewise.
* sco5-core.c: Likewise.
* trad-core.c: Likewise.
* bfd-in2.h: Regenerate.
2004-03-15 20:23:11 +08:00
|
|
|
|
void bfd_putb16 (bfd_vma, void *);
|
|
|
|
|
void bfd_putl16 (bfd_vma, void *);
|
2000-12-22 02:20:04 +08:00
|
|
|
|
|
|
|
|
|
/* Byte swapping routines which take size and endiannes as arguments. */
|
|
|
|
|
|
* bfd-in.h (bfd_int64_t, bfd_uint64_t): New types.
(BFD_HOST_64_BIT, BFD_HOST_U_64_BIT): Don't define here.
(bfd_getb64, bfd_getl64, bfd_get_bits): Return bfd_uint64_t.
(bfd_getb_signed_64, bfd_getl_signed_64): Return bfd_int64_t.
(bfd_putb64, bfd_putl64, bfd_put_bits): Accept bfd_uint64_t.
* configure.in (HOST_U_64BIT_TYPE): Set when sizeof long is 8.
(BFD_HOST_64_BIT_DEFINED, BFD_HOST_64_BIT, BFD_HOST_U_64_BIT): Set
when using long.
* libbfd.c (EIGHT_GAZILLION, COERCE64): Use bfd_int64_t.
(bfd_getb64): Return bfd_uint64_t. Enable when BFD_HOST_64_BIT.
(bfd_getl64, bfd_getb_signed_64, bfd_getl_signed_64): Likewise.
(bfd_putb64): Accept bfd_uint64_t. Enable when BFD_HOST_64_BIT.
(bfd_putl64, bfd_put_bits, bfd_get_bits): Likewise.
* dwarf2.c (struct attribute): Use bfd_int64_t and bfd_uint64_t.
(read_8_bytes, read_indirect_string, read_address): Likewise.
(read_abbrevs, parse_comp_unit): Likewise.
* targets.c (struct bfd_target): Likewise.
* aix386-core.c (NO_GET64, NO_PUT64, NO_GETS64): Define and use.
* hppabsd-core.c: Likewise. Formatting.
* hpux-core.c: Likewise.
* irix-core.c: Likewise.
* netbsd-core.c: Likewise.
* osf-core.c: Likewise.
* ptrace-core.c: Likewise.
* sco5-core.c: Likewise.
* trad-core.c: Likewise.
* configure: Regenerate.
* bfd-in2.h: Regenerate.
2004-03-15 22:21:43 +08:00
|
|
|
|
bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
|
|
|
|
|
void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
|
2004-07-21 23:42:58 +08:00
|
|
|
|
|
2005-05-04 21:19:02 +08:00
|
|
|
|
|
1999-05-03 15:29:11 +08:00
|
|
|
|
/* mmap hacks */
|
|
|
|
|
|
|
|
|
|
struct _bfd_window_internal;
|
|
|
|
|
typedef struct _bfd_window_internal bfd_window_internal;
|
|
|
|
|
|
2002-01-31 02:12:17 +08:00
|
|
|
|
typedef struct _bfd_window
|
|
|
|
|
{
|
1999-05-03 15:29:11 +08:00
|
|
|
|
/* What the user asked for. */
|
2003-06-29 18:06:40 +08:00
|
|
|
|
void *data;
|
1999-05-03 15:29:11 +08:00
|
|
|
|
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
|
|
|
|
|
file. Read-write versions shouldn't until I've fixed things to
|
|
|
|
|
keep track of which portions have been claimed by the
|
|
|
|
|
application; don't want to give the same region back when the
|
|
|
|
|
application wants two writable copies! */
|
|
|
|
|
struct _bfd_window_internal *i;
|
2002-01-31 02:12:17 +08:00
|
|
|
|
}
|
|
|
|
|
bfd_window;
|
1999-05-03 15:29:11 +08:00
|
|
|
|
|
2002-11-30 16:39:46 +08:00
|
|
|
|
extern void bfd_init_window
|
2003-06-29 18:06:40 +08:00
|
|
|
|
(bfd_window *);
|
2002-11-30 16:39:46 +08:00
|
|
|
|
extern void bfd_free_window
|
2003-06-29 18:06:40 +08:00
|
|
|
|
(bfd_window *);
|
2002-11-30 16:39:46 +08:00
|
|
|
|
extern bfd_boolean bfd_get_file_window
|
2003-06-29 18:06:40 +08:00
|
|
|
|
(bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
|
linker bfd.h tidy
bfd/
* bfd-in.h (bfd_symbol, bfd_section_already_linked),
(bfd_elf_version_tree): Delete forward declarations.
Move other forward decls and remaining elf function decl later.
(bfd_section_already_linked_table_init),
(bfd_section_already_linked_table_free),
(_bfd_handle_already_linked, _bfd_nearby_section),
(_bfd_fix_excluded_sec_syms): Move to bfdlink.h.
include/
* bfdlink.h (struct bfd_section_already_linked): Forward declare.
(bfd_section_already_linked_table_init),
(bfd_section_already_linked_table_free),
(_bfd_handle_already_linked, _bfd_nearby_section),
(_bfd_fix_excluded_sec_syms): Declare.
2019-09-23 08:44:20 +08:00
|
|
|
|
|
|
|
|
|
/* Externally visible ELF routines. */
|
|
|
|
|
|
|
|
|
|
/* 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 non-zero, SIZE is the known extent of the
|
|
|
|
|
object. 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 a 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_size_type size, bfd_vma *loadbasep,
|
|
|
|
|
int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
|
|
|
|
|
bfd_size_type len));
|
|
|
|
|
|
|
|
|
|
/* Forward declarations. */
|
|
|
|
|
struct ecoff_debug_info;
|
|
|
|
|
struct ecoff_debug_swap;
|
|
|
|
|
struct ecoff_extr;
|
|
|
|
|
struct bfd_link_info;
|
|
|
|
|
struct bfd_link_hash_entry;
|