aboutsummaryrefslogtreecommitdiff
path: root/bfd
AgeCommit message (Collapse)AuthorFilesLines
2020-07-29Don't segfault on discarded section dynsymsAlan Modra2-1/+9
We get lots of errors before we get to this code, but let's not segfault. * elflink.c (bfd_elf_final_link): Don't segfault on local dynsyms defined in excluded sections.
2020-07-29Automatic date update in version.inGDB Administrator1-1/+1
2020-07-28PR25022 testcase segfault for generic ELF linker targetsAlan Modra3-39/+36
Even a testcase that is expected to fail shouldn't segfault. * elf.c (assign_section_numbers): Comment. Don't segfault on discarded sections when setting linked-to section for generic ELF linker. * elflink.c (bfd_elf_match_symbols_in_sections): Allow NULL info.
2020-07-28Automatic date update in version.inGDB Administrator1-1/+1
2020-07-27Accept --just-symbols symbols as absolute for xcoffAlan Modra2-6/+19
This patch is aimed at curing just-symbols-1.o: loader reloc in unrecognized section `*ABS*' for xcoff by treating symbols defined by --just-symbols objects as absolute. * xcofflink.c (xcoff_need_ldrel_p): Accept --just-symbols symbols and similar as absolute. (bfd_xcoff_import_symbol): Don't fuss over absolute symbol redefinitions here.
2020-07-27Automatic date update in version.inGDB Administrator1-1/+1
2020-07-26Automatic date update in version.inGDB Administrator1-1/+1
2020-07-25Automatic date update in version.inGDB Administrator1-1/+1
2020-07-24Move the xc16x target to the obsolete listNick Clifton2-2/+6
2020-07-24Automatic date update in version.inGDB Administrator1-1/+1
2020-07-23Automatic date update in version.inGDB Administrator1-1/+1
2020-07-22Update binary_get_section_contents to seek using section's file positionKevin Buettner2-6/+11
I have a patch for GDB which opens and reads from BFDs using the "binary" target. However, for it to work, we need to be able to get a section's contents based from the file position of that section. At the moment, reading a section's contents will always read from the start of the file regardless of where that section is located. While this was fine for the original use of the "binary" target, it won't work for my use case. This change shouldn't impact any existing callers due to the fact that the single .data section is initialized with a filepos of 0. bfd/ChangeLog: * binary.c (binary_get_section_contents): Seek using offset from section's file position.
2020-07-22Remove hack for GDB which sets the section size to 0Kevin Buettner2-8/+4
This commit removes a hack for GDB which was introduced in 2007. See: https://sourceware.org/ml/binutils/2007-08/msg00044.html That hack mostly allowed GDB's handling of core files to continue to work without any changes to GDB. The problem with setting the section size to zero is that GDB won't know how big that section is/was. Often, this doesn't matter because the data in question are found in the exec file. But it can happen that the section describes memory that had been allocated, but never written to. In this instance, the contents of that memory region are not written to the core file. Also, since the region in question was dynamically allocated, it won't appear in the exec file. We don't want these regions to appear as inaccessible to GDB (since they *were* accessible when the process was live), so it's important that GDB know the size of the region. I've made changes to GDB which correctly handles this case. When attempting to access memory, GDB will first consider core file data for which both SEC_ALLOC and SEC_HAS_CONTENTS is set. Next, if that fails, GDB will attempt to find the data in the exec file. Finally, if that also fails, GDB will attempt to access memory in the sections which are flagged as SEC_ALLOC, but not SEC_HAS_CONTENTS. bfd/ChangeLog: * elf.c (_bfd_elf_make_section_from_phdr): Remove hack for GDB.
2020-07-22bfd: xtensa: pr26246: fix removed_literal_compareMax Filippov2-4/+11
2020-07-22 Max Filippov <jcmvbkbc@gmail.com> bfd/ PR 26246 * elf32-xtensa.c (removed_literal_compare): Use correct pointer type for the first function argument. Rename pointers to reflect that they have distinct types.
2020-07-22Automatic date update in version.inGDB Administrator1-1/+1
2020-07-21Automatic date update in version.inGDB Administrator1-1/+1
2020-07-20PR26265, Spurious 'gc-sections requires ... when --init or --finiAlan Modra2-2/+5
bfd/ * elflink.c (_bfd_elf_gc_keep): Use bfd_is_const_section. ld/ PR 26265 * ldlang.c (undef_from_cmdline): Delete. (ldlang_add_undef): Mark "cmdline" param unused. (lang_end): Traverse gc_sym_list to determine whether a symbol root has been specified. Update error message. * testsuite/ld-gc/noent.d: Adjust for changed error message.
2020-07-20Automatic date update in version.inGDB Administrator1-1/+1
2020-07-19Power10 stub selectionAlan Modra2-12/+102
This patch better supports mixing of power10 and non-power10 code, as might be seen in a cpu-optimized library using ifuncs to select functions optimized for a given cpu. Using -Wl,--no-power10-stubs isn't that good in this situation since non-power10 notoc stubs are slower and larger than the power10 variants, which you'd like to use on power10 code paths. With this change, power10 pc-relative code that makes calls marked @notoc uses power10 stubs if stubs are necessary, and other calls use non-power10 instructions in stubs. This will mean that if gcc is generating code for -mcpu=power10 but with pc-rel disabled then you'll get the older stubs even on power10 (unless you force with -Wl,--power10-stubs). That shouldn't be too big a problem: stubs that use r2 are reasonable. It's just the ones that set up addressing using "mflr 12; bcl 20,31,.+4; mflr 11; mtlr 12" that should be avoided if possible. bfd/ * elf64-ppc.c (struct ppc_link_hash_table): Add has_power10_relocs. (select_alt_stub): New function. (ppc_get_stub_entry): Use it here. (ppc64_elf_check_relocs): Set had_power10_relocs rather than power10_stubs. (ppc64_elf_size_stubs): Clear power10_stubs here instead. Don't merge notoc stubs with other varieties when power10_stubs is "auto". Instead dup the stub hash table entry. (plt_stub_size, ppc_build_one_stub, ppc_size_one_stub): Adjust tests of power10_stubs. ld/ * emultempl/ppc64elf.em (power10-stubs): Accept optional "auto" arg. * ld.texi (power10-stubs): Update. * testsuite/ld-powerpc/callstub-1.d: Force --power10-stubs. * testsuite/ld-powerpc/callstub-2.d: Relax branch offset comparison. * testsuite/ld-powerpc/callstub-4.d: New test. * testsuite/ld-powerpc/notoc.d: Force --no-power10-stubs. * testsuite/ld-powerpc/notoc3.d, * testsuite/ld-powerpc/notoc3.s, * testsuite/ld-powerpc/notoc3.wf: New test. * testsuite/ld-powerpc/powerpc.exp: Run new tests. Pass --no-power10-stubs for notoc link.
2020-07-19Automatic date update in version.inGDB Administrator1-1/+1
2020-07-18Automatic date update in version.inGDB Administrator1-1/+1
2020-07-17Automatic date update in version.inGDB Administrator1-1/+1
2020-07-16Automatic date update in version.inGDB Administrator1-1/+1
2020-07-15PR26239, memory leak in _bfd_dwarf2_slurp_debug_infoAlan Modra2-4/+15
PR 26239 * coffgen.c (_bfd_coff_close_and_cleanup): Free dwarf2 info.
2020-07-15Fix an illegal memory access in the BFD library which can be triggered by ↵Nick Clifton2-1/+7
attempting to parse a corrupt PE format file. PR26240 * coffgen.c (coff_get_normalized_symtab): Fix off-by-one error in check for aux entries that overflow the buufer.
2020-07-15mmix bfd: fix bfd_assert for R_MMIX_PUSHJ_STUBBABLE against undef'd symbolHans-Peter Nilsson2-1/+13
Spotted when inspecting gcc testsuite logs, but this already is covered by the ld-mmix testsuite, it's just that the assert is ignored since the regexp match is for a substring and not anchored. With the anchors added but not the bugfix, the ld.log shows that the asserts cause a non-match as intended: Executing on host: sh -c {./ld-new -LX/src/ld/testsuite/ld-mmix -m elf64mmix -o tmpdir/dump tmpdir/undef-2.o tmpdir/start.o 2>&1} /dev/null dump.tmp (timeout = 300) ./ld-new: BFD (GNU Binutils) 2.34.50.20200629 assertion fail X/src/bfd/elf64-mmix.c:2845 ./ld-new: BFD (GNU Binutils) 2.34.50.20200629 assertion fail X/src/bfd/elf64-mmix.c:2845 ./ld-new: BFD (GNU Binutils) 2.34.50.20200629 assertion fail X/src/bfd/elf64-mmix.c:2845 ./ld-new: tmpdir/undef-2.o:(.text+0x0): undefined reference to `undefd' failed with: <./ld-new: BFD (GNU Binutils) 2.34.50.20200629 assertion fail X/src/bfd/elf64-mmix.c:2845 ./ld-new: BFD (GNU Binutils) 2.34.50.20200629 assertion fail X/src/bfd/elf64-mmix.c:2845 ./ld-new: BFD (GNU Binutils) 2.34.50.20200629 assertion fail X/src/bfd/elf64-mmix.c:2845 ./ld-new: tmpdir/undef-2.o:(.text+0x0): undefined reference to `undefd'>, expected: <\A[^\n\r]*undefined reference to `undefd'\Z> FAIL: ld-mmix/undef-2 Gone with the fix of course, leaving just the intended "undefined reference" like. I'm not going to add anchors manually for all the "error:" strings in the test-suite, not even in the mmix parts. Sorry, but I'll just do it for *these* specific undefined-reference tests. Just a thought: maybe the run_dump_test "error:" string should *automatically* get anchor marks prepended and appended for a single line match as in the patch, "\A[^\n\r]*" prepended and \Z appended unless either anchor mark or \r or \n is present in the regexp? Committed. bfd: * elf64-mmix.c (mmix_elf_relax_section): Improve accounting for R_MMIX_PUSHJ_STUBBABLE relocs against undefined symbols. ld/testsuite: * testsuite/ld-mmix/undef-1.d, testsuite/ld-mmix/undef-1m.d, testsuite/ld-mmix/undef-2.d, testsuite/ld-mmix/undef-2m.d: Add start- and end-anchors to error-string to match just a single-line error-message.
2020-07-15Automatic date update in version.inGDB Administrator1-1/+1
2020-07-15PR26198 MinGW failure to link regular object file and LTO object fileMarkus Böck3-2/+12
PR 26198 * coffgen.c (_bfd_coff_section_already_linked): Allow for plugin objects both before and after normal object files. * elflink.c (_bfd_elf_section_already_linked): Likewise.
2020-07-14Automatic date update in version.inGDB Administrator1-1/+1
2020-07-13Automatic date update in version.inGDB Administrator1-1/+1
2020-07-12Automatic date update in version.inGDB Administrator1-1/+1
2020-07-11Automatic date update in version.inGDB Administrator1-1/+1
2020-07-10PowerPC64 ld --no-power10-stubsAlan Modra3-14/+24
Needed for libraries that use ifuncs or other means to support cpu-optimized versions of functions, some power10, some not, and those functions make calls using linkage stubs. bfd/ * elf64-ppc.h (struct ppc64_elf_params): Add power10_stubs. * elf64-ppc.c (struct ppc_link_hash_table): Delete power10_stubs. (ppc64_elf_check_relocs): Adjust setting of power10_stubs. (plt_stub_size, ppc_build_one_stub, ppc_size_one_stub): Adjust uses of power10_stubs. ld/ * emultempl/ppc64elf.em (params): Init new field. (enum ppc64_opt): Add OPTION_POWER10_STUBS and OPTION_NO_POWER10_STUBS. (PARSE_AND_LIST_LONGOPTS): Support --power10-stubs and --no-power10-stubs. (PARSE_AND_LIST_OPTIONS, PARSE_AND_LIST_ARGS_CASES): Likewise. * testsuite/ld-powerpc/callstub-3.d: New test. * testsuite/ld-powerpc/powerpc.exp: Run it.
2020-07-10Automatic date update in version.inGDB Administrator1-1/+1
2020-07-09Remove powerpc PE supportAlan Modra15-2876/+22
Plus some leftover powerpc lynxos support. bfd/ * coff-ppc.c: Delete. * pe-ppc.c: Delete. * pei-ppc.c: Delete. * Makefile.am (BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Remove PE PPC. * coffcode.h (coff_set_arch_mach_hook, coff_set_flags): Remove PPCMAGIC code. (coff_write_object_contents): Remove PPC_PE code. * config.bfd: Move powerpcle-pe to removed targets. * configure.ac: Remove powerpc PE entries. * libcoff-in.h (ppc_allocate_toc_section): Delete. (ppc_process_before_allocation): Delete. * peXXigen.c: Remove POWERPC_LE_PE code and comments. * targets.c: Remove powerpc PE vectors. * po/SRC-POTFILES.in: Regenerate. * libcoff.h: Regenerate. * Makefile.in: Regenerate. * configure: Regenerate. binutils/ * dlltool.c: Remove powerpc PE support and comments. * configure.ac: Remove powerpc PE dlltool config. * configure: Regenerate. gas/ * config/obj-coff.h: Remove TE_PE support. * config/tc-ppc.c: Likewise. * config/tc-ppc.h: Likewise. * configure.tgt: Remove powerpc PE and powerpc lynxos. * testsuite/gas/cfi/cfi.exp (cfi-common-6): Remove powerpc PE condition. * testsuite/gas/macros/macros.exp: Don't xfail powerpc PE. include/ * coff/powerpc.h: Delete. ld/ * emulparams/ppcpe.sh: Delete. * scripttempl/ppcpe.sc: Delete. * emulparams/ppclynx.sh: Delete. * Makefile.am (ALL_EMULATION_SOURCES): Remove ppc PE and lynxos. * configure.tgt: Likewise. * emultempl/beos.em: Remove powerpc PE support. * emultempl/pe.em: Likewise. * po/BLD-POTFILES.in: Regenerate. * Makefile.in: Regenerate.
2020-07-09Update French translation in the bfd sub-directoryNick Clifton2-1676/+1895
2020-07-09Automatic date update in version.inGDB Administrator1-1/+1
2020-07-08Automatic date update in version.inGDB Administrator1-1/+1
2020-07-07XCOFF ld segfaults when running ld testsuiteAlan Modra2-7/+30
The binutils XCOFF support doesn't handle random linker scripts very well at all. These tweaks to final_link fix segfaults when some linker created sections are discarded due to "/DISCARD/ : { *(.*) }" in scripts. The xcoff_mark change is necessary to not segfault on symbols defined in scripts, which may be bfd_link_hash_defined yet have u.def.section set to bfd_und_section_ptr. (Which might seem odd, but occurs during early stages of linking before input sections are mapped.) * xcofflink.c (xcoff_mark): Don't mark const sections. (bfd_xcoff_record_link_assignment): Add FIXME. (_bfd_xcoff_bfd_final_link): Don't segfault on assorted magic sections being discarded by linker script.
2020-07-07XCOFF deterministic archivesAlan Modra2-0/+20
Adds support for "ar -D". * coff-rs6000.c (xcoff_write_archive_contents_old): Set default time, uid, gid and mode for deterministic archive. (xcoff_write_archive_contents_big): Likewise.
2020-07-07XCOFF C_HIDEXT and C_AIX_WEAKEXT classificationAlan Modra2-0/+15
If C_HIDEXT and C_AIX_WEAKEXT symbols aren't handled as globals by coff_classify_symbol then we run into "warning: .. local symbol `some garbage name' has no section". These are of course both global symbols, but C_HIDEXT is like a local in some respects and returning COFF_SYMBOL_LOCAL for C_HIDEXT keeps nm output looking the same. Fixes these fails on rs6000-aix5.1: -FAIL: weakref tests, relocations -FAIL: weakref tests, global syms -FAIL: weakref tests, strong undefined syms -FAIL: weakref tests, weak undefined syms * coffcode.h (coff_classify_symbol): Handle C_HIDEXT and C_AIX_WEAKEXT.
2020-07-07Automatic date update in version.inGDB Administrator1-1/+1
2020-07-06Updated translations for various binutils sub-directoriesNick Clifton3-3343/+3763
2020-07-06Automatic date update in version.inGDB Administrator1-1/+1
2020-07-05Automatic date update in version.inGDB Administrator1-1/+1
2020-07-04oops - omitted from previous deltaNick Clifton1-0/+6
2020-07-04Update version to 2.35.50 and regenerate filesNick Clifton3-1537/+1555
2020-07-04Add markers for binutils 2.35 branchNick Clifton1-0/+4
2020-07-04Automatic date update in version.inGDB Administrator1-1/+1
2020-07-03Automatic date update in version.inGDB Administrator1-1/+1