mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-02-21 10:02:26 +00:00
Remove trailing white spaces in bfd
* aout0.c: Remove trailing white spaces. * archive.c: Likewise. * archures.c: Likewise. * bfd-in.h: Likewise. * bfd-in2.h: Likewise. * coff-alpha.c: Likewise. * coff-i860.c: Likewise. * coff-mips.c: Likewise. * coff-ppc.c: Likewise. * coff-tic80.c: Likewise. * coff-x86_64.c: Likewise. * coff-z80.c: Likewise. * coffcode.h: Likewise. * coffgen.c: Likewise. * cofflink.c: Likewise. * compress.c: Likewise. * corefile.c: Likewise. * cpu-arm.c: Likewise. * cpu-avr.c: Likewise. * cpu-bfin.c: Likewise. * cpu-cr16.c: Likewise. * cpu-cr16c.c: Likewise. * cpu-crx.c: Likewise. * cpu-h8300.c: Likewise. * cpu-i386.c: Likewise. * cpu-lm32.c: Likewise. * cpu-m68k.c: Likewise. * cpu-moxie.c: Likewise. * cpu-msp430.c: Likewise. * cpu-sh.c: Likewise. * cpu-xc16x.c: Likewise. * dwarf2.c: Likewise. * ecofflink.c: Likewise. * ecoffswap.h: Likewise. * elf-ifunc.c: Likewise. * elf-m10300.c: Likewise. * elf-vxworks.c: Likewise. * elf32-avr.c: Likewise. * elf32-avr.h: Likewise. * elf32-cr16.c: Likewise. * elf32-cr16c.c: Likewise. * elf32-cris.c: Likewise. * elf32-crx.c: Likewise. * elf32-frv.c: Likewise. * elf32-hppa.c: Likewise. * elf32-i860.c: Likewise. * elf32-ip2k.c: Likewise. * elf32-iq2000.c: Likewise. * elf32-m32c.c: Likewise. * elf32-m68hc1x.c: Likewise. * elf32-msp430.c: Likewise. * elf32-mt.c: Likewise. * elf32-ppc.c: Likewise. * elf32-rl78.c: Likewise. * elf32-s390.c: Likewise. * elf32-score.h: Likewise. * elf32-sh-symbian.c: Likewise. * elf32-sh.c: Likewise. * elf32-spu.c: Likewise. * elf32-tic6x.c: Likewise. * elf32-v850.c: Likewise. * elf32-xc16x.c: Likewise. * elf32-xtensa.c: Likewise. * elf64-alpha.c: Likewise. * elf64-hppa.c: Likewise. * elf64-ppc.c: Likewise. * elf64-s390.c: Likewise. * elfcore.h: Likewise. * elflink.c: Likewise. * elfxx-mips.c: Likewise. * elfxx-sparc.c: Likewise. * elfxx-tilegx.c: Likewise. * ieee.c: Likewise. * libcoff.h: Likewise. * libpei.h: Likewise. * libxcoff.h: Likewise. * linker.c: Likewise. * mach-o-i386.c: Likewise. * mach-o-target.c: Likewise. * mach-o.c: Likewise. * mach-o.h: Likewise. * mmo.c: Likewise. * opncls.c: Likewise. * pdp11.c: Likewise. * pe-x86_64.c: Likewise. * peXXigen.c: Likewise. * pef-traceback.h: Likewise. * pei-x86_64.c: Likewise. * peicode.h: Likewise. * plugin.c: Likewise. * reloc.c: Likewise. * riscix.c: Likewise. * section.c: Likewise. * som.c: Likewise. * syms.c: Likewise. * tekhex.c: Likewise. * ticoff.h: Likewise. * vaxbsd.c: Likewise. * xcofflink.c: Likewise. * xtensa-isa.c: Likewise.
This commit is contained in:
parent
34bca50861
commit
68ffbac672
103
bfd/ChangeLog
103
bfd/ChangeLog
@ -1,3 +1,106 @@
|
||||
2013-01-10 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* aout0.c: Remove trailing white spaces.
|
||||
* archive.c: Likewise.
|
||||
* archures.c: Likewise.
|
||||
* bfd-in.h: Likewise.
|
||||
* bfd-in2.h: Likewise.
|
||||
* coff-alpha.c: Likewise.
|
||||
* coff-i860.c: Likewise.
|
||||
* coff-mips.c: Likewise.
|
||||
* coff-ppc.c: Likewise.
|
||||
* coff-tic80.c: Likewise.
|
||||
* coff-x86_64.c: Likewise.
|
||||
* coff-z80.c: Likewise.
|
||||
* coffcode.h: Likewise.
|
||||
* coffgen.c: Likewise.
|
||||
* cofflink.c: Likewise.
|
||||
* compress.c: Likewise.
|
||||
* corefile.c: Likewise.
|
||||
* cpu-arm.c: Likewise.
|
||||
* cpu-avr.c: Likewise.
|
||||
* cpu-bfin.c: Likewise.
|
||||
* cpu-cr16.c: Likewise.
|
||||
* cpu-cr16c.c: Likewise.
|
||||
* cpu-crx.c: Likewise.
|
||||
* cpu-h8300.c: Likewise.
|
||||
* cpu-i386.c: Likewise.
|
||||
* cpu-lm32.c: Likewise.
|
||||
* cpu-m68k.c: Likewise.
|
||||
* cpu-moxie.c: Likewise.
|
||||
* cpu-msp430.c: Likewise.
|
||||
* cpu-sh.c: Likewise.
|
||||
* cpu-xc16x.c: Likewise.
|
||||
* dwarf2.c: Likewise.
|
||||
* ecofflink.c: Likewise.
|
||||
* ecoffswap.h: Likewise.
|
||||
* elf-ifunc.c: Likewise.
|
||||
* elf-m10300.c: Likewise.
|
||||
* elf-vxworks.c: Likewise.
|
||||
* elf32-avr.c: Likewise.
|
||||
* elf32-avr.h: Likewise.
|
||||
* elf32-cr16.c: Likewise.
|
||||
* elf32-cr16c.c: Likewise.
|
||||
* elf32-cris.c: Likewise.
|
||||
* elf32-crx.c: Likewise.
|
||||
* elf32-frv.c: Likewise.
|
||||
* elf32-hppa.c: Likewise.
|
||||
* elf32-i860.c: Likewise.
|
||||
* elf32-ip2k.c: Likewise.
|
||||
* elf32-iq2000.c: Likewise.
|
||||
* elf32-m32c.c: Likewise.
|
||||
* elf32-m68hc1x.c: Likewise.
|
||||
* elf32-msp430.c: Likewise.
|
||||
* elf32-mt.c: Likewise.
|
||||
* elf32-ppc.c: Likewise.
|
||||
* elf32-rl78.c: Likewise.
|
||||
* elf32-s390.c: Likewise.
|
||||
* elf32-score.h: Likewise.
|
||||
* elf32-sh-symbian.c: Likewise.
|
||||
* elf32-sh.c: Likewise.
|
||||
* elf32-spu.c: Likewise.
|
||||
* elf32-tic6x.c: Likewise.
|
||||
* elf32-v850.c: Likewise.
|
||||
* elf32-xc16x.c: Likewise.
|
||||
* elf32-xtensa.c: Likewise.
|
||||
* elf64-alpha.c: Likewise.
|
||||
* elf64-hppa.c: Likewise.
|
||||
* elf64-ppc.c: Likewise.
|
||||
* elf64-s390.c: Likewise.
|
||||
* elfcore.h: Likewise.
|
||||
* elflink.c: Likewise.
|
||||
* elfxx-mips.c: Likewise.
|
||||
* elfxx-sparc.c: Likewise.
|
||||
* elfxx-tilegx.c: Likewise.
|
||||
* ieee.c: Likewise.
|
||||
* libcoff.h: Likewise.
|
||||
* libpei.h: Likewise.
|
||||
* libxcoff.h: Likewise.
|
||||
* linker.c: Likewise.
|
||||
* mach-o-i386.c: Likewise.
|
||||
* mach-o-target.c: Likewise.
|
||||
* mach-o.c: Likewise.
|
||||
* mach-o.h: Likewise.
|
||||
* mmo.c: Likewise.
|
||||
* opncls.c: Likewise.
|
||||
* pdp11.c: Likewise.
|
||||
* pe-x86_64.c: Likewise.
|
||||
* peXXigen.c: Likewise.
|
||||
* pef-traceback.h: Likewise.
|
||||
* pei-x86_64.c: Likewise.
|
||||
* peicode.h: Likewise.
|
||||
* plugin.c: Likewise.
|
||||
* reloc.c: Likewise.
|
||||
* riscix.c: Likewise.
|
||||
* section.c: Likewise.
|
||||
* som.c: Likewise.
|
||||
* syms.c: Likewise.
|
||||
* tekhex.c: Likewise.
|
||||
* ticoff.h: Likewise.
|
||||
* vaxbsd.c: Likewise.
|
||||
* xcofflink.c: Likewise.
|
||||
* xtensa-isa.c: Likewise.
|
||||
|
||||
2013-01-10 Will Newton <will.newton@imgtec.com>
|
||||
|
||||
* Makefile.am: Add Meta.
|
||||
|
@ -4,7 +4,7 @@
|
||||
Written by Cygnus Support.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
|
@ -2492,7 +2492,7 @@ bsd_write_armap (bfd *arch,
|
||||
bfd_set_error (bfd_error_file_truncated);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
last_elt = current;
|
||||
H_PUT_32 (arch, map[count].namidx, buf);
|
||||
H_PUT_32 (arch, firstreal, buf + BSD_SYMDEF_OFFSET_SIZE);
|
||||
|
@ -145,7 +145,7 @@ DESCRIPTION
|
||||
.#define bfd_mach_sparc_64bit_p(mach) \
|
||||
. ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
|
||||
. bfd_arch_spu, {* PowerPC SPU *}
|
||||
.#define bfd_mach_spu 256
|
||||
.#define bfd_mach_spu 256
|
||||
. bfd_arch_mips, {* MIPS Rxxxx *}
|
||||
.#define bfd_mach_mips3000 3000
|
||||
.#define bfd_mach_mips3900 3900
|
||||
@ -421,7 +421,7 @@ DESCRIPTION
|
||||
. bfd_arch_s390, {* IBM s390 *}
|
||||
.#define bfd_mach_s390_31 31
|
||||
.#define bfd_mach_s390_64 64
|
||||
. bfd_arch_score, {* Sunplus score *}
|
||||
. bfd_arch_score, {* Sunplus score *}
|
||||
.#define bfd_mach_score3 3
|
||||
.#define bfd_mach_score7 7
|
||||
. bfd_arch_openrisc, {* OpenRISC *}
|
||||
|
@ -62,7 +62,7 @@ extern "C" {
|
||||
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.
|
||||
|
||||
|
||||
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)
|
||||
/* strcpy() can have a similar problem, but since we know we are
|
||||
@ -955,7 +955,7 @@ extern bfd_boolean elf64_aarch64_size_stubs
|
||||
void (*) (void));
|
||||
extern bfd_boolean elf64_aarch64_build_stubs
|
||||
(struct bfd_link_info *);
|
||||
|
||||
|
||||
/* TI COFF load page support. */
|
||||
extern void bfd_ticoff_set_section_load_page
|
||||
(struct bfd_section *, int);
|
||||
|
@ -69,7 +69,7 @@ extern "C" {
|
||||
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.
|
||||
|
||||
|
||||
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)
|
||||
/* strcpy() can have a similar problem, but since we know we are
|
||||
@ -962,7 +962,7 @@ extern bfd_boolean elf64_aarch64_size_stubs
|
||||
void (*) (void));
|
||||
extern bfd_boolean elf64_aarch64_build_stubs
|
||||
(struct bfd_link_info *);
|
||||
|
||||
|
||||
/* TI COFF load page support. */
|
||||
extern void bfd_ticoff_set_section_load_page
|
||||
(struct bfd_section *, int);
|
||||
@ -1562,12 +1562,12 @@ typedef struct bfd_section
|
||||
} asection;
|
||||
|
||||
/* Relax table contains information about instructions which can
|
||||
be removed by relaxation -- replacing a long address with a
|
||||
be removed by relaxation -- replacing a long address with a
|
||||
short address. */
|
||||
struct relax_table {
|
||||
/* Address where bytes may be deleted. */
|
||||
bfd_vma addr;
|
||||
|
||||
|
||||
/* Number of bytes to be deleted. */
|
||||
int size;
|
||||
};
|
||||
@ -1876,7 +1876,7 @@ enum bfd_architecture
|
||||
#define bfd_mach_sparc_64bit_p(mach) \
|
||||
((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
|
||||
bfd_arch_spu, /* PowerPC SPU */
|
||||
#define bfd_mach_spu 256
|
||||
#define bfd_mach_spu 256
|
||||
bfd_arch_mips, /* MIPS Rxxxx */
|
||||
#define bfd_mach_mips3000 3000
|
||||
#define bfd_mach_mips3900 3900
|
||||
@ -2152,7 +2152,7 @@ enum bfd_architecture
|
||||
bfd_arch_s390, /* IBM s390 */
|
||||
#define bfd_mach_s390_31 31
|
||||
#define bfd_mach_s390_64 64
|
||||
bfd_arch_score, /* Sunplus score */
|
||||
bfd_arch_score, /* Sunplus score */
|
||||
#define bfd_mach_score3 3
|
||||
#define bfd_mach_score7 7
|
||||
bfd_arch_openrisc, /* OpenRISC */
|
||||
@ -4137,7 +4137,7 @@ of 32 bit value) into 8 bit immediate value of LDI insn. */
|
||||
command address) into 8 bit immediate value of LDI insn. */
|
||||
BFD_RELOC_AVR_LO8_LDI_PM,
|
||||
|
||||
/* This is a 16 bit reloc for the AVR that stores 8 bit value
|
||||
/* This is a 16 bit reloc for the AVR that stores 8 bit value
|
||||
(command address) into 8 bit immediate value of LDI insn. If the address
|
||||
is beyond the 128k boundary, the linker inserts a jump stub for this reloc
|
||||
in the lower 128k. */
|
||||
@ -5061,52 +5061,52 @@ the linker could optimize the movq to a leaq if possible. */
|
||||
/* Same as BFD_RELOC_32_PCREL but with an implicit -4 addend. */
|
||||
BFD_RELOC_MACH_O_X86_64_PCREL32_4,
|
||||
|
||||
/* This is a 32 bit reloc for the microblaze that stores the
|
||||
/* This is a 32 bit reloc for the microblaze that stores the
|
||||
low 16 bits of a value */
|
||||
BFD_RELOC_MICROBLAZE_32_LO,
|
||||
|
||||
/* This is a 32 bit pc-relative reloc for the microblaze that
|
||||
/* This is a 32 bit pc-relative reloc for the microblaze that
|
||||
stores the low 16 bits of a value */
|
||||
BFD_RELOC_MICROBLAZE_32_LO_PCREL,
|
||||
|
||||
/* This is a 32 bit reloc for the microblaze that stores a
|
||||
/* This is a 32 bit reloc for the microblaze that stores a
|
||||
value relative to the read-only small data area anchor */
|
||||
BFD_RELOC_MICROBLAZE_32_ROSDA,
|
||||
|
||||
/* This is a 32 bit reloc for the microblaze that stores a
|
||||
/* This is a 32 bit reloc for the microblaze that stores a
|
||||
value relative to the read-write small data area anchor */
|
||||
BFD_RELOC_MICROBLAZE_32_RWSDA,
|
||||
|
||||
/* This is a 32 bit reloc for the microblaze to handle
|
||||
/* This is a 32 bit reloc for the microblaze to handle
|
||||
expressions of the form "Symbol Op Symbol" */
|
||||
BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM,
|
||||
|
||||
/* This is a 64 bit reloc that stores the 32 bit pc relative
|
||||
value in two words (with an imm instruction). No relocation is
|
||||
/* This is a 64 bit reloc that stores the 32 bit pc relative
|
||||
value in two words (with an imm instruction). No relocation is
|
||||
done here - only used for relaxing */
|
||||
BFD_RELOC_MICROBLAZE_64_NONE,
|
||||
|
||||
/* This is a 64 bit reloc that stores the 32 bit pc relative
|
||||
/* This is a 64 bit reloc that stores the 32 bit pc relative
|
||||
value in two words (with an imm instruction). The relocation is
|
||||
PC-relative GOT offset */
|
||||
BFD_RELOC_MICROBLAZE_64_GOTPC,
|
||||
|
||||
/* This is a 64 bit reloc that stores the 32 bit pc relative
|
||||
/* This is a 64 bit reloc that stores the 32 bit pc relative
|
||||
value in two words (with an imm instruction). The relocation is
|
||||
GOT offset */
|
||||
BFD_RELOC_MICROBLAZE_64_GOT,
|
||||
|
||||
/* This is a 64 bit reloc that stores the 32 bit pc relative
|
||||
/* This is a 64 bit reloc that stores the 32 bit pc relative
|
||||
value in two words (with an imm instruction). The relocation is
|
||||
PC-relative offset into PLT */
|
||||
BFD_RELOC_MICROBLAZE_64_PLT,
|
||||
|
||||
/* This is a 64 bit reloc that stores the 32 bit GOT relative
|
||||
/* This is a 64 bit reloc that stores the 32 bit GOT relative
|
||||
value in two words (with an imm instruction). The relocation is
|
||||
relative offset from _GLOBAL_OFFSET_TABLE_ */
|
||||
BFD_RELOC_MICROBLAZE_64_GOTOFF,
|
||||
|
||||
/* This is a 32 bit reloc that stores the 32 bit GOT relative
|
||||
/* This is a 32 bit reloc that stores the 32 bit GOT relative
|
||||
value in a word. The relocation is relative offset from */
|
||||
BFD_RELOC_MICROBLAZE_32_GOTOFF,
|
||||
|
||||
|
@ -1510,14 +1510,14 @@ alpha_relocate_section (bfd *output_bfd,
|
||||
input_bfd);
|
||||
bfd_set_error (bfd_error_bad_value);
|
||||
continue;
|
||||
|
||||
|
||||
case ALPHA_R_GPRELLOW:
|
||||
(*_bfd_error_handler)
|
||||
(_("%B: unsupported relocation: ALPHA_R_GPRELLOW"),
|
||||
input_bfd);
|
||||
bfd_set_error (bfd_error_bad_value);
|
||||
continue;
|
||||
|
||||
|
||||
default:
|
||||
(*_bfd_error_handler)
|
||||
(_("%B: unknown relocation type %d"),
|
||||
@ -2242,7 +2242,7 @@ static const struct ecoff_backend_data alpha_ecoff_backend_data =
|
||||
(unsigned (*) (bfd *,void *,void *)) 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,
|
||||
FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, TRUE,
|
||||
ECOFF_NO_LONG_SECTION_NAMES, 4, FALSE, 2,
|
||||
alpha_ecoff_swap_filehdr_in, alpha_ecoff_swap_aouthdr_in,
|
||||
alpha_ecoff_swap_scnhdr_in, NULL,
|
||||
|
@ -131,7 +131,7 @@ coff_i860_reloc (bfd *abfd,
|
||||
return bfd_reloc_continue;
|
||||
}
|
||||
|
||||
/* This is just a temporary measure until we teach bfd to generate
|
||||
/* This is just a temporary measure until we teach bfd to generate
|
||||
these relocations. */
|
||||
|
||||
static bfd_reloc_status_type
|
||||
|
@ -45,7 +45,7 @@ static bfd_reloc_status_type
|
||||
mips_reflo_reloc
|
||||
(bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
|
||||
static bfd_reloc_status_type
|
||||
mips_gprel_reloc
|
||||
mips_gprel_reloc
|
||||
(bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
|
||||
|
||||
|
||||
@ -1255,7 +1255,7 @@ static const struct ecoff_backend_data mips_ecoff_backend_data =
|
||||
(unsigned (*) (bfd *,void *,void *)) bfd_void, /* reloc_out */
|
||||
mips_ecoff_swap_filehdr_out, mips_ecoff_swap_aouthdr_out,
|
||||
mips_ecoff_swap_scnhdr_out,
|
||||
FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, TRUE,
|
||||
FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, TRUE,
|
||||
ECOFF_NO_LONG_SECTION_NAMES, 4, FALSE, 2,
|
||||
mips_ecoff_swap_filehdr_in, mips_ecoff_swap_aouthdr_in,
|
||||
mips_ecoff_swap_scnhdr_in, NULL,
|
||||
|
@ -301,13 +301,13 @@ ppc_coff_link_hash_table_create (bfd *abfd)
|
||||
|
||||
static bfd_reloc_status_type ppc_refhi_reloc
|
||||
(bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
|
||||
static bfd_reloc_status_type ppc_pair_reloc
|
||||
static bfd_reloc_status_type ppc_pair_reloc
|
||||
(bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
|
||||
static bfd_reloc_status_type ppc_toc16_reloc
|
||||
(bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
|
||||
static bfd_reloc_status_type ppc_section_reloc
|
||||
(bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
|
||||
static bfd_reloc_status_type ppc_secrel_reloc
|
||||
static bfd_reloc_status_type ppc_secrel_reloc
|
||||
(bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
|
||||
static bfd_reloc_status_type ppc_imglue_reloc
|
||||
(bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
|
||||
@ -316,7 +316,7 @@ static bfd_reloc_status_type ppc_imglue_reloc
|
||||
get us started, so those I'll make sure work. Those marked FIXME are either
|
||||
completely unverified or have a specific unknown marked in the comment. */
|
||||
|
||||
/* Relocation entries for Windows/NT on PowerPC.
|
||||
/* Relocation entries for Windows/NT on PowerPC.
|
||||
|
||||
From the document "" we find the following listed as used relocs:
|
||||
|
||||
@ -1200,7 +1200,7 @@ coff_ppc_relocate_section (bfd *output_bfd,
|
||||
{
|
||||
/* To solve this, we need to know whether or not the symbol
|
||||
appearing on the call instruction is a glue function or not.
|
||||
A glue function must announce itself via a IMGLUE reloc, and
|
||||
A glue function must announce itself via a IMGLUE reloc, and
|
||||
the reloc contains the required toc restore instruction. */
|
||||
DUMP_RELOC2 (howto->name, rel);
|
||||
|
||||
|
@ -32,7 +32,7 @@
|
||||
/* Newlib-based hosts define _CONST as a STDC-safe alias for const,
|
||||
but to the tic80 toolchain it means something altogether different.
|
||||
Since sysdep.h will have pulled in stdio.h and hence _ansi.h which
|
||||
contains this definition, we must undef it before including the
|
||||
contains this definition, we must undef it before including the
|
||||
tic80-specific definition. */
|
||||
#undef _CONST
|
||||
#endif /* _CONST */
|
||||
|
@ -18,7 +18,7 @@
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA.
|
||||
|
||||
|
||||
Written by Kai Tietz, OneVision Software GmbH&CoKg. */
|
||||
|
||||
#ifndef COFF_WITH_pex64
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
@ -50,12 +50,12 @@ HOWTO (R_IMM8, 0, 0, 8, FALSE, 0,
|
||||
FALSE);
|
||||
|
||||
static reloc_howto_type r_jr =
|
||||
HOWTO (R_JR, 0, 0, 8, TRUE, 0,
|
||||
HOWTO (R_JR, 0, 0, 8, TRUE, 0,
|
||||
complain_overflow_signed, 0, "r_jr", FALSE, 0, 0xFF,
|
||||
FALSE);
|
||||
|
||||
static reloc_howto_type r_off8 =
|
||||
HOWTO (R_OFF8, 0, 0, 8, FALSE, 0,
|
||||
HOWTO (R_OFF8, 0, 0, 8, FALSE, 0,
|
||||
complain_overflow_signed, 0,"r_off8", FALSE, 0, 0xff,
|
||||
FALSE);
|
||||
|
||||
@ -284,6 +284,6 @@ extra_case (bfd *in_abfd,
|
||||
#define coff_bfd_relax_section bfd_coff_reloc16_relax_section
|
||||
|
||||
CREATE_LITTLE_COFF_TARGET_VEC (z80coff_vec, "coff-z80", 0,
|
||||
SEC_CODE | SEC_DATA, '\0', NULL,
|
||||
SEC_CODE | SEC_DATA, '\0', NULL,
|
||||
COFF_SWAP_TABLE)
|
||||
|
||||
|
@ -119,11 +119,11 @@ SUBSUBSECTION
|
||||
|
||||
The Microsoft PE variants of the Coff object file format add
|
||||
an extension to support the use of long section names. This
|
||||
extension is defined in section 4 of the Microsoft PE/COFF
|
||||
extension is defined in section 4 of the Microsoft PE/COFF
|
||||
specification (rev 8.1). If a section name is too long to fit
|
||||
into the section header's @code{s_name} field, it is instead
|
||||
placed into the string table, and the @code{s_name} field is
|
||||
filled with a slash ("/") followed by the ASCII decimal
|
||||
filled with a slash ("/") followed by the ASCII decimal
|
||||
representation of the offset of the full name relative to the
|
||||
string table base.
|
||||
|
||||
@ -140,11 +140,11 @@ SUBSUBSECTION
|
||||
expecting the MS standard format may become confused; @file{PEview} is
|
||||
one known example.
|
||||
|
||||
The functionality is supported in BFD by code implemented under
|
||||
The functionality is supported in BFD by code implemented under
|
||||
the control of the macro @code{COFF_LONG_SECTION_NAMES}. If not
|
||||
defined, the format does not support long section names in any way.
|
||||
If defined, it is used to initialise a flag,
|
||||
@code{_bfd_coff_long_section_names}, and a hook function pointer,
|
||||
If defined, it is used to initialise a flag,
|
||||
@code{_bfd_coff_long_section_names}, and a hook function pointer,
|
||||
@code{_bfd_coff_set_long_section_names}, in the Coff backend data
|
||||
structure. The flag controls the generation of long section names
|
||||
in output BFDs at runtime; if it is false, as it will be by default
|
||||
@ -153,7 +153,7 @@ SUBSUBSECTION
|
||||
points to a function that allows the value of the flag to be altered
|
||||
at runtime, on formats that support long section names at all; on
|
||||
other formats it points to a stub that returns an error indication.
|
||||
|
||||
|
||||
With input BFDs, the flag is set according to whether any long section
|
||||
names are detected while reading the section headers. For a completely
|
||||
new BFD, the flag is set to the default for the target format. This
|
||||
@ -707,7 +707,7 @@ sec_to_styp_flags (const char *sec_name, flagword sec_flags)
|
||||
& (SEC_LINK_DUPLICATES_DISCARD | SEC_LINK_DUPLICATES_SAME_CONTENTS
|
||||
| SEC_LINK_DUPLICATES_SAME_SIZE)) != 0)
|
||||
styp_flags |= IMAGE_SCN_LNK_COMDAT;
|
||||
|
||||
|
||||
/* skip LINKER_CREATED */
|
||||
|
||||
if ((sec_flags & SEC_COFF_NOREAD) == 0)
|
||||
@ -1385,7 +1385,7 @@ Special entry points for gdb to swap in coff symbol table parts:
|
||||
. bfd_boolean _bfd_coff_long_section_names;
|
||||
. bfd_boolean (*_bfd_coff_set_long_section_names)
|
||||
. (bfd *, int);
|
||||
.
|
||||
.
|
||||
. unsigned int _bfd_coff_default_section_alignment_power;
|
||||
. bfd_boolean _bfd_coff_force_symnames_in_strings;
|
||||
. unsigned int _bfd_coff_debug_string_prefix_length;
|
||||
|
@ -647,7 +647,7 @@ fixup_symbol_value (bfd *abfd,
|
||||
struct internal_syment *syment)
|
||||
{
|
||||
/* Normalize the symbol flags. */
|
||||
if (coff_symbol_ptr->symbol.section
|
||||
if (coff_symbol_ptr->symbol.section
|
||||
&& bfd_is_com_section (coff_symbol_ptr->symbol.section))
|
||||
{
|
||||
/* A common symbol is undefined with a value. */
|
||||
@ -1519,7 +1519,7 @@ coff_pointerize_aux (bfd *abfd,
|
||||
/* Otherwise patch up. */
|
||||
#define N_TMASK coff_data (abfd)->local_n_tmask
|
||||
#define N_BTSHFT coff_data (abfd)->local_n_btshft
|
||||
|
||||
|
||||
if ((ISFCN (type) || ISTAG (n_sclass) || n_sclass == C_BLOCK
|
||||
|| n_sclass == C_FCN)
|
||||
&& auxent->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.l > 0)
|
||||
@ -1942,7 +1942,7 @@ coff_bfd_make_debug_symbol (bfd *abfd,
|
||||
new_symbol->lineno = NULL;
|
||||
new_symbol->done_lineno = FALSE;
|
||||
new_symbol->symbol.the_bfd = abfd;
|
||||
|
||||
|
||||
return & new_symbol->symbol;
|
||||
}
|
||||
|
||||
|
@ -605,7 +605,7 @@ coff_link_add_symbols (bfd *abfd,
|
||||
{
|
||||
bfd_size_type string_offset = 0;
|
||||
asection *stab;
|
||||
|
||||
|
||||
for (stab = abfd->sections; stab; stab = stab->next)
|
||||
if (CONST_STRNEQ (stab->name, ".stab")
|
||||
&& (!stab->name[5]
|
||||
@ -614,7 +614,7 @@ coff_link_add_symbols (bfd *abfd,
|
||||
struct coff_link_hash_table *table;
|
||||
struct coff_section_tdata *secdata
|
||||
= coff_section_data (abfd, stab);
|
||||
|
||||
|
||||
if (secdata == NULL)
|
||||
{
|
||||
amt = sizeof (struct coff_section_tdata);
|
||||
@ -1159,7 +1159,7 @@ _bfd_coff_final_link (bfd *abfd,
|
||||
elsewhere. */
|
||||
struct internal_reloc incount;
|
||||
bfd_byte *excount = (bfd_byte *)bfd_malloc (relsz);
|
||||
|
||||
|
||||
memset (&incount, 0, sizeof (incount));
|
||||
incount.r_vaddr = o->reloc_count + 1;
|
||||
bfd_coff_swap_reloc_out (abfd, &incount, excount);
|
||||
|
@ -79,7 +79,7 @@ DESCRIPTION
|
||||
field was allocated using bfd_malloc() or equivalent. If zlib
|
||||
is not installed on this machine, the input is unmodified.
|
||||
|
||||
Return @code{TRUE} if the full section contents is compressed
|
||||
Return @code{TRUE} if the full section contents is compressed
|
||||
successfully.
|
||||
*/
|
||||
|
||||
@ -148,7 +148,7 @@ SYNOPSIS
|
||||
DESCRIPTION
|
||||
Read all data from @var{section} in BFD @var{abfd}, decompress
|
||||
if needed, and store in @var{*ptr}. If @var{*ptr} is NULL,
|
||||
return @var{*ptr} with memory malloc'd by this function.
|
||||
return @var{*ptr} with memory malloc'd by this function.
|
||||
|
||||
Return @code{TRUE} if the full section contents is retrieved
|
||||
successfully.
|
||||
|
@ -169,7 +169,7 @@ generic_core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd)
|
||||
of the const char * returned by bfd_core_file_failing_command to a
|
||||
non-const char *. In this case, the assignement does not lead to
|
||||
breaking the const, as we're only reading the string. */
|
||||
|
||||
|
||||
core = (char *) bfd_core_file_failing_command (core_bfd);
|
||||
if (core == NULL)
|
||||
return TRUE;
|
||||
@ -185,7 +185,7 @@ generic_core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd)
|
||||
last_slash = strrchr (exec, '/');
|
||||
if (last_slash != NULL)
|
||||
exec = last_slash + 1;
|
||||
|
||||
|
||||
return filename_cmp (exec, core) == 0;
|
||||
}
|
||||
|
||||
|
@ -252,10 +252,10 @@ arm_check_note (bfd *abfd,
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
if (namesz != ((strlen (expected_name) + 1 + 3) & ~3))
|
||||
return FALSE;
|
||||
|
||||
|
||||
if (strcmp (descr, expected_name) != 0)
|
||||
return FALSE;
|
||||
|
||||
|
@ -54,7 +54,7 @@ compatible (const bfd_arch_info_type * a,
|
||||
|
||||
if (a->mach <= b->mach)
|
||||
return b;
|
||||
|
||||
|
||||
if (a->mach >= b->mach)
|
||||
return a;
|
||||
}
|
||||
@ -63,7 +63,7 @@ compatible (const bfd_arch_info_type * a,
|
||||
return a;
|
||||
if (a->mach == bfd_mach_avr25 && b->mach == bfd_mach_avr2)
|
||||
return b;
|
||||
|
||||
|
||||
if (a->mach == bfd_mach_avr3 && b->mach == bfd_mach_avr31)
|
||||
return a;
|
||||
if (a->mach == bfd_mach_avr31 && b->mach == bfd_mach_avr3)
|
||||
@ -112,7 +112,7 @@ static const bfd_arch_info_type arch_info_struct[] =
|
||||
N (16, bfd_mach_avr25, "avr:25", FALSE, & arch_info_struct[3]),
|
||||
|
||||
/* Classic, > 8K, <= 64K. */
|
||||
/* TODO: addr_bits should be 16, but set to 22 for some following
|
||||
/* TODO: addr_bits should be 16, but set to 22 for some following
|
||||
version of GCC (from 4.3) for backward compatibility. */
|
||||
N (22, bfd_mach_avr3, "avr:3", FALSE, & arch_info_struct[4]),
|
||||
|
||||
@ -126,37 +126,37 @@ static const bfd_arch_info_type arch_info_struct[] =
|
||||
N (16, bfd_mach_avr4, "avr:4", FALSE, & arch_info_struct[7]),
|
||||
|
||||
/* Enhanced, > 8K, <= 64K. */
|
||||
/* TODO: addr_bits should be 16, but set to 22 for some following
|
||||
/* TODO: addr_bits should be 16, but set to 22 for some following
|
||||
version of GCC (from 4.3) for backward compatibility. */
|
||||
N (22, bfd_mach_avr5, "avr:5", FALSE, & arch_info_struct[8]),
|
||||
|
||||
|
||||
/* Enhanced, == 128K. */
|
||||
N (22, bfd_mach_avr51, "avr:51", FALSE, & arch_info_struct[9]),
|
||||
|
||||
/* 3-Byte PC. */
|
||||
N (22, bfd_mach_avr6, "avr:6", FALSE, & arch_info_struct[10]),
|
||||
|
||||
|
||||
/* Xmega 1 */
|
||||
N (24, bfd_mach_avrxmega1, "avr:101", FALSE, & arch_info_struct[11]),
|
||||
|
||||
/* Xmega 2 */
|
||||
N (24, bfd_mach_avrxmega2, "avr:102", FALSE, & arch_info_struct[12]),
|
||||
|
||||
|
||||
/* Xmega 3 */
|
||||
N (24, bfd_mach_avrxmega3, "avr:103", FALSE, & arch_info_struct[13]),
|
||||
|
||||
|
||||
/* Xmega 4 */
|
||||
N (24, bfd_mach_avrxmega4, "avr:104", FALSE, & arch_info_struct[14]),
|
||||
|
||||
|
||||
/* Xmega 5 */
|
||||
N (24, bfd_mach_avrxmega5, "avr:105", FALSE, & arch_info_struct[15]),
|
||||
|
||||
|
||||
/* Xmega 6 */
|
||||
N (24, bfd_mach_avrxmega6, "avr:106", FALSE, & arch_info_struct[16]),
|
||||
|
||||
|
||||
/* Xmega 7 */
|
||||
N (24, bfd_mach_avrxmega7, "avr:107", FALSE, NULL)
|
||||
|
||||
|
||||
};
|
||||
|
||||
const bfd_arch_info_type bfd_avr_arch =
|
||||
|
@ -34,7 +34,7 @@ const bfd_arch_info_type bfd_bfin_arch =
|
||||
"bfin", /* Arch printable name. */
|
||||
4, /* Section align power. */
|
||||
TRUE, /* The one and only. */
|
||||
bfd_default_compatible,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
bfd_arch_default_fill,
|
||||
0,
|
||||
|
@ -34,7 +34,7 @@ const bfd_arch_info_type bfd_cr16_arch =
|
||||
"cr16", /* Printable name. */
|
||||
1, /* Unsigned int section alignment power. */
|
||||
TRUE, /* The one and only. */
|
||||
bfd_default_compatible,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
bfd_arch_default_fill,
|
||||
0,
|
||||
|
@ -33,7 +33,7 @@ const bfd_arch_info_type bfd_cr16c_arch =
|
||||
"cr16c",
|
||||
1,
|
||||
TRUE, /* The one and only. */
|
||||
bfd_default_compatible,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
bfd_arch_default_fill,
|
||||
0,
|
||||
|
@ -34,7 +34,7 @@ const bfd_arch_info_type bfd_crx_arch =
|
||||
"crx", /* Printable name. */
|
||||
1, /* Unsigned int section alignment power. */
|
||||
TRUE, /* The one and only. */
|
||||
bfd_default_compatible,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
bfd_arch_default_fill,
|
||||
0,
|
||||
|
@ -83,7 +83,7 @@ h8300_scan (const struct bfd_arch_info *info, const char *string)
|
||||
|
||||
return (info->mach == bfd_mach_h8300sx);
|
||||
}
|
||||
|
||||
|
||||
return (info->mach == bfd_mach_h8300s);
|
||||
}
|
||||
else
|
||||
|
@ -50,7 +50,7 @@ bfd_arch_i386_fill (bfd_size_type count, bfd_boolean code,
|
||||
bfd_boolean long_nop)
|
||||
{
|
||||
/* nop */
|
||||
static const char nop_1[] = { 0x90 };
|
||||
static const char nop_1[] = { 0x90 };
|
||||
/* xchg %ax,%ax */
|
||||
static const char nop_2[] = { 0x66, 0x90 };
|
||||
/* nopl (%[re]ax) */
|
||||
|
@ -23,12 +23,12 @@
|
||||
#include "bfd.h"
|
||||
#include "libbfd.h"
|
||||
|
||||
const bfd_arch_info_type bfd_lm32_arch =
|
||||
const bfd_arch_info_type bfd_lm32_arch =
|
||||
{
|
||||
32, /* Bits in word. */
|
||||
32, /* Bits in address. */
|
||||
8, /* Bits in byte. */
|
||||
bfd_arch_lm32, /* Enum bfd_architecture. */
|
||||
bfd_arch_lm32, /* Enum bfd_architecture. */
|
||||
bfd_mach_lm32, /* Machine number. */
|
||||
"lm32", /* Architecture name. */
|
||||
"lm32", /* Printable name. */
|
||||
|
@ -111,7 +111,7 @@ const bfd_arch_info_type bfd_m68k_arch =
|
||||
|
||||
/* Table indexed by bfd_mach_arch number indicating which
|
||||
architectural features are supported. */
|
||||
static const unsigned m68k_arch_features[] =
|
||||
static const unsigned m68k_arch_features[] =
|
||||
{
|
||||
0,
|
||||
m68000|m68881|m68851,
|
||||
@ -186,7 +186,7 @@ int bfd_m68k_features_to_mach (unsigned features)
|
||||
ix++)
|
||||
{
|
||||
unsigned this_extra, this_missing;
|
||||
|
||||
|
||||
if (m68k_arch_features[ix] == features)
|
||||
return ix;
|
||||
this_extra = bit_count (m68k_arch_features[ix] & ~features);
|
||||
@ -195,7 +195,7 @@ int bfd_m68k_features_to_mach (unsigned features)
|
||||
extra = this_extra;
|
||||
superset = ix;
|
||||
}
|
||||
|
||||
|
||||
this_missing = bit_count (features & ~m68k_arch_features[ix]);
|
||||
if (this_missing < missing)
|
||||
{
|
||||
@ -220,7 +220,7 @@ bfd_m68k_compatible (const bfd_arch_info_type *a,
|
||||
return b;
|
||||
if (!b->mach)
|
||||
return a;
|
||||
|
||||
|
||||
if (a->mach <= bfd_mach_m68060 && b->mach <= bfd_mach_m68060)
|
||||
/* Merge m68k machine. */
|
||||
return a->mach > b->mach ? a : b;
|
||||
|
@ -34,7 +34,7 @@ const bfd_arch_info_type bfd_moxie_arch =
|
||||
"moxie", /* Printable name. */
|
||||
2, /* Unsigned int section alignment power. */
|
||||
TRUE, /* The one and only. */
|
||||
bfd_default_compatible,
|
||||
bfd_default_compatible,
|
||||
bfd_default_scan,
|
||||
bfd_arch_default_fill,
|
||||
0,
|
||||
|
@ -78,7 +78,7 @@ static const bfd_arch_info_type arch_info_struct[] =
|
||||
|
||||
/* msp430x15x. */
|
||||
N (16, bfd_mach_msp15, "msp:15", FALSE, & arch_info_struct[6]),
|
||||
|
||||
|
||||
/* msp430x16x. */
|
||||
N (16, bfd_mach_msp16, "msp:16", FALSE, & arch_info_struct[7]),
|
||||
|
||||
@ -86,14 +86,14 @@ static const bfd_arch_info_type arch_info_struct[] =
|
||||
N (16, bfd_mach_msp21, "msp:21", FALSE, & arch_info_struct[8]),
|
||||
|
||||
/* msp430x31x. */
|
||||
N (16, bfd_mach_msp31, "msp:31", FALSE, & arch_info_struct[9]),
|
||||
N (16, bfd_mach_msp31, "msp:31", FALSE, & arch_info_struct[9]),
|
||||
|
||||
/* msp430x32x. */
|
||||
N (16, bfd_mach_msp32, "msp:32", FALSE, & arch_info_struct[10]),
|
||||
N (16, bfd_mach_msp32, "msp:32", FALSE, & arch_info_struct[10]),
|
||||
|
||||
/* msp430x33x. */
|
||||
N (16, bfd_mach_msp33, "msp:33", FALSE, & arch_info_struct[11]),
|
||||
|
||||
|
||||
/* msp430x41x. */
|
||||
N (16, bfd_mach_msp41, "msp:41", FALSE, & arch_info_struct[12]),
|
||||
|
||||
|
@ -388,7 +388,7 @@ static struct { unsigned long bfd_mach, arch, arch_up; } bfd_to_arch_table[] =
|
||||
{ bfd_mach_sh2a_nofpu_or_sh3_nommu, arch_sh2a_nofpu_or_sh3_nommu, arch_sh2a_nofpu_or_sh3_nommu_up },
|
||||
{ bfd_mach_sh2a_or_sh4, arch_sh2a_or_sh4, arch_sh2a_or_sh4_up },
|
||||
{ bfd_mach_sh2a_or_sh3e, arch_sh2a_or_sh3e, arch_sh2a_or_sh3e_up },
|
||||
|
||||
|
||||
{ bfd_mach_sh3, arch_sh3, arch_sh3_up },
|
||||
{ bfd_mach_sh3_nommu, arch_sh3_nommu, arch_sh3_nommu_up },
|
||||
{ bfd_mach_sh3_dsp, arch_sh3_dsp, arch_sh3_dsp_up },
|
||||
@ -541,6 +541,6 @@ sh_merge_bfd_arch (bfd *ibfd, bfd *obfd)
|
||||
|
||||
bfd_default_set_arch_mach (obfd, bfd_arch_sh,
|
||||
sh_get_bfd_mach_from_arch_set (merged_arch));
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* BFD support for the Infineon XC16X Microcontroller.
|
||||
Copyright 2006, 2007 Free Software Foundation, Inc.
|
||||
Contributed by KPIT Cummins Infosystems
|
||||
Contributed by KPIT Cummins Infosystems
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
Contributed by Anil Paranjpe(anilp1@kpitcummins.com)
|
||||
|
@ -2009,7 +2009,7 @@ find_abstract_instance_name (struct comp_unit *unit,
|
||||
|
||||
info_ptr = unit->sec_info_ptr + die_ref;
|
||||
}
|
||||
else
|
||||
else
|
||||
info_ptr = unit->info_ptr_unit + die_ref;
|
||||
abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
|
||||
info_ptr += bytes_read;
|
||||
@ -3508,10 +3508,10 @@ find_line (bfd *abfd,
|
||||
stash->all_comp_units->prev_unit = each;
|
||||
else
|
||||
stash->last_comp_unit = each;
|
||||
|
||||
|
||||
each->next_unit = stash->all_comp_units;
|
||||
stash->all_comp_units = each;
|
||||
|
||||
|
||||
/* DW_AT_low_pc and DW_AT_high_pc are optional for
|
||||
compilation units. If we don't have them (i.e.,
|
||||
unit->high == 0), we need to consult the line info table
|
||||
|
@ -1788,7 +1788,7 @@ mk_fdrtab (bfd *abfd,
|
||||
'lookup_line'. */
|
||||
/* The address of the first PDR is the offset of that
|
||||
procedure relative to the beginning of file FDR. */
|
||||
tab->base_addr = fdr_ptr->adr;
|
||||
tab->base_addr = fdr_ptr->adr;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1887,7 +1887,7 @@ lookup_line (bfd *abfd,
|
||||
i = fdrtab_lookup (line_info, offset);
|
||||
if (i < 0)
|
||||
return FALSE; /* no FDR, no fun... */
|
||||
|
||||
|
||||
/* eraxxon: 'fdrtab_lookup' doesn't give what we want, at least for Compaq's
|
||||
C++ compiler 6.2. Consider three FDRs with starting addresses of x, y,
|
||||
and z, respectively, such that x < y < z. Assume further that
|
||||
@ -2052,7 +2052,7 @@ lookup_line (bfd *abfd,
|
||||
read stabs FDRs as ECOFF ones. However, I don't think this will
|
||||
harm anything. */
|
||||
i = 0;
|
||||
|
||||
|
||||
/* Search FDR list starting at tab[i] for the PDR that best matches
|
||||
OFFSET. Normally, the FDR list is only one entry long. */
|
||||
best_fdr = NULL;
|
||||
@ -2097,7 +2097,7 @@ lookup_line (bfd *abfd,
|
||||
|
||||
if (!best_pdr || (min_dist >= 0 && min_dist < best_dist))
|
||||
{
|
||||
best_dist = (bfd_vma) min_dist;
|
||||
best_dist = (bfd_vma) min_dist;
|
||||
best_fdr = fdr_ptr;
|
||||
best_pdr = pdr_hold;
|
||||
}
|
||||
|
@ -451,7 +451,7 @@ ecoff_swap_sym_in (bfd *abfd, void * ext_copy, SYMR *intern)
|
||||
#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
|
||||
if (intern->iss == (signed long) 0xffffffff)
|
||||
intern->iss = -1;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Now the fun stuff... */
|
||||
if (bfd_header_big_endian (abfd))
|
||||
|
@ -125,11 +125,11 @@ _bfd_elf_create_ifunc_dyn_reloc (bfd *abfd, struct bfd_link_info *info,
|
||||
sreloc = _bfd_elf_make_dynamic_reloc_section (sec, htab->dynobj,
|
||||
bed->s->log_file_align,
|
||||
abfd,
|
||||
bed->rela_plts_and_copies_p);
|
||||
bed->rela_plts_and_copies_p);
|
||||
if (sreloc == NULL)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
p = *head;
|
||||
if (p == NULL || p->sec != sec)
|
||||
{
|
||||
@ -175,7 +175,7 @@ _bfd_elf_allocate_ifunc_dyn_relocs (struct bfd_link_info *info,
|
||||
|| info->export_dynamic)
|
||||
&& h->pointer_equality_needed)
|
||||
{
|
||||
info->callbacks->einfo
|
||||
info->callbacks->einfo
|
||||
(_("%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
|
||||
"equality in `%B' can not be used when making an "
|
||||
"executable; recompile with -fPIE and relink with -pie\n"),
|
||||
@ -251,7 +251,7 @@ keep:
|
||||
}
|
||||
|
||||
/* Don't update value of STT_GNU_IFUNC symbol to PLT. We need
|
||||
the original value for R_*_IRELATIVE. */
|
||||
the original value for R_*_IRELATIVE. */
|
||||
h->plt.offset = plt->size;
|
||||
|
||||
/* Make room for this entry in the .plt/.iplt section. */
|
||||
|
@ -604,7 +604,7 @@ static reloc_howto_type elf_mn10300_howto_table[] =
|
||||
0xffffffff, /* src_mask */
|
||||
0xffffffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
|
||||
HOWTO (R_MN10300_SYM_DIFF, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
@ -1147,7 +1147,7 @@ mn10300_elf_check_relocs (bfd *abfd,
|
||||
if (info->shared)
|
||||
info->flags |= DF_STATIC_TLS;
|
||||
/* Fall through */
|
||||
|
||||
|
||||
case R_MN10300_TLS_GD:
|
||||
case R_MN10300_GOT32:
|
||||
case R_MN10300_GOT24:
|
||||
@ -2425,7 +2425,7 @@ mn10300_elf_relax_delete_bytes (bfd *abfd,
|
||||
serve to keep the section artifically inflated. */
|
||||
if (ELF32_R_TYPE ((irelend - 1)->r_info) == (int) R_MN10300_ALIGN)
|
||||
--irelend;
|
||||
|
||||
|
||||
/* The deletion must stop at the next ALIGN reloc for an aligment
|
||||
power larger than, or not a multiple of, the number of bytes we
|
||||
are deleting. */
|
||||
|
@ -195,7 +195,7 @@ elf_vxworks_emit_relocs (bfd *output_bfd,
|
||||
{
|
||||
asection *sec = (*hash_ptr)->root.u.def.section;
|
||||
int this_idx = sec->output_section->target_index;
|
||||
|
||||
|
||||
irela[j].r_info
|
||||
= ELF32_R_INFO (this_idx, ELF32_R_TYPE (irela[j].r_info));
|
||||
irela[j].r_addend += (*hash_ptr)->root.u.def.value;
|
||||
@ -262,34 +262,34 @@ bfd_boolean
|
||||
elf_vxworks_finish_dynamic_entry (bfd *output_bfd, Elf_Internal_Dyn *dyn)
|
||||
{
|
||||
asection *sec;
|
||||
|
||||
|
||||
switch (dyn->d_tag)
|
||||
{
|
||||
default:
|
||||
return FALSE;
|
||||
|
||||
|
||||
case DT_VX_WRS_TLS_DATA_START:
|
||||
sec = bfd_get_section_by_name (output_bfd, ".tls_data");
|
||||
dyn->d_un.d_ptr = sec->vma;
|
||||
break;
|
||||
|
||||
|
||||
case DT_VX_WRS_TLS_DATA_SIZE:
|
||||
sec = bfd_get_section_by_name (output_bfd, ".tls_data");
|
||||
dyn->d_un.d_val = sec->size;
|
||||
break;
|
||||
|
||||
|
||||
case DT_VX_WRS_TLS_DATA_ALIGN:
|
||||
sec = bfd_get_section_by_name (output_bfd, ".tls_data");
|
||||
dyn->d_un.d_val
|
||||
= (bfd_size_type)1 << bfd_get_section_alignment (output_bfd,
|
||||
sec);
|
||||
break;
|
||||
|
||||
|
||||
case DT_VX_WRS_TLS_VARS_START:
|
||||
sec = bfd_get_section_by_name (output_bfd, ".tls_vars");
|
||||
dyn->d_un.d_ptr = sec->vma;
|
||||
break;
|
||||
|
||||
|
||||
case DT_VX_WRS_TLS_VARS_SIZE:
|
||||
sec = bfd_get_section_by_name (output_bfd, ".tls_vars");
|
||||
dyn->d_un.d_val = sec->size;
|
||||
|
@ -1703,8 +1703,8 @@ elf32_avr_relax_section (bfd *abfd,
|
||||
struct elf32_avr_link_hash_table *htab;
|
||||
|
||||
/* If 'shrinkable' is FALSE, do not shrink by deleting bytes while
|
||||
relaxing. Such shrinking can cause issues for the sections such
|
||||
as .vectors and .jumptables. Instead the unused bytes should be
|
||||
relaxing. Such shrinking can cause issues for the sections such
|
||||
as .vectors and .jumptables. Instead the unused bytes should be
|
||||
filled with nop instructions. */
|
||||
bfd_boolean shrinkable = TRUE;
|
||||
|
||||
@ -1875,7 +1875,7 @@ elf32_avr_relax_section (bfd *abfd,
|
||||
distance_short_enough = 1;
|
||||
/* If shrinkable, then we can check for a range of distance which
|
||||
is two bytes farther on both the directions because the call
|
||||
or jump target will be closer by two bytes after the
|
||||
or jump target will be closer by two bytes after the
|
||||
relaxation. */
|
||||
else if (shrinkable && ((int) gap >= -4094 && (int) gap <= 4097))
|
||||
distance_short_enough = 1;
|
||||
@ -1952,7 +1952,7 @@ elf32_avr_relax_section (bfd *abfd,
|
||||
R_AVR_13_PCREL);
|
||||
|
||||
/* We should not modify the ordering if 'shrinkable' is
|
||||
FALSE. */
|
||||
FALSE. */
|
||||
if (!shrinkable)
|
||||
{
|
||||
/* Let's insert a nop. */
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor,
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor,
|
||||
Boston, MA 02110-1301, USA. */
|
||||
|
||||
|
||||
|
@ -761,7 +761,7 @@ cr16_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
|
||||
{
|
||||
srelgot = bfd_get_linker_section (dynobj, ".rela.got");
|
||||
if (srelgot == NULL)
|
||||
{
|
||||
{
|
||||
flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
|
||||
| SEC_IN_MEMORY | SEC_LINKER_CREATED
|
||||
| SEC_READONLY);
|
||||
@ -912,7 +912,7 @@ cr16_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
/* We only care about the addend, where the difference between
|
||||
expressions is kept. */
|
||||
Rvalue = 0;
|
||||
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1043,7 +1043,7 @@ cr16_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
| ((Rvalue >> 16) & 0xf)), hit_data);
|
||||
bfd_put_16 (input_bfd, (Rvalue) & 0xffff, hit_data + 2);
|
||||
}
|
||||
else if (r_type == R_CR16_GOT_REGREL20)
|
||||
else if (r_type == R_CR16_GOT_REGREL20)
|
||||
{
|
||||
asection * sgot = bfd_get_linker_section (dynobj, ".got");
|
||||
|
||||
@ -1060,7 +1060,7 @@ cr16_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
-Bsymbolic link and the symbol is defined
|
||||
locally, or the symbol was forced to be local
|
||||
because of a version file. We must initialize
|
||||
this entry in the global offset table.
|
||||
this entry in the global offset table.
|
||||
When doing a dynamic link, we create a .rela.got
|
||||
relocation entry to initialize the value. This
|
||||
is done in the finish_dynamic_symbol routine. */
|
||||
@ -1080,7 +1080,7 @@ cr16_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
|
||||
Rvalue += addend;
|
||||
|
||||
/* REVISIT: if ((long) Rvalue > 0xffffff ||
|
||||
/* REVISIT: if ((long) Rvalue > 0xffffff ||
|
||||
(long) Rvalue < -0x800000). */
|
||||
if ((long) Rvalue > 0xffffff || (long) Rvalue < 0)
|
||||
return bfd_reloc_overflow;
|
||||
@ -1111,7 +1111,7 @@ cr16_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
-Bsymbolic link and the symbol is defined
|
||||
locally, or the symbol was forced to be local
|
||||
because of a version file. We must initialize
|
||||
this entry in the global offset table.
|
||||
this entry in the global offset table.
|
||||
When doing a dynamic link, we create a .rela.got
|
||||
relocation entry to initialize the value. This
|
||||
is done in the finish_dynamic_symbol routine. */
|
||||
@ -1142,7 +1142,7 @@ cr16_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
Rvalue += Rvalue1;
|
||||
|
||||
/* Check for range. */
|
||||
/* REVISIT: if ((long) Rvalue > 0xffffff
|
||||
/* REVISIT: if ((long) Rvalue > 0xffffff
|
||||
|| (long) Rvalue < -0x800000). */
|
||||
if ((long) Rvalue > 0xffffff || (long) Rvalue < 0)
|
||||
return bfd_reloc_overflow;
|
||||
@ -1224,7 +1224,7 @@ cr16_elf_final_link_relocate (reloc_howto_type *howto,
|
||||
}
|
||||
else if (r_type == R_CR16_NUM32)
|
||||
{
|
||||
Rvalue1 = (bfd_get_32 (input_bfd, hit_data));
|
||||
Rvalue1 = (bfd_get_32 (input_bfd, hit_data));
|
||||
|
||||
/* Add or subtract the offset value */
|
||||
if (Rvalue1 & 0x80000000)
|
||||
@ -1309,7 +1309,7 @@ elf32_cr16_relax_delete_bytes (struct bfd_link_info *link_info, bfd *abfd,
|
||||
&& ELF32_R_TYPE (irel->r_info) != (int) R_CR16_SWITCH16
|
||||
&& ELF32_R_TYPE (irel->r_info) != (int) R_CR16_SWITCH32)
|
||||
continue;
|
||||
|
||||
|
||||
r_symndx = ELF32_R_SYM (irel->r_info);
|
||||
rsym = (Elf_Internal_Sym *) symtab_hdr->contents + r_symndx;
|
||||
|
||||
@ -1981,7 +1981,7 @@ elf32_cr16_relax_section (bfd *abfd, asection *sec,
|
||||
bfd_vma value = symval;
|
||||
unsigned short is_add_mov = 0;
|
||||
bfd_vma value1 = 0;
|
||||
|
||||
|
||||
/* Get the existing value from the mcode */
|
||||
value1 = ((bfd_get_32 (abfd, contents + irel->r_offset + 2) >> 16)
|
||||
|(((bfd_get_32 (abfd, contents + irel->r_offset + 2) & 0xffff) << 16)));
|
||||
@ -1996,7 +1996,7 @@ elf32_cr16_relax_section (bfd *abfd, asection *sec,
|
||||
|
||||
/* Verify it's a 'arithmetic ADDD or MOVD instruction'.
|
||||
For ADDD and MOVD only, convert to IMM32 -> IMM20. */
|
||||
|
||||
|
||||
if (((code & 0xfff0) == 0x0070) || ((code & 0xfff0) == 0x0020))
|
||||
is_add_mov = 1;
|
||||
|
||||
@ -2016,7 +2016,7 @@ elf32_cr16_relax_section (bfd *abfd, asection *sec,
|
||||
|
||||
bfd_put_8 (abfd, (code & 0xf) << 4, contents + irel->r_offset);
|
||||
|
||||
/* If existing value is nagavive adjust approriately
|
||||
/* If existing value is nagavive adjust approriately
|
||||
place the 16-20bits (ie 4 bit) in new opcode,
|
||||
as the 0xffffxxxx, the higher 2 byte values removed. */
|
||||
if (value1 & 0x80000000)
|
||||
@ -2040,7 +2040,7 @@ elf32_cr16_relax_section (bfd *abfd, asection *sec,
|
||||
}
|
||||
|
||||
/* See if the value will fit in 16 bits. */
|
||||
if ((!is_add_mov)
|
||||
if ((!is_add_mov)
|
||||
&& ((long)(value + value1) < 0x7fff && (long)(value + value1) > 0))
|
||||
{
|
||||
unsigned short code;
|
||||
@ -2065,7 +2065,7 @@ elf32_cr16_relax_section (bfd *abfd, asection *sec,
|
||||
|
||||
bfd_put_8 (abfd, 0xb0 | (code & 0xf), contents + irel->r_offset);
|
||||
|
||||
/* If existing value is nagavive adjust approriately
|
||||
/* If existing value is nagavive adjust approriately
|
||||
place the 12-16bits (ie 4 bit) in new opcode,
|
||||
as the 0xfffffxxx, the higher 2 byte values removed. */
|
||||
if (value1 & 0x80000000)
|
||||
@ -2092,7 +2092,7 @@ elf32_cr16_relax_section (bfd *abfd, asection *sec,
|
||||
#if 0
|
||||
/* Try to turn a 16bit immediate address into a 4bit
|
||||
immediate address. */
|
||||
if ((ELF32_R_TYPE (irel->r_info) == (int) R_CR16_IMM20)
|
||||
if ((ELF32_R_TYPE (irel->r_info) == (int) R_CR16_IMM20)
|
||||
|| (ELF32_R_TYPE (irel->r_info) == (int) R_CR16_IMM16))
|
||||
{
|
||||
bfd_vma value = symval;
|
||||
@ -2200,7 +2200,7 @@ elf32_cr16_relax_section (bfd *abfd, asection *sec,
|
||||
else
|
||||
/* Cache the section contents for elf_link_input_bfd. */
|
||||
elf_section_data (sec)->this_hdr.contents = contents;
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (internal_relocs != NULL
|
||||
|
@ -29,14 +29,14 @@
|
||||
|
||||
#define USE_REL 1 /* CR16C uses REL relocations instead of RELA. */
|
||||
|
||||
/* The following definition is based on EMPTY_HOWTO macro,
|
||||
/* The following definition is based on EMPTY_HOWTO macro,
|
||||
but also initiates the "name" field in HOWTO struct. */
|
||||
#define ONLY_NAME_HOWTO(C) \
|
||||
HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
|
||||
STRINGX(C), FALSE, 0, 0, FALSE)
|
||||
|
||||
/* reloc_map_index array maps CRASM relocation type into a BFD
|
||||
relocation enum. The array's indices are synchronized with
|
||||
relocation enum. The array's indices are synchronized with
|
||||
RINDEX_16C_* indices, created in include/elf/cr16c.h.
|
||||
The array is used in:
|
||||
1. elf32-cr16c.c : elf_cr16c_reloc_type_lookup().
|
||||
|
@ -2698,7 +2698,7 @@ cris_elf_plt_sym_val (bfd_vma i ATTRIBUTE_UNUSED, const asection *plt,
|
||||
{
|
||||
bfd_size_type got_offset;
|
||||
bfd_byte gotoffs_raw[4];
|
||||
|
||||
|
||||
if (!bfd_get_section_contents (abfd, (asection *) plt, gotoffs_raw,
|
||||
pltoffs + plt_entry_got_offset,
|
||||
sizeof (gotoffs_raw)))
|
||||
|
@ -332,7 +332,7 @@ static reloc_howto_type crx_elf_howto_table[] =
|
||||
0x0, /* src_mask */
|
||||
0xffffffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
|
||||
/* An 8 bit switch table entry. This is generated for an expression
|
||||
such as ``.byte L1 - L2''. The offset holds the difference
|
||||
between the reloc address and L2. */
|
||||
@ -475,10 +475,10 @@ crx_elf_final_link_relocate (reloc_howto_type *howto, bfd *input_bfd,
|
||||
case R_CRX_SWITCH8:
|
||||
case R_CRX_SWITCH16:
|
||||
case R_CRX_SWITCH32:
|
||||
/* We only care about the addend, where the difference between
|
||||
/* We only care about the addend, where the difference between
|
||||
expressions is kept. */
|
||||
Rvalue = 0;
|
||||
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -585,7 +585,7 @@ crx_elf_final_link_relocate (reloc_howto_type *howto, bfd *input_bfd,
|
||||
/* Delete some bytes from a section while relaxing. */
|
||||
|
||||
static bfd_boolean
|
||||
elf32_crx_relax_delete_bytes (struct bfd_link_info *link_info, bfd *abfd,
|
||||
elf32_crx_relax_delete_bytes (struct bfd_link_info *link_info, bfd *abfd,
|
||||
asection *sec, bfd_vma addr, int count)
|
||||
{
|
||||
Elf_Internal_Shdr *symtab_hdr;
|
||||
@ -632,7 +632,7 @@ elf32_crx_relax_delete_bytes (struct bfd_link_info *link_info, bfd *abfd,
|
||||
&& isym->st_value > addr
|
||||
&& isym->st_value < toaddr)
|
||||
{
|
||||
/* Adjust the addend of SWITCH relocations in this section,
|
||||
/* Adjust the addend of SWITCH relocations in this section,
|
||||
which reference this local symbol. */
|
||||
for (irel = elf_section_data (sec)->relocs; irel < irelend; irel++)
|
||||
{
|
||||
@ -677,22 +677,22 @@ elf32_crx_relax_delete_bytes (struct bfd_link_info *link_info, bfd *abfd,
|
||||
{
|
||||
struct elf_link_hash_entry *sym_hash = *sym_hashes;
|
||||
|
||||
/* The '--wrap SYMBOL' option is causing a pain when the object file,
|
||||
containing the definition of __wrap_SYMBOL, includes a direct
|
||||
call to SYMBOL as well. Since both __wrap_SYMBOL and SYMBOL reference
|
||||
the same symbol (which is __wrap_SYMBOL), but still exist as two
|
||||
different symbols in 'sym_hashes', we don't want to adjust
|
||||
the global symbol __wrap_SYMBOL twice.
|
||||
/* The '--wrap SYMBOL' option is causing a pain when the object file,
|
||||
containing the definition of __wrap_SYMBOL, includes a direct
|
||||
call to SYMBOL as well. Since both __wrap_SYMBOL and SYMBOL reference
|
||||
the same symbol (which is __wrap_SYMBOL), but still exist as two
|
||||
different symbols in 'sym_hashes', we don't want to adjust
|
||||
the global symbol __wrap_SYMBOL twice.
|
||||
This check is only relevant when symbols are being wrapped. */
|
||||
if (link_info->wrap_hash != NULL)
|
||||
{
|
||||
struct elf_link_hash_entry **cur_sym_hashes;
|
||||
|
||||
|
||||
/* Loop only over the symbols whom been already checked. */
|
||||
for (cur_sym_hashes = start_hashes; cur_sym_hashes < sym_hashes;
|
||||
for (cur_sym_hashes = start_hashes; cur_sym_hashes < sym_hashes;
|
||||
cur_sym_hashes++)
|
||||
{
|
||||
/* If the current symbol is identical to 'sym_hash', that means
|
||||
/* If the current symbol is identical to 'sym_hash', that means
|
||||
the symbol was already adjusted (or at least checked). */
|
||||
if (*cur_sym_hashes == sym_hash)
|
||||
break;
|
||||
|
@ -5507,7 +5507,7 @@ elf32_frvfdpic_always_size_sections (bfd *output_bfd,
|
||||
static bfd_boolean
|
||||
_frvfdpic_check_discarded_relocs (bfd *abfd, asection *sec,
|
||||
struct bfd_link_info *info,
|
||||
|
||||
|
||||
bfd_boolean *changed)
|
||||
{
|
||||
Elf_Internal_Shdr *symtab_hdr;
|
||||
@ -6744,7 +6744,7 @@ elf32_frv_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
|
||||
hardcoded offsets and sizes listed below (and contained within
|
||||
this lexical block) refer to fields in the target's elf_prstatus
|
||||
struct. */
|
||||
case 268:
|
||||
case 268:
|
||||
/* `pr_cursig' is at offset 12. */
|
||||
elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12);
|
||||
|
||||
@ -6760,7 +6760,7 @@ elf32_frv_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
|
||||
and `pr_interp_fdpic_loadmap', both of which (by design)
|
||||
immediately follow `pr_reg'. This will allow these fields to
|
||||
be viewed by GDB as registers.
|
||||
|
||||
|
||||
`pr_reg' is 184 bytes long. `pr_exec_fdpic_loadmap' and
|
||||
`pr_interp_fdpic_loadmap' are 4 bytes each. */
|
||||
raw_size = 184 + 4 + 4;
|
||||
|
@ -10,7 +10,7 @@
|
||||
Largely rewritten by Alan Modra <alan@linuxcare.com.au>
|
||||
Naming cleanup by Carlos O'Donell <carlos@systemhalted.org>
|
||||
TLS support written by Randolph Chung <tausq@debian.org>
|
||||
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@ -124,20 +124,20 @@
|
||||
Structure/Variable Prefix
|
||||
elf_link_hash_table "etab"
|
||||
elf_link_hash_entry "eh"
|
||||
|
||||
|
||||
elf32_hppa_link_hash_table "htab"
|
||||
elf32_hppa_link_hash_entry "hh"
|
||||
|
||||
bfd_hash_table "btab"
|
||||
bfd_hash_entry "bh"
|
||||
|
||||
|
||||
bfd_hash_table containing stubs "bstab"
|
||||
elf32_hppa_stub_hash_entry "hsh"
|
||||
|
||||
elf32_hppa_dyn_reloc_entry "hdh"
|
||||
|
||||
|
||||
Always remember to use GNU Coding Style. */
|
||||
|
||||
|
||||
#define PLT_ENTRY_SIZE 8
|
||||
#define GOT_ENTRY_SIZE 4
|
||||
#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
|
||||
@ -1110,7 +1110,7 @@ hppa32_elf_local_refcounts (bfd *abfd)
|
||||
{
|
||||
Elf_Internal_Shdr *symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
|
||||
bfd_signed_vma *local_refcounts;
|
||||
|
||||
|
||||
local_refcounts = elf_local_got_refcounts (abfd);
|
||||
if (local_refcounts == NULL)
|
||||
{
|
||||
@ -1378,7 +1378,7 @@ elf32_hppa_check_relocs (bfd *abfd,
|
||||
else
|
||||
{
|
||||
bfd_signed_vma *local_got_refcounts;
|
||||
|
||||
|
||||
/* This is a global offset table entry for a local symbol. */
|
||||
local_got_refcounts = hppa32_elf_local_refcounts (abfd);
|
||||
if (local_got_refcounts == NULL)
|
||||
@ -1965,7 +1965,7 @@ allocate_plt_static (struct elf_link_hash_entry *eh, void *inf)
|
||||
means that the plt entry is only used by a plabel.
|
||||
We'll be using a normal plt entry for this symbol, so
|
||||
clear the plabel indicator. */
|
||||
|
||||
|
||||
hh->plabel = 0;
|
||||
}
|
||||
else if (hh->plabel)
|
||||
@ -2013,7 +2013,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *eh, void *inf)
|
||||
return FALSE;
|
||||
|
||||
hh = hppa_elf_hash_entry (eh);
|
||||
|
||||
|
||||
if (htab->etab.dynamic_sections_created
|
||||
&& eh->plt.offset != (bfd_vma) -1
|
||||
&& !hh->plabel
|
||||
@ -2114,7 +2114,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *eh, void *inf)
|
||||
/* For the non-shared case, discard space for relocs against
|
||||
symbols which turn out to need copy relocs or are not
|
||||
dynamic. */
|
||||
|
||||
|
||||
if (!eh->non_got_ref
|
||||
&& ((ELIMINATE_COPY_RELOCS
|
||||
&& eh->def_dynamic
|
||||
@ -2301,7 +2301,7 @@ elf32_hppa_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
sec->size += 2 * GOT_ENTRY_SIZE;
|
||||
else if ((*local_tls_type & GOT_TLS_GD) == GOT_TLS_GD)
|
||||
sec->size += GOT_ENTRY_SIZE;
|
||||
if (info->shared)
|
||||
if (info->shared)
|
||||
{
|
||||
srel->size += sizeof (Elf32_External_Rela);
|
||||
if ((*local_tls_type & (GOT_TLS_GD | GOT_TLS_IE)) == (GOT_TLS_GD | GOT_TLS_IE))
|
||||
@ -2342,10 +2342,10 @@ elf32_hppa_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (htab->tls_ldm_got.refcount > 0)
|
||||
{
|
||||
/* Allocate 2 got entries and 1 dynamic reloc for
|
||||
/* Allocate 2 got entries and 1 dynamic reloc for
|
||||
R_PARISC_TLS_DTPMOD32 relocs. */
|
||||
htab->tls_ldm_got.offset = htab->sgot->size;
|
||||
htab->sgot->size += (GOT_ENTRY_SIZE * 2);
|
||||
@ -3220,7 +3220,7 @@ elf32_hppa_build_stubs (struct bfd_link_info *info)
|
||||
}
|
||||
|
||||
/* Return the base vma address which should be subtracted from the real
|
||||
address when resolving a dtpoff relocation.
|
||||
address when resolving a dtpoff relocation.
|
||||
This is PT_TLS segment p_vaddr. */
|
||||
|
||||
static bfd_vma
|
||||
@ -3242,9 +3242,9 @@ tpoff (struct bfd_link_info *info, bfd_vma address)
|
||||
/* If tls_sec is NULL, we should have signalled an error already. */
|
||||
if (htab->tls_sec == NULL)
|
||||
return 0;
|
||||
/* hppa TLS ABI is variant I and static TLS block start just after
|
||||
/* hppa TLS ABI is variant I and static TLS block start just after
|
||||
tcbhead structure which has 2 pointer fields. */
|
||||
return (address - htab->tls_sec->vma
|
||||
return (address - htab->tls_sec->vma
|
||||
+ align_power ((bfd_vma) 8, htab->tls_sec->alignment_power));
|
||||
}
|
||||
|
||||
@ -3323,7 +3323,7 @@ final_link_relocate (asection *input_section,
|
||||
bfd_signed_vma addend = rela->r_addend;
|
||||
bfd_vma location;
|
||||
struct elf32_hppa_stub_hash_entry *hsh = NULL;
|
||||
int val;
|
||||
int val;
|
||||
|
||||
if (r_type == R_PARISC_NONE)
|
||||
return bfd_reloc_ok;
|
||||
@ -4002,7 +4002,7 @@ elf32_hppa_relocate_section (bfd *output_bfd,
|
||||
|| outrel.r_offset == (bfd_vma) -2);
|
||||
outrel.r_offset += (input_section->output_offset
|
||||
+ input_section->output_section->vma);
|
||||
|
||||
|
||||
if (skip)
|
||||
{
|
||||
memset (&outrel, 0, sizeof (outrel));
|
||||
@ -4064,12 +4064,12 @@ elf32_hppa_relocate_section (bfd *output_bfd,
|
||||
bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case R_PARISC_TLS_LDM21L:
|
||||
case R_PARISC_TLS_LDM14R:
|
||||
{
|
||||
bfd_vma off;
|
||||
|
||||
|
||||
off = htab->tls_ldm_got.offset;
|
||||
if (off & 1)
|
||||
off &= ~1;
|
||||
@ -4078,12 +4078,12 @@ elf32_hppa_relocate_section (bfd *output_bfd,
|
||||
Elf_Internal_Rela outrel;
|
||||
bfd_byte *loc;
|
||||
|
||||
outrel.r_offset = (off
|
||||
outrel.r_offset = (off
|
||||
+ htab->sgot->output_section->vma
|
||||
+ htab->sgot->output_offset);
|
||||
outrel.r_addend = 0;
|
||||
outrel.r_info = ELF32_R_INFO (0, R_PARISC_TLS_DTPMOD32);
|
||||
loc = htab->srelgot->contents;
|
||||
loc = htab->srelgot->contents;
|
||||
loc += htab->srelgot->reloc_count++ * sizeof (Elf32_External_Rela);
|
||||
|
||||
bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc);
|
||||
@ -4155,7 +4155,7 @@ elf32_hppa_relocate_section (bfd *output_bfd,
|
||||
|| hh->eh.root.type != bfd_link_hash_undefweak))
|
||||
{
|
||||
need_relocs = TRUE;
|
||||
loc = htab->srelgot->contents;
|
||||
loc = htab->srelgot->contents;
|
||||
/* FIXME (CAO): Should this be reloc_count++ ? */
|
||||
loc += htab->srelgot->reloc_count * sizeof (Elf32_External_Rela);
|
||||
}
|
||||
|
@ -1015,7 +1015,7 @@ elf32_i860_relocate_highadj (bfd *input_bfd,
|
||||
insn = bfd_get_32 (input_bfd, contents + rel->r_offset);
|
||||
|
||||
value += rel->r_addend;
|
||||
value += 0x8000;
|
||||
value += 0x8000;
|
||||
value = ((value >> 16) & 0xffff);
|
||||
|
||||
insn = (insn & 0xffff0000) | value;
|
||||
|
@ -348,7 +348,7 @@ ip2k_is_switch_table_128 (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
{
|
||||
bfd_byte code[4];
|
||||
int table_index = 0;
|
||||
|
||||
|
||||
/* Check current page-jmp. */
|
||||
if (addr + 4 > sec->size)
|
||||
return -1;
|
||||
@ -358,7 +358,7 @@ ip2k_is_switch_table_128 (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
if ((! IS_PAGE_OPCODE (code + 0))
|
||||
|| (! IS_JMP_OPCODE (code + 2)))
|
||||
return -1;
|
||||
|
||||
|
||||
/* Search back. */
|
||||
while (1)
|
||||
{
|
||||
@ -428,7 +428,7 @@ ip2k_is_switch_table_256 (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
{
|
||||
bfd_byte code[16];
|
||||
int table_index = 0;
|
||||
|
||||
|
||||
/* Check current page-jmp. */
|
||||
if (addr + 4 > sec->size)
|
||||
return -1;
|
||||
@ -437,7 +437,7 @@ ip2k_is_switch_table_256 (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
if ((! IS_PAGE_OPCODE (code + 0))
|
||||
|| (! IS_JMP_OPCODE (code + 2)))
|
||||
return -1;
|
||||
|
||||
|
||||
/* Search back. */
|
||||
while (1)
|
||||
{
|
||||
@ -464,7 +464,7 @@ ip2k_is_switch_table_256 (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
&& (IS_INC_1SP_OPCODE (code + 12))
|
||||
&& (IS_JMP_OPCODE (code + 14)))
|
||||
return table_index;
|
||||
|
||||
|
||||
if ((! IS_PAGE_OPCODE (code + 0))
|
||||
|| (! IS_JMP_OPCODE (code + 2)))
|
||||
return -1;
|
||||
@ -658,11 +658,11 @@ adjust_all_relocations (bfd *abfd,
|
||||
if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info)
|
||||
{
|
||||
asection *sym_sec;
|
||||
|
||||
|
||||
/* A local symbol. */
|
||||
isym = isymbuf + ELF32_R_SYM (irel->r_info);
|
||||
sym_sec = bfd_section_from_elf_index (abfd, isym->st_shndx);
|
||||
|
||||
|
||||
if (sym_sec == sec)
|
||||
{
|
||||
const char *name;
|
||||
@ -671,20 +671,20 @@ adjust_all_relocations (bfd *abfd,
|
||||
bfd_vma baseaddr = BASEADDR (sec);
|
||||
bfd_vma symval = BASEADDR (sym_sec) + isym->st_value
|
||||
+ irel->r_addend;
|
||||
|
||||
|
||||
if ((baseaddr + addr) <= symval
|
||||
&& symval <= (baseaddr + endaddr))
|
||||
irel->r_addend += count;
|
||||
|
||||
/* Go hunt up a function and fix its line info if needed. */
|
||||
stabp = stabcontents + irel->r_offset - 8;
|
||||
stabp = stabcontents + irel->r_offset - 8;
|
||||
|
||||
/* Go pullout the stab entry. */
|
||||
type = bfd_h_get_8 (abfd, stabp + TYPEOFF);
|
||||
value = bfd_h_get_32 (abfd, stabp + VALOFF);
|
||||
|
||||
|
||||
name = bfd_get_stab_name (type);
|
||||
|
||||
|
||||
if (strcmp (name, "FUN") == 0)
|
||||
{
|
||||
int function_adjusted = 0;
|
||||
@ -710,7 +710,7 @@ adjust_all_relocations (bfd *abfd,
|
||||
{
|
||||
/* Adjust the value. */
|
||||
value += count;
|
||||
|
||||
|
||||
/* We need to put it back. */
|
||||
bfd_h_put_32 (abfd, value,stabp + VALOFF);
|
||||
}
|
||||
@ -819,10 +819,10 @@ ip2k_delete_page_insn (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
/* Delete the PAGE insn. */
|
||||
if (!ip2k_elf_relax_delete_bytes (abfd, sec, irel->r_offset, 2))
|
||||
return FALSE;
|
||||
|
||||
|
||||
/* Modified => will need to iterate relaxation again. */
|
||||
*again = TRUE;
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -837,7 +837,7 @@ ip2k_relax_switch_table_128 (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
Elf_Internal_Rela *ireltest = irel;
|
||||
bfd_byte code[4];
|
||||
bfd_vma addr;
|
||||
|
||||
|
||||
/* Test all page instructions. */
|
||||
addr = irel->r_offset;
|
||||
while (1)
|
||||
@ -908,7 +908,7 @@ ip2k_relax_switch_table_256 (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
Elf_Internal_Rela *ireltest = irel;
|
||||
bfd_byte code[12];
|
||||
bfd_vma addr;
|
||||
|
||||
|
||||
/* Test all page instructions. */
|
||||
addr = irel->r_offset;
|
||||
|
||||
@ -995,7 +995,7 @@ ip2k_elf_relax_section_page (bfd *abfd,
|
||||
Elf_Internal_Rela *irel;
|
||||
int switch_table_128;
|
||||
int switch_table_256;
|
||||
|
||||
|
||||
/* Walk thru the section looking for relaxation opportunities. */
|
||||
for (irel = misc->irelbase; irel < irelend; irel++)
|
||||
{
|
||||
|
@ -290,7 +290,7 @@ iq2000_elf_relocate_hi16 (bfd *input_bfd,
|
||||
bfd_vma insn;
|
||||
|
||||
insn = bfd_get_32 (input_bfd, contents + relhi->r_offset);
|
||||
|
||||
|
||||
value += relhi->r_addend;
|
||||
value &= 0x7fffffff; /* Mask off top-bit which is Harvard mask bit. */
|
||||
|
||||
@ -299,7 +299,7 @@ iq2000_elf_relocate_hi16 (bfd *input_bfd,
|
||||
if (value & 0x8000)
|
||||
value += 0x10000;
|
||||
|
||||
value >>= 16;
|
||||
value >>= 16;
|
||||
insn = ((insn & ~0xFFFF) | value);
|
||||
|
||||
bfd_put_32 (input_bfd, insn, contents + relhi->r_offset);
|
||||
@ -444,7 +444,7 @@ iq2000_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED,
|
||||
/* Look through the relocs for a section during the first phase.
|
||||
Since we don't do .gots or .plts, we just need to consider the
|
||||
virtual table relocs for gc. */
|
||||
|
||||
|
||||
static bfd_boolean
|
||||
iq2000_elf_check_relocs (bfd *abfd,
|
||||
struct bfd_link_info *info,
|
||||
@ -456,19 +456,19 @@ iq2000_elf_check_relocs (bfd *abfd,
|
||||
const Elf_Internal_Rela *rel;
|
||||
const Elf_Internal_Rela *rel_end;
|
||||
bfd_boolean changed = FALSE;
|
||||
|
||||
|
||||
if (info->relocatable)
|
||||
return TRUE;
|
||||
|
||||
|
||||
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
|
||||
sym_hashes = elf_sym_hashes (abfd);
|
||||
|
||||
|
||||
rel_end = relocs + sec->reloc_count;
|
||||
for (rel = relocs; rel < rel_end; rel++)
|
||||
{
|
||||
struct elf_link_hash_entry *h;
|
||||
unsigned long r_symndx;
|
||||
|
||||
|
||||
r_symndx = ELF32_R_SYM (rel->r_info);
|
||||
if (r_symndx < symtab_hdr->sh_info)
|
||||
h = NULL;
|
||||
@ -479,7 +479,7 @@ iq2000_elf_check_relocs (bfd *abfd,
|
||||
|| h->root.type == bfd_link_hash_warning)
|
||||
h = (struct elf_link_hash_entry *) h->root.u.i.link;
|
||||
}
|
||||
|
||||
|
||||
switch (ELF32_R_TYPE (rel->r_info))
|
||||
{
|
||||
/* This relocation describes the C++ object vtable
|
||||
@ -488,7 +488,7 @@ iq2000_elf_check_relocs (bfd *abfd,
|
||||
if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
|
||||
return FALSE;
|
||||
break;
|
||||
|
||||
|
||||
/* This relocation describes which C++ vtable entries
|
||||
are actually used. Record for later use during GC. */
|
||||
case R_IQ2000_GNU_VTENTRY:
|
||||
@ -584,20 +584,20 @@ iq2000_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED,
|
||||
bfd_reloc_status_type r;
|
||||
const char * name = NULL;
|
||||
int r_type;
|
||||
|
||||
|
||||
r_type = ELF32_R_TYPE (rel->r_info);
|
||||
|
||||
|
||||
if ( r_type == R_IQ2000_GNU_VTINHERIT
|
||||
|| r_type == R_IQ2000_GNU_VTENTRY)
|
||||
continue;
|
||||
|
||||
|
||||
r_symndx = ELF32_R_SYM (rel->r_info);
|
||||
|
||||
howto = iq2000_elf_howto_table + ELF32_R_TYPE (rel->r_info);
|
||||
h = NULL;
|
||||
sym = NULL;
|
||||
sec = NULL;
|
||||
|
||||
|
||||
if (r_symndx < symtab_hdr->sh_info)
|
||||
{
|
||||
asection *osec;
|
||||
@ -615,7 +615,7 @@ iq2000_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED,
|
||||
relocation = (sec->output_section->vma
|
||||
+ sec->output_offset
|
||||
+ sym->st_value);
|
||||
|
||||
|
||||
name = bfd_elf_string_from_elf_section
|
||||
(input_bfd, symtab_hdr->sh_link, sym->st_name);
|
||||
name = (name == NULL) ? bfd_section_name (input_bfd, osec) : name;
|
||||
@ -674,12 +674,12 @@ iq2000_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED,
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
msg = _("internal error: out of range error");
|
||||
break;
|
||||
@ -836,7 +836,7 @@ iq2000_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Print out any mismatches from above. */
|
||||
if (new_opt[0])
|
||||
{
|
||||
|
@ -28,9 +28,9 @@
|
||||
/* Forward declarations. */
|
||||
static reloc_howto_type * m32c_reloc_type_lookup
|
||||
(bfd *, bfd_reloc_code_real_type);
|
||||
static void m32c_info_to_howto_rela
|
||||
static void m32c_info_to_howto_rela
|
||||
(bfd *, arelent *, Elf_Internal_Rela *);
|
||||
static bfd_boolean m32c_elf_relocate_section
|
||||
static bfd_boolean m32c_elf_relocate_section
|
||||
(bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, Elf_Internal_Sym *, asection **);
|
||||
static bfd_boolean m32c_elf_check_relocs
|
||||
(bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *);
|
||||
@ -268,7 +268,7 @@ m32c_reloc_type_lookup
|
||||
for (i = ARRAY_SIZE (m32c_reloc_map); --i;)
|
||||
if (m32c_reloc_map [i].bfd_reloc_val == code)
|
||||
return & m32c_elf_howto_table [m32c_reloc_map[i].m32c_reloc_val];
|
||||
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -375,7 +375,7 @@ m32c_elf_relocate_section
|
||||
bfd_reloc_status_type r;
|
||||
const char * name = NULL;
|
||||
int r_type;
|
||||
|
||||
|
||||
r_type = ELF32_R_TYPE (rel->r_info);
|
||||
|
||||
/* These are only used for relaxing; we don't actually relocate
|
||||
@ -384,7 +384,7 @@ m32c_elf_relocate_section
|
||||
|| r_type == R_M32C_RL_1ADDR
|
||||
|| r_type == R_M32C_RL_2ADDR)
|
||||
continue;
|
||||
|
||||
|
||||
r_symndx = ELF32_R_SYM (rel->r_info);
|
||||
|
||||
howto = m32c_elf_howto_table + ELF32_R_TYPE (rel->r_info);
|
||||
@ -400,7 +400,7 @@ m32c_elf_relocate_section
|
||||
relocation = (sec->output_section->vma
|
||||
+ sec->output_offset
|
||||
+ sym->st_value);
|
||||
|
||||
|
||||
name = bfd_elf_string_from_elf_section
|
||||
(input_bfd, symtab_hdr->sh_link, sym->st_name);
|
||||
name = (sym->st_name == 0) ? bfd_section_name (input_bfd, sec) : name;
|
||||
@ -408,13 +408,13 @@ m32c_elf_relocate_section
|
||||
else
|
||||
{
|
||||
h = sym_hashes [r_symndx - symtab_hdr->sh_info];
|
||||
|
||||
|
||||
while (h->root.type == bfd_link_hash_indirect
|
||||
|| h->root.type == bfd_link_hash_warning)
|
||||
h = (struct elf_link_hash_entry *) h->root.u.i.link;
|
||||
|
||||
name = h->root.root.string;
|
||||
|
||||
|
||||
if (h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak)
|
||||
{
|
||||
@ -542,13 +542,13 @@ m32c_elf_relocate_section
|
||||
(info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, rel->r_offset,
|
||||
TRUE);
|
||||
break;
|
||||
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
msg = _("internal error: out of range error");
|
||||
break;
|
||||
@ -580,7 +580,7 @@ m32c_elf_relocate_section
|
||||
|
||||
/* We support 16-bit pointers to code above 64k by generating a thunk
|
||||
below 64k containing a JMP instruction to the final address. */
|
||||
|
||||
|
||||
static bfd_boolean
|
||||
m32c_elf_check_relocs
|
||||
(bfd * abfd,
|
||||
@ -595,10 +595,10 @@ m32c_elf_check_relocs
|
||||
bfd_vma *local_plt_offsets;
|
||||
asection *splt;
|
||||
bfd *dynobj;
|
||||
|
||||
|
||||
if (info->relocatable)
|
||||
return TRUE;
|
||||
|
||||
|
||||
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
|
||||
sym_hashes = elf_sym_hashes (abfd);
|
||||
local_plt_offsets = elf_local_got_offsets (abfd);
|
||||
@ -611,7 +611,7 @@ m32c_elf_check_relocs
|
||||
struct elf_link_hash_entry *h;
|
||||
unsigned long r_symndx;
|
||||
bfd_vma *offset;
|
||||
|
||||
|
||||
r_symndx = ELF32_R_SYM (rel->r_info);
|
||||
if (r_symndx < symtab_hdr->sh_info)
|
||||
h = NULL;
|
||||
@ -622,7 +622,7 @@ m32c_elf_check_relocs
|
||||
|| h->root.type == bfd_link_hash_warning)
|
||||
h = (struct elf_link_hash_entry *) h->root.u.i.link;
|
||||
}
|
||||
|
||||
|
||||
switch (ELF32_R_TYPE (rel->r_info))
|
||||
{
|
||||
/* This relocation describes a 16-bit pointer to a function.
|
||||
@ -676,7 +676,7 @@ m32c_elf_check_relocs
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -799,7 +799,7 @@ m32c_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
|
||||
case EF_M32C_CPU_M32C: strcat (old_opt, " -m32c"); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Print out any mismatches from above. */
|
||||
if (new_opt[0])
|
||||
{
|
||||
@ -902,7 +902,7 @@ dump_symtab (bfd * abfd, void *internal_syms, void *external_syms)
|
||||
external_syms = bfd_malloc (1000);
|
||||
free_external = 1;
|
||||
}
|
||||
|
||||
|
||||
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
|
||||
locsymcount = symtab_hdr->sh_size / get_elf_backend_data(abfd)->s->sizeof_sym;
|
||||
if (free_internal)
|
||||
@ -944,10 +944,10 @@ dump_symtab (bfd * abfd, void *internal_syms, void *external_syms)
|
||||
case SHN_UNDEF: st_shndx_str = "SHN_UNDEF";
|
||||
default: st_shndx_str = "";
|
||||
}
|
||||
|
||||
|
||||
printf ("isym = %p st_value = %lx st_size = %lx st_name = (%lu) %s "
|
||||
"st_info = (%d) %s %s st_other = (%d) %s st_shndx = (%d) %s\n",
|
||||
isym,
|
||||
isym,
|
||||
(unsigned long) isym->st_value,
|
||||
(unsigned long) isym->st_size,
|
||||
isym->st_name,
|
||||
@ -1579,7 +1579,7 @@ m32c_elf_relax_section
|
||||
|
||||
enctbl = m16c_addr_encodings;
|
||||
posn = 2;
|
||||
|
||||
|
||||
/* Check the opcode for jumps. We know it's safe to
|
||||
do this because all 2ADDR insns are at least two
|
||||
bytes long. */
|
||||
@ -1765,7 +1765,7 @@ m32c_elf_relax_section
|
||||
/* Note that we've changed the relocs, section contents, etc. */
|
||||
elf_section_data (sec)->relocs = internal_relocs;
|
||||
free_relocs = NULL;
|
||||
|
||||
|
||||
elf_section_data (sec)->this_hdr.contents = contents;
|
||||
free_contents = NULL;
|
||||
|
||||
|
@ -667,7 +667,7 @@ elf32_m68hc11_build_stubs (bfd *abfd, struct bfd_link_info *info)
|
||||
/* Build the stubs as directed by the stub hash table. */
|
||||
table = htab->stub_hash_table;
|
||||
bfd_hash_traverse (table, m68hc11_elf_export_one_stub, info);
|
||||
|
||||
|
||||
/* Scan the output sections to see if we use the memory banks.
|
||||
If so, export the symbols that define how the memory banks
|
||||
are mapped. This is used by gdb and the simulator to obtain
|
||||
@ -1117,7 +1117,7 @@ elf32_m68hc11_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
"relocation may result in incorrect execution");
|
||||
buf = alloca (strlen (msg) + strlen (name) + 10);
|
||||
sprintf (buf, msg, name);
|
||||
|
||||
|
||||
(* info->callbacks->warning)
|
||||
(info, buf, name, input_bfd, NULL, rel->r_offset);
|
||||
}
|
||||
@ -1443,7 +1443,7 @@ _bfd_m68hc11_elf_print_private_bfd_data (bfd *abfd, void *ptr)
|
||||
else if (elf_elfheader (abfd)->e_flags & EF_M68HCS12_MACH)
|
||||
fprintf (file, _("cpu=HCS12]"));
|
||||
else
|
||||
fprintf (file, _("cpu=HC12]"));
|
||||
fprintf (file, _("cpu=HC12]"));
|
||||
|
||||
if (elf_elfheader (abfd)->e_flags & E_M68HC12_BANKS)
|
||||
fprintf (file, _(" [memory=bank-model]"));
|
||||
@ -1466,7 +1466,7 @@ static void scan_sections_for_abi (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
if (asect->vma >= p->pinfo->bank_virtual)
|
||||
p->use_memory_banks = TRUE;
|
||||
}
|
||||
|
||||
|
||||
/* Tweak the OSABI field of the elf header. */
|
||||
|
||||
void
|
||||
|
@ -808,18 +808,18 @@ msp430_elf_relax_adjust_locals(bfd * abfd, asection * sec, bfd_vma addr,
|
||||
irelend = irel + sec->reloc_count;
|
||||
symtab_hdr = & elf_tdata (abfd)->symtab_hdr;
|
||||
isym = (Elf_Internal_Sym *) symtab_hdr->contents;
|
||||
|
||||
|
||||
for (irel = elf_section_data (sec)->relocs; irel < irelend; irel++)
|
||||
{
|
||||
int sidx = ELF32_R_SYM(irel->r_info);
|
||||
Elf_Internal_Sym *lsym = isym + sidx;
|
||||
|
||||
|
||||
/* Adjust symbols referenced by .sec+0xXX */
|
||||
if (irel->r_addend > addr && irel->r_addend < toaddr
|
||||
if (irel->r_addend > addr && irel->r_addend < toaddr
|
||||
&& lsym->st_shndx == sec_shndx)
|
||||
irel->r_addend -= count;
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -868,7 +868,7 @@ msp430_elf_relax_delete_bytes (bfd * abfd, asection * sec, bfd_vma addr,
|
||||
|
||||
for (p = abfd->sections; p != NULL; p = p->next)
|
||||
msp430_elf_relax_adjust_locals(abfd,p,addr,count,sec_shndx,toaddr);
|
||||
|
||||
|
||||
/* Adjust the local symbols defined in this section. */
|
||||
symtab_hdr = & elf_tdata (abfd)->symtab_hdr;
|
||||
isym = (Elf_Internal_Sym *) symtab_hdr->contents;
|
||||
@ -1013,7 +1013,7 @@ msp430_elf_relax_section (bfd * abfd, asection * sec,
|
||||
|
||||
/* Try to turn a 16bit pc-relative branch into a 10bit pc-relative
|
||||
branch. */
|
||||
/* Paranoia? paranoia... */
|
||||
/* Paranoia? paranoia... */
|
||||
if (ELF32_R_TYPE (irel->r_info) == (int) R_MSP430_RL_PCREL)
|
||||
{
|
||||
bfd_vma value = symval;
|
||||
|
132
bfd/elf32-mt.c
132
bfd/elf32-mt.c
@ -26,7 +26,7 @@
|
||||
#include "elf/mt.h"
|
||||
|
||||
/* Prototypes. */
|
||||
static reloc_howto_type * mt_reloc_type_lookup
|
||||
static reloc_howto_type * mt_reloc_type_lookup
|
||||
(bfd *, bfd_reloc_code_real_type);
|
||||
|
||||
static void mt_info_to_howto_rela
|
||||
@ -36,11 +36,11 @@ static bfd_reloc_status_type mt_elf_relocate_hi16
|
||||
(bfd *, Elf_Internal_Rela *, bfd_byte *, bfd_vma);
|
||||
|
||||
static bfd_reloc_status_type mt_final_link_relocate
|
||||
(reloc_howto_type *, bfd *, asection *, bfd_byte *,
|
||||
(reloc_howto_type *, bfd *, asection *, bfd_byte *,
|
||||
Elf_Internal_Rela *, bfd_vma);
|
||||
|
||||
static bfd_boolean mt_elf_relocate_section
|
||||
(bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
|
||||
(bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
|
||||
Elf_Internal_Rela *, Elf_Internal_Sym *, asection **);
|
||||
|
||||
/* Relocation tables. */
|
||||
@ -48,77 +48,77 @@ static reloc_howto_type mt_elf_howto_table [] =
|
||||
{
|
||||
/* This reloc does nothing. */
|
||||
HOWTO (R_MT_NONE, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
32, /* bitsize */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_MT_NONE", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0 , /* src_mask */
|
||||
0, /* dst_mask */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_MT_NONE", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0 , /* src_mask */
|
||||
0, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* A 16 bit absolute relocation. */
|
||||
HOWTO (R_MT_16, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_MT_16", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0 , /* src_mask */
|
||||
0xffff, /* dst_mask */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_MT_16", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0 , /* src_mask */
|
||||
0xffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* A 32 bit absolute relocation. */
|
||||
HOWTO (R_MT_32, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
32, /* bitsize */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_MT_32", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0 , /* src_mask */
|
||||
0xffffffff, /* dst_mask */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_MT_32", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0 , /* src_mask */
|
||||
0xffffffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* A 32 bit pc-relative relocation. */
|
||||
HOWTO (R_MT_32_PCREL, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
32, /* bitsize */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_MT_32_PCREL", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0 , /* src_mask */
|
||||
0xffffffff, /* dst_mask */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_MT_32_PCREL", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0 , /* src_mask */
|
||||
0xffffffff, /* dst_mask */
|
||||
TRUE), /* pcrel_offset */
|
||||
|
||||
/* A 16 bit pc-relative relocation. */
|
||||
HOWTO (R_MT_PC16, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_MT_PC16", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0xffff, /* dst_mask */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_MT_PC16", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0xffff, /* dst_mask */
|
||||
TRUE), /* pcrel_offset */
|
||||
|
||||
/* high 16 bits of symbol value. */
|
||||
@ -321,7 +321,7 @@ mt_elf_relocate_section
|
||||
bfd_reloc_status_type r;
|
||||
const char * name = NULL;
|
||||
int r_type;
|
||||
|
||||
|
||||
r_type = ELF32_R_TYPE (rel->r_info);
|
||||
|
||||
r_symndx = ELF32_R_SYM (rel->r_info);
|
||||
@ -330,13 +330,13 @@ mt_elf_relocate_section
|
||||
h = NULL;
|
||||
sym = NULL;
|
||||
sec = NULL;
|
||||
|
||||
|
||||
if (r_symndx < symtab_hdr->sh_info)
|
||||
{
|
||||
sym = local_syms + r_symndx;
|
||||
sec = local_sections [r_symndx];
|
||||
relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
|
||||
|
||||
|
||||
name = bfd_elf_string_from_elf_section
|
||||
(input_bfd, symtab_hdr->sh_link, sym->st_name);
|
||||
name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
|
||||
@ -385,12 +385,12 @@ mt_elf_relocate_section
|
||||
(info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
msg = _("internal error: out of range error");
|
||||
break;
|
||||
@ -419,7 +419,7 @@ mt_elf_relocate_section
|
||||
/* Look through the relocs for a section during the first phase.
|
||||
Since we don't do .gots or .plts, we just need to consider the
|
||||
virtual table relocs for gc. */
|
||||
|
||||
|
||||
static bfd_boolean
|
||||
mt_elf_check_relocs
|
||||
(bfd * abfd,
|
||||
@ -431,19 +431,19 @@ mt_elf_check_relocs
|
||||
struct elf_link_hash_entry ** sym_hashes;
|
||||
const Elf_Internal_Rela * rel;
|
||||
const Elf_Internal_Rela * rel_end;
|
||||
|
||||
|
||||
if (info->relocatable)
|
||||
return TRUE;
|
||||
|
||||
|
||||
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
|
||||
sym_hashes = elf_sym_hashes (abfd);
|
||||
|
||||
|
||||
rel_end = relocs + sec->reloc_count;
|
||||
for (rel = relocs; rel < rel_end; rel++)
|
||||
{
|
||||
struct elf_link_hash_entry *h;
|
||||
unsigned long r_symndx;
|
||||
|
||||
|
||||
r_symndx = ELF32_R_SYM (rel->r_info);
|
||||
if (r_symndx < symtab_hdr->sh_info)
|
||||
h = NULL;
|
||||
@ -499,7 +499,7 @@ mt_elf_copy_private_bfd_data (bfd * ibfd, bfd * obfd)
|
||||
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|
||||
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
|
||||
return TRUE;
|
||||
|
||||
|
||||
BFD_ASSERT (!elf_flags_init (obfd)
|
||||
|| elf_elfheader (obfd)->e_flags == elf_elfheader (ibfd)->e_flags);
|
||||
|
||||
@ -551,7 +551,7 @@ mt_elf_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
|
||||
MS2 are not subsets of each other. */
|
||||
ok = FALSE;
|
||||
}
|
||||
|
||||
|
||||
if (ok)
|
||||
{
|
||||
obfd->arch_info = ibfd->arch_info;
|
||||
@ -568,7 +568,7 @@ mt_elf_print_private_bfd_data (bfd * abfd, void * ptr)
|
||||
flagword flags;
|
||||
|
||||
BFD_ASSERT (abfd != NULL && ptr != NULL);
|
||||
|
||||
|
||||
/* Print normal ELF private data. */
|
||||
_bfd_elf_print_private_bfd_data (abfd, ptr);
|
||||
|
||||
|
@ -1415,7 +1415,7 @@ static reloc_howto_type ppc_elf_howto_raw[] = {
|
||||
0, /* src_mask */
|
||||
0xff, /* dst_mask */
|
||||
TRUE), /* pcrel_offset */
|
||||
|
||||
|
||||
/* A relative 15 bit branch. */
|
||||
HOWTO (R_PPC_VLE_REL15, /* type */
|
||||
1, /* rightshift */
|
||||
@ -1431,7 +1431,7 @@ static reloc_howto_type ppc_elf_howto_raw[] = {
|
||||
0xfe, /* dst_mask */
|
||||
TRUE), /* pcrel_offset */
|
||||
|
||||
/* A relative 24 bit branch. */
|
||||
/* A relative 24 bit branch. */
|
||||
HOWTO (R_PPC_VLE_REL24, /* type */
|
||||
1, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
@ -2259,7 +2259,7 @@ ppc_elf_write_core_note (bfd *abfd, char *buf, int *bufsiz, int note_type, ...)
|
||||
}
|
||||
|
||||
static flagword
|
||||
ppc_elf_lookup_section_flags (char *flag_name)
|
||||
ppc_elf_lookup_section_flags (char *flag_name)
|
||||
{
|
||||
|
||||
if (!strcmp (flag_name, "SHF_PPC_VLE"))
|
||||
@ -2353,7 +2353,7 @@ ppc_elf_additional_program_headers (bfd *abfd,
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Modify the segment map for VLE executables. */
|
||||
/* Modify the segment map for VLE executables. */
|
||||
|
||||
bfd_boolean
|
||||
ppc_elf_modify_segment_map (bfd *abfd,
|
||||
@ -3413,7 +3413,7 @@ ppc_elf_copy_indirect_symbol (struct bfd_link_info *info,
|
||||
/* If we were called to copy over info for a weak sym, that's all.
|
||||
You might think dyn_relocs need not be copied over; After all,
|
||||
both syms will be dynamic or both non-dynamic so we're just
|
||||
moving reloc accounting around. However, ELIMINATE_COPY_RELOCS
|
||||
moving reloc accounting around. However, ELIMINATE_COPY_RELOCS
|
||||
code in ppc_elf_adjust_dynamic_symbol needs to check for
|
||||
dyn_relocs in read-only sections, and it does so on what is the
|
||||
DIR sym here. */
|
||||
|
@ -1155,7 +1155,7 @@ rl78_get_reloc (long reloc)
|
||||
|
||||
/* We support 16-bit pointers to code above 64k by generating a thunk
|
||||
below 64k containing a JMP instruction to the final address. */
|
||||
|
||||
|
||||
static bfd_boolean
|
||||
rl78_elf_check_relocs
|
||||
(bfd * abfd,
|
||||
@ -1173,7 +1173,7 @@ rl78_elf_check_relocs
|
||||
|
||||
if (info->relocatable)
|
||||
return TRUE;
|
||||
|
||||
|
||||
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
|
||||
sym_hashes = elf_sym_hashes (abfd);
|
||||
local_plt_offsets = elf_local_got_offsets (abfd);
|
||||
@ -1186,7 +1186,7 @@ rl78_elf_check_relocs
|
||||
struct elf_link_hash_entry *h;
|
||||
unsigned long r_symndx;
|
||||
bfd_vma *offset;
|
||||
|
||||
|
||||
r_symndx = ELF32_R_SYM (rel->r_info);
|
||||
if (r_symndx < symtab_hdr->sh_info)
|
||||
h = NULL;
|
||||
@ -1197,7 +1197,7 @@ rl78_elf_check_relocs
|
||||
|| h->root.type == bfd_link_hash_warning)
|
||||
h = (struct elf_link_hash_entry *) h->root.u.i.link;
|
||||
}
|
||||
|
||||
|
||||
switch (ELF32_R_TYPE (rel->r_info))
|
||||
{
|
||||
/* This relocation describes a 16-bit pointer to a function.
|
||||
@ -1251,7 +1251,7 @@ rl78_elf_check_relocs
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1971,7 +1971,7 @@ struct {
|
||||
{ 0x71, 0x58, 0x53, 0x5b }, /* CLR1 !addr16.0 */
|
||||
{ 0x71, 0x68, 0x63, 0x6b }, /* CLR1 !addr16.0 */
|
||||
{ 0x71, 0x78, 0x73, 0x7b }, /* CLR1 !addr16.0 */
|
||||
|
||||
|
||||
{ -1, -1, -1, -1 }
|
||||
};
|
||||
|
||||
@ -2348,7 +2348,7 @@ rl78_elf_relax_section
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (irel->r_addend & RL78_RELAXA_ADDR16)
|
||||
@ -2414,7 +2414,7 @@ rl78_elf_relax_section
|
||||
insn[poff] = relax_addr16[idx].insn_for_saddr;
|
||||
SNIP (poff+2, 1, R_RL78_RH_SADDR);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -362,7 +362,7 @@ s390_elf_ldisp_reloc (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
reloc_howto_type *howto = reloc_entry->howto;
|
||||
bfd_vma relocation;
|
||||
bfd_vma insn;
|
||||
|
||||
|
||||
if (output_bfd != (bfd *) NULL
|
||||
&& (symbol->flags & BSF_SECTION_SYM) == 0
|
||||
&& (! howto->partial_inplace
|
||||
@ -371,13 +371,13 @@ s390_elf_ldisp_reloc (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
reloc_entry->address += input_section->output_offset;
|
||||
return bfd_reloc_ok;
|
||||
}
|
||||
|
||||
|
||||
if (output_bfd != NULL)
|
||||
return bfd_reloc_continue;
|
||||
|
||||
|
||||
if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
|
||||
return bfd_reloc_outofrange;
|
||||
|
||||
|
||||
relocation = (symbol->value
|
||||
+ symbol->section->output_section->vma
|
||||
+ symbol->section->output_offset);
|
||||
@ -388,11 +388,11 @@ s390_elf_ldisp_reloc (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
+ input_section->output_offset);
|
||||
relocation -= reloc_entry->address;
|
||||
}
|
||||
|
||||
|
||||
insn = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address);
|
||||
insn |= (relocation & 0xfff) << 16 | (relocation & 0xff000) >> 4;
|
||||
bfd_put_32 (abfd, insn, (bfd_byte *) data + reloc_entry->address);
|
||||
|
||||
|
||||
if ((bfd_signed_vma) relocation < - 0x80000
|
||||
|| (bfd_signed_vma) relocation > 0x7ffff)
|
||||
return bfd_reloc_overflow;
|
||||
|
@ -30,10 +30,10 @@ s7_bfd_score_elf_hide_symbol (struct bfd_link_info *,
|
||||
struct elf_link_hash_entry *,
|
||||
bfd_boolean);
|
||||
|
||||
extern void
|
||||
extern void
|
||||
s7_bfd_score_info_to_howto (bfd *, arelent *, Elf_Internal_Rela *);
|
||||
|
||||
extern bfd_boolean
|
||||
extern bfd_boolean
|
||||
s7_bfd_score_elf_relocate_section (bfd *,
|
||||
struct bfd_link_info *,
|
||||
bfd *,
|
||||
|
@ -24,7 +24,7 @@
|
||||
/* Stop elf32-sh.c from defining any target vectors. */
|
||||
#define SH_TARGET_ALREADY_DEFINED
|
||||
#define sh_find_elf_flags sh_symbian_find_elf_flags
|
||||
#define sh_elf_get_flags_from_mach sh_symbian_elf_get_flags_from_mach
|
||||
#define sh_elf_get_flags_from_mach sh_symbian_elf_get_flags_from_mach
|
||||
#include "elf32-sh.c"
|
||||
|
||||
|
||||
@ -129,7 +129,7 @@ sh_symbian_import_as (struct bfd_link_info *info, bfd * abfd,
|
||||
bfd_set_error (bfd_error_invalid_operation);
|
||||
_bfd_error_handler (_("%B: IMPORT AS directive for %s conceals previous IMPORT AS"),
|
||||
abfd, current_name);
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ((node = bfd_malloc (sizeof * node)) == NULL)
|
||||
@ -148,7 +148,7 @@ sh_symbian_import_as (struct bfd_link_info *info, bfd * abfd,
|
||||
}
|
||||
else
|
||||
strcpy (node->current_name, current_name);
|
||||
|
||||
|
||||
if ((node->new_name = bfd_malloc (strlen (new_name) + 1)) == NULL)
|
||||
{
|
||||
if (SYMBIAN_DEBUG)
|
||||
@ -378,7 +378,7 @@ sh_symbian_process_embedded_commands (struct bfd_link_info *info, bfd * abfd,
|
||||
if (SYMBIAN_DEBUG)
|
||||
fprintf (stderr, "offset into .directive section: %ld\n",
|
||||
(long) (directive - (char *) contents));
|
||||
|
||||
|
||||
bfd_set_error (bfd_error_invalid_operation);
|
||||
_bfd_error_handler (_("%B: Unrecognised .directive command: %s"),
|
||||
abfd, directive);
|
||||
@ -409,7 +409,7 @@ sh_symbian_process_directives (bfd *abfd, struct bfd_link_info *info)
|
||||
|
||||
if (!contents)
|
||||
bfd_set_error (bfd_error_no_memory);
|
||||
else
|
||||
else
|
||||
{
|
||||
if (bfd_get_section_contents (abfd, sec, contents, 0, sz))
|
||||
result = sh_symbian_process_embedded_commands (info, abfd, sec, contents);
|
||||
@ -444,9 +444,9 @@ sh_symbian_relocate_section (bfd * output_bfd,
|
||||
symbol_rename * ptr;
|
||||
bfd_size_type num_global_syms;
|
||||
unsigned long num_local_syms;
|
||||
|
||||
|
||||
BFD_ASSERT (! elf_bad_symtab (input_bfd));
|
||||
|
||||
|
||||
symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr;
|
||||
hash_table = elf_hash_table (info);
|
||||
num_local_syms = symtab_hdr->sh_info;
|
||||
@ -469,7 +469,7 @@ sh_symbian_relocate_section (bfd * output_bfd,
|
||||
fprintf (stderr, "IMPORT AS: current symbol '%s' does not exist\n", ptr->current_name);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
new_hash = elf_link_hash_lookup (hash_table, ptr->new_name, FALSE, FALSE, TRUE);
|
||||
|
||||
/* If we could not find the symbol then it is a new, undefined symbol.
|
||||
@ -568,7 +568,7 @@ sh_symbian_relocate_section (bfd * output_bfd,
|
||||
int r_type;
|
||||
unsigned long r_symndx;
|
||||
struct elf_link_hash_entry * h;
|
||||
|
||||
|
||||
r_symndx = ELF32_R_SYM (rel->r_info);
|
||||
r_type = ELF32_R_TYPE (rel->r_info);
|
||||
|
||||
@ -612,7 +612,7 @@ sh_symbian_relocate_section (bfd * output_bfd,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return sh_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
contents, relocs, local_syms, local_sections);
|
||||
}
|
||||
|
@ -4233,7 +4233,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
((*_bfd_error_handler)
|
||||
(_("%B: 0x%lx: fatal: unaligned %s relocation 0x%lx"),
|
||||
input_section->owner,
|
||||
(unsigned long) rel->r_offset, howto->name,
|
||||
(unsigned long) rel->r_offset, howto->name,
|
||||
(unsigned long) relocation));
|
||||
bfd_set_error (bfd_error_bad_value);
|
||||
return FALSE;
|
||||
@ -4248,7 +4248,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
((*_bfd_error_handler)
|
||||
(_("%B: 0x%lx: fatal: unaligned %s relocation 0x%lx"),
|
||||
input_section->owner,
|
||||
(unsigned long) rel->r_offset, howto->name,
|
||||
(unsigned long) rel->r_offset, howto->name,
|
||||
(unsigned long) relocation));
|
||||
bfd_set_error (bfd_error_bad_value);
|
||||
return FALSE;
|
||||
@ -5933,9 +5933,9 @@ sh_elf_copy_indirect_symbol (struct bfd_link_info *info,
|
||||
eind->datalabel_got.refcount = 0;
|
||||
#endif
|
||||
edir->funcdesc.refcount += eind->funcdesc.refcount;
|
||||
eind->funcdesc.refcount = 0;
|
||||
eind->funcdesc.refcount = 0;
|
||||
edir->abs_funcdesc_refcount += eind->abs_funcdesc_refcount;
|
||||
eind->abs_funcdesc_refcount = 0;
|
||||
eind->abs_funcdesc_refcount = 0;
|
||||
|
||||
if (ind->root.type == bfd_link_hash_indirect
|
||||
&& dir->got.refcount <= 0)
|
||||
@ -6555,7 +6555,7 @@ sh_elf_set_mach_from_flags (bfd *abfd)
|
||||
|
||||
if (sh_ef_bfd_table[flags] == 0)
|
||||
return FALSE;
|
||||
|
||||
|
||||
bfd_default_set_arch_mach (abfd, bfd_arch_sh, sh_ef_bfd_table[flags]);
|
||||
|
||||
return TRUE;
|
||||
@ -6571,11 +6571,11 @@ int
|
||||
sh_elf_get_flags_from_mach (unsigned long mach)
|
||||
{
|
||||
int i = ARRAY_SIZE (sh_ef_bfd_table) - 1;
|
||||
|
||||
|
||||
for (; i>0; i--)
|
||||
if (sh_ef_bfd_table[i] == mach)
|
||||
return i;
|
||||
|
||||
|
||||
/* shouldn't get here */
|
||||
BFD_FAIL();
|
||||
|
||||
@ -7245,7 +7245,7 @@ sh_elf_finish_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
|
||||
|
||||
if (sgotplt && sgotplt->size > 0)
|
||||
elf_section_data (sgotplt->output_section)->this_hdr.sh_entsize = 4;
|
||||
|
||||
|
||||
/* At the very end of the .rofixup section is a pointer to the GOT. */
|
||||
if (htab->fdpic_p && htab->srofixup != NULL)
|
||||
{
|
||||
@ -7351,7 +7351,7 @@ elf32_shlin_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
|
||||
}
|
||||
#endif /* not SH_TARGET_ALREADY_DEFINED */
|
||||
|
||||
|
||||
|
||||
/* Return address for Ith PLT stub in section PLT, for relocation REL
|
||||
or (bfd_vma) -1 if it should not be included. */
|
||||
|
||||
|
@ -1486,7 +1486,7 @@ allocate_spuear_stubs (struct elf_link_hash_entry *h, void *inf)
|
||||
{
|
||||
return count_stub (htab, NULL, NULL, nonovl_stub, h, NULL);
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1512,7 +1512,7 @@ build_spuear_stubs (struct elf_link_hash_entry *h, void *inf)
|
||||
return build_stub (info, NULL, NULL, nonovl_stub, h, NULL,
|
||||
h->root.u.def.value, sym_sec);
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -2949,7 +2949,7 @@ discover_functions (struct bfd_link_info *info)
|
||||
sec_arr = bfd_zmalloc (bfd_idx * sizeof (*sec_arr));
|
||||
if (sec_arr == NULL)
|
||||
return FALSE;
|
||||
|
||||
|
||||
for (ibfd = info->input_bfds, bfd_idx = 0;
|
||||
ibfd != NULL;
|
||||
ibfd = ibfd->link_next, bfd_idx++)
|
||||
@ -2982,7 +2982,7 @@ discover_functions (struct bfd_link_info *info)
|
||||
if (symtab_hdr->contents != NULL)
|
||||
{
|
||||
/* Don't use cached symbols since the generic ELF linker
|
||||
code only reads local symbols, and we need globals too. */
|
||||
code only reads local symbols, and we need globals too. */
|
||||
free (symtab_hdr->contents);
|
||||
symtab_hdr->contents = NULL;
|
||||
}
|
||||
@ -4081,7 +4081,7 @@ print_one_overlay_section (FILE *script,
|
||||
struct bfd_link_info *info)
|
||||
{
|
||||
unsigned int j;
|
||||
|
||||
|
||||
for (j = base; j < count && ovly_map[j] == ovlynum; j++)
|
||||
{
|
||||
asection *sec = ovly_sections[2 * j];
|
||||
@ -4909,8 +4909,8 @@ spu_elf_relocate_section (bfd *output_bfd,
|
||||
&& !(h->def_regular || ELF_COMMON_DEF_P (h)))
|
||||
{
|
||||
bfd_byte *loc = contents + rel->r_offset;
|
||||
loc[0] = 0x1c;
|
||||
loc[1] = 0x00;
|
||||
loc[0] = 0x1c;
|
||||
loc[1] = 0x00;
|
||||
loc[2] &= 0x3f;
|
||||
}
|
||||
|
||||
|
@ -1787,7 +1787,7 @@ elf32_tic6x_finish_dynamic_symbol (bfd * output_bfd,
|
||||
Get the offset into the .got table of the entry that
|
||||
corresponds to this function. Each .got entry is 4 bytes.
|
||||
The first three are reserved.
|
||||
|
||||
|
||||
For static executables, we don't reserve anything. */
|
||||
|
||||
plt_index = h->plt.offset / PLT_ENTRY_SIZE - 1;
|
||||
@ -3965,11 +3965,11 @@ elf32_tic6x_add_unwind_table_edit (tic6x_unwind_table_edit **head,
|
||||
{
|
||||
tic6x_unwind_table_edit *new_edit = (tic6x_unwind_table_edit *)
|
||||
xmalloc (sizeof (tic6x_unwind_table_edit));
|
||||
|
||||
|
||||
new_edit->type = type;
|
||||
new_edit->linked_section = linked_section;
|
||||
new_edit->index = tindex;
|
||||
|
||||
|
||||
if (tindex > 0)
|
||||
{
|
||||
new_edit->next = NULL;
|
||||
@ -4035,7 +4035,7 @@ elf32_tic6x_insert_cantunwind_after (asection *text_sec, asection *exidx_sec)
|
||||
|
||||
/* Scan .cx6abi.exidx tables, and create a list describing edits which
|
||||
should be made to those tables, such that:
|
||||
|
||||
|
||||
1. Regions without unwind data are marked with EXIDX_CANTUNWIND entries.
|
||||
2. Duplicate entries are merged together (EXIDX_CANTUNWIND, or unwind
|
||||
codes which have been inlined into the index).
|
||||
@ -4063,15 +4063,15 @@ elf32_tic6x_fix_exidx_coverage (asection **text_section_order,
|
||||
for (inp = info->input_bfds; inp != NULL; inp = inp->link_next)
|
||||
{
|
||||
asection *sec;
|
||||
|
||||
|
||||
for (sec = inp->sections; sec != NULL; sec = sec->next)
|
||||
{
|
||||
struct bfd_elf_section_data *elf_sec = elf_section_data (sec);
|
||||
Elf_Internal_Shdr *hdr = &elf_sec->this_hdr;
|
||||
|
||||
|
||||
if (!hdr || hdr->sh_type != SHT_C6000_UNWIND)
|
||||
continue;
|
||||
|
||||
|
||||
if (elf_sec->linked_to)
|
||||
{
|
||||
Elf_Internal_Shdr *linked_hdr
|
||||
@ -4134,13 +4134,13 @@ elf32_tic6x_fix_exidx_coverage (asection **text_section_order,
|
||||
hdr = &elf_section_data (exidx_sec)->this_hdr;
|
||||
if (hdr->sh_type != SHT_C6000_UNWIND)
|
||||
continue;
|
||||
|
||||
|
||||
exidx_data = get_tic6x_elf_section_data (exidx_sec);
|
||||
if (exidx_data == NULL)
|
||||
continue;
|
||||
|
||||
|
||||
ibfd = exidx_sec->owner;
|
||||
|
||||
|
||||
if (hdr->contents != NULL)
|
||||
contents = hdr->contents;
|
||||
else if (! bfd_malloc_and_get_section (ibfd, exidx_sec, &contents))
|
||||
@ -4193,7 +4193,7 @@ elf32_tic6x_fix_exidx_coverage (asection **text_section_order,
|
||||
/* Record edits to be applied later (in elf32_tic6x_write_section). */
|
||||
exidx_data->u.exidx.unwind_edit_list = unwind_edit_head;
|
||||
exidx_data->u.exidx.unwind_edit_tail = unwind_edit_tail;
|
||||
|
||||
|
||||
if (deleted_exidx_bytes > 0)
|
||||
elf32_tic6x_adjust_exidx_size (exidx_sec, -deleted_exidx_bytes);
|
||||
|
||||
@ -4231,12 +4231,12 @@ elf32_tic6x_copy_exidx_entry (bfd *output_bfd, bfd_byte *to, bfd_byte *from,
|
||||
/* High bit of first word is supposed to be zero. */
|
||||
if ((first_word & 0x80000000ul) == 0)
|
||||
first_word = elf32_tic6x_add_low31 (first_word, offset);
|
||||
|
||||
|
||||
/* If the high bit of the first word is clear, and the bit pattern is not 0x1
|
||||
(EXIDX_CANTUNWIND), this is an offset to an .c6xabi.extab entry. */
|
||||
if ((second_word != 0x1) && ((second_word & 0x80000000ul) == 0))
|
||||
second_word = elf32_tic6x_add_low31 (second_word, offset);
|
||||
|
||||
|
||||
bfd_put_32 (output_bfd, first_word, to);
|
||||
bfd_put_32 (output_bfd, second_word, to + 4);
|
||||
}
|
||||
@ -4282,7 +4282,7 @@ elf32_tic6x_write_section (bfd *output_bfd,
|
||||
if (edit_node)
|
||||
{
|
||||
unsigned int edit_index = edit_node->index;
|
||||
|
||||
|
||||
if (in_index < edit_index && in_index * 8 < input_size)
|
||||
{
|
||||
elf32_tic6x_copy_exidx_entry (output_bfd,
|
||||
@ -4301,7 +4301,7 @@ elf32_tic6x_write_section (bfd *output_bfd,
|
||||
in_index++;
|
||||
add_to_offsets += 8;
|
||||
break;
|
||||
|
||||
|
||||
case INSERT_EXIDX_CANTUNWIND_AT_END:
|
||||
{
|
||||
asection *text_sec = edit_node->linked_section;
|
||||
@ -4331,7 +4331,7 @@ elf32_tic6x_write_section (bfd *output_bfd,
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
edit_node = edit_node->next;
|
||||
}
|
||||
}
|
||||
|
@ -2531,7 +2531,7 @@ v850_elf_print_private_bfd_data (bfd *abfd, void * ptr)
|
||||
if (bfd_get_arch (abfd) == bfd_arch_v850_rh850)
|
||||
{
|
||||
if ((elf_elfheader (abfd)->e_flags & EF_RH850_ABI) != EF_RH850_ABI)
|
||||
fprintf (file, _("unknown v850 architecture"));
|
||||
fprintf (file, _("unknown v850 architecture"));
|
||||
else if (elf_elfheader (abfd)->e_flags & EF_V800_850E3)
|
||||
fprintf (file, _("v850 E3 architecture"));
|
||||
else
|
||||
@ -3244,7 +3244,7 @@ v850_elf_relax_section (bfd *abfd,
|
||||
/* Get the reloc for the address from which the register is
|
||||
being loaded. This reloc will tell us which function is
|
||||
actually being called. */
|
||||
|
||||
|
||||
for (hi_irelfn = internal_relocs; hi_irelfn < irelend; hi_irelfn ++)
|
||||
{
|
||||
r_type = ELF32_R_TYPE (hi_irelfn->r_info);
|
||||
@ -3873,7 +3873,7 @@ v800_elf_info_to_howto (bfd * abfd,
|
||||
r_type -= R_V810_NONE;
|
||||
BFD_ASSERT (r_type < ARRAY_SIZE (v800_elf_howto_table));
|
||||
|
||||
cache_ptr->howto = v800_elf_howto_table + r_type;
|
||||
cache_ptr->howto = v800_elf_howto_table + r_type;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Infineon XC16X-specific support for 16-bit ELF.
|
||||
Copyright 2006, 2007, 2009, 2010, 2012 Free Software Foundation, Inc.
|
||||
Contributed by KPIT Cummins Infosystems
|
||||
Contributed by KPIT Cummins Infosystems
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
|
||||
@ -433,11 +433,11 @@ elf32_xc16x_final_write_processing (bfd *abfd,
|
||||
|
||||
static unsigned long
|
||||
elf32_xc16x_mach (flagword flags)
|
||||
{
|
||||
{
|
||||
switch (flags)
|
||||
{
|
||||
case 0x1000:
|
||||
default:
|
||||
default:
|
||||
return bfd_mach_xc16x;
|
||||
|
||||
case 0x1001:
|
||||
|
@ -752,7 +752,7 @@ property_table_compare (const void *ap, const void *bp)
|
||||
!= GET_XTENSA_PROP_ALIGNMENT (b->flags)))
|
||||
return (GET_XTENSA_PROP_ALIGNMENT (a->flags)
|
||||
- GET_XTENSA_PROP_ALIGNMENT (b->flags));
|
||||
|
||||
|
||||
if ((a->flags & XTENSA_PROP_UNREACHABLE)
|
||||
!= (b->flags & XTENSA_PROP_UNREACHABLE))
|
||||
return ((b->flags & XTENSA_PROP_UNREACHABLE)
|
||||
@ -814,7 +814,7 @@ xtensa_read_table_entries (bfd *abfd,
|
||||
if (table_section)
|
||||
table_size = table_section->size;
|
||||
|
||||
if (table_size == 0)
|
||||
if (table_size == 0)
|
||||
{
|
||||
*table_p = NULL;
|
||||
return 0;
|
||||
@ -849,7 +849,7 @@ xtensa_read_table_entries (bfd *abfd,
|
||||
section_limit = bfd_get_section_limit (abfd, section);
|
||||
rel_end = internal_relocs + table_section->reloc_count;
|
||||
|
||||
for (off = 0; off < table_size; off += table_entry_size)
|
||||
for (off = 0; off < table_size; off += table_entry_size)
|
||||
{
|
||||
bfd_vma address = bfd_get_32 (abfd, table_data + off);
|
||||
|
||||
@ -1969,7 +1969,7 @@ elf_xtensa_do_reloc (reloc_howto_type *howto,
|
||||
if (is_windowed_call_opcode (opcode))
|
||||
{
|
||||
if ((self_address >> CALL_SEGMENT_BITS)
|
||||
!= (relocation >> CALL_SEGMENT_BITS))
|
||||
!= (relocation >> CALL_SEGMENT_BITS))
|
||||
{
|
||||
*error_message = "windowed longcall crosses 1GB boundary; "
|
||||
"return may fail";
|
||||
@ -2142,7 +2142,7 @@ elf_xtensa_do_reloc (reloc_howto_type *howto,
|
||||
&& is_windowed_call_opcode (opcode))
|
||||
{
|
||||
if ((self_address >> CALL_SEGMENT_BITS)
|
||||
!= (relocation >> CALL_SEGMENT_BITS))
|
||||
!= (relocation >> CALL_SEGMENT_BITS))
|
||||
{
|
||||
*error_message =
|
||||
"windowed call crosses 1GB boundary; return may fail";
|
||||
@ -2170,8 +2170,8 @@ vsprint_msg (const char *origmsg, const char *fmt, int arglen, ...)
|
||||
|
||||
VA_OPEN (ap, arglen);
|
||||
VA_FIXEDARG (ap, const char *, origmsg);
|
||||
|
||||
is_append = (origmsg == message);
|
||||
|
||||
is_append = (origmsg == message);
|
||||
|
||||
orig_len = strlen (origmsg);
|
||||
len = orig_len + strlen (fmt) + arglen + 20;
|
||||
@ -3502,10 +3502,10 @@ elf_xtensa_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if ((out_flag & EF_XTENSA_XT_INSN) != (in_flag & EF_XTENSA_XT_INSN))
|
||||
if ((out_flag & EF_XTENSA_XT_INSN) != (in_flag & EF_XTENSA_XT_INSN))
|
||||
elf_elfheader (obfd)->e_flags &= (~ EF_XTENSA_XT_INSN);
|
||||
|
||||
if ((out_flag & EF_XTENSA_XT_LIT) != (in_flag & EF_XTENSA_XT_LIT))
|
||||
if ((out_flag & EF_XTENSA_XT_LIT) != (in_flag & EF_XTENSA_XT_LIT))
|
||||
elf_elfheader (obfd)->e_flags &= (~ EF_XTENSA_XT_LIT);
|
||||
|
||||
return TRUE;
|
||||
@ -4096,7 +4096,7 @@ get_asm_simplify_size (bfd_byte *contents,
|
||||
return 0;
|
||||
|
||||
size += insnlen;
|
||||
|
||||
|
||||
insnlen = insn_decode_len (contents, content_len, offset + size);
|
||||
if (insnlen == 0)
|
||||
return 0;
|
||||
@ -4135,7 +4135,7 @@ is_operand_relocation (int r_type)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#define MIN_INSN_LENGTH 2
|
||||
|
||||
/* Return 0 if it fails to decode. */
|
||||
@ -4236,7 +4236,7 @@ check_loop_aligned (bfd_byte *contents,
|
||||
BFD_ASSERT (FALSE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
loop_len = insn_decode_len (contents, content_length, offset);
|
||||
insn_len = insn_decode_len (contents, content_length, offset + loop_len);
|
||||
if (loop_len == 0 || insn_len == 0)
|
||||
@ -4628,7 +4628,7 @@ can_widen_instruction (xtensa_insnbuf slotbuf,
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Attempt to widen an instruction. If the widening is valid, perform
|
||||
the action in-place directly into the contents and return TRUE. Otherwise,
|
||||
the return value is FALSE and the contents are not modified. */
|
||||
@ -4723,12 +4723,12 @@ elf_xtensa_do_asm_simplify (bfd_byte *contents,
|
||||
*error_message = _("Attempt to convert L32R/CALLX to CALL failed");
|
||||
return bfd_reloc_other;
|
||||
}
|
||||
|
||||
|
||||
/* Assemble a NOP ("or a1, a1, a1") into the 0 byte offset. */
|
||||
core_format = xtensa_format_lookup (isa, "x24");
|
||||
opcode = xtensa_opcode_lookup (isa, "or");
|
||||
xtensa_opcode_encode (isa, core_format, 0, slotbuf, opcode);
|
||||
for (opn = 0; opn < 3; opn++)
|
||||
for (opn = 0; opn < 3; opn++)
|
||||
{
|
||||
uint32 regno = 1;
|
||||
xtensa_operand_encode (isa, opcode, opn, ®no);
|
||||
@ -4796,7 +4796,7 @@ swap_callx_for_call_opcode (xtensa_opcode opcode)
|
||||
#define CONST16_TARGET_REG_OPERAND 0
|
||||
#define CALLN_SOURCE_OPERAND 0
|
||||
|
||||
static xtensa_opcode
|
||||
static xtensa_opcode
|
||||
get_expanded_call_opcode (bfd_byte *buf, int bufsize, bfd_boolean *p_uses_l32r)
|
||||
{
|
||||
static xtensa_insnbuf insnbuf = NULL;
|
||||
@ -4872,7 +4872,7 @@ get_expanded_call_opcode (bfd_byte *buf, int bufsize, bfd_boolean *p_uses_l32r)
|
||||
|| xtensa_format_get_slot (isa, fmt, 0, insnbuf, slotbuf))
|
||||
return XTENSA_UNDEFINED;
|
||||
opcode = xtensa_opcode_decode (isa, fmt, 0, slotbuf);
|
||||
if (opcode == XTENSA_UNDEFINED
|
||||
if (opcode == XTENSA_UNDEFINED
|
||||
|| !is_indirect_call_opcode (opcode))
|
||||
return XTENSA_UNDEFINED;
|
||||
|
||||
@ -4903,7 +4903,7 @@ get_expanded_call_opcode (bfd_byte *buf, int bufsize, bfd_boolean *p_uses_l32r)
|
||||
For efficiency, an r_reloc also contains a "target_offset" field to
|
||||
cache the target-section-relative offset value that is represented by
|
||||
the relocation.
|
||||
|
||||
|
||||
The r_reloc also contains a virtual offset that allows multiple
|
||||
inserted literals to be placed at the same "address" with
|
||||
different offsets. */
|
||||
@ -5030,7 +5030,7 @@ print_r_reloc (FILE *fp, const r_reloc *r_rel)
|
||||
fprintf (fp, " + ");
|
||||
fprintf_vma (fp, r_rel->virtual_offset);
|
||||
}
|
||||
|
||||
|
||||
fprintf (fp, ")");
|
||||
}
|
||||
|
||||
@ -5150,7 +5150,7 @@ typedef struct value_map_hash_table_struct value_map_hash_table;
|
||||
|
||||
struct literal_value_struct
|
||||
{
|
||||
r_reloc r_rel;
|
||||
r_reloc r_rel;
|
||||
unsigned long value;
|
||||
bfd_boolean is_abs_literal;
|
||||
};
|
||||
@ -5191,7 +5191,7 @@ literal_value_equal (const literal_value *src1,
|
||||
{
|
||||
struct elf_link_hash_entry *h1, *h2;
|
||||
|
||||
if (r_reloc_is_const (&src1->r_rel) != r_reloc_is_const (&src2->r_rel))
|
||||
if (r_reloc_is_const (&src1->r_rel) != r_reloc_is_const (&src2->r_rel))
|
||||
return FALSE;
|
||||
|
||||
if (r_reloc_is_const (&src1->r_rel))
|
||||
@ -5203,13 +5203,13 @@ literal_value_equal (const literal_value *src1,
|
||||
|
||||
if (src1->r_rel.target_offset != src2->r_rel.target_offset)
|
||||
return FALSE;
|
||||
|
||||
|
||||
if (src1->r_rel.virtual_offset != src2->r_rel.virtual_offset)
|
||||
return FALSE;
|
||||
|
||||
if (src1->value != src2->value)
|
||||
return FALSE;
|
||||
|
||||
|
||||
/* Now check for the same section (if defined) or the same elf_hash
|
||||
(if undefined or weak). */
|
||||
h1 = r_reloc_get_hash_entry (&src1->r_rel);
|
||||
@ -5251,7 +5251,7 @@ value_map_hash_table_init (void)
|
||||
values->count = 0;
|
||||
values->buckets = (value_map **)
|
||||
bfd_zmalloc (sizeof (value_map *) * values->bucket_count);
|
||||
if (values->buckets == NULL)
|
||||
if (values->buckets == NULL)
|
||||
{
|
||||
free (values);
|
||||
return NULL;
|
||||
@ -5290,7 +5290,7 @@ literal_value_hash (const literal_value *src)
|
||||
hash_val += hash_bfd_vma (src->is_abs_literal * 1000);
|
||||
hash_val += hash_bfd_vma (src->r_rel.target_offset);
|
||||
hash_val += hash_bfd_vma (src->r_rel.virtual_offset);
|
||||
|
||||
|
||||
/* Now check for the same section and the same elf_hash. */
|
||||
if (r_reloc_is_defined (&src->r_rel))
|
||||
sec_or_hash = r_reloc_get_section (&src->r_rel);
|
||||
@ -5356,7 +5356,7 @@ add_value_map (value_map_hash_table *map,
|
||||
*bucket_p = val_e;
|
||||
map->count++;
|
||||
/* FIXME: Consider resizing the hash table if we get too many entries. */
|
||||
|
||||
|
||||
return val_e;
|
||||
}
|
||||
|
||||
@ -5496,7 +5496,7 @@ adjust_fill_action (text_action *ta, int fill_diff)
|
||||
"unreachable_space" bytes can be freely contracted. Note that a
|
||||
negative removed value is a fill. */
|
||||
|
||||
static void
|
||||
static void
|
||||
text_action_add (text_action_list *l,
|
||||
text_action_t action,
|
||||
asection *sec,
|
||||
@ -5517,8 +5517,8 @@ text_action_add (text_action_list *l,
|
||||
for (m_p = &l->head; *m_p && (*m_p)->offset <= offset; m_p = &(*m_p)->next)
|
||||
{
|
||||
text_action *t = *m_p;
|
||||
|
||||
if (action == ta_fill)
|
||||
|
||||
if (action == ta_fill)
|
||||
{
|
||||
/* When the action is another fill at the same address,
|
||||
just increase the size. */
|
||||
@ -5615,7 +5615,7 @@ removed_by_actions (text_action **p_start_action,
|
||||
}
|
||||
|
||||
|
||||
static bfd_vma
|
||||
static bfd_vma
|
||||
offset_with_removed_text (text_action_list *action_list, bfd_vma offset)
|
||||
{
|
||||
text_action *r = action_list->head;
|
||||
@ -5753,9 +5753,9 @@ add_removed_literal (removed_literal_list *removed_list,
|
||||
else
|
||||
new_r->to.abfd = NULL;
|
||||
new_r->next = NULL;
|
||||
|
||||
|
||||
r = removed_list->head;
|
||||
if (r == NULL)
|
||||
if (r == NULL)
|
||||
{
|
||||
removed_list->head = new_r;
|
||||
removed_list->tail = new_r;
|
||||
@ -5768,7 +5768,7 @@ add_removed_literal (removed_literal_list *removed_list,
|
||||
}
|
||||
else
|
||||
{
|
||||
while (r->from.target_offset < from->target_offset && r->next)
|
||||
while (r->from.target_offset < from->target_offset && r->next)
|
||||
{
|
||||
r = r->next;
|
||||
}
|
||||
@ -5846,7 +5846,7 @@ struct xtensa_relax_info_struct
|
||||
reallocated, the newly allocated relocations will be referenced
|
||||
here along with the actual size allocated. The relocation
|
||||
count will always be found in the section structure. */
|
||||
Elf_Internal_Rela *allocated_relocs;
|
||||
Elf_Internal_Rela *allocated_relocs;
|
||||
unsigned relocs_count;
|
||||
unsigned allocated_relocs_count;
|
||||
};
|
||||
@ -5912,7 +5912,7 @@ init_xtensa_relax_info (asection *sec)
|
||||
relax_info->fix_array = NULL;
|
||||
relax_info->fix_array_count = 0;
|
||||
|
||||
relax_info->allocated_relocs = NULL;
|
||||
relax_info->allocated_relocs = NULL;
|
||||
relax_info->relocs_count = 0;
|
||||
relax_info->allocated_relocs_count = 0;
|
||||
}
|
||||
@ -5932,11 +5932,11 @@ struct reloc_bfd_fix_struct
|
||||
asection *src_sec;
|
||||
bfd_vma src_offset;
|
||||
unsigned src_type; /* Relocation type. */
|
||||
|
||||
|
||||
asection *target_sec;
|
||||
bfd_vma target_offset;
|
||||
bfd_boolean translated;
|
||||
|
||||
|
||||
reloc_bfd_fix *next;
|
||||
};
|
||||
|
||||
@ -6547,7 +6547,7 @@ retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory)
|
||||
|
||||
sec_size = bfd_get_section_limit (abfd, sec);
|
||||
contents = elf_section_data (sec)->this_hdr.contents;
|
||||
|
||||
|
||||
if (contents == NULL && sec_size != 0)
|
||||
{
|
||||
if (!bfd_malloc_and_get_section (abfd, sec, &contents))
|
||||
@ -6556,7 +6556,7 @@ retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory)
|
||||
free (contents);
|
||||
return NULL;
|
||||
}
|
||||
if (keep_memory)
|
||||
if (keep_memory)
|
||||
elf_section_data (sec)->this_hdr.contents = contents;
|
||||
}
|
||||
return contents;
|
||||
@ -6631,12 +6631,12 @@ static bfd_boolean compute_removed_literals
|
||||
(bfd *, asection *, struct bfd_link_info *, value_map_hash_table *);
|
||||
static Elf_Internal_Rela *get_irel_at_offset
|
||||
(asection *, Elf_Internal_Rela *, bfd_vma);
|
||||
static bfd_boolean is_removable_literal
|
||||
static bfd_boolean is_removable_literal
|
||||
(const source_reloc *, int, const source_reloc *, int, asection *,
|
||||
property_table_entry *, int);
|
||||
static bfd_boolean remove_dead_literal
|
||||
(bfd *, asection *, struct bfd_link_info *, Elf_Internal_Rela *,
|
||||
Elf_Internal_Rela *, source_reloc *, property_table_entry *, int);
|
||||
Elf_Internal_Rela *, source_reloc *, property_table_entry *, int);
|
||||
static bfd_boolean identify_literal_placement
|
||||
(bfd *, asection *, bfd_byte *, struct bfd_link_info *,
|
||||
value_map_hash_table *, bfd_boolean *, Elf_Internal_Rela *, int,
|
||||
@ -6666,7 +6666,7 @@ static bfd_boolean relax_property_section
|
||||
static bfd_boolean relax_section_symbols (bfd *, asection *);
|
||||
|
||||
|
||||
static bfd_boolean
|
||||
static bfd_boolean
|
||||
elf_xtensa_relax_section (bfd *abfd,
|
||||
asection *sec,
|
||||
struct bfd_link_info *link_info,
|
||||
@ -6829,7 +6829,7 @@ find_relaxable_sections (bfd *abfd,
|
||||
|
||||
internal_relocs = retrieve_internal_relocs (abfd, sec,
|
||||
link_info->keep_memory);
|
||||
if (internal_relocs == NULL)
|
||||
if (internal_relocs == NULL)
|
||||
return ok;
|
||||
|
||||
contents = retrieve_contents (abfd, sec, link_info->keep_memory);
|
||||
@ -6840,7 +6840,7 @@ find_relaxable_sections (bfd *abfd,
|
||||
}
|
||||
|
||||
source_relax_info = get_xtensa_relax_info (sec);
|
||||
for (i = 0; i < sec->reloc_count; i++)
|
||||
for (i = 0; i < sec->reloc_count; i++)
|
||||
{
|
||||
Elf_Internal_Rela *irel = &internal_relocs[i];
|
||||
r_reloc r_rel;
|
||||
@ -6920,9 +6920,9 @@ collect_source_relocs (bfd *abfd,
|
||||
unsigned i;
|
||||
bfd_size_type sec_size;
|
||||
|
||||
internal_relocs = retrieve_internal_relocs (abfd, sec,
|
||||
internal_relocs = retrieve_internal_relocs (abfd, sec,
|
||||
link_info->keep_memory);
|
||||
if (internal_relocs == NULL)
|
||||
if (internal_relocs == NULL)
|
||||
return ok;
|
||||
|
||||
sec_size = bfd_get_section_limit (abfd, sec);
|
||||
@ -6934,7 +6934,7 @@ collect_source_relocs (bfd *abfd,
|
||||
}
|
||||
|
||||
/* Record relocations against relaxable literal sections. */
|
||||
for (i = 0; i < sec->reloc_count; i++)
|
||||
for (i = 0; i < sec->reloc_count; i++)
|
||||
{
|
||||
Elf_Internal_Rela *irel = &internal_relocs[i];
|
||||
r_reloc r_rel;
|
||||
@ -6992,7 +6992,7 @@ collect_source_relocs (bfd *abfd,
|
||||
relocations associated with ASM_EXPANDs because they were just
|
||||
added in the preceding loop over the relocations. */
|
||||
|
||||
for (i = 0; i < sec->reloc_count; i++)
|
||||
for (i = 0; i < sec->reloc_count; i++)
|
||||
{
|
||||
Elf_Internal_Rela *irel = &internal_relocs[i];
|
||||
bfd_boolean is_reachable;
|
||||
@ -7031,7 +7031,7 @@ collect_source_relocs (bfd *abfd,
|
||||
the l32r_irel. Note: The src_relocs array is not yet
|
||||
sorted, but it wouldn't matter anyway because we're
|
||||
searching by source offset instead of target offset. */
|
||||
s_reloc = find_source_reloc (target_relax_info->src_relocs,
|
||||
s_reloc = find_source_reloc (target_relax_info->src_relocs,
|
||||
target_relax_info->src_next,
|
||||
sec, l32r_irel);
|
||||
BFD_ASSERT (s_reloc);
|
||||
@ -7090,7 +7090,7 @@ is_resolvable_asm_expansion (bfd *abfd,
|
||||
if (contents == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (ELF32_R_TYPE (irel->r_info) != R_XTENSA_ASM_EXPAND)
|
||||
if (ELF32_R_TYPE (irel->r_info) != R_XTENSA_ASM_EXPAND)
|
||||
return FALSE;
|
||||
|
||||
sec_size = bfd_get_section_limit (abfd, sec);
|
||||
@ -7099,7 +7099,7 @@ is_resolvable_asm_expansion (bfd *abfd,
|
||||
/* Optimization of longcalls that use CONST16 is not yet implemented. */
|
||||
if (!uses_l32r)
|
||||
return FALSE;
|
||||
|
||||
|
||||
direct_call_opcode = swap_callx_for_call_opcode (opcode);
|
||||
if (direct_call_opcode == XTENSA_UNDEFINED)
|
||||
return FALSE;
|
||||
@ -7118,7 +7118,7 @@ is_resolvable_asm_expansion (bfd *abfd,
|
||||
shouldn't crash regardless. */
|
||||
if (!target_sec->output_section)
|
||||
return FALSE;
|
||||
|
||||
|
||||
/* For relocatable sections, we can only simplify when the output
|
||||
section of the target is the same as the output section of the
|
||||
source. */
|
||||
@ -7131,7 +7131,7 @@ is_resolvable_asm_expansion (bfd *abfd,
|
||||
+ sec->output_offset + irel->r_offset + 3);
|
||||
dest_address = (target_sec->output_section->vma
|
||||
+ target_sec->output_offset + target_offset);
|
||||
|
||||
|
||||
*is_reachable_p = pcrel_reloc_fits (direct_call_opcode, 0,
|
||||
self_address, dest_address);
|
||||
|
||||
@ -7152,7 +7152,7 @@ find_associated_l32r_irel (bfd *abfd,
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; i < sec->reloc_count; i++)
|
||||
for (i = 0; i < sec->reloc_count; i++)
|
||||
{
|
||||
Elf_Internal_Rela *irel = &internal_relocs[i];
|
||||
|
||||
@ -7369,7 +7369,7 @@ prev_instr_is_a_loop (bfd_byte *contents,
|
||||
return FALSE;
|
||||
prev_opcode = insn_decode_opcode (contents, content_length, offset-3, 0);
|
||||
return (xtensa_opcode_is_loop (xtensa_default_isa, prev_opcode) == 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Find all of the possible actions for an extended basic block. */
|
||||
@ -7419,7 +7419,7 @@ compute_ebb_proposed_actions (ebb_constraint *ebb_table)
|
||||
|
||||
insn_len = insn_decode_len (ebb->contents, ebb->content_length,
|
||||
offset);
|
||||
if (insn_len == 0)
|
||||
if (insn_len == 0)
|
||||
goto decode_error;
|
||||
|
||||
if (check_branch_target_aligned_address (offset, insn_len))
|
||||
@ -7448,7 +7448,7 @@ compute_ebb_proposed_actions (ebb_constraint *ebb_table)
|
||||
{
|
||||
bfd_size_type simplify_size;
|
||||
|
||||
simplify_size = get_asm_simplify_size (ebb->contents,
|
||||
simplify_size = get_asm_simplify_size (ebb->contents,
|
||||
ebb->content_length,
|
||||
irel->r_offset);
|
||||
if (simplify_size == 0)
|
||||
@ -7456,7 +7456,7 @@ compute_ebb_proposed_actions (ebb_constraint *ebb_table)
|
||||
|
||||
ebb_propose_action (ebb_table, EBB_NO_ALIGN, 0,
|
||||
ta_convert_longcall, offset, 0, TRUE);
|
||||
|
||||
|
||||
offset += simplify_size;
|
||||
continue;
|
||||
}
|
||||
@ -7803,7 +7803,7 @@ struct xlate_map
|
||||
};
|
||||
|
||||
|
||||
static int
|
||||
static int
|
||||
xlate_compare (const void *a_v, const void *b_v)
|
||||
{
|
||||
const xlate_map_entry_t *a = (const xlate_map_entry_t *) a_v;
|
||||
@ -7833,7 +7833,7 @@ xlate_offset_with_removed_text (const xlate_map_t *map,
|
||||
r = bsearch (&offset, map->entry, map->entry_count,
|
||||
sizeof (xlate_map_entry_t), &xlate_compare);
|
||||
e = (xlate_map_entry_t *) r;
|
||||
|
||||
|
||||
BFD_ASSERT (e != NULL);
|
||||
if (e == NULL)
|
||||
return offset;
|
||||
@ -7858,7 +7858,7 @@ build_xlate_map (asection *sec, xtensa_relax_info *relax_info)
|
||||
return NULL;
|
||||
|
||||
num_actions = action_list_count (action_list);
|
||||
map->entry = (xlate_map_entry_t *)
|
||||
map->entry = (xlate_map_entry_t *)
|
||||
bfd_malloc (sizeof (xlate_map_entry_t) * (num_actions + 1));
|
||||
if (map->entry == NULL)
|
||||
{
|
||||
@ -7866,7 +7866,7 @@ build_xlate_map (asection *sec, xtensa_relax_info *relax_info)
|
||||
return NULL;
|
||||
}
|
||||
map->entry_count = 0;
|
||||
|
||||
|
||||
removed = 0;
|
||||
current_entry = &map->entry[0];
|
||||
|
||||
@ -7921,7 +7921,7 @@ build_xlate_map (asection *sec, xtensa_relax_info *relax_info)
|
||||
|
||||
/* Free an offset translation map. */
|
||||
|
||||
static void
|
||||
static void
|
||||
free_xlate_map (xlate_map_t *map)
|
||||
{
|
||||
if (map && map->entry)
|
||||
@ -8153,7 +8153,7 @@ compute_fill_extra_space (property_table_entry *entry)
|
||||
add an entry to the per-section list of removed literals. The
|
||||
actual changes are deferred until the next pass. */
|
||||
|
||||
static bfd_boolean
|
||||
static bfd_boolean
|
||||
compute_removed_literals (bfd *abfd,
|
||||
asection *sec,
|
||||
struct bfd_link_info *link_info,
|
||||
@ -8180,7 +8180,7 @@ compute_removed_literals (bfd *abfd,
|
||||
if (!relax_info->is_relaxable_literal_section)
|
||||
return ok;
|
||||
|
||||
internal_relocs = retrieve_internal_relocs (abfd, sec,
|
||||
internal_relocs = retrieve_internal_relocs (abfd, sec,
|
||||
link_info->keep_memory);
|
||||
|
||||
sec_size = bfd_get_section_limit (abfd, sec);
|
||||
@ -8232,14 +8232,14 @@ compute_removed_literals (bfd *abfd,
|
||||
continue;
|
||||
prev_i = i;
|
||||
|
||||
if (last_loc_is_prev &&
|
||||
if (last_loc_is_prev &&
|
||||
last_target_offset + 4 != rel->r_rel.target_offset)
|
||||
last_loc_is_prev = FALSE;
|
||||
|
||||
/* Check if the relocation was from an L32R that is being removed
|
||||
because a CALLX was converted to a direct CALL, and check if
|
||||
there are no other relocations to the literal. */
|
||||
if (is_removable_literal (rel, i, src_relocs, relax_info->src_count,
|
||||
if (is_removable_literal (rel, i, src_relocs, relax_info->src_count,
|
||||
sec, prop_table, ptblsize))
|
||||
{
|
||||
if (!remove_dead_literal (abfd, sec, link_info, internal_relocs,
|
||||
@ -8253,8 +8253,8 @@ compute_removed_literals (bfd *abfd,
|
||||
}
|
||||
|
||||
if (!identify_literal_placement (abfd, sec, contents, link_info,
|
||||
values,
|
||||
&last_loc_is_prev, irel,
|
||||
values,
|
||||
&last_loc_is_prev, irel,
|
||||
relax_info->src_count - i, rel,
|
||||
prop_table, ptblsize,
|
||||
&target_sec_cache, rel->is_abs_literal))
|
||||
@ -8291,7 +8291,7 @@ get_irel_at_offset (asection *sec,
|
||||
unsigned r_type;
|
||||
Elf_Internal_Rela key;
|
||||
|
||||
if (!internal_relocs)
|
||||
if (!internal_relocs)
|
||||
return NULL;
|
||||
|
||||
key.r_offset = offset;
|
||||
@ -8335,8 +8335,8 @@ is_removable_literal (const source_reloc *rel,
|
||||
|
||||
if (!rel->is_null)
|
||||
return FALSE;
|
||||
|
||||
entry = elf_xtensa_find_property_entry (prop_table, ptblsize,
|
||||
|
||||
entry = elf_xtensa_find_property_entry (prop_table, ptblsize,
|
||||
sec->vma + rel->r_rel.target_offset);
|
||||
if (entry && (entry->flags & XTENSA_PROP_NO_TRANSFORM))
|
||||
return FALSE;
|
||||
@ -8357,7 +8357,7 @@ is_removable_literal (const source_reloc *rel,
|
||||
}
|
||||
|
||||
|
||||
bfd_boolean
|
||||
bfd_boolean
|
||||
remove_dead_literal (bfd *abfd,
|
||||
asection *sec,
|
||||
struct bfd_link_info *link_info,
|
||||
@ -8384,7 +8384,7 @@ remove_dead_literal (bfd *abfd,
|
||||
ta_remove_literal, sec, rel->r_rel.target_offset, 4);
|
||||
|
||||
/* If the section is 4-byte aligned, do not add fill. */
|
||||
if (sec->alignment_power > 2)
|
||||
if (sec->alignment_power > 2)
|
||||
{
|
||||
int fill_extra_space;
|
||||
bfd_vma entry_sec_offset;
|
||||
@ -8428,7 +8428,7 @@ remove_dead_literal (bfd *abfd,
|
||||
}
|
||||
|
||||
|
||||
bfd_boolean
|
||||
bfd_boolean
|
||||
identify_literal_placement (bfd *abfd,
|
||||
asection *sec,
|
||||
bfd_byte *contents,
|
||||
@ -8498,7 +8498,7 @@ identify_literal_placement (bfd *abfd,
|
||||
/* For relocatable links, do not try to move literals. To do it
|
||||
correctly might increase the number of relocations in an input
|
||||
section making the default relocatable linking fail. */
|
||||
if (!link_info->relocatable && !literal_placed
|
||||
if (!link_info->relocatable && !literal_placed
|
||||
&& values->has_last_loc && !(*last_loc_is_prev_p))
|
||||
{
|
||||
asection *target_sec = r_reloc_get_section (&values->last_loc);
|
||||
@ -8511,7 +8511,7 @@ identify_literal_placement (bfd *abfd,
|
||||
/* There is a last loc that was in the same output section. */
|
||||
if (relocations_reach (rel, remaining_src_rels, &try_loc)
|
||||
&& move_shared_literal (sec, link_info, rel,
|
||||
prop_table, ptblsize,
|
||||
prop_table, ptblsize,
|
||||
&try_loc, &val, target_sec_cache))
|
||||
{
|
||||
values->last_loc.virtual_offset += 4;
|
||||
@ -8611,7 +8611,7 @@ relocations_reach (source_reloc *reloc,
|
||||
/* Move a literal to another literal location because it is
|
||||
the same as the other literal value. */
|
||||
|
||||
static bfd_boolean
|
||||
static bfd_boolean
|
||||
coalesce_shared_literal (asection *sec,
|
||||
source_reloc *rel,
|
||||
property_table_entry *prop_table,
|
||||
@ -8640,7 +8640,7 @@ coalesce_shared_literal (asection *sec,
|
||||
ta_remove_literal, sec, rel->r_rel.target_offset, 4);
|
||||
|
||||
/* If the section is 4-byte aligned, do not add fill. */
|
||||
if (sec->alignment_power > 2)
|
||||
if (sec->alignment_power > 2)
|
||||
{
|
||||
int fill_extra_space;
|
||||
bfd_vma entry_sec_offset;
|
||||
@ -8676,7 +8676,7 @@ coalesce_shared_literal (asection *sec,
|
||||
total amount of space used because of alignments so we need to do
|
||||
this carefully. Also, it may make a branch go out of range. */
|
||||
|
||||
static bfd_boolean
|
||||
static bfd_boolean
|
||||
move_shared_literal (asection *sec,
|
||||
struct bfd_link_info *link_info,
|
||||
source_reloc *rel,
|
||||
@ -8719,7 +8719,7 @@ move_shared_literal (asection *sec,
|
||||
return FALSE;
|
||||
|
||||
target_entry = elf_xtensa_find_property_entry
|
||||
(target_sec_cache->ptbl, target_sec_cache->pte_count,
|
||||
(target_sec_cache->ptbl, target_sec_cache->pte_count,
|
||||
target_sec->vma + target_loc->target_offset);
|
||||
|
||||
if (!target_entry)
|
||||
@ -8730,7 +8730,7 @@ move_shared_literal (asection *sec,
|
||||
|
||||
init_ebb_constraint (&ebb_table);
|
||||
ebb = &ebb_table.ebb;
|
||||
init_ebb (ebb, target_sec_cache->sec, target_sec_cache->contents,
|
||||
init_ebb (ebb, target_sec_cache->sec, target_sec_cache->contents,
|
||||
target_sec_cache->content_length,
|
||||
target_sec_cache->ptbl, target_sec_cache->pte_count,
|
||||
target_sec_cache->relocs, target_sec_cache->reloc_count);
|
||||
@ -8742,24 +8742,24 @@ move_shared_literal (asection *sec,
|
||||
-4 - (1 << target_sec->alignment_power), TRUE);
|
||||
|
||||
/* Check all of the PC-relative relocations to make sure they still fit. */
|
||||
relocs_fit = check_section_ebb_pcrels_fit (target_sec->owner, target_sec,
|
||||
relocs_fit = check_section_ebb_pcrels_fit (target_sec->owner, target_sec,
|
||||
target_sec_cache->contents,
|
||||
target_sec_cache->relocs,
|
||||
&ebb_table, NULL);
|
||||
|
||||
if (!relocs_fit)
|
||||
if (!relocs_fit)
|
||||
return FALSE;
|
||||
|
||||
text_action_add_literal (&target_relax_info->action_list,
|
||||
ta_add_literal, target_loc, lit_value, -4);
|
||||
|
||||
if (target_sec->alignment_power > 2 && target_entry != src_entry)
|
||||
if (target_sec->alignment_power > 2 && target_entry != src_entry)
|
||||
{
|
||||
/* May need to add or remove some fill to maintain alignment. */
|
||||
int fill_extra_space;
|
||||
bfd_vma entry_sec_offset;
|
||||
|
||||
entry_sec_offset =
|
||||
entry_sec_offset =
|
||||
target_entry->address - target_sec->vma + target_entry->size;
|
||||
|
||||
/* If the literal range is at the end of the section,
|
||||
@ -8792,7 +8792,7 @@ move_shared_literal (asection *sec,
|
||||
ta_remove_literal, sec, rel->r_rel.target_offset, 4);
|
||||
|
||||
/* If the section is 4-byte aligned, do not add fill. */
|
||||
if (sec->alignment_power > 2 && target_entry != src_entry)
|
||||
if (sec->alignment_power > 2 && target_entry != src_entry)
|
||||
{
|
||||
int fill_extra_space;
|
||||
bfd_vma entry_sec_offset;
|
||||
@ -8856,7 +8856,7 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info)
|
||||
return relax_property_section (abfd, sec, link_info);
|
||||
}
|
||||
|
||||
internal_relocs = retrieve_internal_relocs (abfd, sec,
|
||||
internal_relocs = retrieve_internal_relocs (abfd, sec,
|
||||
link_info->keep_memory);
|
||||
if (!internal_relocs && !relax_info->action_list.head)
|
||||
return TRUE;
|
||||
@ -9186,7 +9186,7 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info)
|
||||
dup_dot += copy_size;
|
||||
}
|
||||
virtual_action = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
BFD_ASSERT (action->virtual_offset <= orig_dot_vo);
|
||||
}
|
||||
@ -9257,7 +9257,7 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info)
|
||||
relax_info, &internal_relocs, &action->value))
|
||||
goto error_return;
|
||||
|
||||
if (virtual_action)
|
||||
if (virtual_action)
|
||||
orig_dot_vo += copy_size;
|
||||
|
||||
orig_dot += orig_insn_size;
|
||||
@ -9322,7 +9322,7 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info)
|
||||
}
|
||||
|
||||
|
||||
static bfd_boolean
|
||||
static bfd_boolean
|
||||
translate_section_fixes (asection *sec)
|
||||
{
|
||||
xtensa_relax_info *relax_info;
|
||||
@ -9343,7 +9343,7 @@ translate_section_fixes (asection *sec)
|
||||
/* Translate a fix given the mapping in the relax info for the target
|
||||
section. If it has already been translated, no work is required. */
|
||||
|
||||
static bfd_boolean
|
||||
static bfd_boolean
|
||||
translate_reloc_bfd_fix (reloc_bfd_fix *fix)
|
||||
{
|
||||
reloc_bfd_fix new_fix;
|
||||
@ -9389,7 +9389,7 @@ translate_reloc_bfd_fix (reloc_bfd_fix *fix)
|
||||
target_offset);
|
||||
}
|
||||
|
||||
if (removed)
|
||||
if (removed)
|
||||
{
|
||||
asection *new_sec;
|
||||
|
||||
@ -9399,11 +9399,11 @@ translate_reloc_bfd_fix (reloc_bfd_fix *fix)
|
||||
|
||||
/* This was moved to some other address (possibly another section). */
|
||||
new_sec = r_reloc_get_section (&removed->to);
|
||||
if (new_sec != sec)
|
||||
if (new_sec != sec)
|
||||
{
|
||||
sec = new_sec;
|
||||
relax_info = get_xtensa_relax_info (sec);
|
||||
if (!relax_info ||
|
||||
if (!relax_info ||
|
||||
(!relax_info->is_relaxable_literal_section
|
||||
&& !relax_info->is_relaxable_asm_section))
|
||||
{
|
||||
@ -9692,7 +9692,7 @@ move_literal (bfd *abfd,
|
||||
BFD_ASSERT (relax_info->allocated_relocs == NULL
|
||||
|| sec->reloc_count == relax_info->relocs_count);
|
||||
|
||||
if (relax_info->allocated_relocs_count == 0)
|
||||
if (relax_info->allocated_relocs_count == 0)
|
||||
new_relocs_count = (sec->reloc_count + 2) * 2;
|
||||
else
|
||||
new_relocs_count = (relax_info->allocated_relocs_count + 2) * 2;
|
||||
@ -9712,7 +9712,7 @@ move_literal (bfd *abfd,
|
||||
if (insert_at != sec->reloc_count)
|
||||
memcpy (new_relocs + insert_at + 1,
|
||||
(*internal_relocs_p) + insert_at,
|
||||
(sec->reloc_count - insert_at)
|
||||
(sec->reloc_count - insert_at)
|
||||
* sizeof (Elf_Internal_Rela));
|
||||
|
||||
if (*internal_relocs_p != relax_info->allocated_relocs)
|
||||
@ -9771,7 +9771,7 @@ relax_property_section (bfd *abfd,
|
||||
bfd_size_type entry_size;
|
||||
|
||||
sec_size = bfd_get_section_limit (abfd, sec);
|
||||
internal_relocs = retrieve_internal_relocs (abfd, sec,
|
||||
internal_relocs = retrieve_internal_relocs (abfd, sec,
|
||||
link_info->keep_memory);
|
||||
contents = retrieve_contents (abfd, sec, link_info->keep_memory);
|
||||
if (contents == NULL && sec_size != 0)
|
||||
@ -9996,7 +9996,7 @@ relax_property_section (bfd *abfd,
|
||||
actual_offset = offset - removed_bytes;
|
||||
size = bfd_get_32 (abfd, &contents[actual_offset + 4]);
|
||||
|
||||
if (is_full_prop_section)
|
||||
if (is_full_prop_section)
|
||||
flags = bfd_get_32 (abfd, &contents[actual_offset + 8]);
|
||||
else
|
||||
flags = predef_flags;
|
||||
@ -10024,7 +10024,7 @@ relax_property_section (bfd *abfd,
|
||||
bfd_vma new_address =
|
||||
(offset_rel->r_addend
|
||||
+ bfd_get_32 (abfd, &contents[actual_offset]));
|
||||
if (is_full_prop_section)
|
||||
if (is_full_prop_section)
|
||||
old_flags = bfd_get_32
|
||||
(abfd, &contents[last_irel->r_offset + 8]);
|
||||
else
|
||||
@ -10440,7 +10440,7 @@ pcrel_reloc_fits (xtensa_opcode opc,
|
||||
}
|
||||
|
||||
|
||||
static bfd_boolean
|
||||
static bfd_boolean
|
||||
xtensa_is_property_section (asection *sec)
|
||||
{
|
||||
if (xtensa_is_insntable_section (sec)
|
||||
@ -10452,7 +10452,7 @@ xtensa_is_property_section (asection *sec)
|
||||
}
|
||||
|
||||
|
||||
static bfd_boolean
|
||||
static bfd_boolean
|
||||
xtensa_is_insntable_section (asection *sec)
|
||||
{
|
||||
if (CONST_STRNEQ (sec->name, XTENSA_INSN_SEC_NAME)
|
||||
@ -10463,7 +10463,7 @@ xtensa_is_insntable_section (asection *sec)
|
||||
}
|
||||
|
||||
|
||||
static bfd_boolean
|
||||
static bfd_boolean
|
||||
xtensa_is_littable_section (asection *sec)
|
||||
{
|
||||
if (CONST_STRNEQ (sec->name, XTENSA_LIT_SEC_NAME)
|
||||
@ -10474,7 +10474,7 @@ xtensa_is_littable_section (asection *sec)
|
||||
}
|
||||
|
||||
|
||||
static bfd_boolean
|
||||
static bfd_boolean
|
||||
xtensa_is_proptable_section (asection *sec)
|
||||
{
|
||||
if (CONST_STRNEQ (sec->name, XTENSA_PROP_SEC_NAME)
|
||||
@ -10527,7 +10527,7 @@ match_section_group (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *inf)
|
||||
{
|
||||
const char *gname = inf;
|
||||
const char *group_name = elf_group_name (sec);
|
||||
|
||||
|
||||
return (group_name == gname
|
||||
|| (group_name != NULL
|
||||
&& gname != NULL
|
||||
@ -10559,9 +10559,9 @@ xtensa_property_section_name (asection *sec, const char *base_name)
|
||||
{
|
||||
char *linkonce_kind = 0;
|
||||
|
||||
if (strcmp (base_name, XTENSA_INSN_SEC_NAME) == 0)
|
||||
if (strcmp (base_name, XTENSA_INSN_SEC_NAME) == 0)
|
||||
linkonce_kind = "x.";
|
||||
else if (strcmp (base_name, XTENSA_LIT_SEC_NAME) == 0)
|
||||
else if (strcmp (base_name, XTENSA_LIT_SEC_NAME) == 0)
|
||||
linkonce_kind = "p.";
|
||||
else if (strcmp (base_name, XTENSA_PROP_SEC_NAME) == 0)
|
||||
linkonce_kind = "prop.";
|
||||
@ -10701,7 +10701,7 @@ xtensa_callback_required_dependence (bfd *abfd,
|
||||
if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
|
||||
return ok;
|
||||
|
||||
internal_relocs = retrieve_internal_relocs (abfd, sec,
|
||||
internal_relocs = retrieve_internal_relocs (abfd, sec,
|
||||
link_info->keep_memory);
|
||||
if (internal_relocs == NULL
|
||||
|| sec->reloc_count == 0)
|
||||
|
@ -225,7 +225,7 @@ struct alpha_elf_link_hash_table
|
||||
#define alpha_elf_sym_hashes(abfd) \
|
||||
((struct alpha_elf_link_hash_entry **)elf_sym_hashes(abfd))
|
||||
|
||||
/* Should we do dynamic things to this symbol? This differs from the
|
||||
/* Should we do dynamic things to this symbol? This differs from the
|
||||
generic version in that we never need to consider function pointer
|
||||
equality wrt PLT entries -- we don't create a PLT entry if a symbol's
|
||||
address is ever taken. */
|
||||
@ -4141,7 +4141,7 @@ elf64_alpha_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
bfd_boolean ret_val;
|
||||
|
||||
BFD_ASSERT (is_alpha_elf (input_bfd));
|
||||
|
||||
|
||||
/* Handle relocatable links with a smaller loop. */
|
||||
if (info->relocatable)
|
||||
return elf64_alpha_relocate_section_r (output_bfd, info, input_bfd,
|
||||
@ -4890,12 +4890,12 @@ elf64_alpha_finish_dynamic_symbol (bfd *output_bfd, struct bfd_link_info *info,
|
||||
abort ();
|
||||
}
|
||||
|
||||
elf64_alpha_emit_dynrel (output_bfd, info, sgot, srel,
|
||||
elf64_alpha_emit_dynrel (output_bfd, info, sgot, srel,
|
||||
gotent->got_offset, h->dynindx,
|
||||
r_type, gotent->addend);
|
||||
|
||||
if (gotent->reloc_type == R_ALPHA_TLSGD)
|
||||
elf64_alpha_emit_dynrel (output_bfd, info, sgot, srel,
|
||||
elf64_alpha_emit_dynrel (output_bfd, info, sgot, srel,
|
||||
gotent->got_offset + 8, h->dynindx,
|
||||
R_ALPHA_DTPREL64, gotent->addend);
|
||||
}
|
||||
|
@ -476,7 +476,7 @@ hppa64_elf_local_refcounts (bfd *abfd)
|
||||
{
|
||||
Elf_Internal_Shdr *symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
|
||||
bfd_signed_vma *local_refcounts;
|
||||
|
||||
|
||||
local_refcounts = elf_local_got_refcounts (abfd);
|
||||
if (local_refcounts == NULL)
|
||||
{
|
||||
@ -796,7 +796,7 @@ elf64_hppa_check_relocs (bfd *abfd,
|
||||
else
|
||||
{
|
||||
bfd_signed_vma *local_dlt_refcounts;
|
||||
|
||||
|
||||
/* This is a DLT entry for a local symbol. */
|
||||
local_dlt_refcounts = hppa64_elf_local_refcounts (abfd);
|
||||
if (local_dlt_refcounts == NULL)
|
||||
@ -821,7 +821,7 @@ elf64_hppa_check_relocs (bfd *abfd,
|
||||
{
|
||||
bfd_signed_vma *local_dlt_refcounts;
|
||||
bfd_signed_vma *local_plt_refcounts;
|
||||
|
||||
|
||||
/* This is a PLT entry for a local symbol. */
|
||||
local_dlt_refcounts = hppa64_elf_local_refcounts (abfd);
|
||||
if (local_dlt_refcounts == NULL)
|
||||
@ -855,7 +855,7 @@ elf64_hppa_check_relocs (bfd *abfd,
|
||||
{
|
||||
bfd_signed_vma *local_dlt_refcounts;
|
||||
bfd_signed_vma *local_opd_refcounts;
|
||||
|
||||
|
||||
/* This is a OPD for a local symbol. */
|
||||
local_dlt_refcounts = hppa64_elf_local_refcounts (abfd);
|
||||
if (local_dlt_refcounts == NULL)
|
||||
@ -1132,7 +1132,7 @@ elf64_hppa_post_process_headers (bfd *abfd,
|
||||
Elf_Internal_Ehdr * i_ehdrp;
|
||||
|
||||
i_ehdrp = elf_elfheader (abfd);
|
||||
|
||||
|
||||
i_ehdrp->e_ident[EI_OSABI] = get_elf_backend_data (abfd)->elf_osabi;
|
||||
i_ehdrp->e_ident[EI_ABIVERSION] = 1;
|
||||
}
|
||||
@ -1639,7 +1639,7 @@ elf64_hppa_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
|
||||
{
|
||||
*local_dlt = sec->size;
|
||||
sec->size += DLT_ENTRY_SIZE;
|
||||
if (info->shared)
|
||||
if (info->shared)
|
||||
{
|
||||
srel->size += sizeof (Elf64_External_Rela);
|
||||
}
|
||||
@ -2213,7 +2213,7 @@ elf64_hppa_finalize_opd (struct elf_link_hash_entry *eh, void *data)
|
||||
|
||||
nh = elf_link_hash_lookup (elf_hash_table (info),
|
||||
new_name, TRUE, TRUE, FALSE);
|
||||
|
||||
|
||||
/* All we really want from the new symbol is its dynamic
|
||||
symbol index. */
|
||||
if (nh)
|
||||
@ -3190,7 +3190,7 @@ elf_hppa_final_link_relocate (Elf_Internal_Rela *rel,
|
||||
|
||||
if (hppa_info == NULL)
|
||||
return bfd_reloc_notsupported;
|
||||
|
||||
|
||||
symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
|
||||
local_offsets = elf_local_got_offsets (input_bfd);
|
||||
insn = bfd_get_32 (input_bfd, hit_data);
|
||||
@ -3859,14 +3859,14 @@ elf64_hppa_relocate_section (bfd *output_bfd,
|
||||
/* This is not a local symbol. */
|
||||
struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (input_bfd);
|
||||
|
||||
/* It seems this can happen with erroneous or unsupported
|
||||
/* It seems this can happen with erroneous or unsupported
|
||||
input (mixing a.out and elf in an archive, for example.) */
|
||||
if (sym_hashes == NULL)
|
||||
return FALSE;
|
||||
|
||||
eh = sym_hashes[r_symndx - symtab_hdr->sh_info];
|
||||
|
||||
while (eh->root.type == bfd_link_hash_indirect
|
||||
while (eh->root.type == bfd_link_hash_indirect
|
||||
|| eh->root.type == bfd_link_hash_warning)
|
||||
eh = (struct elf_link_hash_entry *) eh->root.u.i.link;
|
||||
|
||||
@ -4057,7 +4057,7 @@ const struct elf_size_info hppa64_elf_size_info =
|
||||
elf64_hppa_finish_dynamic_sections
|
||||
#define elf_backend_grok_prstatus elf64_hppa_grok_prstatus
|
||||
#define elf_backend_grok_psinfo elf64_hppa_grok_psinfo
|
||||
|
||||
|
||||
/* Stuff for the BFD linker: */
|
||||
#define bfd_elf64_bfd_link_hash_table_create \
|
||||
elf64_hppa_hash_table_create
|
||||
|
@ -3259,7 +3259,7 @@ ppc64_elf_get_synthetic_symtab (bfd *abfd,
|
||||
slurp_relocs = get_elf_backend_data (abfd)->s->slurp_reloc_table;
|
||||
if (! (*slurp_relocs) (abfd, relplt, dyn_syms, TRUE))
|
||||
goto free_contents_and_exit;
|
||||
|
||||
|
||||
plt_count = relplt->size / sizeof (Elf64_External_Rela);
|
||||
size += plt_count * sizeof (asymbol);
|
||||
|
||||
@ -4488,7 +4488,7 @@ ppc64_elf_copy_indirect_symbol (struct bfd_link_info *info,
|
||||
/* If we were called to copy over info for a weak sym, that's all.
|
||||
You might think dyn_relocs need not be copied over; After all,
|
||||
both syms will be dynamic or both non-dynamic so we're just
|
||||
moving reloc accounting around. However, ELIMINATE_COPY_RELOCS
|
||||
moving reloc accounting around. However, ELIMINATE_COPY_RELOCS
|
||||
code in ppc64_elf_adjust_dynamic_symbol needs to check for
|
||||
dyn_relocs in read-only sections, and it does so on what is the
|
||||
DIR sym here. */
|
||||
@ -8253,7 +8253,7 @@ ppc64_elf_edit_toc (struct bfd_link_info *info)
|
||||
. addi ry,rx,addr@toc@l
|
||||
when addr is within 2G of the toc pointer. This then means
|
||||
that the word storing "addr" in the toc is no longer needed. */
|
||||
|
||||
|
||||
if (!ppc64_elf_tdata (ibfd)->has_small_toc_reloc
|
||||
&& toc->output_section->rawsize < (bfd_vma) 1 << 31
|
||||
&& toc->reloc_count != 0)
|
||||
@ -11352,7 +11352,7 @@ ppc64_elf_size_stubs (struct bfd_link_info *info, bfd_signed_vma group_size,
|
||||
"GOMP_parallel_loop_dynamic_start",
|
||||
"GOMP_parallel_loop_guided_start",
|
||||
"GOMP_parallel_loop_runtime_start",
|
||||
"GOMP_parallel_sections_start",
|
||||
"GOMP_parallel_sections_start",
|
||||
};
|
||||
unsigned i;
|
||||
|
||||
|
@ -415,7 +415,7 @@ s390_elf_ldisp_reloc (bfd *abfd,
|
||||
relocation -= reloc_entry->address;
|
||||
}
|
||||
|
||||
insn = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address);
|
||||
insn = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address);
|
||||
insn |= (relocation & 0xfff) << 16 | (relocation & 0xff000) >> 4;
|
||||
bfd_put_32 (abfd, insn, (bfd_byte *) data + reloc_entry->address);
|
||||
|
||||
|
@ -294,7 +294,7 @@ elf_core_file_p (bfd *abfd)
|
||||
{
|
||||
bfd_size_type high = 0;
|
||||
struct stat statbuf;
|
||||
for (phindex = 0; phindex < i_ehdrp->e_phnum; ++phindex)
|
||||
for (phindex = 0; phindex < i_ehdrp->e_phnum; ++phindex)
|
||||
{
|
||||
Elf_Internal_Phdr *p = i_phdrp + phindex;
|
||||
if (p->p_filesz)
|
||||
@ -315,7 +315,7 @@ elf_core_file_p (bfd *abfd)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Save the entry point from the ELF header. */
|
||||
bfd_get_start_address (abfd) = i_ehdrp->e_entry;
|
||||
|
||||
|
@ -3712,7 +3712,7 @@ error_free_dyn:
|
||||
return TRUE;
|
||||
|
||||
/* Save the DT_AUDIT entry for the linker emulation code. */
|
||||
elf_dt_audit (abfd) = audit;
|
||||
elf_dt_audit (abfd) = audit;
|
||||
}
|
||||
|
||||
/* If this is a dynamic object, we always link against the .dynsym
|
||||
@ -4029,7 +4029,7 @@ error_free_dyn:
|
||||
&& h->root.u.undef.abfd)
|
||||
undef_bfd = h->root.u.undef.abfd;
|
||||
}
|
||||
|
||||
|
||||
if (ever == NULL)
|
||||
{
|
||||
if (info->default_imported_symver)
|
||||
@ -11756,7 +11756,7 @@ _bfd_elf_gc_mark_hook (asection *sec,
|
||||
if (sec_name && *sec_name != '\0')
|
||||
{
|
||||
bfd *i;
|
||||
|
||||
|
||||
for (i = info->input_bfds; i; i = i->link_next)
|
||||
{
|
||||
sec = bfd_get_section_by_name (i, sec_name);
|
||||
@ -12513,7 +12513,7 @@ bfd_elf_lookup_section_flags (struct bfd_link_info *info,
|
||||
}
|
||||
if (!tf->valid)
|
||||
{
|
||||
info->callbacks->einfo
|
||||
info->callbacks->einfo
|
||||
(_("Unrecognized INPUT_SECTION_FLAG %s\n"), tf->name);
|
||||
return FALSE;
|
||||
}
|
||||
@ -12981,7 +12981,7 @@ get_dynamic_reloc_section_name (bfd * abfd,
|
||||
return NULL;
|
||||
|
||||
name = bfd_alloc (abfd, strlen (prefix) + strlen (old_name) + 1);
|
||||
sprintf (name, "%s%s", prefix, old_name);
|
||||
sprintf (name, "%s%s", prefix, old_name);
|
||||
|
||||
return name;
|
||||
}
|
||||
|
@ -5330,7 +5330,7 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
|
||||
if (h->call_stub != NULL && h->call_fp_stub != NULL)
|
||||
{
|
||||
asection *o;
|
||||
|
||||
|
||||
sec = NULL;
|
||||
for (o = input_bfd->sections; o != NULL; o = o->next)
|
||||
{
|
||||
@ -5919,7 +5919,7 @@ mips_elf_obtain_contents (reloc_howto_type *howto,
|
||||
/* It has been determined that the result of the RELOCATION is the
|
||||
VALUE. Use HOWTO to place VALUE into the output file at the
|
||||
appropriate position. The SECTION is the section to which the
|
||||
relocation applies.
|
||||
relocation applies.
|
||||
CROSS_MODE_JUMP_P is true if the relocation field
|
||||
is a MIPS16 or microMIPS jump to standard MIPS code, or vice versa.
|
||||
|
||||
@ -7840,14 +7840,14 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
||||
{
|
||||
h = ((struct mips_elf_link_hash_entry *)
|
||||
sym_hashes[r_symndx - extsymoff]);
|
||||
|
||||
|
||||
/* H is the symbol this stub is for. */
|
||||
|
||||
|
||||
if (CALL_FP_STUB_P (name))
|
||||
loc = &h->call_fp_stub;
|
||||
else
|
||||
loc = &h->call_stub;
|
||||
|
||||
|
||||
/* If we already have an appropriate stub for this function, we
|
||||
don't need another one, so we can discard this one. Since
|
||||
this function is called before the linker maps input sections
|
||||
@ -14032,7 +14032,7 @@ _bfd_mips_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
|
||||
|
||||
if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
|
||||
&& (bfd_get_arch_info (obfd)->the_default
|
||||
|| mips_mach_extends_p (bfd_get_mach (obfd),
|
||||
|| mips_mach_extends_p (bfd_get_mach (obfd),
|
||||
bfd_get_mach (ibfd))))
|
||||
{
|
||||
if (! bfd_set_arch_mach (obfd, bfd_get_arch (ibfd),
|
||||
|
@ -1433,7 +1433,7 @@ _bfd_sparc_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
||||
TRUE);
|
||||
if (h == NULL)
|
||||
return FALSE;
|
||||
|
||||
|
||||
/* Fake a STT_GNU_IFUNC symbol. */
|
||||
h->type = STT_GNU_IFUNC;
|
||||
h->def_regular = 1;
|
||||
@ -2985,7 +2985,7 @@ _bfd_sparc_elf_relocate_section (bfd *output_bfd,
|
||||
if (h == NULL)
|
||||
abort ();
|
||||
|
||||
/* Set STT_GNU_IFUNC symbol value. */
|
||||
/* Set STT_GNU_IFUNC symbol value. */
|
||||
h->root.u.def.value = sym->st_value;
|
||||
h->root.u.def.section = sec;
|
||||
}
|
||||
@ -3278,7 +3278,7 @@ _bfd_sparc_elf_relocate_section (bfd *output_bfd,
|
||||
if (h == NULL)
|
||||
break;
|
||||
}
|
||||
/* PR 7027: We need similar behaviour for 64-bit binaries. */
|
||||
/* PR 7027: We need similar behaviour for 64-bit binaries. */
|
||||
else if (r_type == R_SPARC_WPLT30 && h == NULL)
|
||||
break;
|
||||
else
|
||||
@ -4126,7 +4126,7 @@ do_relocation:
|
||||
{
|
||||
const char *name;
|
||||
|
||||
/* The Solaris native linker silently disregards overflows.
|
||||
/* The Solaris native linker silently disregards overflows.
|
||||
We don't, but this breaks stabs debugging info, whose
|
||||
relocations are only 32-bits wide. Ignore overflows in
|
||||
this case and also for discarded entries. */
|
||||
@ -4718,7 +4718,7 @@ finish_local_dynamic_symbol (void **slot, void *inf)
|
||||
struct elf_link_hash_entry *h
|
||||
= (struct elf_link_hash_entry *) *slot;
|
||||
struct bfd_link_info *info
|
||||
= (struct bfd_link_info *) inf;
|
||||
= (struct bfd_link_info *) inf;
|
||||
|
||||
return _bfd_sparc_elf_finish_dynamic_symbol (info->output_bfd, info,
|
||||
h, NULL);
|
||||
|
@ -2977,7 +2977,7 @@ static const bfd_byte insn_mask_X1[] = {
|
||||
/* Mask to extract the bits corresponding to an instruction in a
|
||||
specific pipe of a bundle, minus the destination operand and the
|
||||
first source operand. */
|
||||
static const bfd_byte insn_mask_X0_no_dest_no_srca[] = {
|
||||
static const bfd_byte insn_mask_X0_no_dest_no_srca[] = {
|
||||
0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
|
@ -1662,7 +1662,7 @@ ieee_slurp_section_data (bfd *abfd)
|
||||
unsigned int section_number;
|
||||
ieee_per_section_type *current_map = NULL;
|
||||
asection *s;
|
||||
|
||||
|
||||
/* Seek to the start of the data area. */
|
||||
if (ieee->read_data)
|
||||
return TRUE;
|
||||
|
@ -733,7 +733,7 @@ typedef struct
|
||||
bfd_boolean _bfd_coff_long_section_names;
|
||||
bfd_boolean (*_bfd_coff_set_long_section_names)
|
||||
(bfd *, int);
|
||||
|
||||
|
||||
unsigned int _bfd_coff_default_section_alignment_power;
|
||||
bfd_boolean _bfd_coff_force_symnames_in_strings;
|
||||
unsigned int _bfd_coff_debug_string_prefix_length;
|
||||
|
@ -14,7 +14,7 @@
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
|
@ -77,7 +77,7 @@ struct xcoff_backend_data_rec
|
||||
(bfd *, union internal_auxent *, const char *);
|
||||
|
||||
/* Line number and relocation overflow.
|
||||
XCOFF32 overflows to another section when the line number or the
|
||||
XCOFF32 overflows to another section when the line number or the
|
||||
relocation count exceeds 0xffff. XCOFF64 does not overflow. */
|
||||
bfd_boolean (*_xcoff_is_lineno_count_overflow) (bfd *, bfd_vma);
|
||||
bfd_boolean (*_xcoff_is_reloc_count_overflow) (bfd *, bfd_vma);
|
||||
@ -87,11 +87,11 @@ struct xcoff_backend_data_rec
|
||||
XCOFF64 is offset in .loader header. */
|
||||
bfd_vma (*_xcoff_loader_symbol_offset) (bfd *, struct internal_ldhdr *);
|
||||
bfd_vma (*_xcoff_loader_reloc_offset) (bfd *, struct internal_ldhdr *);
|
||||
|
||||
/* Global linkage. The first word of global linkage code must be be
|
||||
|
||||
/* Global linkage. The first word of global linkage code must be be
|
||||
modified by filling in the correct TOC offset. */
|
||||
unsigned long *_xcoff_glink_code;
|
||||
|
||||
|
||||
/* Size of the global link code in bytes of the xcoff_glink_code table. */
|
||||
unsigned long _xcoff_glink_size;
|
||||
|
||||
@ -185,7 +185,7 @@ struct xcoff_backend_data_rec
|
||||
#define bfd_xcoff_glink_code(a, b) ((xcoff_backend (a)->_xcoff_glink_code[(b)]))
|
||||
#define bfd_xcoff_glink_code_size(a) ((xcoff_backend (a)->_xcoff_glink_size))
|
||||
|
||||
/* Check for the magic number U803XTOCMAGIC or U64_TOCMAGIC for 64 bit
|
||||
/* Check for the magic number U803XTOCMAGIC or U64_TOCMAGIC for 64 bit
|
||||
targets. */
|
||||
#define bfd_xcoff_is_xcoff64(a) \
|
||||
( (0x01EF == (bfd_xcoff_magic_number (a))) \
|
||||
|
@ -2919,7 +2919,7 @@ DESCRIPTION
|
||||
/* Sections marked with the SEC_LINK_ONCE flag should only be linked
|
||||
once into the output. This routine checks each section, and
|
||||
arrange to discard it if a section of the same name has already
|
||||
been linked. This code assumes that all relevant sections have the
|
||||
been linked. This code assumes that all relevant sections have the
|
||||
SEC_LINK_ONCE flag set; that is, it does not depend solely upon the
|
||||
section name. bfd_section_already_linked is called via
|
||||
bfd_map_over_sections. */
|
||||
@ -3302,7 +3302,7 @@ bfd_generic_define_common_symbol (bfd *output_bfd,
|
||||
|
||||
/*
|
||||
FUNCTION
|
||||
bfd_find_version_for_sym
|
||||
bfd_find_version_for_sym
|
||||
|
||||
SYNOPSIS
|
||||
struct bfd_elf_version_tree * bfd_find_version_for_sym
|
||||
|
@ -367,7 +367,7 @@ static const mach_o_section_name_xlat import_section_names_xlat[] =
|
||||
{
|
||||
{ ".picsymbol_stub3", "__jump_table",
|
||||
SEC_CODE | SEC_LOAD, BFD_MACH_O_S_SYMBOL_STUBS,
|
||||
BFD_MACH_O_S_ATTR_PURE_INSTRUCTIONS
|
||||
BFD_MACH_O_S_ATTR_PURE_INSTRUCTIONS
|
||||
| BFD_MACH_O_S_SELF_MODIFYING_CODE,
|
||||
6},
|
||||
{ ".non_lazy_symbol_pointer_x86", "__pointers",
|
||||
@ -391,7 +391,7 @@ const mach_o_segment_name_xlat mach_o_i386_segsec_names_xlat[] =
|
||||
#define bfd_mach_o_tgt_seg_table mach_o_i386_segsec_names_xlat
|
||||
#define bfd_mach_o_section_type_valid_for_tgt NULL
|
||||
|
||||
#define bfd_mach_o_bfd_reloc_type_lookup bfd_mach_o_i386_bfd_reloc_type_lookup
|
||||
#define bfd_mach_o_bfd_reloc_type_lookup bfd_mach_o_i386_bfd_reloc_type_lookup
|
||||
#define bfd_mach_o_bfd_reloc_name_lookup bfd_mach_o_i386_bfd_reloc_name_lookup
|
||||
|
||||
#define TARGET_NAME mach_o_i386_vec
|
||||
|
@ -15,7 +15,7 @@
|
||||
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
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
|
112
bfd/mach-o.c
112
bfd/mach-o.c
@ -84,7 +84,7 @@ bfd_mach_o_wide_p (bfd *abfd)
|
||||
{
|
||||
return mach_o_wide_p (&bfd_mach_o_get_data (abfd)->header);
|
||||
}
|
||||
|
||||
|
||||
/* Tables to translate well known Mach-O segment/section names to bfd
|
||||
names. Use of canonical names (such as .text or .debug_frame) is required
|
||||
by gdb. */
|
||||
@ -92,7 +92,7 @@ bfd_mach_o_wide_p (bfd *abfd)
|
||||
/* __TEXT Segment. */
|
||||
static const mach_o_section_name_xlat text_section_names_xlat[] =
|
||||
{
|
||||
{ ".text", "__text",
|
||||
{ ".text", "__text",
|
||||
SEC_CODE | SEC_LOAD, BFD_MACH_O_S_REGULAR,
|
||||
BFD_MACH_O_S_ATTR_PURE_INSTRUCTIONS, 0},
|
||||
{ ".const", "__const",
|
||||
@ -287,7 +287,7 @@ static const char dsym_subdir[] = ".dSYM/Contents/Resources/DWARF";
|
||||
|
||||
/* Fetch the translation from a Mach-O section designation (segment, section)
|
||||
as a bfd short name, if one exists. Otherwise return NULL.
|
||||
|
||||
|
||||
Allow the segment and section names to be unterminated 16 byte arrays. */
|
||||
|
||||
const mach_o_section_name_xlat *
|
||||
@ -315,11 +315,11 @@ bfd_mach_o_section_data_for_mach_sect (bfd *abfd, const char *segname,
|
||||
BFD_MACH_O_SECTNAME_SIZE) == 0)
|
||||
return sec;
|
||||
|
||||
return NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* If the bfd_name for this section is a 'canonical' form for which we
|
||||
know the Mach-O data, return the segment name and the data for the
|
||||
know the Mach-O data, return the segment name and the data for the
|
||||
Mach-O equivalent. Otherwise return NULL. */
|
||||
|
||||
const mach_o_section_name_xlat *
|
||||
@ -353,12 +353,12 @@ bfd_mach_o_section_data_for_bfd_name (bfd *abfd, const char *bfd_name,
|
||||
return sec;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Convert Mach-O section name to BFD.
|
||||
|
||||
Try to use standard/canonical names, for which we have tables including
|
||||
Try to use standard/canonical names, for which we have tables including
|
||||
default flag settings - which are returned. Otherwise forge a new name
|
||||
in the form "<segmentname>.<sectionname>" this will be prefixed with
|
||||
LC_SEGMENT. if the segment name does not begin with an underscore.
|
||||
@ -380,7 +380,7 @@ bfd_mach_o_convert_section_name_to_bfd (bfd *abfd, const char *segname,
|
||||
*name = NULL;
|
||||
*flags = SEC_NO_FLAGS;
|
||||
|
||||
/* First search for a canonical name...
|
||||
/* First search for a canonical name...
|
||||
xlat will be non-null if there is an entry for segname, secname. */
|
||||
xlat = bfd_mach_o_section_data_for_mach_sect (abfd, segname, secname);
|
||||
if (xlat)
|
||||
@ -423,7 +423,7 @@ bfd_mach_o_convert_section_name_to_bfd (bfd *abfd, const char *segname,
|
||||
return the translation table - which contains defaults for flags,
|
||||
type, attribute and default alignment data.
|
||||
|
||||
Otherwise, expand the bfd_name (assumed to be in the form
|
||||
Otherwise, expand the bfd_name (assumed to be in the form
|
||||
"[LC_SEGMENT.]<segmentname>.<sectionname>") and return NULL. */
|
||||
|
||||
static const mach_o_section_name_xlat *
|
||||
@ -558,11 +558,11 @@ bfd_mach_o_bfd_copy_private_section_data (bfd *ibfd ATTRIBUTE_UNUSED,
|
||||
{
|
||||
if (osection->used_by_bfd == NULL)
|
||||
osection->used_by_bfd = isection->used_by_bfd;
|
||||
else
|
||||
else
|
||||
if (isection->used_by_bfd != NULL)
|
||||
memcpy (osection->used_by_bfd, isection->used_by_bfd,
|
||||
memcpy (osection->used_by_bfd, isection->used_by_bfd,
|
||||
sizeof (bfd_mach_o_section));
|
||||
|
||||
|
||||
if (osection->used_by_bfd != NULL)
|
||||
((bfd_mach_o_section *)osection->used_by_bfd)->bfdsection = osection;
|
||||
|
||||
@ -590,7 +590,7 @@ bfd_mach_o_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
|
||||
/* This allows us to set up to 32 bits of flags (unless we invent some
|
||||
fiendish scheme to subdivide). For now, we'll just set the file flags
|
||||
without error checking - just overwrite. */
|
||||
|
||||
|
||||
bfd_boolean
|
||||
bfd_mach_o_bfd_set_private_flags (bfd *abfd, flagword flags)
|
||||
{
|
||||
@ -706,7 +706,7 @@ bfd_mach_o_get_synthetic_symtab (bfd *abfd,
|
||||
names = (char *) (s + count);
|
||||
nul_name = names;
|
||||
*names++ = 0;
|
||||
|
||||
|
||||
n = 0;
|
||||
for (i = 0; i < mdata->nsects; i++)
|
||||
{
|
||||
@ -714,7 +714,7 @@ bfd_mach_o_get_synthetic_symtab (bfd *abfd,
|
||||
unsigned int first, last;
|
||||
bfd_vma addr;
|
||||
bfd_vma entry_size;
|
||||
|
||||
|
||||
switch (sec->flags & BFD_MACH_O_SECTION_TYPE_MASK)
|
||||
{
|
||||
case BFD_MACH_O_S_NON_LAZY_SYMBOL_POINTERS:
|
||||
@ -733,7 +733,7 @@ bfd_mach_o_get_synthetic_symtab (bfd *abfd,
|
||||
s->section = sec->bfdsection;
|
||||
s->value = addr - sec->addr;
|
||||
s->udata.p = NULL;
|
||||
|
||||
|
||||
if (isym < symtab->nsyms
|
||||
&& symtab->symbols[isym].symbol.name)
|
||||
{
|
||||
@ -989,7 +989,7 @@ bfd_mach_o_swap_in_non_scattered_reloc (bfd *abfd, bfd_mach_o_reloc_info *rel,
|
||||
rel->r_value = (fields[0] << 16) | (fields[1] << 8) | fields[2];
|
||||
rel->r_type = (info >> BFD_MACH_O_BE_TYPE_SHIFT) & BFD_MACH_O_TYPE_MASK;
|
||||
rel->r_pcrel = (info & BFD_MACH_O_BE_PCREL) ? 1 : 0;
|
||||
rel->r_length = (info >> BFD_MACH_O_BE_LENGTH_SHIFT)
|
||||
rel->r_length = (info >> BFD_MACH_O_BE_LENGTH_SHIFT)
|
||||
& BFD_MACH_O_LENGTH_MASK;
|
||||
rel->r_extern = (info & BFD_MACH_O_BE_EXTERN) ? 1 : 0;
|
||||
}
|
||||
@ -998,7 +998,7 @@ bfd_mach_o_swap_in_non_scattered_reloc (bfd *abfd, bfd_mach_o_reloc_info *rel,
|
||||
rel->r_value = (fields[2] << 16) | (fields[1] << 8) | fields[0];
|
||||
rel->r_type = (info >> BFD_MACH_O_LE_TYPE_SHIFT) & BFD_MACH_O_TYPE_MASK;
|
||||
rel->r_pcrel = (info & BFD_MACH_O_LE_PCREL) ? 1 : 0;
|
||||
rel->r_length = (info >> BFD_MACH_O_LE_LENGTH_SHIFT)
|
||||
rel->r_length = (info >> BFD_MACH_O_LE_LENGTH_SHIFT)
|
||||
& BFD_MACH_O_LENGTH_MASK;
|
||||
rel->r_extern = (info & BFD_MACH_O_LE_EXTERN) ? 1 : 0;
|
||||
}
|
||||
@ -1413,7 +1413,7 @@ bfd_mach_o_write_segment_32 (bfd *abfd, bfd_mach_o_load_command *command)
|
||||
bfd_h_put_32 (abfd, seg->initprot, raw.initprot);
|
||||
bfd_h_put_32 (abfd, seg->nsects, raw.nsects);
|
||||
bfd_h_put_32 (abfd, seg->flags, raw.flags);
|
||||
|
||||
|
||||
if (bfd_seek (abfd, command->offset + BFD_MACH_O_LC_SIZE, SEEK_SET) != 0
|
||||
|| bfd_bwrite (&raw, sizeof (raw), abfd) != sizeof (raw))
|
||||
return -1;
|
||||
@ -1495,7 +1495,7 @@ bfd_mach_o_write_symtab (bfd *abfd, bfd_mach_o_load_command *command)
|
||||
{
|
||||
bfd_size_type str_index;
|
||||
bfd_mach_o_asymbol *s = (bfd_mach_o_asymbol *)symbols[i];
|
||||
|
||||
|
||||
if (s->symbol.name == 0 || s->symbol.name[0] == '\0')
|
||||
/* An index of 0 always means the empty string. */
|
||||
str_index = 0;
|
||||
@ -1662,7 +1662,7 @@ bfd_mach_o_write_dysymtab (bfd *abfd, bfd_mach_o_load_command *command)
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (cmd->nindirectsyms > 0)
|
||||
{
|
||||
unsigned int i;
|
||||
@ -1677,7 +1677,7 @@ bfd_mach_o_write_dysymtab (bfd *abfd, bfd_mach_o_load_command *command)
|
||||
bfd_h_put_32 (abfd, cmd->indirect_syms[i], &raw);
|
||||
if (bfd_bwrite (raw, sizeof (raw), abfd) != sizeof (raw))
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (cmd->nextrefsyms != 0)
|
||||
@ -1858,7 +1858,7 @@ bfd_mach_o_mangle_symbols (bfd *abfd)
|
||||
}
|
||||
else
|
||||
s->n_type = BFD_MACH_O_N_SECT;
|
||||
|
||||
|
||||
if (s->symbol.flags & BSF_GLOBAL)
|
||||
s->n_type |= BFD_MACH_O_N_EXT;
|
||||
}
|
||||
@ -1899,7 +1899,7 @@ bfd_mach_o_mangle_sections (bfd *abfd, bfd_mach_o_data_struct *mdata)
|
||||
unsigned nsect;
|
||||
|
||||
nsect = bfd_count_sections (abfd);
|
||||
|
||||
|
||||
/* Don't do it if it's already set - assume the application knows what it's
|
||||
doing. */
|
||||
if (mdata->nsects == nsect
|
||||
@ -1907,7 +1907,7 @@ bfd_mach_o_mangle_sections (bfd *abfd, bfd_mach_o_data_struct *mdata)
|
||||
return TRUE;
|
||||
|
||||
mdata->nsects = nsect;
|
||||
mdata->sections = bfd_alloc (abfd,
|
||||
mdata->sections = bfd_alloc (abfd,
|
||||
mdata->nsects * sizeof (bfd_mach_o_section *));
|
||||
if (mdata->sections == NULL)
|
||||
return FALSE;
|
||||
@ -1918,7 +1918,7 @@ bfd_mach_o_mangle_sections (bfd *abfd, bfd_mach_o_data_struct *mdata)
|
||||
" maximum is 255,\n"), nsect);
|
||||
|
||||
/* Create Mach-O sections.
|
||||
Section type, attribute and align should have been set when the
|
||||
Section type, attribute and align should have been set when the
|
||||
section was created - either read in or specified. */
|
||||
target_index = 0;
|
||||
for (sec = abfd->sections; sec; sec = sec->next)
|
||||
@ -1931,7 +1931,7 @@ bfd_mach_o_mangle_sections (bfd *abfd, bfd_mach_o_data_struct *mdata)
|
||||
msect->addr = bfd_get_section_vma (abfd, sec);
|
||||
msect->size = bfd_get_section_size (sec);
|
||||
|
||||
/* Use the largest alignment set, in case it was bumped after the
|
||||
/* Use the largest alignment set, in case it was bumped after the
|
||||
section was created. */
|
||||
msect->align = msect->align > bfd_align ? msect->align : bfd_align;
|
||||
|
||||
@ -2059,15 +2059,15 @@ bfd_mach_o_set_section_flags_from_bfd (bfd *abfd ATTRIBUTE_UNUSED, asection *sec
|
||||
/* Count the number of sections in the list for the segment named.
|
||||
|
||||
The special case of NULL or "" for the segment name is valid for
|
||||
an MH_OBJECT file and means 'all sections available'.
|
||||
|
||||
Requires that the sections table in mdata be filled in.
|
||||
an MH_OBJECT file and means 'all sections available'.
|
||||
|
||||
Requires that the sections table in mdata be filled in.
|
||||
|
||||
Returns the number of sections (0 is valid).
|
||||
Any number > 255 signals an invalid section count, although we will,
|
||||
perhaps, allow the file to be written (in line with Darwin tools up
|
||||
to XCode 4).
|
||||
|
||||
to XCode 4).
|
||||
|
||||
A section count of (unsigned long) -1 signals a definite error. */
|
||||
|
||||
static unsigned long
|
||||
@ -2122,11 +2122,11 @@ bfd_mach_o_build_seg_command (const char *segment,
|
||||
seg->sect_head = NULL;
|
||||
seg->sect_tail = NULL;
|
||||
|
||||
/* Append sections to the segment.
|
||||
/* Append sections to the segment.
|
||||
|
||||
This is a little tedious, we have to honor the need to account zerofill
|
||||
sections after all the rest. This forces us to do the calculation of
|
||||
total vmsize in three passes so that any alignment increments are
|
||||
total vmsize in three passes so that any alignment increments are
|
||||
properly accounted. */
|
||||
|
||||
for (i = 0; i < mdata->nsects; ++i)
|
||||
@ -2136,7 +2136,7 @@ bfd_mach_o_build_seg_command (const char *segment,
|
||||
|
||||
/* If we're not making an MH_OBJECT, check whether this section is from
|
||||
our segment, and skip if not. Otherwise, just add all sections. */
|
||||
if (! is_mho
|
||||
if (! is_mho
|
||||
&& strncmp (segment, s->segname, BFD_MACH_O_SEGNAME_SIZE) != 0)
|
||||
continue;
|
||||
|
||||
@ -2144,11 +2144,11 @@ bfd_mach_o_build_seg_command (const char *segment,
|
||||
placed in the file in source sequence. */
|
||||
bfd_mach_o_append_section_to_segment (seg, sec);
|
||||
s->offset = 0;
|
||||
|
||||
/* Zerofill sections have zero file size & offset,
|
||||
|
||||
/* Zerofill sections have zero file size & offset,
|
||||
and are not written. */
|
||||
if ((s->flags & BFD_MACH_O_SECTION_TYPE_MASK) == BFD_MACH_O_S_ZEROFILL
|
||||
|| (s->flags & BFD_MACH_O_SECTION_TYPE_MASK)
|
||||
|| (s->flags & BFD_MACH_O_SECTION_TYPE_MASK)
|
||||
== BFD_MACH_O_S_GB_ZEROFILL)
|
||||
continue;
|
||||
|
||||
@ -2176,7 +2176,7 @@ bfd_mach_o_build_seg_command (const char *segment,
|
||||
if ((s->flags & BFD_MACH_O_SECTION_TYPE_MASK) != BFD_MACH_O_S_ZEROFILL)
|
||||
continue;
|
||||
|
||||
if (! is_mho
|
||||
if (! is_mho
|
||||
&& strncmp (segment, s->segname, BFD_MACH_O_SEGNAME_SIZE) != 0)
|
||||
continue;
|
||||
|
||||
@ -2191,11 +2191,11 @@ bfd_mach_o_build_seg_command (const char *segment,
|
||||
for (i = 0; i < mdata->nsects; ++i)
|
||||
{
|
||||
bfd_mach_o_section *s = mdata->sections[i];
|
||||
|
||||
|
||||
if ((s->flags & BFD_MACH_O_SECTION_TYPE_MASK) != BFD_MACH_O_S_GB_ZEROFILL)
|
||||
continue;
|
||||
|
||||
if (! is_mho
|
||||
if (! is_mho
|
||||
&& strncmp (segment, s->segname, BFD_MACH_O_SEGNAME_SIZE) != 0)
|
||||
continue;
|
||||
|
||||
@ -2213,7 +2213,7 @@ bfd_mach_o_build_seg_command (const char *segment,
|
||||
{
|
||||
bfd_mach_o_section *ms = mdata->sections[i];
|
||||
asection *sec = ms->bfdsection;
|
||||
|
||||
|
||||
if ((ms->nreloc = sec->reloc_count) == 0)
|
||||
{
|
||||
ms->reloff = 0;
|
||||
@ -2297,8 +2297,8 @@ bfd_mach_o_build_dysymtab_command (bfd *abfd,
|
||||
}
|
||||
dsym->nextdefsym = i - dsym->nlocalsym;
|
||||
dsym->iundefsym = dsym->nextdefsym + dsym->iextdefsym;
|
||||
dsym->nundefsym = bfd_get_symcount (abfd)
|
||||
- dsym->nlocalsym
|
||||
dsym->nundefsym = bfd_get_symcount (abfd)
|
||||
- dsym->nlocalsym
|
||||
- dsym->nextdefsym;
|
||||
}
|
||||
else
|
||||
@ -2319,11 +2319,11 @@ bfd_mach_o_build_dysymtab_command (bfd *abfd,
|
||||
mdata->filelen = FILE_ALIGN (mdata->filelen, 2);
|
||||
dsym->indirectsymoff = mdata->filelen;
|
||||
mdata->filelen += dsym->nindirectsyms * 4;
|
||||
|
||||
|
||||
dsym->indirect_syms = bfd_zalloc (abfd, dsym->nindirectsyms * 4);
|
||||
if (dsym->indirect_syms == NULL)
|
||||
return FALSE;
|
||||
|
||||
|
||||
n = 0;
|
||||
for (i = 0; i < mdata->nsects; ++i)
|
||||
{
|
||||
@ -2337,7 +2337,7 @@ bfd_mach_o_build_dysymtab_command (bfd *abfd,
|
||||
{
|
||||
unsigned j, num;
|
||||
bfd_mach_o_asymbol **isyms = sec->indirect_syms;
|
||||
|
||||
|
||||
num = bfd_mach_o_section_get_nbr_indirect (abfd, sec);
|
||||
if (isyms == NULL || num == 0)
|
||||
break;
|
||||
@ -2413,7 +2413,7 @@ bfd_mach_o_build_commands (bfd *abfd)
|
||||
|
||||
a command (segment) to contain all the sections,
|
||||
command for the symbol table,
|
||||
a command for the dysymtab.
|
||||
a command for the dysymtab.
|
||||
|
||||
??? maybe we should assert that this is an MH_OBJECT? */
|
||||
|
||||
@ -2459,7 +2459,7 @@ bfd_mach_o_build_commands (bfd *abfd)
|
||||
return FALSE;
|
||||
|
||||
if (segcmd_idx >= 0)
|
||||
{
|
||||
{
|
||||
bfd_mach_o_load_command *cmd = &mdata->commands[segcmd_idx];
|
||||
bfd_mach_o_segment_command *seg = &cmd->command.segment;
|
||||
|
||||
@ -2492,7 +2492,7 @@ bfd_mach_o_build_commands (bfd *abfd)
|
||||
{
|
||||
/* Init symtab command. */
|
||||
bfd_mach_o_load_command *cmd = &mdata->commands[symtab_idx];
|
||||
|
||||
|
||||
cmd->type = BFD_MACH_O_LC_SYMTAB;
|
||||
cmd->offset = base_offset;
|
||||
if (segcmd_idx >= 0)
|
||||
@ -2513,10 +2513,10 @@ bfd_mach_o_build_commands (bfd *abfd)
|
||||
|
||||
cmd->type = BFD_MACH_O_LC_DYSYMTAB;
|
||||
if (symtab_idx >= 0)
|
||||
cmd->offset = mdata->commands[symtab_idx].offset
|
||||
cmd->offset = mdata->commands[symtab_idx].offset
|
||||
+ mdata->commands[symtab_idx].len;
|
||||
else if (segcmd_idx >= 0)
|
||||
cmd->offset = mdata->commands[segcmd_idx].offset
|
||||
cmd->offset = mdata->commands[segcmd_idx].offset
|
||||
+ mdata->commands[segcmd_idx].len;
|
||||
else
|
||||
cmd->offset = base_offset;
|
||||
@ -2532,13 +2532,13 @@ bfd_mach_o_build_commands (bfd *abfd)
|
||||
/* So, now we have sized the commands and the filelen set to that.
|
||||
Now we can build the segment command and set the section file offsets. */
|
||||
if (segcmd_idx >= 0
|
||||
&& ! bfd_mach_o_build_seg_command
|
||||
&& ! bfd_mach_o_build_seg_command
|
||||
(NULL, mdata, &mdata->commands[segcmd_idx].command.segment))
|
||||
return FALSE;
|
||||
|
||||
/* If we're doing a dysymtab, cmd points to its load command. */
|
||||
if (dysymtab_idx >= 0
|
||||
&& ! bfd_mach_o_build_dysymtab_command (abfd, mdata,
|
||||
&& ! bfd_mach_o_build_dysymtab_command (abfd, mdata,
|
||||
&mdata->commands[dysymtab_idx]))
|
||||
return FALSE;
|
||||
|
||||
@ -2691,7 +2691,7 @@ bfd_mach_o_new_section_hook (bfd *abfd, asection *sec)
|
||||
if (xlat != NULL)
|
||||
{
|
||||
s->flags = xlat->macho_sectype | xlat->macho_secattr;
|
||||
s->align = xlat->sectalign > bfdalign ? xlat->sectalign
|
||||
s->align = xlat->sectalign > bfdalign ? xlat->sectalign
|
||||
: bfdalign;
|
||||
bfd_set_section_alignment (abfd, sec, s->align);
|
||||
bfd_flags = bfd_get_section_flags (abfd, sec);
|
||||
@ -4947,7 +4947,7 @@ bfd_boolean bfd_mach_o_free_cached_info (bfd *abfd)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#define bfd_mach_o_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_lookup
|
||||
#define bfd_mach_o_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_lookup
|
||||
#define bfd_mach_o_bfd_reloc_name_lookup _bfd_norelocs_bfd_reloc_name_lookup
|
||||
|
||||
#define bfd_mach_o_swap_reloc_in NULL
|
||||
|
@ -619,7 +619,7 @@ bfd_boolean bfd_mach_o_bfd_copy_private_bfd_data (bfd *, bfd *);
|
||||
bfd_boolean bfd_mach_o_bfd_set_private_flags (bfd *, flagword);
|
||||
long bfd_mach_o_get_symtab_upper_bound (bfd *);
|
||||
long bfd_mach_o_canonicalize_symtab (bfd *, asymbol **);
|
||||
long bfd_mach_o_get_synthetic_symtab (bfd *, long, asymbol **, long,
|
||||
long bfd_mach_o_get_synthetic_symtab (bfd *, long, asymbol **, long,
|
||||
asymbol **, asymbol **ret);
|
||||
long bfd_mach_o_get_reloc_upper_bound (bfd *, asection *);
|
||||
long bfd_mach_o_canonicalize_reloc (bfd *, asection *, arelent **, asymbol **);
|
||||
|
@ -363,7 +363,7 @@ static void mmo_find_sec_w_addr (bfd *, asection *, void *);
|
||||
static void mmo_find_sec_w_addr_grow (bfd *, asection *, void *);
|
||||
static asection *mmo_make_section (bfd *, const char *);
|
||||
static void mmo_get_symbol_info (bfd *, asymbol *, symbol_info *);
|
||||
static void mmo_print_symbol (bfd *, void *, asymbol *,
|
||||
static void mmo_print_symbol (bfd *, void *, asymbol *,
|
||||
bfd_print_symbol_type);
|
||||
static void mmo_init (void);
|
||||
static bfd_boolean mmo_mkobject (bfd *);
|
||||
|
@ -186,7 +186,7 @@ DESCRIPTION
|
||||
Return a pointer to the created BFD. If @var{fd} is not -1,
|
||||
then <<fdopen>> is used to open the file; otherwise, <<fopen>>
|
||||
is used. @var{mode} is passed directly to <<fopen>> or
|
||||
<<fdopen>>.
|
||||
<<fdopen>>.
|
||||
|
||||
Calls <<bfd_find_target>>, so @var{target} is interpreted as by
|
||||
that function.
|
||||
@ -222,7 +222,7 @@ bfd_fopen (const char *filename, const char *target, const char *mode, int fd)
|
||||
_bfd_delete_bfd (nbfd);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
#ifdef HAVE_FDOPEN
|
||||
if (fd != -1)
|
||||
nbfd->iostream = fdopen (fd, mode);
|
||||
@ -241,7 +241,7 @@ bfd_fopen (const char *filename, const char *target, const char *mode, int fd)
|
||||
|
||||
/* Figure out whether the user is opening the file for reading,
|
||||
writing, or both, by looking at the MODE argument. */
|
||||
if ((mode[0] == 'r' || mode[0] == 'w' || mode[0] == 'a')
|
||||
if ((mode[0] == 'r' || mode[0] == 'w' || mode[0] == 'a')
|
||||
&& mode[1] == '+')
|
||||
nbfd->direction = both_direction;
|
||||
else if (mode[0] == 'r')
|
||||
|
@ -340,7 +340,7 @@ pdp11_aout_write_headers (bfd *abfd, struct internal_exec *execp)
|
||||
if (bfd_seek (abfd, (file_ptr) (N_TRELOFF(*execp)), SEEK_SET) != 0
|
||||
|| !NAME (aout, squirt_out_relocs) (abfd, obj_textsec (abfd))
|
||||
|| bfd_seek (abfd, (file_ptr) (N_DRELOFF(*execp)), SEEK_SET) != 0
|
||||
|| !NAME (aout, squirt_out_relocs) (abfd, obj_datasec (abfd)))
|
||||
|| !NAME (aout, squirt_out_relocs) (abfd, obj_datasec (abfd)))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA.
|
||||
|
||||
|
||||
Written by Kai Tietz, OneVision Software GmbH&CoKg. */
|
||||
|
||||
#include "sysdep.h"
|
||||
|
@ -2439,7 +2439,7 @@ _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo)
|
||||
/* According to PECOFF sepcifications by Microsoft version 8.2
|
||||
the TLS data directory consists of 4 pointers, followed
|
||||
by two 4-byte integer. This implies that the total size
|
||||
is different for 32-bit and 64-bit executables. */
|
||||
is different for 32-bit and 64-bit executables. */
|
||||
#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
|
||||
pe_data (abfd)->pe_opthdr.DataDirectory[PE_TLS_TABLE].Size = 0x18;
|
||||
#else
|
||||
|
@ -15,7 +15,7 @@
|
||||
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
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
@ -26,12 +26,12 @@
|
||||
sys/debug.h), which occurs, usually, one per procedure (routine). The table is marked by
|
||||
a multiple of 4 32-bit word of zeroes in the instruction space. The traceback table is
|
||||
also referred to as "procedure-end table".
|
||||
|
||||
|
||||
The AIX traceback table representation on which this header is based is defined as a
|
||||
series of bit field struct specifications. Bit fields are compiler dependent! Thus,
|
||||
the definitions presented here follow the original header and the existing documentation
|
||||
(such as it is), but define the fields as BIT MASKS and other macros. The mask names,
|
||||
however, where chosen as the original field names to give some compatibility with the
|
||||
however, where chosen as the original field names to give some compatibility with the
|
||||
original header and to agree with the documentation. */
|
||||
|
||||
#ifndef __TRACEBACK__
|
||||
@ -50,7 +50,7 @@
|
||||
#define TB_RPG 10U /* RPG */
|
||||
#define TB_PL8 11U /* PL8 */
|
||||
#define TB_ASM 12U /* Asm */
|
||||
|
||||
|
||||
/* Flags 1. */
|
||||
|
||||
#define TB_GLOBALLINK 0x80U /* Routine is Global Linkage. */
|
||||
@ -59,9 +59,9 @@
|
||||
#define TB_INT_PROC 0x10U /* Internal leaf routine. */
|
||||
#define TB_HAS_CTL 0x08U /* Has controlled automatic storage. */
|
||||
#define TB_TOCLESS 0X04U /* Routine has no TOC. */
|
||||
#define TB_FP_PRESENT 0x02U /* Routine has floating point ops. */
|
||||
#define TB_FP_PRESENT 0x02U /* Routine has floating point ops. */
|
||||
#define TB_LOG_ABORT 0x01U /* fp_present && log/abort compiler opt. */
|
||||
|
||||
|
||||
/* Flags 2. */
|
||||
|
||||
#define TB_INT_HNDL 0x80U /* Routine is an interrupt handler. */
|
||||
@ -70,15 +70,15 @@
|
||||
#define TB_CL_DIS_inv 0x1CU /* On-condition directives (see below). */
|
||||
#define TB_SAVES_CR 0x02U /* Routine saves the CR. */
|
||||
#define TB_SAVES_LR 0x01U /* Routine saves the LR. */
|
||||
|
||||
|
||||
/* cl_dis_inv "on condition" settings: */
|
||||
|
||||
|
||||
#define TB_CL_DIS_INV(x) (((x) & cl_dis_inv) >> 2U)
|
||||
|
||||
#define TB_WALK_ONCOND 0U /* Walk stack without restoring state. */
|
||||
#define TB_DISCARD_ONCOND 1U /* Walk stack and discard. */
|
||||
#define TB_INVOKE_ONCOND 2U /* Invoke a specific system routine. */
|
||||
|
||||
|
||||
/* Flags 3. */
|
||||
|
||||
#define TB_STORES_BC 0x80U /* Routine saves frame ptr of caller. */
|
||||
@ -87,7 +87,7 @@
|
||||
/* (Last reg saved is ALWAYS fpr31). */
|
||||
|
||||
#define TB_NUM_FPR_SAVED(x) ((x) & fpr_saved)
|
||||
|
||||
|
||||
/* Flags 4. */
|
||||
|
||||
#define TB_HAS_VEC_INFO 0x80U /* Routine uses vectors. */
|
||||
@ -96,12 +96,12 @@
|
||||
/* (Last reg saved is ALWAYS gpr31). */
|
||||
|
||||
#define TB_NUM_GPR_SAVED(x) ((x) & gpr_saved)
|
||||
|
||||
|
||||
/* Flags 5. */
|
||||
|
||||
#define TB_FLOATPARAMS 0xfeU /* Number of floating point parameters. */
|
||||
#define TB_PARAMSONSTK 0X01U /* All parameters are on the stack. */
|
||||
|
||||
|
||||
#define TB_NUM_FLOATPARAMS(X) (((x) & floatparams) >> 1U)
|
||||
|
||||
/* Traceback_table (fixed portion). */
|
||||
@ -133,7 +133,7 @@ struct traceback_table
|
||||
/* Order and type encoding of parameters: */
|
||||
struct traceback_table_fixedparams
|
||||
{
|
||||
unsigned long paraminfo;
|
||||
unsigned long paraminfo;
|
||||
};
|
||||
|
||||
/* Left-justified bit-encoding as follows: */
|
||||
@ -169,7 +169,7 @@ struct traceback_table_interrupts
|
||||
/* Controlled automatic storage info: */
|
||||
struct traceback_table_anchors
|
||||
{
|
||||
unsigned long ctl_info; /* Number of controlled automatic anchors. */
|
||||
unsigned long ctl_info; /* Number of controlled automatic anchors. */
|
||||
long ctl_info_disp[1]; /* Array of stack displacements where each. */
|
||||
}; /* Anchor is located (array STARTS here). */
|
||||
|
||||
@ -205,12 +205,12 @@ struct traceback_table_vector
|
||||
#define TB_HAS_VARARGS 0x01U /* Routine has a variable argument list. */
|
||||
|
||||
#define TB_NUM_VR_SAVED(x) (((x) & TB_VR_SAVED) >> 2U)
|
||||
|
||||
|
||||
unsigned char vec_flags2; /* Vec info bits #2: */
|
||||
|
||||
#define TB_VECTORPARAMS 0xfeU /* Number of vector parameters. */
|
||||
#define TB_VEC_PRESENT 0x01U /* Routine uses at least one vec instr. */
|
||||
|
||||
|
||||
#define VECPARAMS(x) (((x) & TB_VECTORPARAMS) >> 1U)
|
||||
};
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA.
|
||||
|
||||
|
||||
Written by Kai Tietz, OneVision Software GmbH&CoKg. */
|
||||
|
||||
#include "sysdep.h"
|
||||
@ -384,7 +384,7 @@ pex64_dump_xdata (FILE *file, bfd *abfd, bfd_vma addr, bfd_vma pc_addr,
|
||||
: pex_regs[(unsigned int) ui.FrameRegister]);
|
||||
|
||||
pex64_xdata_print_uwd_codes (file, &ui, pc_addr);
|
||||
|
||||
|
||||
/* Now we need end of this xdata block. */
|
||||
addr += ui.SizeOfBlock;
|
||||
if (addr < end_addr)
|
||||
|
@ -149,7 +149,7 @@ coff_swap_reloc_out (bfd * abfd, void * src, void * dst)
|
||||
H_PUT_32 (abfd, reloc_src->r_symndx, reloc_dst->r_symndx);
|
||||
H_PUT_16 (abfd, reloc_src->r_type, reloc_dst->r_type);
|
||||
|
||||
#ifdef SWAP_OUT_RELOC_OFFSET
|
||||
#ifdef SWAP_OUT_RELOC_OFFSET
|
||||
SWAP_OUT_RELOC_OFFSET (abfd, reloc_src->r_offset, reloc_dst->r_offset);
|
||||
#endif
|
||||
#ifdef SWAP_OUT_RELOC_EXTRA
|
||||
@ -350,7 +350,7 @@ pe_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
|
||||
&& pe_data (ibfd) != NULL
|
||||
&& pe_data (ibfd)->real_flags & IMAGE_FILE_LARGE_ADDRESS_AWARE)
|
||||
pe_data (obfd)->real_flags |= IMAGE_FILE_LARGE_ADDRESS_AWARE;
|
||||
|
||||
|
||||
if (!_bfd_XX_bfd_copy_private_bfd_data_common (ibfd, obfd))
|
||||
return FALSE;
|
||||
|
||||
@ -885,14 +885,14 @@ pe_ILF_build_a_bfd (bfd * abfd,
|
||||
if (import_name_type != IMPORT_NAME)
|
||||
{
|
||||
char c = symbol[0];
|
||||
|
||||
|
||||
/* Check that we don't remove for targets with empty
|
||||
USER_LABEL_PREFIX the leading underscore. */
|
||||
if ((c == '_' && abfd->xvec->symbol_leading_char != 0)
|
||||
|| c == '@' || c == '?')
|
||||
symbol++;
|
||||
}
|
||||
|
||||
|
||||
len = strlen (symbol);
|
||||
if (import_name_type == IMPORT_NAME_UNDECORATE)
|
||||
{
|
||||
|
@ -400,7 +400,7 @@ static flagword
|
||||
convert_flags (const struct ld_plugin_symbol *sym)
|
||||
{
|
||||
switch (sym->def)
|
||||
{
|
||||
{
|
||||
case LDPK_DEF:
|
||||
case LDPK_COMMON:
|
||||
case LDPK_UNDEF:
|
||||
@ -432,7 +432,7 @@ bfd_plugin_canonicalize_symtab (bfd *abfd,
|
||||
|
||||
for (i = 0; i < nsyms; i++)
|
||||
{
|
||||
asymbol *s = bfd_alloc (abfd, sizeof (asymbol));
|
||||
asymbol *s = bfd_alloc (abfd, sizeof (asymbol));
|
||||
|
||||
BFD_ASSERT (s);
|
||||
alocation[i] = s;
|
||||
|
74
bfd/reloc.c
74
bfd/reloc.c
@ -3910,87 +3910,87 @@ ENUM
|
||||
BFD_RELOC_V850_16_PCREL
|
||||
ENUMDOC
|
||||
This is a 16-bit reloc.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_17_PCREL
|
||||
ENUMDOC
|
||||
This is a 17-bit reloc.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_23
|
||||
ENUMDOC
|
||||
This is a 23-bit reloc.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_32_PCREL
|
||||
ENUMDOC
|
||||
This is a 32-bit reloc.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_32_ABS
|
||||
ENUMDOC
|
||||
This is a 32-bit reloc.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_16_SPLIT_OFFSET
|
||||
ENUMDOC
|
||||
This is a 16-bit reloc.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_16_S1
|
||||
ENUMDOC
|
||||
This is a 16-bit reloc.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_LO16_S1
|
||||
ENUMDOC
|
||||
Low 16 bits. 16 bit shifted by 1.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_CALLT_15_16_OFFSET
|
||||
ENUMDOC
|
||||
This is a 16 bit offset from the call table base pointer.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_32_GOTPCREL
|
||||
ENUMDOC
|
||||
DSO relocations.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_16_GOT
|
||||
ENUMDOC
|
||||
DSO relocations.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_32_GOT
|
||||
ENUMDOC
|
||||
DSO relocations.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_22_PLT_PCREL
|
||||
ENUMDOC
|
||||
DSO relocations.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_32_PLT_PCREL
|
||||
ENUMDOC
|
||||
DSO relocations.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_COPY
|
||||
ENUMDOC
|
||||
DSO relocations.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_GLOB_DAT
|
||||
ENUMDOC
|
||||
DSO relocations.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_JMP_SLOT
|
||||
ENUMDOC
|
||||
DSO relocations.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_RELATIVE
|
||||
ENUMDOC
|
||||
DSO relocations.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_16_GOTOFF
|
||||
ENUMDOC
|
||||
DSO relocations.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_32_GOTOFF
|
||||
ENUMDOC
|
||||
DSO relocations.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_CODE
|
||||
ENUMDOC
|
||||
start code.
|
||||
ENUM
|
||||
ENUM
|
||||
BFD_RELOC_V850_DATA
|
||||
ENUMDOC
|
||||
start data in text.
|
||||
@ -4415,7 +4415,7 @@ ENUMDOC
|
||||
ENUM
|
||||
BFD_RELOC_AVR_LO8_LDI_GS
|
||||
ENUMDOC
|
||||
This is a 16 bit reloc for the AVR that stores 8 bit value
|
||||
This is a 16 bit reloc for the AVR that stores 8 bit value
|
||||
(command address) into 8 bit immediate value of LDI insn. If the address
|
||||
is beyond the 128k boundary, the linker inserts a jump stub for this reloc
|
||||
in the lower 128k.
|
||||
@ -4781,7 +4781,7 @@ ENUM
|
||||
BFD_RELOC_SCORE_GPREL15
|
||||
ENUMDOC
|
||||
Score relocations
|
||||
Low 16 bit for load/store
|
||||
Low 16 bit for load/store
|
||||
ENUM
|
||||
BFD_RELOC_SCORE_DUMMY2
|
||||
ENUMX
|
||||
@ -4822,7 +4822,7 @@ ENUMX
|
||||
BFD_RELOC_SCORE_DUMMY_HI16
|
||||
ENUMDOC
|
||||
Undocumented Score relocs
|
||||
|
||||
|
||||
ENUM
|
||||
BFD_RELOC_IP2K_FR9
|
||||
ENUMDOC
|
||||
@ -5898,63 +5898,63 @@ ENUMDOC
|
||||
ENUM
|
||||
BFD_RELOC_MICROBLAZE_32_LO
|
||||
ENUMDOC
|
||||
This is a 32 bit reloc for the microblaze that stores the
|
||||
This is a 32 bit reloc for the microblaze that stores the
|
||||
low 16 bits of a value
|
||||
ENUM
|
||||
BFD_RELOC_MICROBLAZE_32_LO_PCREL
|
||||
ENUMDOC
|
||||
This is a 32 bit pc-relative reloc for the microblaze that
|
||||
This is a 32 bit pc-relative reloc for the microblaze that
|
||||
stores the low 16 bits of a value
|
||||
ENUM
|
||||
BFD_RELOC_MICROBLAZE_32_ROSDA
|
||||
ENUMDOC
|
||||
This is a 32 bit reloc for the microblaze that stores a
|
||||
This is a 32 bit reloc for the microblaze that stores a
|
||||
value relative to the read-only small data area anchor
|
||||
ENUM
|
||||
BFD_RELOC_MICROBLAZE_32_RWSDA
|
||||
ENUMDOC
|
||||
This is a 32 bit reloc for the microblaze that stores a
|
||||
This is a 32 bit reloc for the microblaze that stores a
|
||||
value relative to the read-write small data area anchor
|
||||
ENUM
|
||||
BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM
|
||||
ENUMDOC
|
||||
This is a 32 bit reloc for the microblaze to handle
|
||||
This is a 32 bit reloc for the microblaze to handle
|
||||
expressions of the form "Symbol Op Symbol"
|
||||
ENUM
|
||||
BFD_RELOC_MICROBLAZE_64_NONE
|
||||
ENUMDOC
|
||||
This is a 64 bit reloc that stores the 32 bit pc relative
|
||||
value in two words (with an imm instruction). No relocation is
|
||||
This is a 64 bit reloc that stores the 32 bit pc relative
|
||||
value in two words (with an imm instruction). No relocation is
|
||||
done here - only used for relaxing
|
||||
ENUM
|
||||
BFD_RELOC_MICROBLAZE_64_GOTPC
|
||||
ENUMDOC
|
||||
This is a 64 bit reloc that stores the 32 bit pc relative
|
||||
This is a 64 bit reloc that stores the 32 bit pc relative
|
||||
value in two words (with an imm instruction). The relocation is
|
||||
PC-relative GOT offset
|
||||
ENUM
|
||||
BFD_RELOC_MICROBLAZE_64_GOT
|
||||
ENUMDOC
|
||||
This is a 64 bit reloc that stores the 32 bit pc relative
|
||||
This is a 64 bit reloc that stores the 32 bit pc relative
|
||||
value in two words (with an imm instruction). The relocation is
|
||||
GOT offset
|
||||
ENUM
|
||||
BFD_RELOC_MICROBLAZE_64_PLT
|
||||
ENUMDOC
|
||||
This is a 64 bit reloc that stores the 32 bit pc relative
|
||||
This is a 64 bit reloc that stores the 32 bit pc relative
|
||||
value in two words (with an imm instruction). The relocation is
|
||||
PC-relative offset into PLT
|
||||
ENUM
|
||||
BFD_RELOC_MICROBLAZE_64_GOTOFF
|
||||
ENUMDOC
|
||||
This is a 64 bit reloc that stores the 32 bit GOT relative
|
||||
This is a 64 bit reloc that stores the 32 bit GOT relative
|
||||
value in two words (with an imm instruction). The relocation is
|
||||
relative offset from _GLOBAL_OFFSET_TABLE_
|
||||
ENUM
|
||||
BFD_RELOC_MICROBLAZE_32_GOTOFF
|
||||
ENUMDOC
|
||||
This is a 32 bit reloc that stores the 32 bit GOT relative
|
||||
value in a word. The relocation is relative offset from
|
||||
This is a 32 bit reloc that stores the 32 bit GOT relative
|
||||
value in a word. The relocation is relative offset from
|
||||
_GLOBAL_OFFSET_TABLE_
|
||||
ENUM
|
||||
BFD_RELOC_MICROBLAZE_COPY
|
||||
|
@ -45,7 +45,7 @@
|
||||
/* A reference to a shared library.
|
||||
The text portion of the object contains "overflow text" from
|
||||
the shared library to be linked in with an object. */
|
||||
#define SLOMAGIC (MF_IS_SL | OMAGIC)
|
||||
#define SLOMAGIC (MF_IS_SL | OMAGIC)
|
||||
|
||||
/* Sqeezed demand paged.
|
||||
NOTE: This interpretation of QMAGIC seems to be at variance
|
||||
|
@ -532,12 +532,12 @@ CODE_FRAGMENT
|
||||
.} asection;
|
||||
.
|
||||
.{* Relax table contains information about instructions which can
|
||||
. be removed by relaxation -- replacing a long address with a
|
||||
. be removed by relaxation -- replacing a long address with a
|
||||
. short address. *}
|
||||
.struct relax_table {
|
||||
. {* Address where bytes may be deleted. *}
|
||||
. bfd_vma addr;
|
||||
.
|
||||
.
|
||||
. {* Number of bytes to be deleted. *}
|
||||
. int size;
|
||||
.};
|
||||
@ -1545,7 +1545,7 @@ bfd_get_section_contents (bfd *abfd,
|
||||
bfd_set_error (bfd_error_invalid_operation);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
memmove (location, section->contents + offset, (size_t) count);
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -2496,7 +2496,7 @@ som_object_p (bfd *abfd)
|
||||
{
|
||||
struct som_external_exec_auxhdr ext_exec_auxhdr;
|
||||
|
||||
aux_hdr_ptr = bfd_zalloc (abfd,
|
||||
aux_hdr_ptr = bfd_zalloc (abfd,
|
||||
(bfd_size_type) sizeof (*aux_hdr_ptr));
|
||||
if (aux_hdr_ptr == NULL)
|
||||
return NULL;
|
||||
@ -5746,9 +5746,9 @@ som_find_nearest_line (bfd *abfd,
|
||||
low_func = 0;
|
||||
|
||||
for (p = symbols; *p != NULL; p++)
|
||||
{
|
||||
{
|
||||
som_symbol_type *q = (som_symbol_type *) *p;
|
||||
|
||||
|
||||
if (q->som_type == SYMBOL_TYPE_ENTRY
|
||||
&& q->symbol.section == section
|
||||
&& q->symbol.value >= low_func
|
||||
|
@ -77,7 +77,7 @@ SUBSECTION
|
||||
|
|
||||
| if (storage_needed == 0)
|
||||
| return;
|
||||
|
|
||||
|
|
||||
| symbol_table = xmalloc (storage_needed);
|
||||
| ...
|
||||
| number_of_symbols =
|
||||
@ -1008,7 +1008,7 @@ _bfd_stab_section_find_nearest_line (bfd *abfd,
|
||||
/* Try SOM section names. */
|
||||
info->stabsec = bfd_get_section_by_name (abfd, "$GDB_SYMBOLS$");
|
||||
info->strsec = bfd_get_section_by_name (abfd, "$GDB_STRINGS$");
|
||||
|
||||
|
||||
if (info->stabsec == NULL || info->strsec == NULL)
|
||||
{
|
||||
/* No stabs debugging information. Set *pinfo so that we
|
||||
|
@ -297,7 +297,7 @@ getsym (char *dstp, char **srcp, unsigned int *lenp)
|
||||
char *src = *srcp;
|
||||
unsigned int i;
|
||||
unsigned int len;
|
||||
|
||||
|
||||
if (!ISHEX (*src))
|
||||
return FALSE;
|
||||
|
||||
|
10
bfd/ticoff.h
10
bfd/ticoff.h
@ -46,7 +46,7 @@ ticoff1_bad_format_hook (bfd * abfd ATTRIBUTE_UNUSED,
|
||||
|
||||
/* Replace the stock _bfd_coff_is_local_label_name
|
||||
to recognize TI COFF local labels. */
|
||||
static bfd_boolean
|
||||
static bfd_boolean
|
||||
ticoff_bfd_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
const char *name)
|
||||
{
|
||||
@ -57,15 +57,15 @@ ticoff_bfd_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
|
||||
#define coff_bfd_is_local_label_name ticoff_bfd_is_local_label_name
|
||||
|
||||
/* Customize coffcode.h; the default coff_ functions are set up to use COFF2;
|
||||
/* Customize coffcode.h; the default coff_ functions are set up to use COFF2;
|
||||
coff_bad_format_hook uses BADMAG, so set that for COFF2. The COFF1
|
||||
and COFF0 vectors use custom _bad_format_hook procs instead of setting
|
||||
BADMAG. */
|
||||
BADMAG. */
|
||||
#define BADMAG(x) COFF2_BADMAG(x)
|
||||
#include "coffcode.h"
|
||||
|
||||
/* COFF0 differs in file/section header size and relocation entry size. */
|
||||
static bfd_coff_backend_data ticoff0_swap_table =
|
||||
static bfd_coff_backend_data ticoff0_swap_table =
|
||||
{
|
||||
coff_SWAP_aux_in, coff_SWAP_sym_in, coff_SWAP_lineno_in,
|
||||
coff_SWAP_aux_out, coff_SWAP_sym_out,
|
||||
@ -93,7 +93,7 @@ static bfd_coff_backend_data ticoff0_swap_table =
|
||||
};
|
||||
|
||||
/* COFF1 differs in section header size. */
|
||||
static bfd_coff_backend_data ticoff1_swap_table =
|
||||
static bfd_coff_backend_data ticoff1_swap_table =
|
||||
{
|
||||
coff_SWAP_aux_in, coff_SWAP_sym_in, coff_SWAP_lineno_in,
|
||||
coff_SWAP_aux_out, coff_SWAP_sym_out,
|
||||
|
@ -25,8 +25,8 @@
|
||||
#define SEGMENT_SIZE TARGET_PAGE_SIZE
|
||||
#define DEFAULT_ARCH bfd_arch_vax
|
||||
|
||||
/* Do not "beautify" the CONCAT* macro args. Traditional C will not
|
||||
remove whitespace added here, and thus will fail to concatenate the
|
||||
/* Do not "beautify" the CONCAT* macro args. Traditional C will not
|
||||
remove whitespace added here, and thus will fail to concatenate the
|
||||
tokens. */
|
||||
#define MY(OP) CONCAT2 (vaxbsd_,OP)
|
||||
|
||||
|
@ -148,7 +148,7 @@ struct xcoff_link_hash_table
|
||||
struct xcoff_link_size_list *next;
|
||||
struct xcoff_link_hash_entry *h;
|
||||
bfd_size_type size;
|
||||
}
|
||||
}
|
||||
*size_list;
|
||||
|
||||
/* Information about archives. */
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user