Commit graph

16277 commits

Author SHA1 Message Date
Alan Modra
55e61b8ad9 PR26475 UBSAN: elfxx-mips.c:12180 null pointer memset
Another memset(0,0,0)

	PR 26475
	* elfxx-mips.c (_bfd_mips_elf_finish_dynamic_sections): Check
	sstubs->contents != NULL.
2020-08-26 23:23:44 +09:30
Alan Modra
66ad6b4458 PR26453 UBSAN: som.c:2885 null pointer memcpy
PR 26453
	* som.c (som_prep_for_fixups): Return early when no symbols.
2020-08-26 23:23:44 +09:30
Alan Modra
9863cbb7bd PR26418 UBSAN: cache.c:386 null pointer fwrite
PR 26418
	* ecofflink.c (WRITE): Don't write size 0 chunks.
2020-08-26 23:23:44 +09:30
Alan Modra
c01de19363 asan: alpha-vms: mmember access within null pointer
* bfdio.c (bfd_get_file_size): Don't segv on NULL adata.
2020-08-26 23:23:44 +09:30
Alan Modra
b4e125d935 PR26415 UBSAN: vms-misc.c:636 left shift cannot be represented
An unsigned short value is promoted to int, thus triggering UB on a
left shift of a positive value that results in a negative int.

	PR 26415
	* vms-misc.c (vms_time_t_to_vms_time): Don't use unsigned short vars.
2020-08-26 23:23:44 +09:30
David Faust
4449c81a85 bpf: add xBPF ISA
This patch adds support for xBPF, another ISA targetting the BPF
virtual architecture. For now, the primary difference between eBPF
and xBPF is that xBPF supports indirect calls through the
'call %reg' form of the call instruction.

bfd/
	* archures.c (bfd_mach_xbpf): Define.
	* bfd-in2.h: Regenerate.
	* cpu-bpf.c (bfd_xbpf_arch) New.
	(bfd_bpf_arch) Update next in list field to point to xbpf arch.

cpu/
	* bpf.cpu (arch bpf): Add xbpf mach and isas.
	(define-xbpf-isa) New pmacro.
	(all-isas) Add xbpfle,xbpfbe.
	(endian-isas): New pmacro.
	(mach xbpf): New.
	(model xbpf-def): Likewise.
	(h-gpr): Add xbpf mach.
	(f-dstle, f-srcle, dstle, srcle): Add xbpfle isa.
	(f-dstbe, f-srcbe, dstbe, srcbe): Add xbpfbe isa.
	(define-alu-insn-un): Use new endian-isas pmacro.
	(define-alu-insn-bin, define-alu-insn-mov): Likewise.
	(define-endian-insn, define-lddw): Likewise.
	(dlind, dxli, dxsi, dsti): Likewise.
	(define-cond-jump-insn, define-call-insn): Likewise.
	(define-atomic-insns): Likewise.

gas/
	* config/tc-bpf.c: Add option -mxbpf to select xbpf isa.
	* testsuite/gas/bpf/indcall-1.d: New file.
	* testsuite/gas/bpf/indcall-1.s: Likewise.
	* testsuite/gas/bpf/indcall-bad-1.l: Likewise.
	* testsuite/gas/bpf/indcall-bad-1.s: Likewise.
	* testsuite/gas/bpf/bpf.exp: Run new tests.

opcodes/
	* bpf-desc.c: Regenerate.
	* bpf-desc.h: Likewise.
	* bpf-opc.c: Likewise.
	* bpf-opc.h: Likewise.
	* disassemble.c (disassemble_init_for_target): Set bits for xBPF
	ISA when appropriate.
2020-08-26 15:39:00 +02:00
Alan Modra
13f8a2465e Re: CSKY: Add new arch CK860
bfd-in2.h is a generated file.  Put the new machine where it belongs.

	* archures.c (bfd_mach_ck860): Define.
