aboutsummaryrefslogtreecommitdiff
path: root/bfd
AgeCommit message (Collapse)AuthorFilesLines
2019-12-29ubsan: alpha-vms: shift exponent is too largeAlan Modra2-9/+14
* vms-alpha.c (_bfd_vms_slurp_egsd): Make base_addr a bfd_vma. Limit alignment power. Correct and simplify alignment expression. (evax_bfd_print_relocation_records): Avoid signed shift left.
2019-12-29asan: alpha-vms: memory leaksAlan Modra4-50/+99
* vms-misc.c (_bfd_vms_save_sized_string): Add abfd param, make size a size_t. Use bfd_alloc rather than bfd_malloc. (_bfd_vms_save_counted_string): Similarly. * vms.h (_bfd_vms_save_sized_string): Update prototype. (_bfd_vms_save_counted_string): Likewise. * vms-alpha.c (_bfd_vms_slurp_ehdr): Adjust _bfd_vms_save_counted_string and bfd_vms_save_sized_string calls. (_bfd_vms_slurp_egsd, parse_module): Likewise. (_bfd_vms_slurp_eisd): Likewise. Check return status. (alpha_vms_bfd_link_hash_table_free): New function. (alpha_vms_bfd_link_hash_table_create): Arrange to call it. (vms_close_and_cleanup): Free more memory. Don't release tdata.
2019-12-29coff_close_and_cleanupAlan Modra5-1/+27
Fixes leaks in _bfd_coff_get_external_symbols and _bfd_coff_read_string_table. * coffcode.h (coff_close_and_cleanup): Redefine to.. * coffgen.c (_bfd_coff_close_and_cleanup): ..this. New function. * libcoff-in.h (_bfd_coff_close_and_cleanup): Declare. * libcoff.h: Regenerate.
2019-12-29PR15350, Fix compressed debug sections for PE targetsAlan Modra2-43/+48
PR 15350 * bfd.c (bfd_update_compression_header): Write zlib header for formats other than ELF too.
2019-12-29Automatic date update in version.inGDB Administrator1-1/+1
2019-12-28Automatic date update in version.inGDB Administrator1-1/+1
2019-12-27Automatic date update in version.inGDB Administrator1-1/+1
2019-12-26asan: som: heap-buffer-overflowAlan Modra2-48/+69
Triggered by overflow of size calulation resulting in a too small buffer. The testcase found one of the som_bfd_count_ar_symbols problems. * som.c (setup_sections): Don't overflow space_strings_size. Use bfd_malloc2 to catch overflow of size calculation. (som_prep_for_fixups): Use bfd_zalloc2 to catch overflow of size calculation. (som_build_and_write_symbol_table): Similarly use bfd_zmalloc2. (som_slurp_symbol_table): Similarly use bfd_zmalloc2, bfd_malloc2, and bfd_zalloc2. (bfd_som_attach_aux_hdr): Use size_t vars for string length. (som_bfd_count_ar_symbols): Use bfd_malloc2 to catch overflow of size calculation. Use size_t vars for length and catch overflow. (som_slurp_armap): Use bfd_alloc2 to catch overflow of size calculation. (som_bfd_ar_write_symbol_stuff): Similarly use bfd_zmalloc2 and bfd_malloc2. Perform size calculations in bfd_size_type.
2019-12-26pe_bfd_read_buildid memory leakHannes Domani2-0/+6
* peicode.h (pe_bfd_read_buildid): Free data.
2019-12-26Automatic date update in version.inGDB Administrator1-1/+1
2019-12-25Automatic date update in version.inGDB Administrator1-1/+1
2019-12-24Automatic date update in version.inGDB Administrator1-1/+1
2019-12-23asan: vms-alpha: heap-buffer-overflowAlan Modra2-16/+49
Two buffer overflows, and some over restrictive length checks. * vms-alpha.c (add_symbol): Add "max" parameter. Error on string length larger than max. (_bfd_vms_slurp_egsd): Ensure record is at least large enough to read string length byte, error if not. Pass size to add_symbol. (_bfd_vms_slurp_etir): Don't read past end of buffer when reading type and length. Allow read of last byte in buffer.
2019-12-23ubsan: wasm: shift is too large for 64-bit type 'bfd_vma'Alan Modra2-8/+20
bfd/ * wasm-module.c (wasm_read_leb128): Don't allow oversize shifts. Catch value overflow. Sign extend only on terminating byte. opcodes/ * wasm32-dis.c (wasm_read_leb128): Don't allow oversize shifts. Catch value overflow. Sign extend only on terminating byte.
2019-12-23Automatic date update in version.inGDB Administrator1-1/+1
2019-12-22Automatic date update in version.inGDB Administrator1-1/+1
2019-12-21Automatic date update in version.inGDB Administrator1-1/+1
2019-12-20ubsan: xtensa: left shift cannot be represented in type 'int'Alan Modra2-1/+5
* xtensa-isa.c (xtensa_insnbuf_from_chars): Avoid signed overflow.
2019-12-20ubsan: hppa: left shift of negative valueAlan Modra2-52/+43
bfd/ * libhppa.h (hppa_field_adjust, bfd_hppa_insn2fmt): Delete forward declaration. Move ATTRIBUTE_UNUSED to definition. (sign_extend, low_sign_extend, sign_unext, low_sign_unext), (re_assemble_3, re_assemble_12, re_assemble_14, re_assemble_16), (re_assemble_17, re_assemble_21, re_assemble_22): Likewise. Make args and return value unsigned. Use unsigned variables. (hppa_rebuild_insn): Similarly. opcodes/ * hppa-dis.c (extract_16, extract_21, print_insn_hppa): Use unsigned variables.
2019-12-20bfd_check_format memory leakAlan Modra2-0/+7
* format.c (bfd_check_format_matches): Free matching_vector when not returning matching target strings.
2019-12-20coff-alpha memory leakAlan Modra2-1/+8
* coff-alpha.c (alpha_ecoff_read_ar_hdr): Free ar_hdr on error return.
2019-12-20Automatic date update in version.inGDB Administrator1-1/+1
2019-12-19xcoff slurp_armap bounds checkingAlan Modra3-6/+40
"count * 8 >= size" might overflow, "count >= size / 8" doesn't. * coff-rs6000.c (_bfd_xcoff_slurp_armap): Don't overflow when checking symbol count against section size. Guard against strlen running off end of buffer by allocating one more byte and zeroing. * coff64-rs6000.c (xcoff64_slurp_armap): Likewise.
2019-12-19PowerPC, use size_t rather than long for indicesAlan Modra3-3/+9
This is fussing about nothing really but since I was looking at signed vs. unsigned issues, I decided to use the correct types here. * elf32-ppc.c (ppc_elf_get_synthetic_symtab): Use size_t for vars. * elf64-ppc.c (sym_exists_at): Use size_t for lo, hi and mid.
2019-12-19Automatic date update in version.inGDB Administrator1-1/+1
2019-12-18Yet more signed overflow fixesAlan Modra7-110/+122
* elf-bfd.h (ELF_LOCAL_SYMBOL_HASH): Avoid signed overflow. * elf32-hppa.c (final_link_relocate): Likewise. * elf32-ppc.c (_bfd_elf_ppc_at_tls_transform): Likewise. (_bfd_elf_ppc_at_tprel_transform, is_insn_ds_form): Likewise. (is_insn_dq_form, ppc_elf_relocate_section): Likewise. * elf64-ppc.c (ok_lo_toc_insn, ppc64_elf_edit_toc): Likewise. (ppc64_elf_relocate_section): Likewise. * elfxx-mips.c (mips_elf_perform_relocation): Likewise. * netbsd.h (N_SET_FLAGS): Likewise.
2019-12-18Automatic date update in version.inGDB Administrator1-1/+1
2019-12-17Remove tic80 supportAlan Modra14-805/+18
This is one way of fixing ubsan bug reports, just delete the code. The assembler support was removed back in 2005 along with other non-BFD assemblers, but somehow the remainder of the port stayed in. bfd/ * coff-tic80.c: Delete file. * cpu-tic80.c: Delete file. * archures.c: Remove tic80 support. * coffcode.h: Likewise. * coffswap.h: Likewise. * targets.c: Likewise. * config.bfd: Likewise. * configure.ac: Likewise. * Makefile.am: Likewise. * Makefile.in: Regenerate. * bfd-in2.h: Regenerate. * configure: Regenerate. * po/SRC-POTFILES.in: Regenerate. binutils/ * testsuite/binutils-all/objcopy.exp: Remove tic80 support. * testsuite/binutils-all/objdump.exp: Likewise. gas/ * doc/as.texi: Remove mention of tic80. include/ * coff/tic80.h: Delete file. * opcode/tic80.h: Delete file. ld/ * emulparams/tic80coff.sh: Delete file. * scripttempl/tic80coff.sc: Delete file. * configure.tgt: Remove tic80 support. * Makefile.am: Likewise. * Makefile.in: Regenerate. * po/BLD-POTFILES.in: Regenerate. opcodes/ * tic80-dis.c: Delete file. * tic80-opc.c: Delete file. * disassemble.c: Remove tic80 support. * disassemble.h: Likewise. * Makefile.am: Likewise. * configure.ac: Likewise. * Makefile.in: Regenerate. * configure: Regenerate. * po/POTFILES.in: Regenerate.
2019-12-17Automatic date update in version.inGDB Administrator1-1/+1
2019-12-16Automatic date update in version.inGDB Administrator1-1/+1
2019-12-15Automatic date update in version.inGDB Administrator1-1/+1
2019-12-14Automatic date update in version.inGDB Administrator1-1/+1
2019-12-13Set no file contents PT_LOAD p_offset to first pageAlan Modra2-1/+16
PR 25237 * elf.c (assign_file_positions_for_load_sections): Attempt to keep meaningless p_offset for PT_LOAD segments without file contents within file size.
2019-12-13Automatic date update in version.inGDB Administrator1-1/+1
2019-12-12Remove duplicate castAlan Modra3-2/+7
* libbfd.c (bfd_get): Don't cast result of bfd_get_8. * bfd-in2.h: Regenerate.
2019-12-12Automatic date update in version.inGDB Administrator1-1/+1
2019-12-11bfd signed overflow fixesAlan Modra8-28/+41
Aimed at quietening ubsan. include/ * opcode/mmix.h (PUSHGO_INSN_BYTE): Make unsigned. (GO_INSN_BYTE, SETL_INSN_BYTE, INCML_INSN_BYTE, INCMH_INSN_BYTE), (INCH_INSN_BYTE, SWYM_INSN_BYTE, JMP_INSN_BYTE): Likewise. bfd/ * elf32-rx.c (elf32_rx_relax_section): Avoid signed overflow. * libaout.h (N_SET_INFO, N_SET_FLAGS): Likewise. * netbsd.h (write_object_contents): Likewise. * elf32-arm.c (bfd_elf32_arm_vfp11_erratum_scan): Likewise. * libhppa.h (HPPA_R_CONSTANT): Don't signed extend with shifts. (stm32l4xx_create_replacing_stub_vldm): Don't truncate high bits with shifts. * elf32-nds32.h (R_NDS32_RELAX_ENTRY_DISABLE_RELAX_FLAG): Define using 1u shifted left. Ditto for other macros. * mmo.c (LOP): Make unsigned.
2019-12-11Make bfd_get_8 return a bfd_vma like other bfd_get_* functionsAlan Modra3-4/+10
And similarly for bfd_get_signed_8. bfd/ * libbfd.c (bfd_get_8): Return a bfd_vma. (bfd_get_signed_8): Return a bfd_signed_vma. * bfd-in2.h: Regenerate. binutils/ * od-xcoff.c (dump_dumpx_core): Adjust for bfd_h_get_8 change.
2019-12-11ubsan: xtensa: left shift cannot be represented in type 'int'Alan Modra2-962/+578
In Operand_soffsetx4_decode: soffsetx4_0 = 0x4 + ((((int) offset_0 << 14) >> 14) << 2); and other places. Don't sign extend with shifts! This file also has many occurrences of truncation via shifts, which aren't a problem due to using uint32, but I dislike on principle enough to fix. * xtensa-modules.c (Field_* functions): Don't mask using shifts. (Operand_soffsetx4_decode, Operand_simm4_decode), (Operand_simm8_decode, Operand_simm8x256_decode), (Operand_simm12b_decode, Operand_label8_decode), (Operand_label12_decode, Operand_soffset_decode), (Operand_xt_wbr15_label_decode, Operand_xt_wbr18_label_decode): Don't sign extend using shifts. (Operand_immrx4_decode, Operand_uimm16x4_decode): Avoid UB in constant.
2019-12-11ubsan: ia64: left shift of negative valueAlan Modra2-3/+8
Here, since val is signed: *valuep = (val << scale); * cpu-ia64-opc.c (ext_imms_scaled): Avoid undefined left shift of negative values by using unsigned vars.
2019-12-11Automatic date update in version.inGDB Administrator1-1/+1
2019-12-10Automatic date update in version.inGDB Administrator1-1/+1
2019-12-09Automatic date update in version.inGDB Administrator1-1/+1
2019-12-08Automatic date update in version.inGDB Administrator1-1/+1
2019-12-07PR25236, common sym versioningAlan Modra2-3/+11
In cases where a relocatable object file has a common symbol, no other file has a definition, and there is a matching common symbol found in a shared library then ld will output a definition using the largest of size and alignment for the commons. This patch fixes a bug in ld that ignored common symbols when assigning versions, resulting in such symbols being given VER_NDX_LOCAL versions. PR 25236 * elflink.c (_bfd_elf_link_assign_sym_version): Assign versions for ELF_COMMON_DEF_P symbols. (elf_link_output_extsym, _bfd_elf_add_default_symbol): Adjust to suit.
2019-12-07Automatic date update in version.inGDB Administrator1-1/+1
2019-12-06Automatic date update in version.inGDB Administrator1-1/+1
2019-12-05Only give FDE encoding warnings if --eh-frame-hdr was specified.Sandra Loosemore2-12/+23
This bug was observed on nios2-linux-gnu with some C++ programs linked with -pie or -shared. The nios2 ABI doesn't include appropriate relocations in this instance and GCC is also being patched not to pass --eh-frame-hdr to the linker in those cases. 2019-12-05 Sandra Loosemore <sandra@codesourcery.com> bfd/ * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Make FDE encoding warning conditional.
2019-12-05Fix a problem computing the size fields in the PE format header.Nick Clifton2-0/+9
PR 25029 * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Ignore empty sections when computing the sizes stored in the headers.
2019-12-05Automatic date update in version.inGDB Administrator1-1/+1