aboutsummaryrefslogtreecommitdiff
path: root/bfd
AgeCommit message (Collapse)AuthorFilesLines
2020-02-01Automatic date update in version.inGDB Administrator1-1/+1
2020-01-31nios2: Add BFD support for GOT-relative DW_EH_PE_datarel encodingsSandra Loosemore2-0/+6
There's already existing logic to handle this on other targets, so this patch just makes nios2 use it. 2020-01-31 Sandra Loosemore <sandra@codesourcery.com> bfd/ * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): DW_EH_PE_datarel encodings are relative to the GOT on nios2, too.
2020-01-31Tidy bfd.potAlan Modra3-74/+54
This patch removes the leak of Nick's source directory into bfd.pot, and emits #line for some generated files so that those files aren't referenced by comments in the .pot file. You can see both of these effects in the following diff. I've also removed use of an unnecessary temp file in the make rules. @@ -92,10 +92,8 @@ msgstr "" #: elf64-nfp.c:238 elf64-ppc.c:1014 elf64-ppc.c:1349 elf64-ppc.c:1358 #: elf64-s390.c:328 elf64-s390.c:378 elf64-x86-64.c:285 elfn32-mips.c:3786 #: elfxx-ia64.c:324 elfxx-riscv.c:955 elfxx-sparc.c:589 elfxx-sparc.c:639 -#: elfxx-tilegx.c:912 elfxx-tilegx.c:952 -#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:2215 -#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:2313 elf32-ia64.c:214 -#: elf32-ia64.c:3862 elf64-ia64.c:214 elf64-ia64.c:3862 +#: elfxx-tilegx.c:912 elfxx-tilegx.c:952 elfnn-aarch64.c:2215 +#: elfnn-aarch64.c:2313 elfnn-ia64.c:214 elfnn-ia64.c:3862 #, c-format msgid "%pB: unsupported relocation type %#x" msgstr "" * Makefile.am (elf32-target.h, elf64-target.h): Don't use a temp file. Use $< and $@ in rules. (elf32-aarch64.c, elf64-aarch64.c): Likewise. (elf32-ia64.c, elf64-ia64.c): Likewise. (elf32-riscv.c, elf64-riscv.c): Likewise. (peigen.c, pepigen.c, pex64igen.c): Likewise. (elf32-aarch64.c, elf64-aarch64.c): Don't emit $srcdir on #line. (elf32-riscv.c, elf64-riscv.c): Likewise, and use $(SED). (elf32-ia64.c, elf64-ia64.c): Do emit #line. (peigen.c, pepigen.c, pex64igen.c): Likewise. * Makefile.in: Regenerate.
2020-01-31OOM in setup_groupAlan Modra2-3/+10
We alloc, seek and read using section sizes in object files. Fuzzed objects can have silly sizes, but that's OK if the system supports memory over-commit. The read fails because we hit EOF and that usually results in a graceful exit. But if we memset before the read then the invalid size results in attempting to write to a huge number of memory pages, and an eventual Out Of Memory after probably swapping like crazy. So don't memset. There really isn't a need to clear the section contents anyway. All bytes are written with a good object file by the read and following loop converting section index in target order to ELF section header pointer, and the only untidy bytes are the 4 bytes past the group flags when pointers are 8 bytes. Those don't matter but the patch clears them for anyone poking around in a debugger. On error paths it's as good to free section contents as it is to clear them. Noticed when looking at PR4110 fourth test case. PR 4110 * elf.c (setup_group): Don't clear entire section contents, just the padding after group flags. Release alloc'd memory after a seek or read failure.
2020-01-31Automatic date update in version.inGDB Administrator1-1/+1
2020-01-30Identify reproducible builds in 'objdump -p' output for PE filesJon Turney2-5/+86
These are produced by MSVC when the '/Brepro' flag is used. To quote from the PE specification [1]: "The presence of an entry of type IMAGE_DEBUG_TYPE_REPRO indicates the PE file is built in a way to achieve determinism or reproducibility. If the input does not change, the output PE file is guaranteed to be bit-for-bit identical no matter when or where the PE is produced. Various date/time stamp fields in the PE file are filled with part or all the bits from a calculated hash value that uses PE file content as input, and therefore no longer represent the actual date and time when a PE file or related specific data within the PE is produced. The raw data of this debug entry may be empty, or may contain a calculated hash value preceded by a four-byte value that represents the hash value length." [1] https://docs.microsoft.com/en-us/windows/win32/debug/pe-format bfd/ChangeLog: 2020-01-16 Jon Turney <jon.turney@dronecode.org.uk> * peXXigen.c (pe_is_repro): New function. (_bfd_XX_print_private_bfd_data_common): Note timestamp is actually a build hash if PE_IMAGE_DEBUG_TYPE_REPRO is present.
2020-01-30Add some new PE_IMAGE_DEBUG_TYPE valuesJon Turney2-1/+11
IMAGE_DEBUG_TYPE_REPRO is defined in the latest version of the PE specification [1]. The others are defined in Windows SDK headers and/or reported by DUMPBIN. [1] https://docs.microsoft.com/en-us/windows/win32/debug/pe-format bfd/ChangeLog: 2020-01-16 Jon Turney <jon.turney@dronecode.org.uk> * peXXigen.c (debug_type_names): Add names for new debug data type values. include/ChangeLog: 2020-01-16 Jon Turney <jon.turney@dronecode.org.uk> * coff/internal.h (PE_IMAGE_DEBUG_TYPE_VC_FEATURE) (PE_IMAGE_DEBUG_TYPE_POGO, PE_IMAGE_DEBUG_TYPE_ILTCG) (PE_IMAGE_DEBUG_TYPE_MPX, PE_IMAGE_DEBUG_TYPE_REPRO): Add.
2020-01-30Bugfixes for pe_print_debugdata()Jon Turney2-3/+10
Use a separate iteration variable for inner loop (:blush:). This generally prevented any debug directory entries after a IMAGE_DEBUG_TYPE_CODEVIEW entry from being reported. Don't leak the memory allocated for the section containing the debug directory. bfd/ChangeLog: 2020-01-16 Jon Turney <jon.turney@dronecode.org.uk> * peXXigen.c (pe_print_debugdata): Fix the iteration variable for inner loop. Fix a memory leak.
2020-01-30Remove need to clear obj_coff_keep_syms in coff object_pAlan Modra3-15/+26
* coffgen.c (coff_real_object_p): Don't clear obj_coff_keep_syms or obj_coff_keep_strings here. (coff_get_normalized_symtab): Free external syms directly. * xcofflink.c (xcoff_link_input_bfd): Restore obj_coff_keep_syms on error exit path.
2020-01-30Automatic date update in version.inGDB Administrator1-1/+1
2020-01-29Automatic date update in version.inGDB Administrator1-1/+1
2020-01-28Automatic date update in version.inGDB Administrator1-1/+1
2020-01-27RISC-V: Fix gdbserver problem with handling arch strings.Jim Wilson2-1/+23
Maciej reported a problem found by his RISC-V gdbserver port. warning: while parsing target description (at line 4): Target description specified unknown architecture "riscv:rv64id" warning: Could not load XML target description; ignoring We only have two arches defined, riscv:rv32 and riscv:rv64. Both bfd and gdb are creating arch strings that have extension letters added to the base architecture. The bfd_default_scan function requires an exact match, so these strings fail to map to a bfd_arch. I think we should ignore the extension letters in a RISC-V specific scan function. bfd/ * cpu-riscv.c (riscv_scan): New. (N): Change bfd_default_scan to riscv_scan. Change-Id: I096476705e1da5cb8934c5005b1eed2a8989f7a7
2020-01-27Remove cpu-plugin.cAndreas Schwab7-50/+11
After commit 999d6dff80f cpu-plugin.c is no longer begin used. * Makefile.am (ALL_MACHINES): Remove cpu-plugin.lo. (ALL_MACHINES_CFILES): Remove cpu-plugin.c. * Makefile.in: Regenerate. * cpu-plugin.c: Remove. * archures.c (enum bfd_architecture): Remove bfd_arch_plugin. (bfd_plugin_arch): Remove declaration. * bfd-in2.h: Regenerate. * po/SRC-POTFILES.in: Regenerate.
2020-01-27Mark all weak aliases for copy relocationsAlan Modra2-7/+17
bfd/ PR ld/25458 * elflink.c (_bfd_elf_gc_mark_rsec): Mark all weak aliases. ld/ PR ld/25458 * testsuite/ld-elf/pr25458.map: New file. * testsuite/ld-elf/pr25458.rd: Likewise. * testsuite/ld-elf/pr25458a.s: Likewise. * testsuite/ld-elf/pr25458b.s: Likewise. * testsuite/ld-elf/shared.exp: Run PR ld/25458 test.
2020-01-27Automatic date update in version.inGDB Administrator1-1/+1
2020-01-26Automatic date update in version.inGDB Administrator1-1/+1
2020-01-25Automatic date update in version.inGDB Administrator1-1/+1
2020-01-24RISC-V: Minor cleanup for s extension support.Jim Wilson2-5/+9
Looking at older versions of the patch, I confirmed that the odd comment I referred to earlier was indeed from the removal of the sx support. It also explains an oddly formatted switch statement. This patch fixes both minor problems. bfd/ * elfxx-riscv.c (riscv_get_prefix_class): Format s case like others. (riscv_parse_prefixed_ext): Fix s extension comment and reword to avoid over long line. Change-Id: I1cb62e4a16188270f029b6376e4b1684000d6c7a
2020-01-24Fix an illegal call to free() when copying a PE format file.Nick Clifton2-2/+11
PR 25447 * coffgen.c (_bfd_coff_close_and_cleanup): Do not clear the keep syms and keep strings flags as these may have been set in order to prevent a bogus call to free.
2020-01-24Automatic date update in version.inGDB Administrator1-1/+1
2020-01-23Updated translations for various binutils sub-directories.Nick Clifton2-1589/+1781
2020-01-23PR25444, Floating point exception in _bfd_elf_compute_section_file_positionsAlan Modra2-5/+17
PR 25444 * elf.c (assign_file_positions_for_load_sections): Avoid divide by zero when p_align is zero.
2020-01-22RISC-V: Change -march parsing.Jim Wilson4-104/+301
bfd/ 2020-01-22 Maxim Blinov <maxim.blinov@embecosm.com> * bfd/elfnn-riscv.c (riscv_skip_prefix): New. (riscv_prefix_cmp): Likewise. (riscv_non_std_ext_p): Deleted. (riscv_std_sv_ext_p): Likewise. (riscv_non_std_sv_ext_p): Likewise. (riscv_merge_non_std_and_sv_ext): Rename to... (riscv_merge_multi_letter_ext): and modified to use riscv_prefix_cmp. (riscv_merge_arch_attr_info): Replace 3 calls to riscv_merge_non_std_and_sv_ext with single call to riscv_merge_multi_letter_ext. * bfd/elfxx-riscv.c (riscv_parse_std_ext): Break if we encounter a 'z' prefix. (riscv_get_prefix_class): New function, return prefix class based on first few characters of input string. (riscv_parse_config): New structure to factor out minor differences in extension class parsing behaviour. (riscv_parse_sv_or_non_std_ext): Rename to... (riscv_parse_prefixed_ext): and parameterise with riscv_parse_config. (riscv_std_z_ext_strtab, riscv_std_s_ext_strtab): New. (riscv_multi_letter_ext_valid_p): New. (riscv_ext_x_valid_p, riscv_ext_z_valid_p, riscv_ext_s_valid_p): New. (riscv_parse_subset): Delegate all non-single-letter parsing work to riscv_parse_prefixed_ext. * bfd/elfxx-riscv.h (riscv_isa_ext_class): New type. (riscv_get_prefix_class): Declare. gas/ 2020-01-22 Maxim Blinov <maxim.blinov@embecosm.com> * testsuite/gas/riscv/march-ok-s.d: sx is no longer valid and s exts must be known, so rename *ok* to *fail*. * testsuite/gas/riscv/march-ok-sx.d: Likewise. * testsuite/gas/riscv/march-ok-s-with-version: Likewise. * testsuite/gas/riscv/march-fail-s.l: Expected error messages for above change. * testsuite/gas/riscv/march-fail-sx.l: Likewise. * testsuite/gas/riscv/march-fail-sx-with-version.l: Likewise. Change-Id: Ic4d91a13d055a10d30ab28752a380a669b59f29c
2020-01-23Automatic date update in version.inGDB Administrator1-1/+1
2020-01-22PowerPC64 tls_get_addr_desc static supportAlan Modra2-1/+148
This provides a linker generated __tls_get_addr_desc wrapper function preserving registers around a __tls_get_addr call. The idea being to support __tls_get_addr_desc without requiring a glibc update. bfd/ * elf64-ppc.c (struct ppc_link_hash_table): Add tga_group. (ppc64_elf_archive_symbol_lookup): Extract __tls_get_addr_opt for __tls_get_addr_desc. (ppc64_elf_size_stubs): Add section for linker generated __tls_get_addr_desc wrapper function. Loop at least once if generating this function. (emit_tga_desc, emit_tga_desc_eh_frame): New functions. (ppc64_elf_build_stubs): Generate __tls_get_addr_desc. ld/ * testsuite/ld-powerpc/tlsdesc3.d, * testsuite/ld-powerpc/tlsdesc3.wf, * testsuite/ld-powerpc/tlsdesc4.d, * testsuite/ld-powerpc/tlsdesc4.s, * testsuite/ld-powerpc/tlsdesc4.wf: New tests. * testsuite/ld-powerpc/powerpc.exp: Run them.
2020-01-22PowerPC64 __tls_get_addr_descAlan Modra3-89/+372
This implements register saving and restoring in the __tls_get_addr call stub, so that when glibc supports the optimized tls call stub gcc can generate code that assumes only r0, r12 and of course r3 are changed on a __tls_get_addr call. When gcc expects __tls_get_addr calls to preserve registers the call will be to __tls_get_addr_desc, which will be translated by the linker to a call to __tls_get_addr_opt. bfd/ * elf64-ppc.h (struct ppc64_elf_params): Add no_tls_get_addr_regsave. * elf64-ppc.c (struct ppc_link_hash_table): Add tga_desc and tga_desc_fd. (is_tls_get_addr): Match tga_desc and tga_desc_df too. (STDU_R1_0R1, ADDI_R1_R1): Define. (tls_get_addr_prologue, tls_get_addr_epilogue): New functions. (ppc64_elf_tls_setup): Set up tga_desc and tga_desc_fd. Indirect tga_desc_fd to opt_fd, and tga_desc to opt. Set no_tls_get_addr_regsave. (branch_reloc_hash_match): Add hash3 and hash4. (ppc64_elf_tls_optimize): Handle tga_desc_fd and tga_desc too. (ppc64_elf_size_dynamic_sections): Likewise. (ppc64_elf_relocate_section): Likewise. (plt_stub_size, build_plt_stub): Likewise. Size regsave __tls_get_addr stub. (build_tls_get_addr_stub): Build regsave __tls_get_addr stub and eh_frame. (ppc_size_one_stub): Handle tga_desc_fd and tga_desc too. Size eh_frame for regsave __tls_get_addr. gas/ * config/tc-ppc.c (parse_tls_arg): Handle tls arg for __tls_get_addr_desc and __tls_get_addr_opt. ld/ * emultempl/ppc64elf.em (ppc64_opt, PARSE_AND_LIST_LONGOPTS), (PARSE_AND_LIST_OPTIONS, PARSE_AND_LIST_ARGS_CASES): Support --tls-get-addr-regsave and --no-tls-get-addr-regsave. (params): Init new field. * ld.texi (--tls-get-addr-regsave, --no-tls-get-addr-regsave): Document. * testsuite/ld-powerpc/tlsdesc.s, * testsuite/ld-powerpc/tlsdesc.d, * testsuite/ld-powerpc/tlsdesc.wf, * testsuite/ld-powerpc/tlsdesc2.d, * testsuite/ld-powerpc/tlsdesc2.wf, * testsuite/ld-powerpc/tlsexenors.d, * testsuite/ld-powerpc/tlsexenors.r, * testsuite/ld-powerpc/tlsexers.d, * testsuite/ld-powerpc/tlsexers.r, * testsuite/ld-powerpc/tlsexetocnors.d, * testsuite/ld-powerpc/tlsexetocrs.d, * testsuite/ld-powerpc/tlsexetocrs.r, * testsuite/ld-powerpc/tlsopt6.d, * testsuite/ld-powerpc/tlsopt6.wf: New. * testsuite/ld-powerpc/powerpc.exp: Run new tests.
2020-01-22PowerPC64 TLS optimization fixAlan Modra2-1/+7
When linking with --no-tls-optimize the linker doesn't generate a call or long branch stub to __tls_get_addr in some circumstances, giving: relocation truncated to fit: R_PPC64_REL24 against symbol `__tls_get_addr' * elf64-ppc.c (ppc64_elf_size_stubs): Correct condition under which __tls_get_addr calls will be eliminated.
2020-01-22Automatic date update in version.inGDB Administrator1-1/+1
2020-01-21Automatic date update in version.inGDB Administrator1-1/+1
2020-01-20Updated translations for various binutils sub-directoriesNick Clifton4-4774/+5329
2020-01-20x86-64: Fix TLSDESC relaxation for x32H.J. Lu2-19/+94
For x32, we must encode "lea x@TLSDESC(%rip), %reg" with a REX prefix even if it isn't required. Otherwise linker can’t safely perform GDesc -> IE/LE optimization. X32 TLSDESC sequences can be: 40 8d 05 00 00 00 00 rex lea x@TLSDESC(%rip), %reg ... 67 ff 10 call *x@TLSCALL(%eax) or the same sequence as LP64: 48 8d 05 00 00 00 00 lea foo@TLSDESC(%rip), %reg ... ff 10 call *foo@TLSCALL(%rax) We need to support both sequences for x32. For both GDesc -> IE/LE transitions, 67 ff 10 call *x@TLSCALL(%eax) should relaxed to 0f 1f 00 nopl (%rax) For GDesc -> LE transition, 40 8d 05 00 00 00 00 rex lea x@TLSDESC(%rip), %reg should relaxed to 40 c7 c0 fc ff ff ff rex movl $x@tpoff, %reg For GDesc -> IE transition, 40 8d 05 00 00 00 00 rex lea x@TLSDESC(%rip), %reg should relaxed to 40 8b 05 00 00 00 00 rex movl x@gottpoff(%rip), %eax bfd/ PR ld/25416 * elf64-x86-64.c (elf_x86_64_check_tls_transition): Support "rex leal x@tlsdesc(%rip), %reg" and "call *x@tlsdesc(%eax)" in X32 mode. (elf_x86_64_relocate_section): In x32 mode, for GDesc -> LE transition, relax "rex leal x@tlsdesc(%rip), %reg" to "rex movl $x@tpoff, %reg", for GDesc -> IE transition, relax "rex leal x@tlsdesc(%rip), %reg" to "rex movl x@gottpoff(%rip), %eax". For both transitions, relax "call *(%eax)" to "nopl (%rax)". gas/ PR ld/25416 * config/tc-i386.c (output_insn): Add a dummy REX_OPCODE prefix for lea with R_X86_64_GOTPC32_TLSDESC relocation when generating x32 object. * testsuite/gas/i386/ilp32/x32-tls.d: Updated. * testsuite/gas/i386/ilp32/x32-tls.s: Add tests for lea with R_X86_64_GOTPC32_TLSDESC relocation. ld/ PR ld/25416 * testsuite/ld-x86-64/pr25416-1.s: New file * testsuite/ld-x86-64/pr25416-1a.d: Likewise. * testsuite/ld-x86-64/pr25416-1b.d: Likewise. * testsuite/ld-x86-64/pr25416-1.s: Likewise. * testsuite/ld-x86-64/pr25416-2.s: Likewise. * testsuite/ld-x86-64/pr25416-2a.d: Likewise. * testsuite/ld-x86-64/pr25416-2b.d: Likewise. * testsuite/ld-x86-64/pr25416-3.d: Likewise. * testsuite/ld-x86-64/pr25416-3.s: Likewise. * testsuite/ld-x86-64/pr25416-4.d: Likewise. * testsuite/ld-x86-64/pr25416-4.s: Likewise. * testsuite/ld-x86-64/pr25416-5a.c: Likewise. * testsuite/ld-x86-64/pr25416-5b.s: Likewise. * testsuite/ld-x86-64/pr25416-5c.s: Likewise. * testsuite/ld-x86-64/pr25416-5d.s: Likewise. * testsuite/ld-x86-64/pr25416-5e.s: Likewise. * testsuite/ld-x86-64/x86-64.exp: Run PR ld/25416 tests.
2020-01-20Don't touch r11 in __tls_get_addr stubAlan Modra2-11/+15
This modifies the special __tls_get_addr stub that checks for a tlsdesc style __tls_index entry and returns early. Not using r11 isn't much benefit at the moment but a followup patch will preserve regs around the first call to __tls_get_addr when the __tls_index entry isn't yet set up for an early return. bfd/ * elf64-ppc.c (LD_R11_0R3, CMPDI_R11_0, STD_R11_0R1, LD_R11_0R1), (MTLR_R11): Don't define. (LD_R0_0R3, CMPDI_R0_0): Define. (build_tls_get_addr_stub): Don't use r11 in stub. ld/ * testsuite/ld-powerpc/tlsexe.d: Match new __tls_get_addr stub. * testsuite/ld-powerpc/tlsexeno.d: Likewise. * testsuite/ld-powerpc/tlsexetoc.d: Likewise. * testsuite/ld-powerpc/tlsexetocno.d: Likewise. * testsuite/ld-powerpc/tlsopt5.d: Likewise.
2020-01-20PowerPC64 ppc_elf_hash_entry, defined_sym_val, is_tls_get_addrAlan Modra2-94/+96
* elf64-ppc.c (ppc_elf_hash_entry): New function, use throughout file. (defined_sym_val, is_tls_get_addr): Likewise.
2020-01-20Automatic date update in version.inGDB Administrator1-1/+1
2020-01-19Automatic date update in version.inGDB Administrator1-1/+1
2020-01-18Update version to 2.34.50. Regenerate configure and .pot files.Nick Clifton4-625/+631
2020-01-18Add markers for 2.34 branch to the NEWS files and ChangeLogs.Nick Clifton1-0/+4
2020-01-18Automatic date update in version.inGDB Administrator1-1/+1
2020-01-17Fix spelling errorsChristian Biesinger4-3/+10
seperate -> separate bfd/ChangeLog: 2020-01-17 Christian Biesinger <cbiesinger@google.com> * coff-arm.c: Fix spelling error (seperate). * elfxx-riscv.c (riscv_parse_sv_or_non_std_ext): Fix spelling error (seperate). * sysdep.h (strnlen): Fix spelling error (seperate). opcodes/ChangeLog: 2020-01-17 Christian Biesinger <cbiesinger@google.com> * opintl.h: Fix spelling error (seperate). sim/arm/ChangeLog: 2020-01-17 Christian Biesinger <cbiesinger@google.com> * iwmmxt.c: Fix spelling error (seperate). Change-Id: I55e5f47bcf3cf3533d2acb7ad338f1be0d5f30f9
2020-01-17Automatic date update in version.inGDB Administrator1-1/+1
2020-01-16Automatic date update in version.inGDB Administrator1-1/+1
2020-01-15Set the default page size of the PDP11 target to 8192 bytes.Lars Brinkhoff2-1/+6
PR 20694 bfd * pdp11.c (TARGET_PAGE_SIZE): Set to 8192. ld * temulparams/pdp11.sh (TARGET_PAGE_SIZE): Set to 8192.
2020-01-15PR25384, PowerPC64 ELFv1 copy relocs against function symbolsAlan Modra2-19/+38
Function symbols of course don't normally want .dynbss copies but with some old versions of gcc they are needed to copy the function descriptor. This patch restricts the cases where they are useful to compilers using dot-symbols, and enables the warning regardless of whether a PLT entry is emitted in the executable. PLTs in shared libraries are affected by a .dynbss copy in the executable. bfd/ PR 25384 * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Update comment. (ppc64_elf_adjust_dynamic_symbol): Don't allow .dynbss copies of function symbols unless dot symbols are present. Do warn whenever one is created, regardles of whether a PLT entry is also emitted for the function symbol. ld/ * testsuite/ld-powerpc/ambiguousv1b.d: Adjust expected output. * testsuite/ld-powerpc/funref.s: Align func_tab. * testsuite/ld-powerpc/funref2.s: Likewise. * testsuite/ld-powerpc/funv1.s: Add dot symbols.
2020-01-15Automatic date update in version.inGDB Administrator1-1/+1
2020-01-14som: Don't loop forever reading symbol chainsAlan Modra2-2/+16
* som.c (som_bfd_count_ar_symbols): Error when file position of symbols on chains is not strictly increasing.
2020-01-14ubsan: alpha-vms: segvAlan Modra3-10/+20
I thought the fuzzers were really going overboard by defining VMS_DEBUG but that wasn't the case. VMS_DEBUG is defined by default. Let's not do that, and fix the segv as well. * vms.h (VMS_DEBUG): Define as 0. * vms-alpha.c (image_write): Move debug output after bounds check. Tidy bounds check. (_bfd_vms_slurp_eihd): Warning fix. (_bfd_vms_slurp_etir): Init variables to avoid bogus warnings.
2020-01-14Automatic date update in version.inGDB Administrator1-1/+1
2020-01-13ubsan: alpha-vma: timeoutAlan Modra2-8/+16
* vms-alpha.c (_bfd_vms_slurp_egsd): Ensure minimum size even for "ignored" records.
2020-01-13Memory leaks and ineffective bounds checking in wasm_scanAlan Modra2-56/+56
It's always a bad idea to perform arithmetic on an unknown value read from an object file before comparing against bounds. Code like the following attempting to bounds check "len", a 64-bit value, isn't effective because the pointer arithmetic ignores the high 32 bits when compiled for a 32-bit host. READ_LEB128 (len, p, end); if (p + len < p || p + len > end) goto error_return; Instead, perform any arithmetic on known values where we don't need to worry about overflows: READ_LEB128 (len, p, end); if (len > (size_t) (end - p)) goto error_return; I'll note that this check does do things the right way: READ_LEB128 (symcount, p, end); /* Sanity check: each symbol has at least two bytes. */ if (symcount > payload_size / 2) return FALSE; "symcount * 2 > payload_size" would be wrong since the multiply could overflow. * wasm-module.c (wasm_scan_name_function_section): Formatting. Delete asect name check. Move asect NULL check to wasm_object_p. Correct bounds check of sizes against end. Replace uses of bfd_zalloc with bfd_alloc, zeroing only necessary bytes. Use just one bfd_release. (wasm_scan): Don't use malloc/strdup for section names, bfd_alloc instead. Simplify code prefixing section name. Formatting. Don't attempt to free memory here.. (wasm_object_p): ..do so here. Formatting.