2020-08-26 11:43:03 +09:30
GDB Administrator
3c68b07e84 Automatic date update in version.in 2020-08-26 00:00:10 +00:00
Mark Wielaard
c3757b583d Fix the linker's handling of DWARF-5 line number tables.
When building with gcc with -gdwarf-5 ld tests (including ld-elf/dwarf.exp)
fail because they try to read the .debug_ranges section. But DWARF5
introduces a new .debug_rnglists section that encodes the address ranges
more efficiently. Implement reading the debug_rnglists in bfd/dwarf2.c.
Which makes all tests pass again and fixes several gcc testsuite tests
when defaulting to DWARF5.

	*  dwarf2.c (struct dwarf2_debug_file): Add dwarf_rnglists_buffer
	and dwarf_rnglists_size fields.
	(dwarf_debug_sections): Add debug_rnglists.
	(dwarf_debug_section_enum): Likewise.
	(read_debug_rnglists): New function.
	(read_rangelist): New function to call either read_ranges or
	read_rnglists. Rename original function to...
	(read_ranges): ...this.
	(read_rnglists): New function.
2020-08-25 15:33:00 +01:00
Alan Modra
1ab8d92897 PR26505, ASAN: xstormy16_elf_relax_section elf32-xstormy16.c:595
PR 26505
	* elf32-xstormy16.c (xstormy16_elf_relax_section): Check
	is_elf_hash_table before accessing elf fields.
2020-08-25 23:07:10 +09:30
Alan Modra
a93ba4c0cf PR26482, ASAN: _bfd_xcoff_sizeof_headers coff-rs6000.c:2585
PR 26482
	* coff-rs6000.c (_bfd_xcoff_sizeof_headers): Ignore sections that
	won't be output.
2020-08-25 23:07:10 +09:30
Alan Modra
1438dd86cc PR26463, ASAN: m32c_elf_relax_section elf32-m32c.c:1448
PR 26463
	* elf32-m32c.c (m32c_elf_relax_section): Check is_elf_hash_table
	before accessing elf fields.
2020-08-25 23:07:10 +09:30
Alan Modra
2186273ac4 PR26452, ASAN: som_compute_checksum som.c:4293
PR 26452
	* som.c (som_compute_checksum): XOR 32-bit words in header,
	not unsigned long sized words.
2020-08-25 23:07:10 +09:30
Alan Modra
0c1438eb15 PR26430, ASAN: nacl_modify_segment_map elf-nacl.c:164
PR 26430
	* elf-nacl.c (nacl_modify_segment_map): Correct alloc size and
	amount copied for elf_segment_map defined with one element
	sections array.
2020-08-25 23:07:10 +09:30
Alan Modra
d2327e47ef PR26422, ASAN: elf32_arm_final_link_relocate elf32-arm.c:10351
Always reading 32 bits in order to extract addends from instruction
fields is wrong when the field size is smaller.  It also leads to
reading past the end of the section.  This patch tidies that by
reading the proper field size, which allows some later refetching of
addends to disappear.

	PR 26422
	* elf32-arm.c (elf32_arm_final_link_relocate): Use the appropriate
	bfd_get_x size function to read addends out of fields.  Apply
	rightshift adjustment too.  Don't apply the now unnecessary
	howto->size shift to branch REL addends.  Don't refetch R_ARM_ABS8
	and R_ARM_ABS16 addends.  Don't refetch thumb branch addends.
	Correct R_ARM_THM_JUMP6 addend.
2020-08-25 23:07:10 +09:30
Alan Modra
b8ff233b54 PR26419, ASAN: mn10300_elf_relax_section elf-m10300.c:3943
PR 26419
	* elf-m10300.c (mn10300_elf_relax_section): Don't attempt access
	before start of section.
