aboutsummaryrefslogtreecommitdiff
path: root/bfd
AgeCommit message (Collapse)AuthorFilesLines
2022-06-08Revert reloc howto nitsAlan Modra30-291/+291
The "HOWTO size encoding" patch put 1 as the HOWTO size arg for numerous howtos that are unused, describe dynamic relocs, are markers, or otherwise are special purpose reloc howtos that don't care about the size. The idea was to ensure no howto changed by inspecting object files. Revert those changes, making them zero size. * coff-alpha.c: Give special purpose reloc howtos a size of zero. * coff-mcore.c, * elf-hppa.h, * elf-m10300.c, * elf32-arm.c, * elf32-csky.c, * elf32-m32c.c, * elf32-m68k.c, * elf32-mep.c, * elf32-mips.c, * elf32-ppc.c, * elf32-rx.c, * elf32-s390.c, * elf32-spu.c, * elf32-tic6x.c, * elf32-tilepro.c, *elf32-vax.c, * elf32-xtensa.c, * elf64-alpha.c, * elf64-mips.c, * elf64-mmix.c, * elf64-ppc.c, * elf64-s390.c, * elfn32-mips.c, * elfxx-loongarch.c, * elfxx-riscv.c, * elfxx-sparc.c, * elfxx-tilegx.c, * som.c, * vms-alpha.c: Likewise.
2022-06-08HOWTO size encodingAlan Modra104-4092/+4058
This changes the HOWTO macro to encode the howto.size field from a value given in bytes. This of course requires editing all target uses of HOWTO, a major pain, but makes it a little nicer to specify new target HOWTOs. Object files before/after this patch are unchanged in .data and .rodata. bfd/ * reloc.c (HOWTO_RSIZE): Encode size in bytes. (EMPTY_HOWTO): Adjust to keep it all zero. * aout-ns32k.c, * aoutx.h, * coff-alpha.c, * coff-arm.c, * coff-i386.c, * coff-mcore.c, * coff-mips.c, * coff-rs6000.c, * coff-sh.c, * coff-tic30.c, * coff-tic4x.c, * coff-tic54x.c, * coff-x86_64.c, * coff-z80.c, * coff-z8k.c, * coff64-rs6000.c, * elf-hppa.h, * elf-m10200.c, * elf-m10300.c, * elf32-arc.c, * elf32-arm.c, * elf32-avr.c, * elf32-bfin.c, * elf32-cr16.c, * elf32-cris.c, * elf32-crx.c, * elf32-csky.c, * elf32-d10v.c, * elf32-d30v.c, * elf32-dlx.c, * elf32-epiphany.c, * elf32-fr30.c, * elf32-frv.c, * elf32-ft32.c, * elf32-gen.c, * elf32-h8300.c, * elf32-i386.c, * elf32-ip2k.c, * elf32-iq2000.c, * elf32-lm32.c, * elf32-m32c.c, * elf32-m32r.c, * elf32-m68hc11.c, * elf32-m68hc12.c, * elf32-m68k.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-nios2.c, * elf32-or1k.c, * elf32-pj.c, * elf32-ppc.c, * elf32-pru.c, * elf32-rl78.c, * elf32-rx.c, * elf32-s12z.c, * elf32-s390.c, * elf32-score.c, * elf32-score7.c, * elf32-sh-relocs.h, * elf32-spu.c, * elf32-tic6x.c, * elf32-tilepro.c, * elf32-v850.c, * elf32-vax.c, * elf32-visium.c, * elf32-wasm32.c, * elf32-xc16x.c, * elf32-xgate.c, * elf32-xstormy16.c, * elf32-xtensa.c, * elf32-z80.c, * elf64-alpha.c, * elf64-bpf.c, * elf64-gen.c, * elf64-mips.c, * elf64-mmix.c, * elf64-nfp.c, * elf64-ppc.c, * elf64-s390.c, * elf64-x86-64.c, * elfn32-mips.c, * elfnn-aarch64.c, * elfxx-ia64.c, * elfxx-loongarch.c, * elfxx-mips.c, * elfxx-riscv.c, * elfxx-sparc.c, * elfxx-tilegx.c, * mach-o-aarch64.c, * mach-o-arm.c, * mach-o-i386.c, * mach-o-x86-64.c, * pdp11.c, * reloc.c, * som.c, * vms-alpha.c: Adjust all uses of HOWTO. * bfd-in2.h: Regenerate. include/ * elf/arc-reloc.def: Adjust all uses of HOWTO.
2022-06-08HOWTO_RSIZEAlan Modra2-2/+4
Define a helper macro for HOWTO. * reloc.c (HOWTO_RSIZE): Define. (HOWTO): Use it. * bfd-in2.h: Regenerate.
2022-06-08elf64-nfp reloc fixAlan Modra1-1/+1
These are all dummy howtos, there is no reason one of them should have partial_inplace true. * elf64-nfp.c (elf_nfp_howto_table <R_NFP_IMMED_LO16_I_B>): Don't set partial_inplace.
2022-06-08coff-z80 reloc howto fixesAlan Modra1-8/+6
Mostly cosmetic unless attempting to link coff-z80 into another output format. * coff-z80.c (howto_table <R_IMM24, R_WORD0, R_WORD1>): Correct size. (extra_case): Use bfd_{get,put}_24 when applying R_IMM24.
2022-06-08NONE reloc fixesAlan Modra11-14/+14
Make them all zero size standard do-nothing howtos. * elf32-csky.c (csky_elf_howto_table <R_CKCORE_NONE>): Correct howto. * elf32-ft32.c (ft32_elf_howto_table <R_FT32_NONE>): Likewise. * elf32-gen.c (dummy): Likewise. * elf32-nds32.c (none_howto): Likewise. * elf32-nios2.c (elf_nios2_r2_howto_table_rel <R_NIOS2_NONE>): Likewise. * elf32-pru.c (elf_pru_howto_table_rel <R_PRU_NONE>): Likewise. * elf32-v850.c (v800_elf_howto_table <R_V810_NONE>): Likewise. * elf64-gen.c (dummy): Likewise. * elfn32-mips.c (elf_mips_howto_table_rela <R_MIPS_NONE): Likewise. * elfxx-mips.c (none_howto): Likewise. * reloc.c (none_howto): Likewise.
2022-06-08Automatic date update in version.inGDB Administrator1-1/+1
2022-06-07Automatic date update in version.inGDB Administrator1-1/+1
2022-06-06Automatic date update in version.inGDB Administrator1-1/+1
2022-06-05Automatic date update in version.inGDB Administrator1-1/+1
2022-06-04asan: null dereference in coff_count_linenumbersAlan Modra1-1/+2
* coffgen.c (coff_count_linenumbers): Don't segfault when asymbol the_bfd is NULL.
2022-06-04asan: uninitialised write in bfd_mach_o_write_contentsAlan Modra1-25/+10
* mach-o.c (bfd_mach_o_write_contents): Always set bfd_mach_o_dyld_info_command *_off fields.
2022-06-04Automatic date update in version.inGDB Administrator1-1/+1
2022-06-03asan: heap buffer overflow in _bfd_mips_elf_section_from_shdrAlan Modra1-23/+32
* elfxx-mips.c (_bfd_mips_elf_section_from_shdr): Sanity check intopt.size and remaining bytes in section for reginfo.
2022-06-03Re: asan: mips_gprel_reloc segfaultAlan Modra3-6/+3
Similarly for the elf mips support. * elf32-mips.c (mips_elf_final_gp): Don't segfault on symbols in any of the bfd_is_const_section sections. * elf64-mips.c (mips_elf64_final_gp): Likewise. * elfn32-mips.c (mips_elf_final_gp): Likewise.
2022-06-03asan: mips_gprel_reloc segfaultAlan Modra1-3/+2
Not just the undefined section has a NULL owner, the absolute section has too. Which means we can't find output_bfd for __gp. Also, may as well test directly for output_bfd == NULL. * coff-mips.c (mips_gprel_reloc): Don't segfault on any of bfd_is_const_section sections.
2022-06-03Automatic date update in version.inGDB Administrator1-1/+1
2022-06-02asan: uninit write _bfd_ecoff_write_object_contentsAlan Modra1-1/+1
* ecoff.c (_bfd_ecoff_write_object_contents): zalloc reloc_buff.
2022-06-02asan: null deref in coff_write_relocsAlan Modra1-2/+4
* coffcode.h (coff_write_relocs): Don't deref NULL howto.
2022-06-02asan: NULL deref in scan_unit_for_symbolsAlan Modra1-24/+23
Since commit b43771b045 it has been possible to look up addresses that match a unit with errors, since ranges are added to a trie while the unit is being parsed. On error, parse_comp_unit leaves first_child_die_ptr NULL which results in a NULL info_ptr being passed to scan_unit_for_symbols. Fix this by setting unit->error. Also wrap some overlong lines, and fix some formatting errors. * dwarf2.c: Formatting. (parse_comp_unit): Set unit->error on err_exit path.
2022-06-02Automatic date update in version.inGDB Administrator1-1/+1
2022-06-01Re: use libiberty xmalloc in bfd/doc/chew.cAlan Modra3-7/+41
We can't use libiberty.a in chew. libiberty is a host library, chew a build program. Partly revert commit 7273d78f3f7a, instead define local versions of the libiberty functions. ansidecl.h also isn't needed. * doc/chew.c: Don't include libiberty.h or ansidecl.h. (xmalloc, xrealloc, xstrdup): New functions. * doc/local.mk (LIBIBERTY): Don't define or use. * Makefile.in: Regenerate.
2022-06-01Automatic date update in version.inGDB Administrator1-1/+1
2022-05-31x86: Properly handle IFUNC function pointer referenceH.J. Lu2-2/+14
Update commit 68c4956b1401de70173848a6bdf620cb42fa9358 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Apr 26 09:08:54 2022 -0700 x86: Properly handle function pointer reference to properly handle IFUNC function pointer reference. Since IFUNC symbol value is only known at run-time, set pointer_equality_needed for IFUNC function pointer reference in PDE so that it will be resolved to its PLT entry directly. bfd/ PR ld/29216 * elf32-i386.c (elf_i386_scan_relocs): Set pointer_equality_needed for IFUNC function pointer reference in PDE. * elf64-x86-64.c (elf_x86_64_scan_relocs): Likewise. ld/ PR ld/29216 * testsuite/ld-ifunc/ifunc.exp: Run PR ld/29216 test. * testsuite/ld-ifunc/pr29216.c: New file.
2022-05-31sparc64 segfault in finish_dynamic_symbolAlan Modra1-1/+4
SYMBOL_REFERENCES_LOCAL can return true for undefined symbols. This can result in a segfault when running sparc64 ld/testsuite/ld-vsb tests that expect a failure. * elfxx-sparc.c (_bfd_sparc_elf_finish_dynamic_symbol): Don't access u.def.section on non-default visibility undefined symbol.
2022-05-31v850_elf_set_note prototypeAlan Modra1-1/+1
v850_elf_set_note is declared using an unsigned int note param in elf32-v850.h but defined with enum c850_notes note in elf32-v850.c. Current mainline gcc is warning about this. Huh. * elf32-v850.c (v850_elf_set_note): Make "note" param an unsigned int.
2022-05-31Automatic date update in version.inGDB Administrator1-1/+1
2022-05-30Use a union to avoid casts in bfd/doc/chew.cAlan Modra1-24/+41
This fixes -Wpedantic warnings in chew.c. Conversion between function and object pointers is not guaranteed. They can even be different sizes, not that we're likely to encounter build machines like that nowadays. PR 29194 * doc/chew.c (pcu): New union typedef. (dict_type, pc): Use it here. Adjust uses of pc. (add_to_definition): Make "word" param a pcu. Adjust all uses of function. (stinst_type): Delete.
2022-05-30use libiberty xmalloc in bfd/doc/chew.cAlan Modra3-12/+15
Catch out of memory. * doc/chew.c: Include libibery.h. (init_string_with_size, nextword): Replace malloc with xmalloc. (newentry, add_to_definition): Likewise. (catchar, catbuf): Replace realloc with xrealloc. (add_intrinsic): Replace strdup with xstrdup. * doc/local.mk (LIBIBERTY): Define. (chew): Link against libiberty. * Makefile.in: Regenerate.
2022-05-30Update K&R functions in bfd/doc/chew.cAlan Modra1-162/+62
* doc/chew.c: Update function definitions to ISO C, remove now unnecessary prototypes.
2022-05-30Reorganise bfd/doc/chew.c a littleAlan Modra1-64/+38
This also removes some unused variables, and deletes support for the "var" keyword which isn't used and was broken. (No means to set variables, and add_var used push_number inconsistent with its use elsewhere.) * doc/chew.c: Move typedefs before variables, variables before functions. (die): Move earlier. (word_type, sstack, ssp): Delete. (dict_type): Delete var field. (add_var): Delete. (compile): Remove "var" support.
2022-05-30RISC-V: Add zhinx extension supports.jiawei1-4/+20
The zhinx extension is a sub-extension in zfinx, corresponding to zfh extension but use GPRs instead of FPRs. This patch expanded the zfh insn class define, since zfh and zhinx use the same opcodes, thanks for Nelson's works. changelog in V2: Add missing classes of 'zfh' and 'zhinx' in "riscv_multi_subset_supports_ext". bfd/ChangeLog: * elfxx-riscv.c (riscv_multi_subset_supports): New extensions. (riscv_multi_subset_supports_ext): New extensions. gas/ChangeLog: * testsuite/gas/riscv/fp-zhinx-insns.d: New test. * testsuite/gas/riscv/fp-zhinx-insns.s: New test. include/ChangeLog: * opcode/riscv.h (enum riscv_insn_class): New INSN classes. opcodes/ChangeLog: * riscv-opc.c: Modify INSN_CLASS.
2022-05-30Automatic date update in version.inGDB Administrator1-1/+1
2022-05-29Automatic date update in version.inGDB Administrator1-1/+1
2022-05-28Automatic date update in version.inGDB Administrator1-1/+1
2022-05-27Replace bfd_hostptr_t with uintptr_tAlan Modra11-60/+38
bfd_hostptr_t is defined as a type large enough to hold either a long or a pointer. It mostly appears in the coff backend code in casts. include/coff/internal.h struct internal_syment and union internal_auxent have the only uses in data structures, where comparison with include/coff/external.h and other code reveals that the type only needs to be large enough for a 32-bit integer or a pointer. That should mean replacing with uintptr_t is OK.
2022-05-27Remove much of BFD_HOST configuryAlan Modra6-166/+16
This patch removes the definition of bfd_uint64_t and bfd_int64_t as well as most BFD_HOST_* which are now unused.
2022-05-27Remove use of bfd_uint64_t and similarAlan Modra24-210/+156
Requiring C99 means that uses of bfd_uint64_t can be replaced with uint64_t, and similarly for bfd_int64_t, BFD_HOST_U_64_BIT, and BFD_HOST_64_BIT. This patch does that, removes #ifdef BFD_HOST_* and tidies a few places that print 64-bit values.
2022-05-27Automatic date update in version.inGDB Administrator1-1/+1
2022-05-27cris: bfd: Correct default to no execstackHans-Peter Nilsson1-0/+2
In the now-historical CRIS glibc port, the default stack permission was no-exec as in "#define DEFAULT_STACK_PERMS (PF_R|PF_W)", and the gcc port only emits the executable-stack marker when needed; when emitting code needing it. In other words, the binutils setting mismatches. It doesn't matter much, except being confusing and defaulting to "off" is more sane. ld: * testsuite/ld-elf/elf.exp (target_defaults_to_execstack): Switch to 0 for cris*-*-*. bfd: * elf32-cris.c (elf_backend_default_execstack): Define to 0. Change-Id: I52f37598f119b19111c7a6546c00a627fca0f396
2022-05-26bfd: Add Support for DW_FORM_strx* and DW_FORM_addrx*Potharla, Rupesh1-14/+268
2022-05-26ld: add --package-metadataLuca Boccassi2-2/+14
Generate a .note.package FDO package metadata ELF note, following the spec: https://systemd.io/ELF_PACKAGE_METADATA/ If the jansson library is available at build time (and it is explicitly enabled), link ld to it, and use it to validate that the input is correct JSON, to avoid writing garbage to the file. The configure option --enable-jansson has to be used to explicitly enable it (error out when not found). This allows bootstrappers (or others who are not interested) to seamlessly skip it without issues.
2022-05-26Automatic date update in version.inGDB Administrator1-1/+1
2022-05-25RISC-V: Fix RV32Q conflictTsukasa OI1-2/+3
This commit makes RV32 + 'Q' extension (version 2.2 or later) not conflicting since this combination is no longer prohibited by the specification. bfd/ChangeLog: * elfxx-riscv.c (riscv_parse_check_conflicts): Remove conflict detection that prohibits RV32Q on 'Q' version 2.2 or later. gas/ChangeLog: * testsuite/gas/riscv/march-fail-rv32iq.d: Removed. * testsuite/gas/riscv/march-fail-rv32iq.l: Likewise. * testsuite/gas/riscv/march-fail-rv32iq2p0.d: New test showing RV32IQ fails on 'Q' extension version 2.0. * testsuite/gas/riscv/march-fail-rv32iq2p0.l: Likewise. * testsuite/gas/riscv/march-fail-rv32iq2.d: Likewise. * testsuite/gas/riscv/march-fail-rv32iq-isa-2p2.d: New test showing RV32IQ fails on ISA specification version 2.2. * testsuite/gas/riscv/march-ok-rv32iq2p2.d: New test showing RV32IQ succesds on 'Q' extension version 2.2. * testsuite/gas/riscv/march-ok-rv32iq-isa-20190608.d: New test showing RV32IQ succesds on ISA specification 20190608.
2022-05-25Automatic date update in version.inGDB Administrator1-1/+1
2022-05-24Automatic date update in version.inGDB Administrator1-1/+1
2022-05-23Automatic date update in version.inGDB Administrator1-1/+1
2022-05-22Automatic date update in version.inGDB Administrator1-1/+1
2022-05-21Automatic date update in version.inGDB Administrator1-1/+1
2022-05-20RISC-V: Update zfinx implement with zicsr.Jia-Wei Chen1-0/+1
Update zfinx implement with zicsr, fix missing fcsr use by zfinx. add zicsr imply by zfinx. bfd/ChangeLog: * elfxx-riscv.c: New imply. gas/ChangeLog: * testsuite/gas/riscv/csr-insns-pseudo-zfinx.d: New test. opcodes/ChangeLog: * riscv-opc.c: Update insn class.