diff options
author | Alan Modra <amodra@gmail.com> | 2017-12-06 09:26:00 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2017-12-06 17:51:43 +1030 |
commit | 07d6d2b8345ef3dc82eab49635acac9ee67dbb18 (patch) | |
tree | 380d1e08ae32b2a37d5f9610f1811bb98299ac09 /bfd/elf32-m32r.c | |
parent | 65281396861dfcfa993eb5af4769d6837104890d (diff) | |
download | gdb-07d6d2b8345ef3dc82eab49635acac9ee67dbb18.zip gdb-07d6d2b8345ef3dc82eab49635acac9ee67dbb18.tar.gz gdb-07d6d2b8345ef3dc82eab49635acac9ee67dbb18.tar.bz2 |
BFD whitespace fixes
Binutils is supposed to use tabs. In my git config I have
whitespace = indent-with-non-tab,space-before-tab,trailing-space
and I got annoyed enough seeing red in "git diff" output to fix
the problems.
* doc/header.sed: Trim trailing space when splitting lines.
* aix386-core.c, * aout-adobe.c, * aout-arm.c, * aout-cris.c,
* aout-ns32k.c, * aout-target.h, * aout-tic30.c, * aoutf1.h, * aoutx.h,
* arc-got.h, * arc-plt.def, * arc-plt.h, * archive.c, * archive64.c,
* archures.c, * armnetbsd.c, * bfd-in.h, * bfd.c, * bfdio.c, * binary.c,
* bout.c, * cache.c, * cisco-core.c, * coff-alpha.c, * coff-apollo.c,
* coff-arm.c, * coff-h8300.c, * coff-i386.c, * coff-i860.c,
* coff-i960.c, * coff-m68k.c, * coff-m88k.c, * coff-mcore.c,
* coff-mips.c, * coff-ppc.c, * coff-rs6000.c, * coff-sh.c,
* coff-stgo32.c, * coff-tic4x.c, * coff-tic54x.c, * coff-tic80.c,
* coff-we32k.c, * coff-x86_64.c, * coff-z80.c, * coff-z8k.c,
* coff64-rs6000.c, * coffcode.h, * coffgen.c, * cofflink.c,
* coffswap.h, * compress.c, * corefile.c, * cpu-alpha.c, * cpu-arm.c,
* cpu-avr.c, * cpu-bfin.c, * cpu-cr16.c, * cpu-cr16c.c, * cpu-crx.c,
* cpu-d10v.c, * cpu-frv.c, * cpu-ft32.c, * cpu-i370.c, * cpu-i960.c,
* cpu-ia64-opc.c, * cpu-ip2k.c, * cpu-lm32.c, * cpu-m32r.c,
* cpu-mcore.c, * cpu-microblaze.c, * cpu-mips.c, * cpu-moxie.c,
* cpu-mt.c, * cpu-nios2.c, * cpu-ns32k.c, * cpu-or1k.c, * cpu-powerpc.c,
* cpu-pru.c, * cpu-sh.c, * cpu-spu.c, * cpu-v850.c, * cpu-v850_rh850.c,
* cpu-xgate.c, * cpu-z80.c, * dwarf1.c, * dwarf2.c, * ecoff.c,
* ecofflink.c, * ecoffswap.h, * elf-bfd.h, * elf-eh-frame.c,
* elf-hppa.h, * elf-m10200.c, * elf-m10300.c, * elf-s390-common.c,
* elf-strtab.c, * elf-vxworks.c, * elf.c, * elf32-am33lin.c,
* elf32-arc.c, * elf32-arm.c, * elf32-avr.c, * elf32-avr.h,
* elf32-bfin.c, * elf32-cr16.c, * elf32-cr16c.c, * elf32-cris.c,
* elf32-crx.c, * elf32-d10v.c, * elf32-d30v.c, * elf32-dlx.c,
* elf32-epiphany.c, * elf32-fr30.c, * elf32-frv.c, * elf32-ft32.c,
* elf32-h8300.c, * elf32-hppa.c, * elf32-i386.c, * elf32-i860.c,
* elf32-i960.c, * elf32-ip2k.c, * elf32-lm32.c, * elf32-m32c.c,
* elf32-m32r.c, * elf32-m68hc11.c, * elf32-m68hc12.c, * elf32-m68hc1x.c,
* elf32-m68hc1x.h, * elf32-m68k.c, * elf32-m88k.c, * elf32-mcore.c,
* elf32-mep.c, * elf32-metag.c, * elf32-microblaze.c, * elf32-mips.c,
* elf32-moxie.c, * elf32-msp430.c, * elf32-mt.c, * elf32-nds32.c,
* elf32-nds32.h, * elf32-nios2.c, * elf32-or1k.c, * elf32-pj.c,
* elf32-ppc.c, * elf32-ppc.h, * elf32-pru.c, * elf32-rl78.c,
* elf32-rx.c, * elf32-s390.c, * elf32-score.c, * elf32-score.h,
* elf32-score7.c, * elf32-sh-symbian.c, * elf32-sh.c, * elf32-sh64.c,
* elf32-sparc.c, * elf32-spu.c, * elf32-tic6x.c, * elf32-tilegx.c,
* elf32-tilegx.h, * elf32-tilepro.c, * elf32-tilepro.h, * elf32-v850.c,
* elf32-vax.c, * elf32-wasm32.c, * elf32-xc16x.c, * elf32-xgate.c,
* elf32-xgate.h, * elf32-xstormy16.c, * elf32-xtensa.c, * elf64-alpha.c,
* elf64-hppa.c, * elf64-ia64-vms.c, * elf64-mips.c, * elf64-mmix.c,
* elf64-ppc.c, * elf64-s390.c, * elf64-sh64.c, * elf64-sparc.c,
* elf64-tilegx.c, * elf64-tilegx.h, * elf64-x86-64.c, * elfcore.h,
* elflink.c, * elfn32-mips.c, * elfnn-aarch64.c, * elfnn-ia64.c,
* elfnn-riscv.c, * elfxx-aarch64.c, * elfxx-aarch64.h, * elfxx-ia64.c,
* elfxx-ia64.h, * elfxx-mips.c, * elfxx-riscv.c, * elfxx-sparc.c,
* elfxx-tilegx.c, * elfxx-x86.c, * elfxx-x86.h, * freebsd.h, * hash.c,
* host-aout.c, * hp300hpux.c, * hppabsd-core.c, * hpux-core.c,
* i386aout.c, * i386linux.c, * i386lynx.c, * i386mach3.c, * i386msdos.c,
* i386netbsd.c, * ieee.c, * ihex.c, * irix-core.c, * libaout.h,
* libbfd-in.h, * libbfd.c, * libcoff-in.h, * libnlm.h, * libpei.h,
* libxcoff.h, * linker.c, * lynx-core.c, * m68k4knetbsd.c,
* m68klinux.c, * m68knetbsd.c, * m88kmach3.c, * mach-o-aarch64.c,
* mach-o-arm.c, * mach-o-i386.c, * mach-o-target.c, * mach-o-x86-64.c,
* mach-o.c, * mach-o.h, * merge.c, * mipsbsd.c, * mmo.c, * netbsd.h,
* netbsd-core.c, * newsos3.c, * nlm-target.h, * nlm32-ppc.c,
* nlm32-sparc.c, * nlmcode.h, * ns32k.h, * ns32knetbsd.c, * oasys.c,
* opncls.c, * pc532-mach.c, * pdp11.c, * pe-arm.c, * pe-i386.c,
* pe-mcore.c, * pe-mips.c, * pe-x86_64.c, * peXXigen.c, * pef.c,
* pef.h, * pei-arm.c, * pei-i386.c, * pei-mcore.c, * pei-x86_64.c,
* peicode.h, * plugin.c, * ppcboot.c, * ptrace-core.c, * reloc.c,
* riscix.c, * rs6000-core.c, * section.c, * som.c, * som.h,
* sparclinux.c, * sparcnetbsd.c, * srec.c, * stabs.c, * sunos.c,
* syms.c, * targets.c, * tekhex.c, * trad-core.c, * vax1knetbsd.c,
* vaxnetbsd.c, * verilog.c, * versados.c, * vms-alpha.c, * vms-lib.c,
* vms-misc.c, * wasm-module.c, * wasm-module.h, * xcofflink.c,
* xsym.c, * xsym.h: Whitespace fixes.
* bfd-in2.h, * libbfd.h, * libcoff.h: Regenerate.
Diffstat (limited to 'bfd/elf32-m32r.c')
-rw-r--r-- | bfd/elf32-m32r.c | 1950 |
1 files changed, 975 insertions, 975 deletions
diff --git a/bfd/elf32-m32r.c b/bfd/elf32-m32r.c index cd9f9d2..f63ff7b 100644 --- a/bfd/elf32-m32r.c +++ b/bfd/elf32-m32r.c @@ -60,25 +60,25 @@ and the initial contents are unimportant (we zero them out). Subsequent entries look like this. */ -#define PLT0_ENTRY_WORD0 0xd6c00000 /* seth r6, #high(.got+4) */ -#define PLT0_ENTRY_WORD1 0x86e60000 /* or3 r6, r6, #low(.got)+4) */ -#define PLT0_ENTRY_WORD2 0x24e626c6 /* ld r4, @r6+ -> ld r6, @r6 */ -#define PLT0_ENTRY_WORD3 0x1fc6f000 /* jmp r6 || pnop */ -#define PLT0_ENTRY_WORD4 PLT_EMPTY /* RIE -> RIE */ - -#define PLT0_PIC_ENTRY_WORD0 0xa4cc0004 /* ld r4, @(4,r12) */ -#define PLT0_PIC_ENTRY_WORD1 0xa6cc0008 /* ld r6, @(8,r12) */ -#define PLT0_PIC_ENTRY_WORD2 0x1fc6f000 /* jmp r6 || nop */ -#define PLT0_PIC_ENTRY_WORD3 PLT_EMPTY /* RIE -> RIE */ -#define PLT0_PIC_ENTRY_WORD4 PLT_EMPTY /* RIE -> RIE */ - -#define PLT_ENTRY_WORD0 0xe6000000 /* ld24 r6, .name_in_GOT */ -#define PLT_ENTRY_WORD1 0x06acf000 /* add r6, r12 || nop */ -#define PLT_ENTRY_WORD0b 0xd6c00000 /* seth r6, #high(.name_in_GOT) */ -#define PLT_ENTRY_WORD1b 0x86e60000 /* or3 r6, r6, #low(.name_in_GOT) */ -#define PLT_ENTRY_WORD2 0x26c61fc6 /* ld r6, @r6 -> jmp r6 */ -#define PLT_ENTRY_WORD3 0xe5000000 /* ld24 r5, $offset */ -#define PLT_ENTRY_WORD4 0xff000000 /* bra .plt0. */ +#define PLT0_ENTRY_WORD0 0xd6c00000 /* seth r6, #high(.got+4) */ +#define PLT0_ENTRY_WORD1 0x86e60000 /* or3 r6, r6, #low(.got)+4) */ +#define PLT0_ENTRY_WORD2 0x24e626c6 /* ld r4, @r6+ -> ld r6, @r6 */ +#define PLT0_ENTRY_WORD3 0x1fc6f000 /* jmp r6 || pnop */ +#define PLT0_ENTRY_WORD4 PLT_EMPTY /* RIE -> RIE */ + +#define PLT0_PIC_ENTRY_WORD0 0xa4cc0004 /* ld r4, @(4,r12) */ +#define PLT0_PIC_ENTRY_WORD1 0xa6cc0008 /* ld r6, @(8,r12) */ +#define PLT0_PIC_ENTRY_WORD2 0x1fc6f000 /* jmp r6 || nop */ +#define PLT0_PIC_ENTRY_WORD3 PLT_EMPTY /* RIE -> RIE */ +#define PLT0_PIC_ENTRY_WORD4 PLT_EMPTY /* RIE -> RIE */ + +#define PLT_ENTRY_WORD0 0xe6000000 /* ld24 r6, .name_in_GOT */ +#define PLT_ENTRY_WORD1 0x06acf000 /* add r6, r12 || nop */ +#define PLT_ENTRY_WORD0b 0xd6c00000 /* seth r6, #high(.name_in_GOT) */ +#define PLT_ENTRY_WORD1b 0x86e60000 /* or3 r6, r6, #low(.name_in_GOT) */ +#define PLT_ENTRY_WORD2 0x26c61fc6 /* ld r6, @r6 -> jmp r6 */ +#define PLT_ENTRY_WORD3 0xe5000000 /* ld24 r5, $offset */ +#define PLT_ENTRY_WORD4 0xff000000 /* bra .plt0. */ /* Utility to actually perform an R_M32R_10_PCREL reloc. */ @@ -216,8 +216,8 @@ m32r_elf_generic_reloc (bfd *input_bfd, relocation += reloc_entry->addend; inplace_address = (bfd_byte *) data + reloc_entry->address; -#define DOIT(x) \ - x = ( (x & ~reloc_entry->howto->dst_mask) | \ +#define DOIT(x) \ + x = ( (x & ~reloc_entry->howto->dst_mask) | \ (((x & reloc_entry->howto->src_mask) + relocation) & \ reloc_entry->howto->dst_mask)) @@ -227,14 +227,14 @@ m32r_elf_generic_reloc (bfd *input_bfd, { short x = bfd_get_16 (input_bfd, inplace_address); DOIT (x); - bfd_put_16 (input_bfd, (bfd_vma) x, inplace_address); + bfd_put_16 (input_bfd, (bfd_vma) x, inplace_address); } break; case 2: { unsigned long x = bfd_get_32 (input_bfd, inplace_address); DOIT (x); - bfd_put_32 (input_bfd, (bfd_vma)x , inplace_address); + bfd_put_32 (input_bfd, (bfd_vma)x , inplace_address); } break; default: @@ -540,17 +540,17 @@ static reloc_howto_type m32r_elf_howto_table[] = and if bfd_install_relocation gets called the addend may get added again. */ HOWTO (R_M32R_10_PCREL, /* type */ - 2, /* rightshift */ - 1, /* size (0 = byte, 1 = short, 2 = long) */ - 10, /* bitsize */ - TRUE, /* pc_relative */ - 0, /* bitpos */ + 2, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 10, /* bitsize */ + TRUE, /* pc_relative */ + 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ m32r_elf_10_pcrel_reloc, /* special_function */ "R_M32R_10_PCREL", /* name */ - FALSE, /* partial_inplace */ - 0xff, /* src_mask */ - 0xff, /* dst_mask */ + FALSE, /* partial_inplace */ + 0xff, /* src_mask */ + 0xff, /* dst_mask */ TRUE), /* pcrel_offset */ /* A relative 18 bit relocation, right shifted by 2. */ @@ -649,33 +649,33 @@ static reloc_howto_type m32r_elf_howto_table[] = /* GNU extension to record C++ vtable hierarchy. */ HOWTO (R_M32R_GNU_VTINHERIT, /* type */ - 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 0, /* bitsize */ - FALSE, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_dont, /* complain_on_overflow */ - NULL, /* special_function */ - "R_M32R_GNU_VTINHERIT", /* name */ - FALSE, /* partial_inplace */ - 0, /* src_mask */ - 0, /* dst_mask */ - FALSE), /* pcrel_offset */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + NULL, /* special_function */ + "R_M32R_GNU_VTINHERIT", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ /* GNU extension to record C++ vtable member usage. */ - HOWTO (R_M32R_GNU_VTENTRY, /* type */ - 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 0, /* bitsize */ - FALSE, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_dont, /* complain_on_overflow */ - _bfd_elf_rel_vtable_reloc_fn, /* special_function */ - "R_M32R_GNU_VTENTRY", /* name */ - FALSE, /* partial_inplace */ - 0, /* src_mask */ - 0, /* dst_mask */ - FALSE), /* pcrel_offset */ + HOWTO (R_M32R_GNU_VTENTRY, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + _bfd_elf_rel_vtable_reloc_fn, /* special_function */ + "R_M32R_GNU_VTENTRY", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ EMPTY_HOWTO (13), EMPTY_HOWTO (14), @@ -744,17 +744,17 @@ static reloc_howto_type m32r_elf_howto_table[] = FALSE), /* pcrel_offset */ HOWTO (R_M32R_10_PCREL_RELA, /* type */ - 2, /* rightshift */ - 1, /* size (0 = byte, 1 = short, 2 = long) */ - 10, /* bitsize */ - TRUE, /* pc_relative */ - 0, /* bitpos */ + 2, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 10, /* bitsize */ + TRUE, /* pc_relative */ + 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ m32r_elf_10_pcrel_reloc, /* special_function */ "R_M32R_10_PCREL_RELA",/* name */ - FALSE, /* partial_inplace */ - 0xff, /* src_mask */ - 0xff, /* dst_mask */ + FALSE, /* partial_inplace */ + 0xff, /* src_mask */ + 0xff, /* dst_mask */ TRUE), /* pcrel_offset */ /* A relative 18 bit relocation, right shifted by 2. */ @@ -849,33 +849,33 @@ static reloc_howto_type m32r_elf_howto_table[] = /* GNU extension to record C++ vtable hierarchy. */ HOWTO (R_M32R_RELA_GNU_VTINHERIT, /* type */ - 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 0, /* bitsize */ - FALSE, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_dont, /* complain_on_overflow */ - NULL, /* special_function */ - "R_M32R_RELA_GNU_VTINHERIT", /* name */ - FALSE, /* partial_inplace */ - 0, /* src_mask */ - 0, /* dst_mask */ - FALSE), /* pcrel_offset */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + NULL, /* special_function */ + "R_M32R_RELA_GNU_VTINHERIT", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ /* GNU extension to record C++ vtable member usage. */ HOWTO (R_M32R_RELA_GNU_VTENTRY, /* type */ - 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 0, /* bitsize */ - FALSE, /* pc_relative */ - 0, /* bitpos */ - complain_overflow_dont, /* complain_on_overflow */ - _bfd_elf_rel_vtable_reloc_fn, /* special_function */ - "R_M32R_RELA_GNU_VTENTRY", /* name */ - FALSE, /* partial_inplace */ - 0, /* src_mask */ - 0, /* dst_mask */ - FALSE), /* pcrel_offset */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + _bfd_elf_rel_vtable_reloc_fn, /* special_function */ + "R_M32R_RELA_GNU_VTENTRY", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ /* A 32 bit PC relative relocation. */ HOWTO (R_M32R_REL32, /* type */ @@ -1295,8 +1295,8 @@ m32r_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, Elf_Internal_Rela *dst) { BFD_ASSERT ((ELF32_R_TYPE(dst->r_info) == (unsigned int) R_M32R_NONE) - || ((ELF32_R_TYPE(dst->r_info) > (unsigned int) R_M32R_GNU_VTENTRY) - && (ELF32_R_TYPE(dst->r_info) < (unsigned int) R_M32R_max))); + || ((ELF32_R_TYPE(dst->r_info) > (unsigned int) R_M32R_GNU_VTENTRY) + && (ELF32_R_TYPE(dst->r_info) < (unsigned int) R_M32R_max))); cache_ptr->howto = &m32r_elf_howto_table[ELF32_R_TYPE(dst->r_info)]; } @@ -1543,8 +1543,8 @@ m32r_elf_link_hash_newfunc (struct bfd_hash_entry *entry, /* Call the allocation method of the superclass. */ ret = ((struct elf_m32r_link_hash_entry *) - _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret, - table, string)); + _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret, + table, string)); if (ret != NULL) { struct elf_m32r_link_hash_entry *eh; @@ -1598,7 +1598,7 @@ m32r_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) /* We need to create .plt, .rel[a].plt, .got, .got.plt, .dynbss, and .rel[a].bss sections. */ flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY - | SEC_LINKER_CREATED); + | SEC_LINKER_CREATED); pltflags = flags; pltflags |= SEC_CODE; @@ -1616,23 +1616,23 @@ m32r_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) if (bed->want_plt_sym) { /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the - .plt section. */ + .plt section. */ struct bfd_link_hash_entry *bh = NULL; struct elf_link_hash_entry *h; if (! (_bfd_generic_link_add_one_symbol - (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s, - (bfd_vma) 0, NULL, FALSE, - get_elf_backend_data (abfd)->collect, &bh))) - return FALSE; + (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s, + (bfd_vma) 0, NULL, FALSE, + get_elf_backend_data (abfd)->collect, &bh))) + return FALSE; h = (struct elf_link_hash_entry *) bh; h->def_regular = 1; h->type = STT_OBJECT; htab->root.hplt = h; if (bfd_link_pic (info) - && ! bfd_elf_link_record_dynamic_symbol (info, h)) - return FALSE; + && ! bfd_elf_link_record_dynamic_symbol (info, h)) + return FALSE; } s = bfd_make_section_anyway_with_flags (abfd, @@ -1651,38 +1651,38 @@ m32r_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) if (bed->want_dynbss) { /* The .dynbss section is a place to put symbols which are defined - by dynamic objects, are referenced by regular objects, and are - not functions. We must allocate space for them in the process - image and use a R_*_COPY reloc to tell the dynamic linker to - initialize them at run time. The linker script puts the .dynbss - section into the .bss section of the final image. */ + by dynamic objects, are referenced by regular objects, and are + not functions. We must allocate space for them in the process + image and use a R_*_COPY reloc to tell the dynamic linker to + initialize them at run time. The linker script puts the .dynbss + section into the .bss section of the final image. */ s = bfd_make_section_anyway_with_flags (abfd, ".dynbss", SEC_ALLOC | SEC_LINKER_CREATED); htab->sdynbss = s; if (s == NULL) - return FALSE; + return FALSE; /* The .rel[a].bss section holds copy relocs. This section is not - normally needed. We need to create it here, though, so that the - linker will map it to an output section. We can't just create it - only if we need it, because we will not know whether we need it - until we have seen all the input files, and the first time the - main linker code calls BFD after examining all the input files - (size_dynamic_sections) the input sections have already been - mapped to the output sections. If the section turns out not to - be needed, we can discard it later. We will never need this - section when generating a shared object, since they do not use - copy relocs. */ + normally needed. We need to create it here, though, so that the + linker will map it to an output section. We can't just create it + only if we need it, because we will not know whether we need it + until we have seen all the input files, and the first time the + main linker code calls BFD after examining all the input files + (size_dynamic_sections) the input sections have already been + mapped to the output sections. If the section turns out not to + be needed, we can discard it later. We will never need this + section when generating a shared object, since they do not use + copy relocs. */ if (! bfd_link_pic (info)) - { - s = bfd_make_section_anyway_with_flags (abfd, + { + s = bfd_make_section_anyway_with_flags (abfd, (bed->default_use_rela_p ? ".rela.bss" : ".rel.bss"), flags | SEC_READONLY); - htab->srelbss = s; - if (s == NULL - || ! bfd_set_section_alignment (abfd, s, ptralign)) - return FALSE; - } + htab->srelbss = s; + if (s == NULL + || ! bfd_set_section_alignment (abfd, s, ptralign)) + return FALSE; + } } return TRUE; @@ -1692,8 +1692,8 @@ m32r_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) static void m32r_elf_copy_indirect_symbol (struct bfd_link_info *info, - struct elf_link_hash_entry *dir, - struct elf_link_hash_entry *ind) + struct elf_link_hash_entry *dir, + struct elf_link_hash_entry *ind) { struct elf_m32r_link_hash_entry * edir; struct elf_m32r_link_hash_entry * eind; @@ -1704,29 +1704,29 @@ m32r_elf_copy_indirect_symbol (struct bfd_link_info *info, if (eind->dyn_relocs != NULL) { if (edir->dyn_relocs != NULL) - { - struct elf_dyn_relocs **pp; - struct elf_dyn_relocs *p; - - /* Add reloc counts against the indirect sym to the direct sym - list. Merge any entries against the same section. */ - for (pp = &eind->dyn_relocs; (p = *pp) != NULL;) - { - struct elf_dyn_relocs *q; - - for (q = edir->dyn_relocs; q != NULL; q = q->next) - if (q->sec == p->sec) - { - q->pc_count += p->pc_count; - q->count += p->count; - *pp = p->next; - break; - } - if (q == NULL) - pp = &p->next; - } - *pp = edir->dyn_relocs; - } + { + struct elf_dyn_relocs **pp; + struct elf_dyn_relocs *p; + + /* Add reloc counts against the indirect sym to the direct sym + list. Merge any entries against the same section. */ + for (pp = &eind->dyn_relocs; (p = *pp) != NULL;) + { + struct elf_dyn_relocs *q; + + for (q = edir->dyn_relocs; q != NULL; q = q->next) + if (q->sec == p->sec) + { + q->pc_count += p->pc_count; + q->count += p->count; + *pp = p->next; + break; + } + if (q == NULL) + pp = &p->next; + } + *pp = edir->dyn_relocs; + } edir->dyn_relocs = eind->dyn_relocs; eind->dyn_relocs = NULL; @@ -1776,11 +1776,11 @@ m32r_elf_adjust_dynamic_symbol (struct bfd_link_info *info, /* Make sure we know what is going on here. */ BFD_ASSERT (dynobj != NULL - && (h->needs_plt - || h->is_weakalias - || (h->def_dynamic - && h->ref_regular - && !h->def_regular))); + && (h->needs_plt + || h->is_weakalias + || (h->def_dynamic + && h->ref_regular + && !h->def_regular))); /* If this is a function, put it in the procedure linkage table. We will fill in the contents of the procedure linkage table later, @@ -1789,19 +1789,19 @@ m32r_elf_adjust_dynamic_symbol (struct bfd_link_info *info, || h->needs_plt) { if (! bfd_link_pic (info) - && !h->def_dynamic - && !h->ref_dynamic + && !h->def_dynamic + && !h->ref_dynamic && h->root.type != bfd_link_hash_undefweak && h->root.type != bfd_link_hash_undefined) - { - /* This case can occur if we saw a PLT reloc in an input - file, but the symbol was never referred to by a dynamic - object. In such a case, we don't actually need to build - a procedure linkage table, and we can just do a PCREL - reloc instead. */ - h->plt.offset = (bfd_vma) -1; - h->needs_plt = 0; - } + { + /* This case can occur if we saw a PLT reloc in an input + file, but the symbol was never referred to by a dynamic + object. In such a case, we don't actually need to build + a procedure linkage table, and we can just do a PCREL + reloc instead. */ + h->plt.offset = (bfd_vma) -1; + h->needs_plt = 0; + } return TRUE; } @@ -1909,52 +1909,52 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf) && h->plt.refcount > 0) { /* Make sure this symbol is output as a dynamic symbol. - Undefined weak syms won't yet be marked as dynamic. */ + Undefined weak syms won't yet be marked as dynamic. */ if (h->dynindx == -1 - && !h->forced_local) - { - if (! bfd_elf_link_record_dynamic_symbol (info, h)) - return FALSE; - } + && !h->forced_local) + { + if (! bfd_elf_link_record_dynamic_symbol (info, h)) + return FALSE; + } if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h)) - { - asection *s = htab->root.splt; - - /* If this is the first .plt entry, make room for the special - first entry. */ - if (s->size == 0) - s->size += PLT_ENTRY_SIZE; - - h->plt.offset = s->size; - - /* If this symbol is not defined in a regular file, and we are - not generating a shared library, then set the symbol to this - location in the .plt. This is required to make function - pointers compare as equal between the normal executable and - the shared library. */ - if (! bfd_link_pic (info) - && !h->def_regular) - { - h->root.u.def.section = s; - h->root.u.def.value = h->plt.offset; - } - - /* Make room for this entry. */ - s->size += PLT_ENTRY_SIZE; - - /* We also need to make an entry in the .got.plt section, which - will be placed in the .got section by the linker script. */ - htab->root.sgotplt->size += 4; - - /* We also need to make an entry in the .rel.plt section. */ - htab->root.srelplt->size += sizeof (Elf32_External_Rela); - } + { + asection *s = htab->root.splt; + + /* If this is the first .plt entry, make room for the special + first entry. */ + if (s->size == 0) + s->size += PLT_ENTRY_SIZE; + + h->plt.offset = s->size; + + /* If this symbol is not defined in a regular file, and we are + not generating a shared library, then set the symbol to this + location in the .plt. This is required to make function + pointers compare as equal between the normal executable and + the shared library. */ + if (! bfd_link_pic (info) + && !h->def_regular) + { + h->root.u.def.section = s; + h->root.u.def.value = h->plt.offset; + } + + /* Make room for this entry. */ + s->size += PLT_ENTRY_SIZE; + + /* We also need to make an entry in the .got.plt section, which + will be placed in the .got section by the linker script. */ + htab->root.sgotplt->size += 4; + + /* We also need to make an entry in the .rel.plt section. */ + htab->root.srelplt->size += sizeof (Elf32_External_Rela); + } else - { - h->plt.offset = (bfd_vma) -1; - h->needs_plt = 0; - } + { + h->plt.offset = (bfd_vma) -1; + h->needs_plt = 0; + } } else { @@ -1968,13 +1968,13 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf) bfd_boolean dyn; /* Make sure this symbol is output as a dynamic symbol. - Undefined weak syms won't yet be marked as dynamic. */ + Undefined weak syms won't yet be marked as dynamic. */ if (h->dynindx == -1 - && !h->forced_local) - { - if (! bfd_elf_link_record_dynamic_symbol (info, h)) - return FALSE; - } + && !h->forced_local) + { + if (! bfd_elf_link_record_dynamic_symbol (info, h)) + return FALSE; + } s = htab->root.sgot; @@ -1982,7 +1982,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf) s->size += 4; dyn = htab->root.dynamic_sections_created; if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, bfd_link_pic (info), h)) - htab->root.srelgot->size += sizeof (Elf32_External_Rela); + htab->root.srelgot->size += sizeof (Elf32_External_Rela); } else h->got.offset = (bfd_vma) -1; @@ -1999,21 +1999,21 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf) if (bfd_link_pic (info)) { if (h->def_regular - && (h->forced_local - || info->symbolic)) - { - struct elf_dyn_relocs **pp; - - for (pp = &eh->dyn_relocs; (p = *pp) != NULL;) - { - p->count -= p->pc_count; - p->pc_count = 0; - if (p->count == 0) - *pp = p->next; - else - pp = &p->next; - } - } + && (h->forced_local + || info->symbolic)) + { + struct elf_dyn_relocs **pp; + + for (pp = &eh->dyn_relocs; (p = *pp) != NULL;) + { + p->count -= p->pc_count; + p->pc_count = 0; + if (p->count == 0) + *pp = p->next; + else + pp = &p->next; + } + } /* Also discard relocs on undefined weak syms with non-default visibility. */ @@ -2036,30 +2036,30 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf) else { /* For the non-shared case, discard space for relocs against - symbols which turn out to need copy relocs or are not - dynamic. */ + symbols which turn out to need copy relocs or are not + dynamic. */ if (!h->non_got_ref - && ((h->def_dynamic - && !h->def_regular) - || (htab->root.dynamic_sections_created - && (h->root.type == bfd_link_hash_undefweak - || h->root.type == bfd_link_hash_undefined)))) - { - /* Make sure this symbol is output as a dynamic symbol. - Undefined weak syms won't yet be marked as dynamic. */ - if (h->dynindx == -1 - && !h->forced_local) - { - if (! bfd_elf_link_record_dynamic_symbol (info, h)) - return FALSE; - } - - /* If that succeeded, we know we'll be keeping all the - relocs. */ - if (h->dynindx != -1) - goto keep; - } + && ((h->def_dynamic + && !h->def_regular) + || (htab->root.dynamic_sections_created + && (h->root.type == bfd_link_hash_undefweak + || h->root.type == bfd_link_hash_undefined)))) + { + /* Make sure this symbol is output as a dynamic symbol. + Undefined weak syms won't yet be marked as dynamic. */ + if (h->dynindx == -1 + && !h->forced_local) + { + if (! bfd_elf_link_record_dynamic_symbol (info, h)) + return FALSE; + } + + /* If that succeeded, we know we'll be keeping all the + relocs. */ + if (h->dynindx != -1) + goto keep; + } eh->dyn_relocs = NULL; @@ -2149,38 +2149,38 @@ m32r_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, asection *srel; if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour) - continue; + continue; for (s = ibfd->sections; s != NULL; s = s->next) - { - struct elf_dyn_relocs *p; - - for (p = ((struct elf_dyn_relocs *) - elf_section_data (s)->local_dynrel); - p != NULL; - p = p->next) - { - if (! bfd_is_abs_section (p->sec) - && bfd_is_abs_section (p->sec->output_section)) - { - /* Input section has been discarded, either because - it is a copy of a linkonce section or due to - linker script /DISCARD/, so we'll be discarding - the relocs too. */ - } - else if (p->count != 0) - { - srel = elf_section_data (p->sec)->sreloc; - srel->size += p->count * sizeof (Elf32_External_Rela); - if ((p->sec->output_section->flags & SEC_READONLY) != 0) - info->flags |= DF_TEXTREL; - } - } - } + { + struct elf_dyn_relocs *p; + + for (p = ((struct elf_dyn_relocs *) + elf_section_data (s)->local_dynrel); + p != NULL; + p = p->next) + { + if (! bfd_is_abs_section (p->sec) + && bfd_is_abs_section (p->sec->output_section)) + { + /* Input section has been discarded, either because + it is a copy of a linkonce section or due to + linker script /DISCARD/, so we'll be discarding + the relocs too. */ + } + else if (p->count != 0) + { + srel = elf_section_data (p->sec)->sreloc; + srel->size += p->count * sizeof (Elf32_External_Rela); + if ((p->sec->output_section->flags & SEC_READONLY) != 0) + info->flags |= DF_TEXTREL; + } + } + } local_got = elf_local_got_refcounts (ibfd); if (!local_got) - continue; + continue; symtab_hdr = &elf_tdata (ibfd)->symtab_hdr; locsymcount = symtab_hdr->sh_info; @@ -2188,17 +2188,17 @@ m32r_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, s = htab->root.sgot; srel = htab->root.srelgot; for (; local_got < end_local_got; ++local_got) - { - if (*local_got > 0) - { - *local_got = s->size; - s->size += 4; - if (bfd_link_pic (info)) - srel->size += sizeof (Elf32_External_Rela); - } - else - *local_got = (bfd_vma) -1; - } + { + if (*local_got > 0) + { + *local_got = s->size; + s->size += 4; + if (bfd_link_pic (info)) + srel->size += sizeof (Elf32_External_Rela); + } + else + *local_got = (bfd_vma) -1; + } } /* Allocate global sym .plt and .got entries, and space for global @@ -2211,55 +2211,55 @@ m32r_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, for (s = dynobj->sections; s != NULL; s = s->next) { if ((s->flags & SEC_LINKER_CREATED) == 0) - continue; + continue; if (s == htab->root.splt - || s == htab->root.sgot - || s == htab->root.sgotplt + || s == htab->root.sgot + || s == htab->root.sgotplt || s == htab->sdynbss) - { - /* Strip this section if we don't need it; see the - comment below. */ - } + { + /* Strip this section if we don't need it; see the + comment below. */ + } else if (CONST_STRNEQ (bfd_get_section_name (dynobj, s), ".rela")) - { - if (s->size != 0 && s != htab->root.srelplt) - relocs = TRUE; - - /* We use the reloc_count field as a counter if we need - to copy relocs into the output file. */ - s->reloc_count = 0; - } + { + if (s->size != 0 && s != htab->root.srelplt) + relocs = TRUE; + + /* We use the reloc_count field as a counter if we need + to copy relocs into the output file. */ + s->reloc_count = 0; + } else /* It's not one of our sections, so don't allocate space. */ continue; if (s->size == 0) - { - /* If we don't need this section, strip it from the - output file. This is mostly to handle .rela.bss and - .rela.plt. We must create both sections in - create_dynamic_sections, because they must be created - before the linker maps input sections to output - sections. The linker does that before - adjust_dynamic_symbol is called, and it is that - function which decides whether anything needs to go - into these sections. */ - s->flags |= SEC_EXCLUDE; - continue; - } + { + /* If we don't need this section, strip it from the + output file. This is mostly to handle .rela.bss and + .rela.plt. We must create both sections in + create_dynamic_sections, because they must be created + before the linker maps input sections to output + sections. The linker does that before + adjust_dynamic_symbol is called, and it is that + function which decides whether anything needs to go + into these sections. */ + s->flags |= SEC_EXCLUDE; + continue; + } if ((s->flags & SEC_HAS_CONTENTS) == 0) continue; /* Allocate memory for the section contents. We use bfd_zalloc - here in case unused entries are not reclaimed before the - section's contents are written out. This should not happen, - but this way if it does, we get a R_M32R_NONE reloc instead - of garbage. */ + here in case unused entries are not reclaimed before the + section's contents are written out. This should not happen, + but this way if it does, we get a R_M32R_NONE reloc instead + of garbage. */ s->contents = bfd_zalloc (dynobj, s->size); if (s->contents == NULL) - return FALSE; + return FALSE; } if (htab->root.dynamic_sections_created) @@ -2279,33 +2279,33 @@ m32r_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, } if (htab->root.splt->size != 0) - { - if (! add_dynamic_entry (DT_PLTGOT, 0) - || ! add_dynamic_entry (DT_PLTRELSZ, 0) - || ! add_dynamic_entry (DT_PLTREL, DT_RELA) - || ! add_dynamic_entry (DT_JMPREL, 0)) - return FALSE; - } + { + if (! add_dynamic_entry (DT_PLTGOT, 0) + || ! add_dynamic_entry (DT_PLTRELSZ, 0) + || ! add_dynamic_entry (DT_PLTREL, DT_RELA) + || ! add_dynamic_entry (DT_JMPREL, 0)) + return FALSE; + } if (relocs) - { - if (! add_dynamic_entry (DT_RELA, 0) - || ! add_dynamic_entry (DT_RELASZ, 0) - || ! add_dynamic_entry (DT_RELAENT, - sizeof (Elf32_External_Rela))) - return FALSE; - - /* If any dynamic relocs apply to a read-only section, - then we need a DT_TEXTREL entry. */ - if ((info->flags & DF_TEXTREL) == 0) - elf_link_hash_traverse (&htab->root, maybe_set_textrel, info); - - if ((info->flags & DF_TEXTREL) != 0) - { - if (! add_dynamic_entry (DT_TEXTREL, 0)) - return FALSE; - } - } + { + if (! add_dynamic_entry (DT_RELA, 0) + || ! add_dynamic_entry (DT_RELASZ, 0) + || ! add_dynamic_entry (DT_RELAENT, + sizeof (Elf32_External_Rela))) + return FALSE; + + /* If any dynamic relocs apply to a read-only section, + then we need a DT_TEXTREL entry. */ + if ((info->flags & DF_TEXTREL) == 0) + elf_link_hash_traverse (&htab->root, maybe_set_textrel, info); + + if ((info->flags & DF_TEXTREL) != 0) + { + if (! add_dynamic_entry (DT_TEXTREL, 0)) + return FALSE; + } + } } #undef add_dynamic_entry @@ -2383,9 +2383,9 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, unsigned long r_symndx; struct elf_link_hash_entry *h; /* We can't modify r_addend here as elf_link_input_bfd has an assert to - ensure it's zero (we use REL relocs, not RELA). Therefore this - should be assigning zero to `addend', but for clarity we use - `r_addend'. */ + ensure it's zero (we use REL relocs, not RELA). Therefore this + should be assigning zero to `addend', but for clarity we use + `r_addend'. */ bfd_vma addend = rel->r_addend; bfd_vma offset = rel->r_offset; bfd_vma relocation; @@ -2409,14 +2409,14 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, } if ( r_type == R_M32R_GNU_VTENTRY - || r_type == R_M32R_GNU_VTINHERIT - || r_type == R_M32R_NONE - || r_type == R_M32R_RELA_GNU_VTENTRY - || r_type == R_M32R_RELA_GNU_VTINHERIT) - continue; + || r_type == R_M32R_GNU_VTINHERIT + || r_type == R_M32R_NONE + || r_type == R_M32R_RELA_GNU_VTENTRY + || r_type == R_M32R_RELA_GNU_VTINHERIT) + continue; if (r_type <= R_M32R_GNU_VTENTRY) - use_rel = TRUE; + use_rel = TRUE; howto = m32r_elf_howto_table + r_type; r_symndx = ELF32_R_SYM (rel->r_info); @@ -2616,22 +2616,22 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, switch ((int) r_type) { - case R_M32R_GOTOFF: - /* Relocation is relative to the start of the global offset - table (for ld24 rx, #uimm24). eg access at label+addend + case R_M32R_GOTOFF: + /* Relocation is relative to the start of the global offset + table (for ld24 rx, #uimm24). eg access at label+addend - ld24 rx. #label@GOTOFF + addend - sub rx, r12. */ + ld24 rx. #label@GOTOFF + addend + sub rx, r12. */ - BFD_ASSERT (sgot != NULL); + BFD_ASSERT (sgot != NULL); - relocation = -(relocation - sgot->output_section->vma); - rel->r_addend = -rel->r_addend; - break; + relocation = -(relocation - sgot->output_section->vma); + rel->r_addend = -rel->r_addend; + break; - case R_M32R_GOTOFF_HI_ULO: - case R_M32R_GOTOFF_HI_SLO: - case R_M32R_GOTOFF_LO: + case R_M32R_GOTOFF_HI_ULO: + case R_M32R_GOTOFF_HI_SLO: + case R_M32R_GOTOFF_LO: BFD_ASSERT (sgot != NULL); relocation -= sgot->output_section->vma; @@ -2641,261 +2641,261 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, rel->r_addend += 0x10000; break; - case R_M32R_GOTPC24: - /* .got(_GLOBAL_OFFSET_TABLE_) - pc relocation - ld24 rx,#_GLOBAL_OFFSET_TABLE_ - */ - relocation = sgot->output_section->vma; - break; - - case R_M32R_GOTPC_HI_ULO: - case R_M32R_GOTPC_HI_SLO: - case R_M32R_GOTPC_LO: - { - /* .got(_GLOBAL_OFFSET_TABLE_) - pc relocation - bl .+4 - seth rx,#high(_GLOBAL_OFFSET_TABLE_) - or3 rx,rx,#low(_GLOBAL_OFFSET_TABLE_ +4) - or - bl .+4 - seth rx,#shigh(_GLOBAL_OFFSET_TABLE_) - add3 rx,rx,#low(_GLOBAL_OFFSET_TABLE_ +4) - */ - relocation = sgot->output_section->vma; - relocation -= (input_section->output_section->vma - + input_section->output_offset - + rel->r_offset); - if ((r_type == R_M32R_GOTPC_HI_SLO) - && ((relocation + rel->r_addend) & 0x8000)) - rel->r_addend += 0x10000; - - break; - } - case R_M32R_GOT16_HI_ULO: - case R_M32R_GOT16_HI_SLO: - case R_M32R_GOT16_LO: - /* Fall through. */ - case R_M32R_GOT24: - /* Relocation is to the entry for this symbol in the global - offset table. */ - BFD_ASSERT (sgot != NULL); - - if (h != NULL) - { - bfd_boolean dyn; - bfd_vma off; - - off = h->got.offset; - BFD_ASSERT (off != (bfd_vma) -1); - - dyn = htab->root.dynamic_sections_created; - if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, + case R_M32R_GOTPC24: + /* .got(_GLOBAL_OFFSET_TABLE_) - pc relocation + ld24 rx,#_GLOBAL_OFFSET_TABLE_ + */ + relocation = sgot->output_section->vma; + break; + + case R_M32R_GOTPC_HI_ULO: + case R_M32R_GOTPC_HI_SLO: + case R_M32R_GOTPC_LO: + { + /* .got(_GLOBAL_OFFSET_TABLE_) - pc relocation + bl .+4 + seth rx,#high(_GLOBAL_OFFSET_TABLE_) + or3 rx,rx,#low(_GLOBAL_OFFSET_TABLE_ +4) + or + bl .+4 + seth rx,#shigh(_GLOBAL_OFFSET_TABLE_) + add3 rx,rx,#low(_GLOBAL_OFFSET_TABLE_ +4) + */ + relocation = sgot->output_section->vma; + relocation -= (input_section->output_section->vma + + input_section->output_offset + + rel->r_offset); + if ((r_type == R_M32R_GOTPC_HI_SLO) + && ((relocation + rel->r_addend) & 0x8000)) + rel->r_addend += 0x10000; + + break; + } + case R_M32R_GOT16_HI_ULO: + case R_M32R_GOT16_HI_SLO: + case R_M32R_GOT16_LO: + /* Fall through. */ + case R_M32R_GOT24: + /* Relocation is to the entry for this symbol in the global + offset table. */ + BFD_ASSERT (sgot != NULL); + + if (h != NULL) + { + bfd_boolean dyn; + bfd_vma off; + + off = h->got.offset; + BFD_ASSERT (off != (bfd_vma) -1); + + dyn = htab->root.dynamic_sections_created; + if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, bfd_link_pic (info), h) - || (bfd_link_pic (info) - && (info->symbolic - || h->dynindx == -1 - || h->forced_local) - && h->def_regular)) - { - /* This is actually a static link, or it is a - -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. Since the - offset must always be a multiple of 4, we use the - least significant bit to record whether we have - initialized it already. - - 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. */ - if ((off & 1) != 0) - off &= ~1; - else - { - bfd_put_32 (output_bfd, relocation, - sgot->contents + off); - h->got.offset |= 1; - } - } - - relocation = sgot->output_offset + off; - } - else - { - bfd_vma off; - bfd_byte *loc; - - BFD_ASSERT (local_got_offsets != NULL - && local_got_offsets[r_symndx] != (bfd_vma) -1); - - off = local_got_offsets[r_symndx]; - - /* The offset must always be a multiple of 4. We use - the least significant bit to record whether we have - already processed this entry. */ - if ((off & 1) != 0) - off &= ~1; - else - { - bfd_put_32 (output_bfd, relocation, sgot->contents + off); - - if (bfd_link_pic (info)) - { - asection *srelgot; - Elf_Internal_Rela outrel; - - /* We need to generate a R_M32R_RELATIVE reloc - for the dynamic linker. */ - srelgot = htab->root.srelgot; - BFD_ASSERT (srelgot != NULL); - - outrel.r_offset = (sgot->output_section->vma - + sgot->output_offset - + off); - outrel.r_info = ELF32_R_INFO (0, R_M32R_RELATIVE); - outrel.r_addend = relocation; - loc = srelgot->contents; - loc += srelgot->reloc_count * sizeof (Elf32_External_Rela); - bfd_elf32_swap_reloca_out (output_bfd, &outrel,loc); - ++srelgot->reloc_count; - } - - local_got_offsets[r_symndx] |= 1; - } - - relocation = sgot->output_offset + off; - } - if ((r_type == R_M32R_GOT16_HI_SLO) - && ((relocation + rel->r_addend) & 0x8000)) - rel->r_addend += 0x10000; - - break; - - case R_M32R_26_PLTREL: - /* Relocation is to the entry for this symbol in the - procedure linkage table. */ - - /* The native assembler will generate a 26_PLTREL reloc - for a local symbol if you assemble a call from one - section to another when using -K pic. */ - if (h == NULL) - break; - - if (h->forced_local) - break; - - if (h->plt.offset == (bfd_vma) -1) + || (bfd_link_pic (info) + && (info->symbolic + || h->dynindx == -1 + || h->forced_local) + && h->def_regular)) + { + /* This is actually a static link, or it is a + -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. Since the + offset must always be a multiple of 4, we use the + least significant bit to record whether we have + initialized it already. + + 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. */ + if ((off & 1) != 0) + off &= ~1; + else + { + bfd_put_32 (output_bfd, relocation, + sgot->contents + off); + h->got.offset |= 1; + } + } + + relocation = sgot->output_offset + off; + } + else + { + bfd_vma off; + bfd_byte *loc; + + BFD_ASSERT (local_got_offsets != NULL + && local_got_offsets[r_symndx] != (bfd_vma) -1); + + off = local_got_offsets[r_symndx]; + + /* The offset must always be a multiple of 4. We use + the least significant bit to record whether we have + already processed this entry. */ + if ((off & 1) != 0) + off &= ~1; + else + { + bfd_put_32 (output_bfd, relocation, sgot->contents + off); + + if (bfd_link_pic (info)) + { + asection *srelgot; + Elf_Internal_Rela outrel; + + /* We need to generate a R_M32R_RELATIVE reloc + for the dynamic linker. */ + srelgot = htab->root.srelgot; + BFD_ASSERT (srelgot != NULL); + + outrel.r_offset = (sgot->output_section->vma + + sgot->output_offset + + off); + outrel.r_info = ELF32_R_INFO (0, R_M32R_RELATIVE); + outrel.r_addend = relocation; + loc = srelgot->contents; + loc += srelgot->reloc_count * sizeof (Elf32_External_Rela); + bfd_elf32_swap_reloca_out (output_bfd, &outrel,loc); + ++srelgot->reloc_count; + } + + local_got_offsets[r_symndx] |= 1; + } + + relocation = sgot->output_offset + off; + } + if ((r_type == R_M32R_GOT16_HI_SLO) + && ((relocation + rel->r_addend) & 0x8000)) + rel->r_addend += 0x10000; + + break; + + case R_M32R_26_PLTREL: + /* Relocation is to the entry for this symbol in the + procedure linkage table. */ + + /* The native assembler will generate a 26_PLTREL reloc + for a local symbol if you assemble a call from one + section to another when using -K pic. */ + if (h == NULL) + break; + + if (h->forced_local) + break; + + if (h->plt.offset == (bfd_vma) -1) /* We didn't make a PLT entry for this symbol. This happens when statically linking PIC code, or when using -Bsymbolic. */ break; - relocation = (splt->output_section->vma - + splt->output_offset - + h->plt.offset); - break; + relocation = (splt->output_section->vma + + splt->output_offset + + h->plt.offset); + break; - case R_M32R_HI16_SLO_RELA: + case R_M32R_HI16_SLO_RELA: if ((relocation + rel->r_addend) & 0x8000) rel->r_addend += 0x10000; - /* Fall through. */ + /* Fall through. */ - case R_M32R_16_RELA: - case R_M32R_24_RELA: - case R_M32R_32_RELA: - case R_M32R_REL32: + case R_M32R_16_RELA: + case R_M32R_24_RELA: + case R_M32R_32_RELA: + case R_M32R_REL32: case R_M32R_10_PCREL_RELA: - case R_M32R_18_PCREL_RELA: - case R_M32R_26_PCREL_RELA: - case R_M32R_HI16_ULO_RELA: - case R_M32R_LO16_RELA: - if (bfd_link_pic (info) - && r_symndx != STN_UNDEF - && (input_section->flags & SEC_ALLOC) != 0 - && (( r_type != R_M32R_10_PCREL_RELA - && r_type != R_M32R_18_PCREL_RELA - && r_type != R_M32R_26_PCREL_RELA - && r_type != R_M32R_REL32) - || (h != NULL - && h->dynindx != -1 - && (! info->symbolic - || !h->def_regular)))) - { - Elf_Internal_Rela outrel; - bfd_boolean skip, relocate; - bfd_byte *loc; - - /* When generating a shared object, these relocations - are copied into the output file to be resolved at run - time. */ - if (sreloc == NULL) - { + case R_M32R_18_PCREL_RELA: + case R_M32R_26_PCREL_RELA: + case R_M32R_HI16_ULO_RELA: + case R_M32R_LO16_RELA: + if (bfd_link_pic (info) + && r_symndx != STN_UNDEF + && (input_section->flags & SEC_ALLOC) != 0 + && (( r_type != R_M32R_10_PCREL_RELA + && r_type != R_M32R_18_PCREL_RELA + && r_type != R_M32R_26_PCREL_RELA + && r_type != R_M32R_REL32) + || (h != NULL + && h->dynindx != -1 + && (! info->symbolic + || !h->def_regular)))) + { + Elf_Internal_Rela outrel; + bfd_boolean skip, relocate; + bfd_byte *loc; + + /* When generating a shared object, these relocations + are copied into the output file to be resolved at run + time. */ + if (sreloc == NULL) + { sreloc = _bfd_elf_get_dynamic_reloc_section (input_bfd, input_section, /*rela?*/ TRUE); if (sreloc == NULL) return FALSE; - } - - skip = FALSE; - relocate = FALSE; - - outrel.r_offset = _bfd_elf_section_offset (output_bfd, - info, - input_section, - rel->r_offset); - if (outrel.r_offset == (bfd_vma) -1) - skip = TRUE; - else if (outrel.r_offset == (bfd_vma) -2) - skip = relocate = TRUE; - outrel.r_offset += (input_section->output_section->vma - + input_section->output_offset); - - if (skip) - memset (&outrel, 0, sizeof outrel); - else if ( r_type == R_M32R_10_PCREL_RELA - || r_type == R_M32R_18_PCREL_RELA - || r_type == R_M32R_26_PCREL_RELA - || r_type == R_M32R_REL32) - { - BFD_ASSERT (h != NULL && h->dynindx != -1); - outrel.r_info = ELF32_R_INFO (h->dynindx, r_type); - outrel.r_addend = rel->r_addend; - } - else - { - /* h->dynindx may be -1 if this symbol was marked to - become local. */ - if (h == NULL - || ((info->symbolic || h->dynindx == -1) - && h->def_regular)) - { - relocate = TRUE; - outrel.r_info = ELF32_R_INFO (0, R_M32R_RELATIVE); - outrel.r_addend = relocation + rel->r_addend; - } - else - { - BFD_ASSERT (h->dynindx != -1); - outrel.r_info = ELF32_R_INFO (h->dynindx, r_type); - outrel.r_addend = relocation + rel->r_addend; - } - } - - loc = sreloc->contents; - loc += sreloc->reloc_count * sizeof (Elf32_External_Rela); - bfd_elf32_swap_reloca_out (output_bfd, &outrel,loc); - ++sreloc->reloc_count; - - /* If this reloc is against an external symbol, we do - not want to fiddle with the addend. Otherwise, we - need to include the symbol value so that it becomes - an addend for the dynamic reloc. */ - if (! relocate) - continue; + } + + skip = FALSE; + relocate = FALSE; + + outrel.r_offset = _bfd_elf_section_offset (output_bfd, + info, + input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = TRUE; + else if (outrel.r_offset == (bfd_vma) -2) + skip = relocate = TRUE; + outrel.r_offset += (input_section->output_section->vma + + input_section->output_offset); + + if (skip) + memset (&outrel, 0, sizeof outrel); + else if ( r_type == R_M32R_10_PCREL_RELA + || r_type == R_M32R_18_PCREL_RELA + || r_type == R_M32R_26_PCREL_RELA + || r_type == R_M32R_REL32) + { + BFD_ASSERT (h != NULL && h->dynindx != -1); + outrel.r_info = ELF32_R_INFO (h->dynindx, r_type); + outrel.r_addend = rel->r_addend; + } + else + { + /* h->dynindx may be -1 if this symbol was marked to + become local. */ + if (h == NULL + || ((info->symbolic || h->dynindx == -1) + && h->def_regular)) + { + relocate = TRUE; + outrel.r_info = ELF32_R_INFO (0, R_M32R_RELATIVE); + outrel.r_addend = relocation + rel->r_addend; + } + else + { + BFD_ASSERT (h->dynindx != -1); + outrel.r_info = ELF32_R_INFO (h->dynindx, r_type); + outrel.r_addend = relocation + rel->r_addend; + } + } + + loc = sreloc->contents; + loc += sreloc->reloc_count * sizeof (Elf32_External_Rela); + bfd_elf32_swap_reloca_out (output_bfd, &outrel,loc); + ++sreloc->reloc_count; + + /* If this reloc is against an external symbol, we do + not want to fiddle with the addend. Otherwise, we + need to include the symbol value so that it becomes + an addend for the dynamic reloc. */ + if (! relocate) + continue; break; - } + } else if (r_type != R_M32R_10_PCREL_RELA) break; /* Fall through. */ @@ -2904,7 +2904,7 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, r = m32r_elf_do_10_pcrel_reloc (input_bfd, howto, input_section, contents, offset, sec, relocation, addend); - goto check_reloc; + goto check_reloc; case (int) R_M32R_HI16_SLO : case (int) R_M32R_HI16_ULO : @@ -2933,9 +2933,9 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, relocation, addend); } - goto check_reloc; + goto check_reloc; - case (int) R_M32R_SDA16_RELA: + case (int) R_M32R_SDA16_RELA: case (int) R_M32R_SDA16 : { const char *name; @@ -2978,7 +2978,7 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, continue; } } - /* Fall through. */ + /* Fall through. */ default : /* OLD_M32R_RELOC */ @@ -2988,9 +2988,9 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, goto check_reloc; } - r = _bfd_final_link_relocate (howto, input_bfd, input_section, - contents, rel->r_offset, - relocation, rel->r_addend); + r = _bfd_final_link_relocate (howto, input_bfd, input_section, + contents, rel->r_offset, + relocation, rel->r_addend); } @@ -3085,7 +3085,7 @@ m32r_elf_finish_dynamic_symbol (bfd *output_bfd, Elf_Internal_Rela rela; /* This symbol has an entry in the procedure linkage table. Set - it up. */ + it up. */ BFD_ASSERT (h->dynindx != -1); @@ -3095,73 +3095,73 @@ m32r_elf_finish_dynamic_symbol (bfd *output_bfd, BFD_ASSERT (splt != NULL && sgot != NULL && srela != NULL); /* Get the index in the procedure linkage table which - corresponds to this symbol. This is the index of this symbol - in all the symbols for which we are making plt entries. The - first entry in the procedure linkage table is reserved. */ + corresponds to this symbol. This is the index of this symbol + in all the symbols for which we are making plt entries. The + first entry in the procedure linkage table is reserved. */ plt_index = h->plt.offset / PLT_ENTRY_SIZE - 1; /* 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. */ + corresponds to this function. Each .got entry is 4 bytes. + The first three are reserved. */ got_offset = (plt_index + 3) * 4; /* Fill in the entry in the procedure linkage table. */ if (! bfd_link_pic (info)) - { - bfd_put_32 (output_bfd, - (PLT_ENTRY_WORD0b - + (((sgot->output_section->vma - + sgot->output_offset - + got_offset) >> 16) & 0xffff)), - splt->contents + h->plt.offset); - bfd_put_32 (output_bfd, - (PLT_ENTRY_WORD1b - + ((sgot->output_section->vma - + sgot->output_offset - + got_offset) & 0xffff)), - splt->contents + h->plt.offset + 4); - bfd_put_32 (output_bfd, PLT_ENTRY_WORD2, - splt->contents + h->plt.offset + 8); - bfd_put_32 (output_bfd, - (PLT_ENTRY_WORD3 - + plt_index * sizeof (Elf32_External_Rela)), - splt->contents + h->plt.offset + 12); - bfd_put_32 (output_bfd, - (PLT_ENTRY_WORD4 - + (((unsigned int) ((- (h->plt.offset + 16)) >> 2)) & 0xffffff)), - splt->contents + h->plt.offset + 16); - } + { + bfd_put_32 (output_bfd, + (PLT_ENTRY_WORD0b + + (((sgot->output_section->vma + + sgot->output_offset + + got_offset) >> 16) & 0xffff)), + splt->contents + h->plt.offset); + bfd_put_32 (output_bfd, + (PLT_ENTRY_WORD1b + + ((sgot->output_section->vma + + sgot->output_offset + + got_offset) & 0xffff)), + splt->contents + h->plt.offset + 4); + bfd_put_32 (output_bfd, PLT_ENTRY_WORD2, + splt->contents + h->plt.offset + 8); + bfd_put_32 (output_bfd, + (PLT_ENTRY_WORD3 + + plt_index * sizeof (Elf32_External_Rela)), + splt->contents + h->plt.offset + 12); + bfd_put_32 (output_bfd, + (PLT_ENTRY_WORD4 + + (((unsigned int) ((- (h->plt.offset + 16)) >> 2)) & 0xffffff)), + splt->contents + h->plt.offset + 16); + } else - { - bfd_put_32 (output_bfd, - PLT_ENTRY_WORD0 + got_offset, - splt->contents + h->plt.offset); - bfd_put_32 (output_bfd, PLT_ENTRY_WORD1, - splt->contents + h->plt.offset + 4); - bfd_put_32 (output_bfd, PLT_ENTRY_WORD2, - splt->contents + h->plt.offset + 8); - bfd_put_32 (output_bfd, - (PLT_ENTRY_WORD3 - + plt_index * sizeof (Elf32_External_Rela)), - splt->contents + h->plt.offset + 12); - bfd_put_32 (output_bfd, - (PLT_ENTRY_WORD4 - + (((unsigned int) ((- (h->plt.offset + 16)) >> 2)) & 0xffffff)), - splt->contents + h->plt.offset + 16); - } + { + bfd_put_32 (output_bfd, + PLT_ENTRY_WORD0 + got_offset, + splt->contents + h->plt.offset); + bfd_put_32 (output_bfd, PLT_ENTRY_WORD1, + splt->contents + h->plt.offset + 4); + bfd_put_32 (output_bfd, PLT_ENTRY_WORD2, + splt->contents + h->plt.offset + 8); + bfd_put_32 (output_bfd, + (PLT_ENTRY_WORD3 + + plt_index * sizeof (Elf32_External_Rela)), + splt->contents + h->plt.offset + 12); + bfd_put_32 (output_bfd, + (PLT_ENTRY_WORD4 + + (((unsigned int) ((- (h->plt.offset + 16)) >> 2)) & 0xffffff)), + splt->contents + h->plt.offset + 16); + } /* Fill in the entry in the global offset table. */ bfd_put_32 (output_bfd, - (splt->output_section->vma - + splt->output_offset - + h->plt.offset - + 12), /* same offset */ - sgot->contents + got_offset); + (splt->output_section->vma + + splt->output_offset + + h->plt.offset + + 12), /* same offset */ + sgot->contents + got_offset); /* Fill in the entry in the .rela.plt section. */ rela.r_offset = (sgot->output_section->vma - + sgot->output_offset - + got_offset); + + sgot->output_offset + + got_offset); rela.r_info = ELF32_R_INFO (h->dynindx, R_M32R_JMP_SLOT); rela.r_addend = 0; loc = srela->contents; @@ -3169,11 +3169,11 @@ m32r_elf_finish_dynamic_symbol (bfd *output_bfd, bfd_elf32_swap_reloca_out (output_bfd, &rela, loc); if (!h->def_regular) - { - /* Mark the symbol as undefined, rather than as defined in - the .plt section. Leave the value alone. */ - sym->st_shndx = SHN_UNDEF; - } + { + /* Mark the symbol as undefined, rather than as defined in + the .plt section. Leave the value alone. */ + sym->st_shndx = SHN_UNDEF; + } } if (h->got.offset != (bfd_vma) -1) @@ -3183,39 +3183,39 @@ m32r_elf_finish_dynamic_symbol (bfd *output_bfd, Elf_Internal_Rela rela; /* This symbol has an entry in the global offset table. Set it - up. */ + up. */ sgot = htab->root.sgot; srela = htab->root.srelgot; BFD_ASSERT (sgot != NULL && srela != NULL); rela.r_offset = (sgot->output_section->vma - + sgot->output_offset - + (h->got.offset &~ 1)); + + sgot->output_offset + + (h->got.offset &~ 1)); /* If this is a -Bsymbolic link, and the symbol is defined - locally, we just want to emit a RELATIVE reloc. Likewise if - the symbol was forced to be local because of a version file. - The entry in the global offset table will already have been - initialized in the relocate_section function. */ + locally, we just want to emit a RELATIVE reloc. Likewise if + the symbol was forced to be local because of a version file. + The entry in the global offset table will already have been + initialized in the relocate_section function. */ if (bfd_link_pic (info) - && (info->symbolic + && (info->symbolic || h->dynindx == -1 || h->forced_local) - && h->def_regular) - { - rela.r_info = ELF32_R_INFO (0, R_M32R_RELATIVE); - rela.r_addend = (h->root.u.def.value - + h->root.u.def.section->output_section->vma - + h->root.u.def.section->output_offset); - } + && h->def_regular) + { + rela.r_info = ELF32_R_INFO (0, R_M32R_RELATIVE); + rela.r_addend = (h->root.u.def.value + + h->root.u.def.section->output_section->vma + + h->root.u.def.section->output_offset); + } else - { + { BFD_ASSERT ((h->got.offset & 1) == 0); - bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + h->got.offset); - rela.r_info = ELF32_R_INFO (h->dynindx, R_M32R_GLOB_DAT); - rela.r_addend = 0; - } + bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + h->got.offset); + rela.r_info = ELF32_R_INFO (h->dynindx, R_M32R_GLOB_DAT); + rela.r_addend = 0; + } loc = srela->contents; loc += srela->reloc_count * sizeof (Elf32_External_Rela); @@ -3231,15 +3231,15 @@ m32r_elf_finish_dynamic_symbol (bfd *output_bfd, /* This symbols needs a copy reloc. Set it up. */ BFD_ASSERT (h->dynindx != -1 - && (h->root.type == bfd_link_hash_defined - || h->root.type == bfd_link_hash_defweak)); + && (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak)); s = bfd_get_linker_section (htab->root.dynobj, ".rela.bss"); BFD_ASSERT (s != NULL); rela.r_offset = (h->root.u.def.value - + h->root.u.def.section->output_section->vma - + h->root.u.def.section->output_offset); + + h->root.u.def.section->output_section->vma + + h->root.u.def.section->output_offset); rela.r_info = ELF32_R_INFO (h->dynindx, R_M32R_COPY); rela.r_addend = 0; loc = s->contents; @@ -3291,77 +3291,77 @@ m32r_elf_finish_dynamic_sections (bfd *output_bfd, dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->size); for (; dyncon < dynconend; dyncon++) - { - Elf_Internal_Dyn dyn; - asection *s; - - bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn); - - switch (dyn.d_tag) - { - default: - break; - - case DT_PLTGOT: - s = htab->root.sgotplt; - goto get_vma; - case DT_JMPREL: - s = htab->root.srelplt; - get_vma: - dyn.d_un.d_ptr = s->output_section->vma + s->output_offset; - bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); - break; - - case DT_PLTRELSZ: - s = htab->root.srelplt; + { + Elf_Internal_Dyn dyn; + asection *s; + + bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn); + + switch (dyn.d_tag) + { + default: + break; + + case DT_PLTGOT: + s = htab->root.sgotplt; + goto get_vma; + case DT_JMPREL: + s = htab->root.srelplt; + get_vma: + dyn.d_un.d_ptr = s->output_section->vma + s->output_offset; + bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); + break; + + case DT_PLTRELSZ: + s = htab->root.srelplt; dyn.d_un.d_val = s->size; - bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); - break; - } - } + bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); + break; + } + } /* Fill in the first entry in the procedure linkage table. */ splt = htab->root.splt; if (splt && splt->size > 0) - { - if (bfd_link_pic (info)) - { - bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD0, splt->contents); - bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD1, splt->contents + 4); - bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD2, splt->contents + 8); - bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD3, splt->contents + 12); - bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD4, splt->contents + 16); - } - else - { - unsigned long addr; - /* addr = .got + 4 */ - addr = sgot->output_section->vma + sgot->output_offset + 4; - bfd_put_32 (output_bfd, + { + if (bfd_link_pic (info)) + { + bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD0, splt->contents); + bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD1, splt->contents + 4); + bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD2, splt->contents + 8); + bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD3, splt->contents + 12); + bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD4, splt->contents + 16); + } + else + { + unsigned long addr; + /* addr = .got + 4 */ + addr = sgot->output_section->vma + sgot->output_offset + 4; + bfd_put_32 (output_bfd, PLT0_ENTRY_WORD0 | ((addr >> 16) & 0xffff), splt->contents); - bfd_put_32 (output_bfd, + bfd_put_32 (output_bfd, PLT0_ENTRY_WORD1 | (addr & 0xffff), splt->contents + 4); - bfd_put_32 (output_bfd, PLT0_ENTRY_WORD2, splt->contents + 8); - bfd_put_32 (output_bfd, PLT0_ENTRY_WORD3, splt->contents + 12); - bfd_put_32 (output_bfd, PLT0_ENTRY_WORD4, splt->contents + 16); - } - - elf_section_data (splt->output_section)->this_hdr.sh_entsize = - PLT_ENTRY_SIZE; - } + bfd_put_32 (output_bfd, PLT0_ENTRY_WORD2, splt->contents + 8); + bfd_put_32 (output_bfd, PLT0_ENTRY_WORD3, splt->contents + 12); + bfd_put_32 (output_bfd, PLT0_ENTRY_WORD4, splt->contents + 16); + } + + elf_section_data (splt->output_section)->this_hdr.sh_entsize = + PLT_ENTRY_SIZE; + } } /* Fill in the first three entries in the global offset table. */ if (sgot && sgot->size > 0) { if (sdyn == NULL) - bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents); + bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents); else - bfd_put_32 (output_bfd, - sdyn->output_section->vma + sdyn->output_offset, - sgot->contents); + bfd_put_32 (output_bfd, + sdyn->output_section->vma + sdyn->output_offset, + sgot->contents); bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + 4); bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + 8); @@ -3466,8 +3466,8 @@ m32r_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info) if ((in_flags & EF_M32R_ARCH) != (out_flags & EF_M32R_ARCH)) { if ( ((in_flags & EF_M32R_ARCH) != E_M32R_ARCH) - || ((out_flags & EF_M32R_ARCH) == E_M32R_ARCH) - || ((in_flags & EF_M32R_ARCH) == E_M32R2_ARCH)) + || ((out_flags & EF_M32R_ARCH) == E_M32R_ARCH) + || ((in_flags & EF_M32R_ARCH) == E_M32R2_ARCH)) { _bfd_error_handler (_("%B: Instruction set mismatch with previous modules"), ibfd); @@ -3576,7 +3576,7 @@ m32r_elf_check_relocs (bfd *abfd, r_symndx = ELF32_R_SYM (rel->r_info); r_type = ELF32_R_TYPE (rel->r_info); if (r_symndx < symtab_hdr->sh_info) - h = NULL; + h = NULL; else { h = sym_hashes[r_symndx - symtab_hdr->sh_info]; @@ -3587,162 +3587,162 @@ m32r_elf_check_relocs (bfd *abfd, /* Some relocs require a global offset table. */ if (htab->root.sgot == NULL) - { - switch (r_type) - { - case R_M32R_GOT16_HI_ULO: - case R_M32R_GOT16_HI_SLO: - case R_M32R_GOTOFF: - case R_M32R_GOTOFF_HI_ULO: - case R_M32R_GOTOFF_HI_SLO: - case R_M32R_GOTOFF_LO: - case R_M32R_GOT16_LO: - case R_M32R_GOTPC24: - case R_M32R_GOTPC_HI_ULO: - case R_M32R_GOTPC_HI_SLO: - case R_M32R_GOTPC_LO: - case R_M32R_GOT24: - if (dynobj == NULL) - htab->root.dynobj = dynobj = abfd; - if (!_bfd_elf_create_got_section (dynobj, info)) - return FALSE; - break; - - default: - break; - } - } + { + switch (r_type) + { + case R_M32R_GOT16_HI_ULO: + case R_M32R_GOT16_HI_SLO: + case R_M32R_GOTOFF: + case R_M32R_GOTOFF_HI_ULO: + case R_M32R_GOTOFF_HI_SLO: + case R_M32R_GOTOFF_LO: + case R_M32R_GOT16_LO: + case R_M32R_GOTPC24: + case R_M32R_GOTPC_HI_ULO: + case R_M32R_GOTPC_HI_SLO: + case R_M32R_GOTPC_LO: + case R_M32R_GOT24: + if (dynobj == NULL) + htab->root.dynobj = dynobj = abfd; + if (!_bfd_elf_create_got_section (dynobj, info)) + return FALSE; + break; + + default: + break; + } + } switch (r_type) - { + { case R_M32R_GOT16_HI_ULO: case R_M32R_GOT16_HI_SLO: case R_M32R_GOT16_LO: - case R_M32R_GOT24: - - if (h != NULL) - h->got.refcount += 1; - else - { - bfd_signed_vma *local_got_refcounts; - - /* This is a global offset table entry for a local - symbol. */ - local_got_refcounts = elf_local_got_refcounts (abfd); - if (local_got_refcounts == NULL) - { - bfd_size_type size; - - size = symtab_hdr->sh_info; - size *= sizeof (bfd_signed_vma); - local_got_refcounts = bfd_zalloc (abfd, size); - if (local_got_refcounts == NULL) - return FALSE; - elf_local_got_refcounts (abfd) = local_got_refcounts; - } - local_got_refcounts[r_symndx] += 1; - } - break; - - case R_M32R_26_PLTREL: - /* This symbol requires a procedure linkage table entry. We - actually build the entry in adjust_dynamic_symbol, - because this might be a case of linking PIC code without - linking in any dynamic objects, in which case we don't - need to generate a procedure linkage table after all. */ + case R_M32R_GOT24: + + if (h != NULL) + h->got.refcount += 1; + else + { + bfd_signed_vma *local_got_refcounts; + + /* This is a global offset table entry for a local + symbol. */ + local_got_refcounts = elf_local_got_refcounts (abfd); + if (local_got_refcounts == NULL) + { + bfd_size_type size; + + size = symtab_hdr->sh_info; + size *= sizeof (bfd_signed_vma); + local_got_refcounts = bfd_zalloc (abfd, size); + if (local_got_refcounts == NULL) + return FALSE; + elf_local_got_refcounts (abfd) = local_got_refcounts; + } + local_got_refcounts[r_symndx] += 1; + } + break; + + case R_M32R_26_PLTREL: + /* This symbol requires a procedure linkage table entry. We + actually build the entry in adjust_dynamic_symbol, + because this might be a case of linking PIC code without + linking in any dynamic objects, in which case we don't + need to generate a procedure linkage table after all. */ /* If this is a local symbol, we resolve it directly without creating a procedure linkage table entry. */ - if (h == NULL) - continue; + if (h == NULL) + continue; - if (h->forced_local) - break; + if (h->forced_local) + break; - h->needs_plt = 1; + h->needs_plt = 1; h->plt.refcount += 1; - break; - - case R_M32R_16_RELA: - case R_M32R_24_RELA: - case R_M32R_32_RELA: - case R_M32R_REL32: - case R_M32R_HI16_ULO_RELA: - case R_M32R_HI16_SLO_RELA: - case R_M32R_LO16_RELA: - case R_M32R_SDA16_RELA: + break; + + case R_M32R_16_RELA: + case R_M32R_24_RELA: + case R_M32R_32_RELA: + case R_M32R_REL32: + case R_M32R_HI16_ULO_RELA: + case R_M32R_HI16_SLO_RELA: + case R_M32R_LO16_RELA: + case R_M32R_SDA16_RELA: case R_M32R_10_PCREL_RELA: - case R_M32R_18_PCREL_RELA: - case R_M32R_26_PCREL_RELA: - - if (h != NULL && !bfd_link_pic (info)) - { - h->non_got_ref = 1; - h->plt.refcount += 1; - } - - /* If we are creating a shared library, and this is a reloc - against a global symbol, or a non PC relative reloc - against a local symbol, then we need to copy the reloc - into the shared library. However, if we are linking with - -Bsymbolic, we do not need to copy a reloc against a - global symbol which is defined in an object we are - including in the link (i.e., DEF_REGULAR is set). At - this point we have not seen all the input files, so it is - possible that DEF_REGULAR is not set now but will be set - later (it is never cleared). We account for that - possibility below by storing information in the - dyn_relocs field of the hash table entry. A similar - situation occurs when creating shared libraries and symbol - visibility changes render the symbol local. - - If on the other hand, we are creating an executable, we - may need to keep relocations for symbols satisfied by a - dynamic library if we manage to avoid copy relocs for the - symbol. */ - if ((bfd_link_pic (info) - && (sec->flags & SEC_ALLOC) != 0 + case R_M32R_18_PCREL_RELA: + case R_M32R_26_PCREL_RELA: + + if (h != NULL && !bfd_link_pic (info)) + { + h->non_got_ref = 1; + h->plt.refcount += 1; + } + + /* If we are creating a shared library, and this is a reloc + against a global symbol, or a non PC relative reloc + against a local symbol, then we need to copy the reloc + into the shared library. However, if we are linking with + -Bsymbolic, we do not need to copy a reloc against a + global symbol which is defined in an object we are + including in the link (i.e., DEF_REGULAR is set). At + this point we have not seen all the input files, so it is + possible that DEF_REGULAR is not set now but will be set + later (it is never cleared). We account for that + possibility below by storing information in the + dyn_relocs field of the hash table entry. A similar + situation occurs when creating shared libraries and symbol + visibility changes render the symbol local. + + If on the other hand, we are creating an executable, we + may need to keep relocations for symbols satisfied by a + dynamic library if we manage to avoid copy relocs for the + symbol. */ + if ((bfd_link_pic (info) + && (sec->flags & SEC_ALLOC) != 0 && (( r_type != R_M32R_26_PCREL_RELA - && r_type != R_M32R_18_PCREL_RELA - && r_type != R_M32R_10_PCREL_RELA - && r_type != R_M32R_REL32) - || (h != NULL + && r_type != R_M32R_18_PCREL_RELA + && r_type != R_M32R_10_PCREL_RELA + && r_type != R_M32R_REL32) + || (h != NULL && (! info->symbolic - || h->root.type == bfd_link_hash_defweak - || !h->def_regular)))) - || (!bfd_link_pic (info) - && (sec->flags & SEC_ALLOC) != 0 - && h != NULL - && (h->root.type == bfd_link_hash_defweak - || !h->def_regular))) - { - struct elf_dyn_relocs *p; - struct elf_dyn_relocs **head; - - if (dynobj == NULL) - htab->root.dynobj = dynobj = abfd; - - /* When creating a shared object, we must copy these - relocs into the output file. We create a reloc - section in dynobj and make room for the reloc. */ - if (sreloc == NULL) - { + || h->root.type == bfd_link_hash_defweak + || !h->def_regular)))) + || (!bfd_link_pic (info) + && (sec->flags & SEC_ALLOC) != 0 + && h != NULL + && (h->root.type == bfd_link_hash_defweak + || !h->def_regular))) + { + struct elf_dyn_relocs *p; + struct elf_dyn_relocs **head; + + if (dynobj == NULL) + htab->root.dynobj = dynobj = abfd; + + /* When creating a shared object, we must copy these + relocs into the output file. We create a reloc + section in dynobj and make room for the reloc. */ + if (sreloc == NULL) + { sreloc = _bfd_elf_make_dynamic_reloc_section (sec, dynobj, 2, abfd, /*rela?*/ TRUE); if (sreloc == NULL) return FALSE; - } - - /* If this is a global symbol, we count the number of - relocations we need for this symbol. */ - if (h != NULL) - head = &((struct elf_m32r_link_hash_entry *) h)->dyn_relocs; - else - { - /* Track dynamic relocs needed for local syms too. */ - asection *s; - void *vpp; + } + + /* If this is a global symbol, we count the number of + relocations we need for this symbol. */ + if (h != NULL) + head = &((struct elf_m32r_link_hash_entry *) h)->dyn_relocs; + else + { + /* Track dynamic relocs needed for local syms too. */ + asection *s; + void *vpp; Elf_Internal_Sym *isym; isym = bfd_sym_from_r_symndx (&htab->sym_cache, @@ -3755,56 +3755,56 @@ m32r_elf_check_relocs (bfd *abfd, s = sec; vpp = &elf_section_data (s)->local_dynrel; - head = (struct elf_dyn_relocs **) vpp; - } - - p = *head; - if (p == NULL || p->sec != sec) - { - bfd_size_type amt = sizeof (*p); - - p = bfd_alloc (dynobj, amt); - if (p == NULL) - return FALSE; - p->next = *head; - *head = p; - p->sec = sec; - p->count = 0; - p->pc_count = 0; - } - - p->count += 1; - if ( ELF32_R_TYPE (rel->r_info) == R_M32R_26_PCREL_RELA - || ELF32_R_TYPE (rel->r_info) == R_M32R_18_PCREL_RELA + head = (struct elf_dyn_relocs **) vpp; + } + + p = *head; + if (p == NULL || p->sec != sec) + { + bfd_size_type amt = sizeof (*p); + + p = bfd_alloc (dynobj, amt); + if (p == NULL) + return FALSE; + p->next = *head; + *head = p; + p->sec = sec; + p->count = 0; + p->pc_count = 0; + } + + p->count += 1; + if ( ELF32_R_TYPE (rel->r_info) == R_M32R_26_PCREL_RELA + || ELF32_R_TYPE (rel->r_info) == R_M32R_18_PCREL_RELA || ELF32_R_TYPE (rel->r_info) == R_M32R_10_PCREL_RELA || ELF32_R_TYPE (rel->r_info) == R_M32R_REL32) - p->pc_count += 1; - } - break; - - /* This relocation describes the C++ object vtable hierarchy. - Reconstruct it for later use during GC. */ - case R_M32R_RELA_GNU_VTINHERIT: - case R_M32R_GNU_VTINHERIT: - 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_M32R_GNU_VTENTRY: - BFD_ASSERT (h != NULL); - if (h != NULL - && !bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_offset)) - return FALSE; - break; - case R_M32R_RELA_GNU_VTENTRY: - BFD_ASSERT (h != NULL); - if (h != NULL - && !bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend)) - return FALSE; - break; - } + p->pc_count += 1; + } + break; + + /* This relocation describes the C++ object vtable hierarchy. + Reconstruct it for later use during GC. */ + case R_M32R_RELA_GNU_VTINHERIT: + case R_M32R_GNU_VTINHERIT: + 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_M32R_GNU_VTENTRY: + BFD_ASSERT (h != NULL); + if (h != NULL + && !bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_offset)) + return FALSE; + break; + case R_M32R_RELA_GNU_VTENTRY: + BFD_ASSERT (h != NULL); + if (h != NULL + && !bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend)) + return FALSE; + break; + } } return TRUE; @@ -3812,9 +3812,9 @@ m32r_elf_check_relocs (bfd *abfd, static const struct bfd_elf_special_section m32r_elf_special_sections[] = { - { STRING_COMMA_LEN (".sbss"), -2, SHT_NOBITS, SHF_ALLOC + SHF_WRITE }, + { STRING_COMMA_LEN (".sbss"), -2, SHT_NOBITS, SHF_ALLOC + SHF_WRITE }, { STRING_COMMA_LEN (".sdata"), -2, SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, - { NULL, 0, 0, 0, 0 } + { NULL, 0, 0, 0, 0 } }; static enum elf_reloc_type_class @@ -3827,7 +3827,7 @@ m32r_elf_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED, case R_M32R_RELATIVE: return reloc_class_relative; case R_M32R_JMP_SLOT: return reloc_class_plt; case R_M32R_COPY: return reloc_class_copy; - default: return reloc_class_normal; + default: return reloc_class_normal; } } @@ -3837,10 +3837,10 @@ m32r_elf_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED, #define ELF_MACHINE_ALT1 EM_CYGNUS_M32R #define ELF_MAXPAGESIZE 0x1 /* Explicitly requested by Mitsubishi. */ -#define TARGET_BIG_SYM m32r_elf32_vec +#define TARGET_BIG_SYM m32r_elf32_vec #define TARGET_BIG_NAME "elf32-m32r" -#define TARGET_LITTLE_SYM m32r_elf32_le_vec -#define TARGET_LITTLE_NAME "elf32-m32rle" +#define TARGET_LITTLE_SYM m32r_elf32_le_vec +#define TARGET_LITTLE_NAME "elf32-m32rle" #define elf_info_to_howto m32r_info_to_howto #define elf_info_to_howto_rel m32r_info_to_howto_rel @@ -3848,21 +3848,21 @@ m32r_elf_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED, #define elf_backend_symbol_processing _bfd_m32r_elf_symbol_processing #define elf_backend_add_symbol_hook m32r_elf_add_symbol_hook #define elf_backend_relocate_section m32r_elf_relocate_section -#define elf_backend_gc_mark_hook m32r_elf_gc_mark_hook -#define elf_backend_check_relocs m32r_elf_check_relocs +#define elf_backend_gc_mark_hook m32r_elf_gc_mark_hook +#define elf_backend_check_relocs m32r_elf_check_relocs -#define elf_backend_create_dynamic_sections m32r_elf_create_dynamic_sections -#define bfd_elf32_bfd_link_hash_table_create m32r_elf_link_hash_table_create -#define elf_backend_size_dynamic_sections m32r_elf_size_dynamic_sections +#define elf_backend_create_dynamic_sections m32r_elf_create_dynamic_sections +#define bfd_elf32_bfd_link_hash_table_create m32r_elf_link_hash_table_create +#define elf_backend_size_dynamic_sections m32r_elf_size_dynamic_sections #define elf_backend_omit_section_dynsym \ ((bfd_boolean (*) (bfd *, struct bfd_link_info *, asection *)) bfd_true) -#define elf_backend_finish_dynamic_sections m32r_elf_finish_dynamic_sections -#define elf_backend_adjust_dynamic_symbol m32r_elf_adjust_dynamic_symbol -#define elf_backend_finish_dynamic_symbol m32r_elf_finish_dynamic_symbol -#define elf_backend_reloc_type_class m32r_elf_reloc_type_class -#define elf_backend_copy_indirect_symbol m32r_elf_copy_indirect_symbol +#define elf_backend_finish_dynamic_sections m32r_elf_finish_dynamic_sections +#define elf_backend_adjust_dynamic_symbol m32r_elf_adjust_dynamic_symbol +#define elf_backend_finish_dynamic_symbol m32r_elf_finish_dynamic_symbol +#define elf_backend_reloc_type_class m32r_elf_reloc_type_class +#define elf_backend_copy_indirect_symbol m32r_elf_copy_indirect_symbol -#define elf_backend_can_gc_sections 1 +#define elf_backend_can_gc_sections 1 /*#if !USE_REL #define elf_backend_rela_normal 1 #endif*/ @@ -3873,18 +3873,18 @@ m32r_elf_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED, #define elf_backend_got_header_size 12 #define elf_backend_dtrel_excludes_plt 1 -#define elf_backend_may_use_rel_p 1 +#define elf_backend_may_use_rel_p 1 #ifdef USE_M32R_OLD_RELOC -#define elf_backend_default_use_rela_p 0 -#define elf_backend_may_use_rela_p 0 +#define elf_backend_default_use_rela_p 0 +#define elf_backend_may_use_rela_p 0 #else -#define elf_backend_default_use_rela_p 1 -#define elf_backend_may_use_rela_p 1 +#define elf_backend_default_use_rela_p 1 +#define elf_backend_may_use_rela_p 1 #endif #define elf_backend_object_p m32r_elf_object_p -#define elf_backend_final_write_processing m32r_elf_final_write_processing -#define bfd_elf32_bfd_merge_private_bfd_data m32r_elf_merge_private_bfd_data +#define elf_backend_final_write_processing m32r_elf_final_write_processing +#define bfd_elf32_bfd_merge_private_bfd_data m32r_elf_merge_private_bfd_data #define bfd_elf32_bfd_set_private_flags m32r_elf_set_private_flags #define bfd_elf32_bfd_print_private_bfd_data m32r_elf_print_private_bfd_data #define elf_backend_special_sections m32r_elf_special_sections @@ -3893,18 +3893,18 @@ m32r_elf_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED, #include "elf32-target.h" -#undef ELF_MAXPAGESIZE -#define ELF_MAXPAGESIZE 0x1000 - -#undef TARGET_BIG_SYM -#define TARGET_BIG_SYM m32r_elf32_linux_vec -#undef TARGET_BIG_NAME -#define TARGET_BIG_NAME "elf32-m32r-linux" -#undef TARGET_LITTLE_SYM -#define TARGET_LITTLE_SYM m32r_elf32_linux_le_vec -#undef TARGET_LITTLE_NAME -#define TARGET_LITTLE_NAME "elf32-m32rle-linux" -#undef elf32_bed -#define elf32_bed elf32_m32r_lin_bed +#undef ELF_MAXPAGESIZE +#define ELF_MAXPAGESIZE 0x1000 + +#undef TARGET_BIG_SYM +#define TARGET_BIG_SYM m32r_elf32_linux_vec +#undef TARGET_BIG_NAME +#define TARGET_BIG_NAME "elf32-m32r-linux" +#undef TARGET_LITTLE_SYM +#define TARGET_LITTLE_SYM m32r_elf32_linux_le_vec +#undef TARGET_LITTLE_NAME +#define TARGET_LITTLE_NAME "elf32-m32rle-linux" +#undef elf32_bed +#define elf32_bed elf32_m32r_lin_bed #include "elf32-target.h" |