2020-08-25 23:07:10 +09:30
GDB Administrator
4cf3d79e64 Automatic date update in version.in 2020-08-25 00:00:09 +00:00
Alan Modra
0f55320bc4 elf_hash_table_id access
* elf-m10300.c (elf32_mn10300_hash_table): Test is_elf_hash_table
	before accessing elf_hash_table_id.
	* elf32-arc.c (elf_arc_hash_table): Likewise.
	* elf32-arm.c (elf32_arm_hash_table): Likewise.
	* elf32-avr.c (avr_link_hash_table): Likewise.
	* elf32-bfin.c (bfinfdpic_hash_table): Likewise.
	* elf32-cris.c (elf_cris_hash_table): Likewise.
	* elf32-csky.c (csky_elf_hash_table): Likewise.
	* elf32-frv.c (frvfdpic_hash_table): Likewise.
	* elf32-hppa.c (hppa_link_hash_table): Likewise.
	* elf32-lm32.c (lm32_elf_hash_table): Likewise.
	* elf32-m32r.c (m32r_elf_hash_table): Likewise.
	* elf32-m68hc1x.h (m68hc11_elf_hash_table): Likewise.
	* elf32-m68k.c (elf_m68k_hash_table): Likewise.
	* elf32-metag.c (metag_link_hash_table): Likewise.
	* elf32-microblaze.c (elf32_mb_hash_table): Likewise.
	* elf32-nds32.h (nds32_elf_hash_table): Likewise.
	* elf32-or1k.c (or1k_elf_hash_table): Likewise.
	* elf32-s390.c (elf_s390_hash_table): Likewise.
	* elf32-sh.c (sh_elf_hash_table): Likewise.
	* elf32-spu.c (spu_hash_table): Likewise.
	* elf32-tilepro.c (tilepro_elf_hash_table): Likewise.
	* elf32-xtensa.c (elf_xtensa_hash_table): Likewise.
	* elf64-alpha.c (alpha_elf_hash_table): Likewise.
	* elf64-hppa.c (hppa_link_hash_table): Likewise.
	* elf64-ia64-vms.c (elf64_ia64_hash_table): Likewise.
	* elf64-s390.c (elf_s390_hash_table): Likewise.
	* elfnn-ia64.c (elfNN_ia64_hash_table): Likewise.
	* elfnn-riscv.c (riscv_elf_hash_table): Likewise.
	* elfxx-mips.c (mips_elf_hash_table): Likewise.
	* elfxx-sparc.h (_bfd_sparc_elf_hash_table): Likewise.
	* elfxx-tilegx.c (tilegx_elf_hash_table): Likewise.
2020-08-25 02:45:58 +09:30
Jon Turney
3cdad0846b
Fix erroroneous use of '%zu' in elfcore_grok_win32pstatus
As reported in [1], _bfd_error_handler() doesn't support '%zu'.

module_name_size is always 32-bits in the data structure we are
extracting it from, so use an unsigned int to store it instead.

[1] https://sourceware.org/pipermail/gdb-patches/2020-August/171391.html

bfd/ChangeLog:

2020-08-21  Jon Turney  <jon.turney@dronecode.org.uk>

	* elf.c (elfcore_grok_win32pstatus): Change name_size to unsigned
	int. Use '%u' format with  _bfd_error_handler to render it.
2020-08-24 18:04:55 +01:00
Alan Modra
918dc783de PR26489, ASAN: ppc64_elf_size_stubs elf64-ppc.c:13389
Stub sections are inserted after sec_info is sized, so have higher ids.
Test flags that will exclude stub sections before looking at the
sec_info array.

	PR 26489
	* elf64-ppc.c (ppc64_elf_size_stubs): Test code_sec->has_toc_reloc
	and code_sec->makes_toc_func_call before sec_info[code_sec->id].
2020-08-25 02:12:35 +09:30
Alan Modra
573eb292ee PR26492, ASAN: ppc64_elf_before_check_relocs elf64-ppc.c:4337
PR 26492
	* elf64-ppc.c (ppc_hash_table): Test is_elf_hash_table before
	accessing elf_hash_table_id.
