Commit graph

16293 commits

Author SHA1 Message Date
Nelson Chu
3b1450b38c RISC-V: Treat R_RISCV_CALL and R_RISCV_CALL_PLT as the same in check_relocs.
In fact, we can treate these two relocation as the same one in the
riscv_elf_check_relocs.  I have heard that RISC-V lld had made this
improvement, and so had GNU AARCH64, they only need R_AARCH64_CALL26
for calls rather than two seperate relocations.

Beside, the following PLT issue for RISC-V 32-bit glibc seems to be
fixed by applying at least this patch.

<https://sourceware.org/pipermail/libc-alpha/2020-August/117214.html>

I have ran the toolchain regression, and everything seems fine for now.

	bfd/
	* elfnn-riscv.c (riscv_elf_check_relocs): Treat R_RISCV_CALL
	and R_RISCV_CALL_PLT as the same in the riscv_elf_check_relocs.
	(riscv_elf_relocate_section): Remove the R_RISCV_CALL for the
	unresolved reloc checks.

	ld/
	testsuite/ld-riscv-elf/lib-nopic-01a.s: Use R_RISCV_JAL rather
	than R_RISCV_CALL.
	testsuite/ld-riscv-elf/lib-nopic-01b.d: Likewise.
	testsuite/ld-riscv-elf/lib-nopic-01b.s: Likewise.
2020-08-28 09:37:35 +08:00
GDB Administrator
f2f08254b1 Automatic date update in version.in 2020-08-28 00:00:10 +00:00
John David Anglin
9e7ed8b080 Fix PR binutils/26356 on hppa*-*-hpux*.
PR 26356
	* som.c (som_bfd_copy_private_section_data): Issue error when a
	subspace is specified without its containing space.
	* testsuite/binutils-all/objcopy.exp (objcopy --reverse-bytes): Add
	"-j $PRIVATE$" to command on hppa*-*-hpux*.
	* testsuite/lib/utils-lib.exp (default_binutils_run): Remove existing
	dollar-sign quotes before quoting.  Do this prior to generating log
	output.
2020-08-27 15:25:03 +00:00
Alan Modra
4b69ce9b91 PR26469 UBSAN: elflink.c:8742 shift exponent 6148914691236511722
PR 26469
	* elflink.c: Include limits.h.
	(CHAR_BIT): Provide fallback define.
	(set_symbol_value): Correct complex reloc comment.
	(undefined_reference): Set bfd_error.
	(BINARY_OP_HEAD, BINARY_OP_TAIL): Split out from..
	(BINARY_OP): ..this.
	(eval_symbol): Limit shifts.  Force unsigned for left shift.
	Catch divide by zero.
	* configure.ac (AC_CHECK_HEADERS): Combine, sort and add limits.h.
	* configure: Regenerate.
	* config.in: Regenerate.
2020-08-27 22:05:00 +09:30
Alan Modra
cd570d497e PR26462 UBSAN: reloc.c:473 shift exponent 4294967295
PR 26462
	* reloc.c (bfd_check_overflow): Return early if zero bitsize.
2020-08-27 21:56:33 +09:30
Alan Modra
2ac865acf0 arm-symbianelf segfault
Yes, the target is marked obsolete due to this and other segfaults,
but this one is easy enough to fix.

	* elf32-arm.c (elf32_arm_final_link_relocate): Don't segfault
	on sym_sec not being output.
2020-08-27 21:56:33 +09:30
Alan Modra
c415c83bd9 Re: commit eae0b5c3b2
PR 26416
	* elf64-alpha.c (elf64_alpha_relax_tls_get_addr): Correct "dynamic".
2020-08-27 21:56:33 +09:30
GDB Administrator
f2e5245f41 Automatic date update in version.in 2020-08-27 00:00:10 +00:00
Nick Clifton
8c51f2f291 Fix sanitization problems in the BFD library when running the linker testsuite for the AVR target.
PR 26433
	* elf32-avr.c (avr_final_link_relocate):  Fix undefined shift
	behaviour.
	(avr_elf32_load_records_from_section): Use bfd_get_16 and
	bfd_get_32 to load values from potentially unaligned pointers.
2020-08-26 17:43:39 +01:00
Nick Clifton
eae0b5c3b2 Fix sanitization problems running the linker testsuite for the alpha-elf target.
PR 26416
	* elf64-alpha.c (elf64_alpha_relax_tls_get_addr): Test for and
	ignore local symbols.
	(elf64_alpha_relax_got_load): Do not check for local dynamic
	symbols.
	(OP_LDA, OP_LDAH, OP_LDQ, OP_BR, OP_BSR): Use unsigned constant
	values.
	(INSN_A) Cast the A parameter to unsigned.
	(INSN_AB): Define in terms of INSN_A.
	(INSN_ABC): Likewise.
	(INSN_ABO): Likewise.
	(INSN_AD): Likewise.
2020-08-26 16:26:13 +01:00
Nick Clifton
b74a6c6086 Fix a sanitization problem running the linker testsuite for the AArch64 target.
PR 26411
	* elfnn-aarch64.c (elfNN_aarch64_relocate_section): Use an
	unsigned long constant when creating a mask to test for alignment
	issues.
2020-08-26 15:51:56 +01:00
Alan Modra
4d43072582 PR26507 UBSAN: elf32-xtensa.c:6013 null pointer bsearch
PR 26507
	* elf32-xtensa.c (find_removed_literal): Don't bsearch empty map.
2020-08-26 23:23:45 +09:30
Alan Modra
252e57fdd4 PR26506 UBSAN: elf32-xtensa.c:3203 null pointer memcpy
PR 26506
	* elf32-xtensa.c (elf_xtensa_combine_prop_entries): Return early
	when section is empty.
2020-08-26 23:23:45 +09:30
Alan Modra
2d0ce6779c PR26498 UBSAN: elf32-spu.c:2292 left shift overflow
PR 26498
	* elf32-spu.c (find_function_stack_adjust): Use unsigned vars to
	avoid UB left shift.
2020-08-26 23:23:45 +09:30
Alan Modra
9e51d549d7 PR 26484-26488, 26490 UBSAN &h->elf null pointer
PR 26484
	PR 26485
	PR 26486
	PR 26487
	PR 26488
	PR 26490
	* elf64-ppc.c (is_tls_get_addr): Avoid UB &h->elf when h is NULL.
	(ppc64_elf_tls_setup): Likewise.
	(branch_reloc_hash_match): Likewise.
	(build_plt_stub): Likewise.
	(ppc64_elf_relocate_section): Likewise.
2020-08-26 23:23:45 +09:30
Alan Modra
00bc5e68b2 PR26478 UBSAN: mmo.c:2941 null pointer memcpy
PR 26478
	* mmo.c (mmo_write_symbols_and_terminator): Don't memcpy empty table.
2020-08-26 23:23:45 +09:30
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