2020-08-25 02:12:35 +09:30
Alan Modra
a8d549c006 PR26483, ASAN: ppc_elf_link_params elf32-ppc.c:2314
PR 26483
	* elf32-ppc.c (ppc_elf_hash_table): Test is_elf_hash_table before
	accessing elf_hash_table_id.
2020-08-25 02:11:13 +09:30
Mark Wielaard
19d80e5fec bfd: Handle DW_FORM_data16 for .debug_line tables containing MD5
* dwarf2.c (read_attribute_value): Handle DW_FORM_data16.
	(read_formatted_entries): Likewise. And skip zero entry.
2020-08-24 15:52:53 +01:00
Cooper Qu
531c73a37b CSKY: Add new arch CK860.
bfd/
        * bfd-in2.h (bfd_mach_ck860): New.
        * cpu-csky.c (arch_info_struct): Add item for CK860.

gas/
        * config/tc-csky.c (csky_archs): Add item for CK860,
        change ck810 and ck807's arch_flag.
        (csky_cpus): Add item for CK860.
        (md_begin): Enable DSP for CK810 and CK807 by default.
        (md_apply_fix): Fix CKCORE_TLS_IE32 relocation failure.
        * gas/testsuite/gas/csky/cskyv2_all.d: Change 'sync 0'
        to 'sync'.
        * gas/testsuite/gas/csky/cskyv2_all.s: Likewise.
        * gas/testsuite/gas/csky/cskyv2_ck860.d: New.
        * gas/testsuite/gas/csky/cskyv2_ck860.s: New.
        * gas/testsuite/gas/csky/enhance_dsp.d: Change plsli.u16
        to plsli.16.
        * gas/testsuite/gas/csky/enhance_dsp.s: Likewise.

include/
        * opcode/csky.h (CSKYV2_ISA_10E60): New.
        (CSKY_ARCH_860): New.

opcode/
        * csky-dis.c (csky_find_inst_info): Skip CK860's instructions
        in other CPUs to speed up disassembling.
        * csky-opc.h (csky_v2_opcodes): Add CK860's instructions,
        Change plsli.u16 to plsli.16, change sync's operand format.

Change-Id: I80ec1a9c0cc600d668082a9b91ae6d45b33ec0fc
2020-08-24 20:27:07 +08:00
Alan Modra
252dcdf432 PowerPC TPREL_HA/LO optimisation
ppc64 ld optimises sequences like the following
	addis 3,13,wot@tprel@ha
	lwz 3,wot@tprel@l(3)
to
	nop
	lwz 3,wot@tprel(13)
when "wot" is located near enough to the thread pointer.
However, the ABI doesn't require that R_PPC64_TPREL16_HA always be on
an addis rt,13,imm instruction, and while ld checked for that on the
high-part instruction it didn't disable the optimisation on the
low-part instruction.  This patch fixes that problem, disabling the
tprel optimisation globally if high-part instructions don't pass
sanity checks.  The optimisation is also enabled for ppc32, where
before ld.bfd had the code in the wrong place and ld.gold had it in a
block only enabled for ppc64.

bfd/
	* elf32-ppc.c (ppc_elf_check_relocs): Set has_tls_reloc for
	high part tprel16 relocs.
	(ppc_elf_tls_optimize): Sanity check high part tprel16 relocs.
	Clear do_tls_opt on odd instructions.
	(ppc_elf_relocate_section): Move TPREL16_HA/LO optimisation later.
	Don't sanity check them here.
	* elf64-ppc.c (ppc64_elf_check_relocs): Set has_tls_reloc for
	high part tprel16 relocs.
	(ppc64_elf_tls_optimize): Sanity check high part tprel16 relocs.
	Clear do_tls_opt on odd instructions.
	(ppc64_elf_relocate_section): Don't sanity check TPREL16_HA.
ld/
	* testsuite/ld-powerpc/tls32.d: Update for TPREL_HA/LO optimisation.
	* testsuite/ld-powerpc/tlsexe32.d: Likewise.
	* testsuite/ld-powerpc/tlsldopt32.d: Likewise.
	* testsuite/ld-powerpc/tlsmark32.d: Likewise.
	* testsuite/ld-powerpc/tlsopt4_32.d: Likewise.
	* testsuite/ld-powerpc/tprel.s,
	* testsuite/ld-powerpc/tprel.d,
	* testsuite/ld-powerpc/tprel32.d: New tests.
	* testsuite/ld-powerpc/tprelbad.s,
	* testsuite/ld-powerpc/tprelbad.d: New test.
	* testsuite/ld-powerpc/powerpc.exp: Run them.
gold/
	* powerpc.cc (Target_powerpc): Add tprel_opt_ and accessors.
	(Target_powerpc::Scan::local): Sanity check tprel high relocs.
	(Target_powerpc::Scan::global): Likewise.
	(Target_powerpc::Relocate::relocate): Control tprel optimisation
	with tprel_opt_ and enable for 32-bit.
2020-08-24 21:15:06 +09:30
GDB Administrator
b9e188dc8b Automatic date update in version.in 2020-08-24 00:00:07 +00:00
John David Anglin
c40e66502c Disable default ELF plugins on 32-bit hppa*-*-hpux*.
PR binutils/26357
	* configure.ac: Disable plugins by default on 32-bit hppa*-*-hpux*.
	* configure: Regenerate.
2020-08-23 16:44:22 +00:00
GDB Administrator
cee12b773a Automatic date update in version.in 2020-08-23 00:00:08 +00:00
H.J. Lu
3f2e969923 elf: Keep only one '@' for undefined versioned symbols
The symbol string table in the .symtab section is optional and cosmetic.
Keep only one '@' for undefined versioned symbols, which are defined in
shared objects, in the symbol string table.  Update "nm -D" to display
only one '@' for undefined versioned symbols.

bfd/

	PR ld/26382
	* elflink.c (elf_link_output_symstrtab): Keep only one '@' for
	versioned symbols, which are defined in shared objects, in
	symbol string table.

binutils/

	PR ld/26382
	* nm.c (print_symname): Display only one '@' for undefined
	versioned symbols.
	* doc/binutils.texi: Update nm version information.

ld/

	PR ld/26382
	* testsuite/ld-elf/pr26302.nd: Updated.
	* testsuite/ld-elf/pr26302.rd: New file.
	* testsuite/ld-elf/shared.exp: Add a test for readelf -sW.
2020-08-22 08:32:02 -07:00
GDB Administrator
1d4ef7201f Automatic date update in version.in 2020-08-22 00:00:07 +00:00
Nick Clifton
ccf61261eb Fix problems with the AArch64 linker exposed by testing it with sanitization enabled.
bfd	* elfnn-aarch64.c (_bfd_aarch64_erratum_835769_scan): Only sort
	the data map if there are entries in it.
	(_bfd_aarch64_erratum_843419_scan): Likewise.

opcodes	* aarch64-dis.c (get_sym_code_type): Return FALSE for non-ELF
	symbols.
2020-08-21 15:32:20 +01:00
Jan Beulich
610ed3e08f fix objcopy of PE images with .buildid section
Xen Project embeds a build ID in its hypervisor binary (including its
EFI variant), living in a standalone section. This usually gets placed
right after .rodata, and due to the rounding done on the (file) size of
.rodata the two sections appear to overlap (as far as e.g.
find_section_by_vma() is concerned). With the first byte "found" in
.rodata, nothing guarantees that the entire debug dir fits in that
section, leading to apparently random failure of objcopy on such an
image.

Possible alternatives to the solution chosen:
- make find_section_by_vma() honor virt_size,
- correct the recording of sizes elsewhere (ibfd has size == virt_size,
  while obfd doesn't),
- fix the linker to avoid producing apparently overlapping sections.

While touching the condition around and the contents of the disgnostic,
pull it up ahead of the bfd_malloc_and_get_section() call: There's no
point first obtaining the section contents, in order to then fail.
2020-08-21 10:28:35 +02:00
GDB Administrator
9cc9699833 Automatic date update in version.in 2020-08-21 00:00:07 +00:00
Nick Clifton
01147b2082 Ensure that compressed sections that have an ELF compression header structure at the start are correctly aligned.
PR 26428
bfd	* bfd.c (bfd_update_compression_header): Also set the sh_addralign
	field in the ELF header of the compressed sections.

ld	* testsuite/ld-elf/zlibbegin.rS: Update expected output.
	* testsuite/ld-elf/zlibnormal.rS: Likewise.
2020-08-20 15:03:21 +01:00
Nick Clifton
44466e45c5 Apply a workaround to mitigate a quadratic performance hit in the linker when writing out secondary reloc sections.
PR 26406
	* elf-bfd.h (struct bfd_elf_section_data): Add
	has_secondary_relocs field.
	* elf.c (_bfd_elf_copy_special_section_fields): Set the
	has_secondary_relocs field for sections which have associated
	secondary relocs.
	* elfcode.h (elf_write_relocs): Only call write_secondary_relocs
	on sections which have associated secondary relocs.
2020-08-20 10:19:47 +01:00
GDB Administrator
c51ed085ab Automatic date update in version.in 2020-08-20 00:00:13 +00:00
GDB Administrator
6cdb985c45 Automatic date update in version.in 2020-08-19 00:00:06 +00:00
GDB Administrator
d2bb907b8b Automatic date update in version.in 2020-08-18 00:00:07 +00:00
GDB Administrator
d3267445af Automatic date update in version.in 2020-08-17 00:00:07 +00:00
GDB Administrator
878000178e Automatic date update in version.in 2020-08-16 00:00:06 +00:00
Alan Modra
10885e2436 Set SEC_SMALL_DATA on small common
Unlike the previous patch setting SEC_SMALL_DATA during
elf_backend_symbol_processing, this patch is mostly cosmetic.

	* elf32-frv.c (elf32_frv_add_symbol_hook): Set SEC_SMALL_DATA on
	small common section.
	* elf32-m32r.c (m32r_elf_add_symbol_hook): Likewise.
	* elf32-microblaze.c (microblaze_elf_add_symbol_hook): Likewise.
	* elf32-nds32.c (nds32_elf_add_symbol_hook): Likewise.
	* elf32-nios2.c (nios2_elf_add_symbol_hook): Likewise.
	* elf32-ppc.c (ppc_elf_add_symbol_hook): Likewise.
	* elf32-score.c (s3_bfd_score_elf_add_symbol_hook): Likewise.
	* elf32-score7.c (s7_bfd_score_elf_add_symbol_hook): Likewise.
	* elf32-tic6x.c (elf32_tic6x_add_symbol_hook): Likewise.
	* elf32-v850.c (v850_elf_check_relocs): Likewise.
	(v850_elf_add_symbol_hook): Likewise.
	* elf64-alpha.c (elf64_alpha_add_symbol_hook): Likewise.
	* elf64-ia64-vms.c (elf64_ia64_add_symbol_hook): Likewise.
	* elfnn-ia64.c (elfNN_ia64_add_symbol_hook): Likewise.
	* elfxx-mips.c (_bfd_mips_elf_add_symbol_hook): Likewise.
2020-08-15 15:14:42 +09:30
Alan Modra
4d1823674e PR26389, nm prints "c" for a common symbol with -flto and -fcommon
git commit 49d9fd42ac chose to make nm print 'C' for the normal
common section, and 'c' for other commons.  This was an attempt to
make common symbols in .scommon and other small common sections show
a 'c' type without a section name comparison, but it failed for
nm --plugin on lto objects where normal common symbols are stashed in
a "plug" section.  It's also wrong for large common symbols.  So
instead set SEC_SMALL_DATA on sections created for small commons, and
key off that flag to show 'c' type.  If your ELF target doesn't have
an elf_backend_symbol_processing function, then you won't see 'c' for
symbols in .scommon.

Note that due to bfd_decode_symclass decoding common symbols without
a chance for coff_section_type to treat .scommon specially, then
having .scommon in the array of special sections handled by
coff_section_type prior to 49d9fd42ac was entirely ineffective.
That fact escaped me when writing 49d9fd42ac.  Unless .scommon
didn't have SEC_IS_COMMON set, which would be a little weird.

	PR 26389
	* syms.c (bfd_decode_symclass): Choose 'c' for commons only when
	SEC_SMALL_DATA.
	* elf32-m32r.c (_bfd_m32r_elf_symbol_processing): Set SEC_SMALL_DATA
	on small common section.
	* elf32-score.c (s3_bfd_score_elf_symbol_processing): Likewise.
	* elf32-score7.c (s7_bfd_score_elf_symbol_processing): Likewise.
	* elf32-tic6x.c (elf32_tic6x_symbol_processing): Likewise.
	* elf32-v850.c (v850_elf_symbol_processing): Likewise.
	* elfxx-mips.c (_bfd_mips_elf_symbol_processing): Likewise.
	* ecoff.c (ecoff_set_symbol_info, ecoff_link_add_externals): Likewise.
2020-08-15 14:16:02 +09:30
GDB Administrator
a9ca57d09a Automatic date update in version.in 2020-08-15 00:00:07 +00:00
Alan Modra
19bddbe95c Allow larger bfd_default_hash_table_size
* hash.c (bfd_hash_set_default_size): Use higher_prime_number
	rather than another copy of primes.  Increase maximum default
	size allowed.
2020-08-14 21:37:24 +09:30
GDB Administrator
dac736f6a1 Automatic date update in version.in 2020-08-14 00:00:07 +00:00
Alan Modra
73d0dc162e Obsolete ia64
* config.bfd: Obsolete ia64*-*-*.
2020-08-13 14:13:43 +09:30
Alan Modra
2b6ba032ad Obsolete arm-symbianelf
* config.bfd: Obsolete arm*-*-symbianelf*.
2020-08-13 09:58:13 +09:30
GDB Administrator
e5a59fd37e Automatic date update in version.in 2020-08-13 00:00:07 +00:00
Alan Modra
6738c8a7c9 PowerPC64 --no-pcrel-optimize
This new option effectively ignores R_PPC64_PCREL_OPT, disabling the
optimization of instructions marked by that relocation.  The patch
also disables GOT indirect to GOT/TOC pointer relative code editing
when --no-toc-optimize.

bfd/
	* elf64-ppc.h (struct ppc64_elf_params): Add no_pcrel_opt.
	* elf64-ppc.c (ppc64_elf_relocate_section): Disable GOT reloc
	optimizations when --no-toc-optimize.  Disable R_PPC64_PCREL_OPT
	optimization when --no-pcrel-optimize.
ld/
	* emultempl/ppc64elf.em (params): Init new field.
	(enum ppc64_opt): Add OPTION_NO_PCREL_OPT.
	(PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS),
	(PARSE_AND_LIST_ARGS_CASES): Support --no-pcrel-optimize.
2020-08-13 08:10:18 +09:30
Alan Modra
75e100a30d PR26348, Malloc error in write_zeros
This adds a few more sanity checks on ELF objects, and a BFD flag to
disable objcopy and strip when fuzzed input files belong in the "too
hard" basket.

bfd/
	PR 26348
	* bfd.c (struct bfd): Add read_only.
	* elfcode.h (elf_swap_shdr_in): Test both sh_offset and sh_size.
	Set read_only on warning.
	(elf_object_p): Sanity check program header alignment.  Set
	read_only on warning.
	* bfd-in2.h: Regenerate.
binutils/
	PR 26348
	* objcopy.c (copy_object): Report file name with endian error.
	Error and return on abfd->read_only.
2020-08-13 08:09:08 +09:30