Commit Graph

16005 Commits

Author SHA1 Message Date
Stephen Casner fa1477dc34 Fixes for the magic number used in PDP11 AOUT binaries.
PR ld/25677
include	* aout/aout64.h (N_DATADDR): Add IMAGIC case.

bfd	* pdp11.c: Add implementation of --imagic option.
	(adjust_o_magic): Fix objcopy --extract-symbol test.
	* libaout.h (enum aout_magic): Add i_magic.

ld	* emulparams/pdp11.sh (SCRIPT_NAME): Change to pdp11.
	(EXTRA_EM_FILE): New, add emulation file pdp11.
	* scripttempl/pdp11.sc: New, derived from aout.sc without
	irrelevant input sections.
	* emultempl/pdp11.em (_add_options, _handle_option)
	(_list_options): New. Add options -z, --imagic for pdp11-aout.
	(_before_parse): Make --omagic be default instead of --nmagic.
	(_get_script): Modify special-case linker script for --imagic.
	* lexsup.c (parse_args): Explictly set config.text_read_only for -n.
	* ld.texi (Options): Add documentation of PDP11-specific options.
	(Options): Fix unrelated typo to --no-compact-branches.
	* gen-doc.texi: @set PDP11.
	* testsuite/ld-pdp11/pdp11.exp: New, start pdp11 testing.
	* testsuite/ld-pdp11/sections.s: New, source for options tests.
	* testsuite/ld-pdp11/imagic.d: New, test --imagic format.
	* testsuite/ld-pdp11/imagicz.d: New, test -z (imagic) format.
	* testsuite/ld-pdp11/nmagic.d: New, test --nmagic format.
	* testsuite/ld-pdp11/omagic.d: New, test --omagic format.
2020-04-14 14:41:27 +01:00
GDB Administrator b1f1b4decb Automatic date update in version.in 2020-04-14 00:00:11 +00:00
GDB Administrator b23b09ad31 Automatic date update in version.in 2020-04-13 00:00:10 +00:00
GDB Administrator 0b07a19901 Automatic date update in version.in 2020-04-12 00:00:05 +00:00
GDB Administrator de7ac122a7 Automatic date update in version.in 2020-04-11 00:00:07 +00:00
GDB Administrator 6993bae074 Automatic date update in version.in 2020-04-10 00:00:13 +00:00
GDB Administrator 6b0f946d41 Automatic date update in version.in 2020-04-09 00:00:09 +00:00
GDB Administrator cc9411f8dc Automatic date update in version.in 2020-04-08 00:00:10 +00:00
Rainer Orth a0543b0b4c ChangeLog entry for last change. 2020-04-07 17:03:09 +02:00
Rainer Orth 3e97ba7d58 ld: Fix several 32-bit SPARC plugin tests
Several ld plugin tests currently FAIL on 32-bit Solaris/SPARC:

FAIL: load plugin with source
FAIL: plugin claimfile lost symbol with source
FAIL: plugin claimfile replace symbol with source
FAIL: plugin claimfile resolve symbol with source
FAIL: plugin claimfile replace file with source
FAIL: plugin set symbol visibility with source
FAIL: plugin ignore lib with source
FAIL: plugin claimfile replace lib with source
FAIL: plugin 2 with source lib
FAIL: load plugin 2 with source
FAIL: load plugin 2 with source and -r
FAIL: plugin 3 with source lib
FAIL: load plugin 3 with source
FAIL: load plugin 3 with source and -r
FAIL: PR ld/20070

all of them in the same way:

./ld-new: BFD (GNU Binutils) 2.34.50.20200328 internal error, aborting at /vol/src/gnu/binutils/hg/master/git/bfd/elf32-sparc.c:154 in sparc_final_write_processing

This happens when bfd_get_mach returns 0 when abfd refers to a source
file:

$11 = {
  filename = 0x28c358 "/vol/src/gnu/binutils/hg/master/local/ld/testsuite/ld-plugin/func.c (symbol from plugin)", xvec = 0x24ed6c <sparc_elf32_sol2_vec>,
[...]

While I could find no specification what abfd's are allowed/expected in
*_final_write_processing, I could find no other target that behaved the
same.  And indeed ignoring the 0 case fixes the failures.  The code now
errors for other values.  64-bit SPARC is not affected because it doesn't
have a specific implementation of elf_backend_final_write_processing.

Tested on sparc-sun-solaris2.11.

2020-04-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
	    Nick Clifton  <nickc@redhat.com>

	* elf32-sparc.c (sparc_final_write_processing): Fix whitespace.
	<0>: Ignore.
	<default>: Error rather than abort.
2020-04-07 16:52:03 +02:00
GDB Administrator f4a220077b Automatic date update in version.in 2020-04-07 00:00:09 +00:00
GDB Administrator 8707c52201 Automatic date update in version.in 2020-04-06 00:00:06 +00:00
GDB Administrator d87e3802d9 Automatic date update in version.in 2020-04-05 00:00:06 +00:00
H.J. Lu 3349112e38 elf: Remove zero-sized relocation section from section group
Remove zero-sized relocation section from a section group since it has
been removed from the output.

	PR ld/25767
	* elf.c (_bfd_elf_fixup_group_sections): Remove zero-sized
	relocation section from section group.
2020-04-03 19:06:39 -07:00
GDB Administrator 2612e26d4d Automatic date update in version.in 2020-04-04 00:00:06 +00:00
GDB Administrator 492c3f03c7 Automatic date update in version.in 2020-04-03 00:00:08 +00:00
Jan W. Jagersma 4d095f5b5e coff-go32-exe: support variable-length stubs
The stub size in GO32 executables has historically been fixed at 2048
bytes, due to hardcoded limitations in bfd.  Recent patches to djgpp by
Stas Sergeev (CC'd) have pushed the stub right up to this limit, so if
any further expansion is desired, this must first be patched in bfd.

This series includes three patches:  The first changes the meaning of
the bfd->origin field slightly, so that target code can use this to
specify an offset into the file where the actual bfd is located.
The second patch then uses this to enable support for variable-sized
stubs in the coff-go32-exe format.
The final patch is only a cleanup, it normalizes function and variable
names in coff-stgo32.c so that they all begin with the same prefix.

bfd	* bfdio.c (bfd_bread, bfd_tell, bfd_seek, bfd_mmap): Always add
	bfd->origin to file offset.
	* bfdwin.c (bfd_get_file_window): Likewise.
	* bfd.c: Clarify the use of the bfd->origin field.
	* bfd-in2.h: Regenerate.
	* coff-i386.c: Don't include go32exe.h. Allow overriding
	coff_write_object_contents via COFF_WRITE_CONTENTS.
	* coff-stgo32.c (go32exe_cleanup, go32exe_mkobject)
	(go32exe_write_object_contents): New functions.
	(go32exe_temp_stub, go32exe_temp_stub_size): New static globals.
	(COFF_WRITE_CONTENTS, GO32EXE_DEFAULT_STUB_SIZE): Define.
	(create_go32_stub): Remove check for 2k size limit.  Read stub
	from go32exe_temp_stub if present.
	(go32_stubbed_coff_bfd_copy_private_bfd_data): Allocate and
	copy variable-length stub.
	(go32_check_format): Read stub to go32exe_temp_stub, set
	origin, return go32exe_cleanup.
	(adjust_filehdr_in_post, adjust_filehdr_out_pre)
	(adjust_filehdr_out_post, adjust_scnhdr_in_post)
	(adjust_scnhdr_out_pre, adjust_scnhdr_out_post)
	(adjust_aux_in_post, adjust_aux_out_pre, adjust_aux_out_post):
	Remove functions and their associated #defines.
	* coffcode.h (coff_mkobject_hook): Remove stub copying code.
	* libcoff-in.h: (struct coff_tdata): New field stub_size.
	Rename field go32stub to stub.
	* libcoff.h: Regenerate.
	* coff-stgo32.c (go32_check_format): Rename to...
	(go32exe_check_format): ...this.
	(go32_stubbed_coff_bfd_copy_private_bfd_data): Rename to...
	(go32exe_copy_private_bfd_data): ...this.
	(stub_bytes): Rename to...
	(go32exe_default_stub): ...this.
	(create_go32_stub): Rename to...
	(go32exe_create_stub): ...this.
	* coff-stgo32.c (go32exe_copy_private_bfd_data): Avoid realloc
	when possible.

include	* coff/go32exe.h: Remove file.
	* coff/internal.h (struct internal_filehdr): Remove field
	go32stub.  Remove flag F_GO32STUB.
2020-04-02 14:31:43 +01:00
GDB Administrator 15f89256af Automatic date update in version.in 2020-04-02 00:00:08 +00:00
H.J. Lu 382aae0632 x86: Only allow S + A relocations against absolute symbol
Since value of non-preemptible absolute symbol (SHN_ABS) won't change,
only relocations, which can be resolved as absolute value + addend, and
GOTPCREL relocations, where absolute value + addend is stored in the GOT
slot, against non-preemptible absolute symbol are allowed in PIE and
shared library.

Also convert load relocation to R_386_32, R_X86_64_32S or R_X86_64_32 for
relocation against non-preemptible absolute symbol.  Don't convert to
R_X86_64_32S nor R_X86_64_32 for non-preemptible absolute symbol if they
overflow.

bfd/

	PR ld/25749
	PR ld/25754
	* elf32-i386.c (elf_i386_convert_load_reloc): Convert load
	relocation to R_386_32 for relocation against non-preemptible
	absolute symbol.
	(elf_i386_check_relocs): Call _bfd_elf_x86_valid_reloc_p.  Don't
	allocate dynamic relocation for non-preemptible absolute symbol.
	(elf_i386_relocate_section): Pass sec to
	GENERATE_DYNAMIC_RELOCATION_P.
	* elf64-x86-64.c (R_X86_64_converted_reloc_bit): Moved.
	(elf_x86_64_convert_load_reloc): Covert load relocation to
	R_X86_64_32S or R_X86_64_32 for relocation against non-preemptible
	absolute symbol.  Don't convert to R_X86_64_32S nor R_X86_64_32
	for non-preemptible absolute symbol if they overflow.
	(elf_x86_64_check_relocs): Call _bfd_elf_x86_valid_reloc_p.  Set
	tls_type for GOT slot to GOT_ABS for non-preemptible absolute
	symbol.  Don't allocate dynamic relocation for non-preemptible
	absolute symbol.
	(elf_x86_64_relocate_section): Don't generate relative relocation
	for GOTPCREL relocations aganst local absolute symbol.  Pass sec
	to GENERATE_DYNAMIC_RELOCATION_P.
	* elfxx-x86.c (elf_x86_allocate_dynrelocs): No dynamic relocation
	against non-preemptible absolute symbol.
	(_bfd_elf_x86_valid_reloc_p): New function.
	(_bfd_x86_elf_size_dynamic_sections): No dynamic relocation for
	GOT_ABS GOT slot.
	* elfxx-x86.h (GENERATE_DYNAMIC_RELOCATION_P): Add an SEC
	argument.  Don't generate dynamic relocation against
	non-preemptible absolute symbol.
	(ABS_SYMBOL_P): New.
	(GENERATE_RELATIVE_RELOC_P): Don't generate relative relocation
	against non-preemptible absolute symbol.
	(GOT_ABS): New.
	(R_X86_64_converted_reloc_bit): New.  Moved from elf64-x86-64.c.
	(_bfd_elf_x86_valid_reloc_p): New.

ld/

	PR ld/25749
	PR ld/25754
	* testsuite/ld-elf/linux-x86.exp: Run ld/25749 tests.
	* testsuite/ld-elf/pr25749-1.c: New file.
	* testsuite/ld-elf/pr25749-1a.c: Likewise.
	* testsuite/ld-elf/pr25749-1b.c: Likewise.
	* testsuite/ld-elf/pr25749-1b.err: Likewise.
	* testsuite/ld-elf/pr25749-1c.c: Likewise.
	* testsuite/ld-elf/pr25749-1d.c: Likewise.
	* testsuite/ld-elf/pr25749-2.c: Likewise.
	* testsuite/ld-elf/pr25749-2a.s: Likewise.
	* testsuite/ld-elf/pr25749-2b.s: Likewise.
	* testsuite/ld-elf/pr25749.rd: Likewise.
	* testsuite/ld-elf/pr25754-1a.c: Likewise.
	* testsuite/ld-elf/pr25754-1b.s: Likewise.
	* testsuite/ld-elf/pr25754-2a.c: Likewise.
	* testsuite/ld-elf/pr25754-2b.err: Likewise.
	* testsuite/ld-elf/pr25754-2b.s: Likewise.
	* testsuite/ld-elf/pr25754-3a.c: Likewise.
	* testsuite/ld-elf/pr25754-3b.s: Likewise.
	* testsuite/ld-elf/pr25754-4a.c: Likewise.
	* testsuite/ld-elf/pr25754-4b.s: Likewise.
	* testsuite/ld-elf/pr25754-4c.s: Likewise.
	* testsuite/ld-elf/pr25754-5a.c: Likewise.
	* testsuite/ld-elf/pr25754-5b.s: Likewise.
	* testsuite/ld-elf/pr25754-5c.s: Likewise.
	* testsuite/ld-elf/pr25754-6a.c: Likewise.
	* testsuite/ld-elf/pr25754-6b.s: Likewise.
	* testsuite/ld-x86-64/pr19609-6a.d: Don't expect linker error.
2020-04-01 14:31:47 -07:00
Tamar Christina a7618269b7 Arm: Fix LSB of GOT for Thumb2 only PLT.
When you have a Thumb only PLT then the address in the GOT for PLT0 needs to
have the Thumb bit set since the instruction used in PLTn to get there is
`ldr.w	pc` which is an inter-working instruction:

the PLT sequence in question is

00000120 <foo@plt>:
 120:	f240 0c98 	movw	ip, #152	; 0x98
 124:	f2c0 0c01 	movt	ip, #1
 128:	44fc      	add	ip, pc
 12a:	f8dc f000 	ldr.w	pc, [ip]
 12e:	e7fc      	b.n	12a <foo@plt+0xa>

Disassembly of section .text:

00000130 <bar>:
 130:	b580      	push	{r7, lr}
 132:	af00      	add	r7, sp, #0
 134:	f7ff fff4 	bl	120 <foo@plt>

and previously the linker would generate

Hex dump of section '.got':
 ...
  0x000101b8 40010100 00000000 00000000 10010000 @...............

Which would make it jump and transition out of thumb mode and crash since you
only have thumb mode on such cores.

Now it correctly generates

Hex dump of section '.got':
 ...
  0x000101b8 40010100 00000000 00000000 11010000 @...............

Thanks to Amol for testing patch and to rgujju for reporting it.

bfd/ChangeLog:

	PR ld/16017
	* elf32-arm.c (elf32_arm_populate_plt_entry): Set LSB of the PLT0
	address in the GOT if in thumb only mode.

ld/ChangeLog:

	PR ld/16017
	* testsuite/ld-arm/arm-elf.exp (thumb-plt-got): New.
	* testsuite/ld-arm/thumb-plt-got.d: New test.
2020-04-01 10:52:33 +01:00
Tamar Christina 15ccbdd717 Arm: Fix thumb2 PLT branch offsets.
When I previously changed these offsets I had incorrectly used an offset of -2
for this Thumb2 PLT.  Unfortunately because we had no tests for this PLT I had
missed that the result was incorrect.

This patch fixes the offset to PC .-4 so that it correctly addresses the
previous instruction and adds a test for this PLT stub.

bfd/ChangeLog:

	* elf32-arm.c (elf32_thumb2_plt_entry): Fix PC-rel offset.

ld/ChangeLog:

	* testsuite/ld-arm/arm-elf.exp (thumb-plt): New.
	* testsuite/ld-arm/thumb-plt.d: New test.
	* testsuite/ld-arm/thumb-plt.s: New test.
2020-04-01 10:52:32 +01:00
Hans-Peter Nilsson 7b948a2580 mmo.c: Fix ld testsuite regression "objcopy executable (pr25662)".
* mmo.c (mmo_scan): Create .text section only when needed, not
	from the start.

For the test-case at hand, the .data section is created and output
first by the linker, but the mmo input-reader mmo_scan always creates
a .text section.  Since sections are output in the order in which
they're created, it's output first, breaking the assumption that
obcopy without options (or with -p) creates output identical to its
input.  The point of creating it at the top of mmo_scan is a trivial
default assignment for the current section variable "sec".  Instead we
now defer the default, creating it only when needed and sec is NULL.
2020-04-01 04:03:46 +02:00
GDB Administrator 283b7aa134 Automatic date update in version.in 2020-04-01 00:00:09 +00:00
Alan Modra 89b599df37 alpha-coff: unitialised read
* coff-alpha.c (alpha_ecoff_get_elt_at_filepos): Correct bfd_bread
	return value check.
2020-03-31 15:04:21 +10:30
Alan Modra 8169954446 alpha-vms: sanity checks for image_write
* vms-alpha.c (image_write): Check bounds for sections without
	contents too.  Error on non-zero write to section without
	contents.
	(_bfd_vms_slurp_etir): Check return of image_write* functions.
2020-03-31 15:04:21 +10:30
Alan Modra b3b360dec7 tekhex: Uninitialised read
* tekhex.c (pass_over): Check is_eof before reading buffer.
2020-03-31 15:04:21 +10:30
GDB Administrator d262797294 Automatic date update in version.in 2020-03-31 00:00:06 +00:00
Nick Clifton 00386881a3 Fix objcopy's --preserve-dates command line option so that it will work with PE format files.
PR binutils/pr25662
bfd	* libcoff-in.h (struct pe_tdata): Rename the insert_timestamp
	field to timestamp and make it an integer.
	* libcoff.h: Regenerate.
	* peXXigen.c (_bfd_XXi_only_swap_filehdr_out): Test the timestamp
	field in the pe_data structure rather than the insert_timestamp
	field.

binutils* objcopy.c (copy_object): When copying PE format files set the
	timestamp field in the pe_data structure if the preserve_dates
	flag is set.
	* testsuite/binutils-all/objcopy.exp (objcopy_test) Use
	--preserve-dates in place of the -p option, in order to make its
	effect more obvious.

ld	* emultempl/pe.em (after_open): Replace initialisation of the
	insert_timestamp field in the pe_data structure with an
	initialisation of the timestamp field.
	* emultemp/pep.em: Likewise.
	* pe-dll.c (fill_edata): Use the timestamp field in the pe_data
	structure instead of the insert_timestamp field.
2020-03-30 16:30:02 +01:00
GDB Administrator c9fef64dab Automatic date update in version.in 2020-03-30 00:00:05 +00:00
Alan Modra 988b7300bc PR25745, powerpc64-ld overflows string buffer in --stats mode
PR 25745
	* elf64-ppc.c (ppc64_elf_build_stubs): Use asprintf to form
	statistics message.
2020-03-30 09:30:32 +10:30
GDB Administrator 37d59eacfe Automatic date update in version.in 2020-03-29 00:00:06 +00:00
GDB Administrator 8f4afc7112 Automatic date update in version.in 2020-03-28 00:00:09 +00:00
GDB Administrator 89ff19d45e Automatic date update in version.in 2020-03-27 00:00:14 +00:00
Nick Clifton aa49fc22c1 Revert earlier delta adding bfd_coff_get_internal_extra_pe_aouthdr() function.
* cofflink.c (bfd_coff_get_internal_extra_pe_aouthdr): Delete.
	* libbfd-in.h (bfd_coff_get_internal_extra_pe_aouthdr): Remove
	prototype.
	* libbfd.h: Regenerate.
2020-03-26 10:46:25 +00:00
Alan Modra ff76851054 Re: i386msdos uninitialised read
Another fix.

	* i386msdos.c (msdos_object_p): Catch -1 return from bfd_bread.
2020-03-26 20:02:42 +10:30
Alan Modra f75fbe8ad2 alpha-vms: Sanity check ETIR__C_CTL_DFLOC index
I doubt anyone will want to create more than 16M debug location
entries.  If there is no bound the object format allows for 32-bit
indices and of course fuzzers find that and attempt allocation of up
to a 16G byte array.  The patch also fixes potential integer overflows
in calculating the array size.

	* vms-alpha.c (dst_define_location): Limit size of dst_ptr_offsets
	array.
	(_bfd_vms_slurp_object_records): Rename "err" to "ok".
2020-03-26 11:02:58 +10:30
GDB Administrator 46b438bb73 Automatic date update in version.in 2020-03-26 00:00:09 +00:00
Nick Clifton aac88046e6 Add a new function to the BFD library to allow users access to the COFF internal_extra_pe_outhdr structure.
* cofflink.c (bfd_coff_get_internal_extra_pe_aouthdr): New
	function.
	* libbfd-in.h (bfd_coff_get_internal_extra_pe_aouthdr): Prototype.
	* libbfd.h: Regenerate.
2020-03-25 11:58:49 +00:00
Shahab Vahedi cf2611febc arc: Use correct string when printing bfd DEBUG data
PRINT_DEBUG_RELOC_INFO_BEFORE() macro prints bunch of parameters
for debugging purposes.  Due to a seemingly copy/paste mistake,
the "input_section->vma" is printed under the field name
"symbol_section->vma".  This commit fixes that.

This fix is a courtesy of xiangzhai.

	* elf32-arc.c (PRINT_DEBUG_RELOC_INFO_BEFORE): Use the
	correct field name in the output string.
2020-03-25 15:40:49 +10:30
Alan Modra d16e3d2e5b PR25662, invalid sh_offset for first section in segment with phdrs
PR 25662
	* elf.c (assign_file_positions_for_load_sections): Adjust offset
	for SHT_NOBITS section if first in segment.
2020-03-25 14:51:41 +10:30
GDB Administrator 0d4a4bc56f Automatic date update in version.in 2020-03-25 00:00:08 +00:00
H.J. Lu 1081065c51 bfd: Add a bfd_boolean argument to bfd_get_symbol_version_string
We can't call _bfd_elf_get_symbol_version_name from nm.c since it isn't
available for all target configurations.  This patch add a bfd_boolean
argument to bfd_get_symbol_version_string instead.

bfd/

	PR binutils/25708
	* elf-bfd.h (_bfd_elf_get_symbol_version_name): Renamed to ...
	(_bfd_elf_get_symbol_version_string): This.
	* elf.c (_bfd_elf_get_symbol_version_name): Renamed to ...
	(_bfd_elf_get_symbol_version_string): This.
	(bfd_elf_print_symbol): Pass TRUE to
	_bfd_elf_get_symbol_version_string.
	* libbfd-in.h (_bfd_nosymbols_get_symbol_version_string): Add a
	bfd_boolean argument.
	* syms.c (_bfd_nosymbols_get_symbol_version_string): Likewise.
	* targets.c  (_bfd_get_symbol_version_string): Likewise.
	(bfd_get_symbol_version_string): Likewise.
	* bfd-in2.h: Regenerated.

binutils/

	PR binutils/25708
	* nm.c (print_symname): Replace _bfd_elf_get_symbol_version_name
	with bfd_get_symbol_version_string.
	(print_symbo): Pass TRUE to bfd_get_symbol_version_string.
	* objdump.c (objdump_print_symname): Likewise.
2020-03-24 15:37:26 -07:00
Nick Clifton e11cd7c491 Update changelog. 2020-03-24 15:25:36 +00:00
Nick Clifton 0b8448af68 Add code to the BFD library to handle opening files with pathnames longer than MAX_PATH on Win32 systems.
PR 25713
	* bfdio.c (_bfd_real_fopen): Add code to handle long filenames on
	Win32 systems.
2020-03-24 15:24:02 +00:00
Nick Clifton ec2e748ad3 Fix assertion failure in the BFD library when linking with --emit-relocs enabled.
PR 25681
	* elf.c (_bfd_elf_map_sections_to_segments): When looking for a
	segment to use for PT_GNU_RELRO, ignore empty sections in a
	segment's current list.
2020-03-24 13:35:53 +00:00
H.J. Lu cda7e5603f bfd: Change num_group to unsigned int
elf.c failed with to with GCC 10 as of

commit 906b3eb9df6c577d3f6e9c3ea5c9d7e4d1e90536
Author: Martin Liska <mliska@suse.cz>
Date:   Tue Mar 24 11:40:10 2020 +0100

    Improve endianess detection.

            PR lto/94249
            * plugin-api.h: Add more robust endianess detection.

binutils-gdb/bfd/elf.c: In function ‘setup_group’:
binutils-gdb/bfd/elf.c:740:35: error: overflow in conversion from ‘unsigned int’ to ‘int’ changes value from ‘num_group = 4294967295’ to ‘-1’ [-Werror=overflow]
  740 |     elf_tdata (abfd)->num_group = num_group = -1;
      |                                   ^~~~~~~~~
cc1: all warnings being treated as errors
make[2]: *** [Makefile:1608: elf.lo] Error 1

Change num_group in elf_obj_tdata to unsigned int to compile with GCC 10.

	PR binutils/25717
	* elf-bfd.h (elf_obj_tdata): Change num_group to unsigned int.
2020-03-24 04:52:39 -07:00
H.J. Lu 7e6e972f74 bfd: Display symbol version for nm -D
Extend _bfd_elf_get_symbol_version_string for nm -D to display symbol
version.  _bfd_elf_get_symbol_version_name is added to avoid updating
all XXX_get_symbol_version_string functions.

bfd/

	PR binutils/25708
	* elf-bfd.h (_bfd_elf_get_symbol_version_name): New.
	* elf.c (_bfd_elf_get_symbol_version_name): New function.  Based
	on the previous _bfd_elf_get_symbol_version_string.
	(_bfd_elf_get_symbol_version_string): Use it.

binutils/

	PR binutils/25708
	* nm.c (SYM_NAME): Removed.
	(print_symname): Add a pointer to struct extended_symbol_info
	argument.  Call _bfd_elf_get_symbol_version_name to get symbol
	version.
	(print_symdef_entry): Pass NULL to print_symname.
	(print_symbol_info_bsd): Update call to print_symname.
	(print_symbol_info_sysv): Likewise.
	(print_symbol_info_posix): Likewise.

ld/

	PR binutils/25708
	* testsuite/ld-elf/pr25708.d: New file.
2020-03-24 04:23:11 -07:00
Alan Modra 65109548f8 Overlarge allocation in _bfd_generic_read_ar_hdr_mag
* archive.c (_bfd_generic_read_ar_hdr_mag): Sanity check extended
	name size.  Use bfd_malloc rather than bfd_zmalloc, clearing just
	struct areltdata.
2020-03-24 19:00:35 +10:30
GDB Administrator 1ce0847daa Automatic date update in version.in 2020-03-24 00:00:08 +00:00
Sebastian Huber fdde2fb60c Mention .tdata in comment in _bfd_elf_tls_setup()
This helps to find code areas which deal with the .tdata section.

bfd/

    	* elflink.c (_bfd_elf_tls_setup): Mention .tdata in comment.
2020-03-23 17:04:28 +01:00
Alan Modra cf28cfef60 ECOFF archive uninitialised read
* ecoff.c (_bfd_ecoff_slurp_armap): Sanity check parsed_size and
	symbol count.  Allocate an extra byte to ensure name strings
	are terminated.  Sanity check name offsets.  Release memory on
	error return.
2020-03-23 23:26:12 +10:30
Alan Modra 5e737279c6 i386msdos uninitialised read
Also reinstate ld i386aout for i386-msdos target, which doesn't build
otherwise.

bfd/
	* i386msdos.c (msdos_object_p): Don't access e_lfanew when that
	field hasn't been read.  Remove unnecessary casts.
ld/
	* Makefile.am (ALL_EMULATION_SOURCES): Reinstate ei386aout.c.
	Include ei386aout dep file.
	* Makefile.in: Regenerate.
	* po/BLD-POTFILES.in: Regenerate.
2020-03-23 23:26:12 +10:30
GDB Administrator 2957d8d054 Automatic date update in version.in 2020-03-23 00:00:08 +00:00
Alan Modra c15a8f173e XCOFF64 uninitialised read
Like git commit 67338173a4.

	* coff64-rs6000.c (xcoff64_slurp_armap): Ensure size is large
	enough to read number of symbols.
2020-03-22 23:22:13 +10:30
GDB Administrator da2efc2050 Automatic date update in version.in 2020-03-22 00:00:09 +00:00
GDB Administrator d9fb0d7136 Automatic date update in version.in 2020-03-21 00:00:10 +00:00
H.J. Lu 3d98c46092 plugin: Don't invoke LTO-wrapper
Don't invoke LTO-wrapper since the LTO wrapper approach is not only
slow but also unreliable.  For GCC 10 or newer, LDPT_ADD_SYMBOLS_V2
will be used.

bfd/

	* configure.ac (HAVE_EXECUTABLE_SUFFIX): Removed.
	(EXECUTABLE_SUFFIX): Likewise.
	* config.in: Regenerated.
	* configure: Likewise.
	* plugin.c (bfd_plugin_close_and_cleanup): Defined as
	_bfd_generic_close_and_cleanup.
	(plugin_list_entry): Remove resolution_file, resolution_option,
	real_bfd, real_nsyms, real_syms, lto_nsyms, lto_syms, gcc,
	lto_wrapper, gcc_env and initialized,
	(need_lto_wrapper_p): Removed.
	(get_lto_wrapper): Likewise.
	(setup_lto_wrapper_env): Likewise.
	(register_all_symbols_read): Likewise.
	(egister_cleanup): Likewise.
	(get_symbols): Likewise.
	(add_input_file): Likewise.
	(bfd_plugin_set_program_name): Remove need_lto_wrapper.
	(add_symbols): Updated.
	(try_claim): Likewise.
	(try_load_plugin): Likewise.
	(bfd_plugin_canonicalize_symtab): Likewise.
	* plugin.h (bfd_plugin_set_program_name): Remove int argument.
	(plugin_data_struct): Remove real_bfd, real_nsyms and real_syms.

binutils/

	* ar.c (main): Update bfd_plugin_set_program_name call.
	* nm.c (main): Likewise.

ld/

	* testsuite/ld-plugin/lto.exp (lto_link_tests): Run PR ld/25355
	test only for GCC 10 or newer.
2020-03-20 03:55:30 -07:00
H.J. Lu c3a1714ce7 plugin: Use LDPT_ADD_SYMBOLS_V2 to get symbol type
Since LTO plugin may generate more than one ltrans.o file from one input
IR object as LTO wrapper ignores -flto-partition=none:

lto-wrapper.c:608:

   604          /* Drop arguments that we want to take from the link line.  */
   605          case OPT_flto_:
   606          case OPT_flto:
   607          case OPT_flto_partition_:
   608            continue;

the LTO wrapper approach is not only slow but also unreliable.  Since
the LTO plugin API has been extended to add LDPT_ADD_SYMBOLS_V2 with
symbol type and section kind, we can use LDPT_ADD_SYMBOLS_V2 to get
symbol type, instead of invoking the LTO wrapper.

	PR binutils/25640
	* plugin.c (plugin_list_entry): Add has_symbol_type.
	(add_symbols_v2): New function.
	(bfd_plugin_open_input): Don't invoke LTO wrapper if LTO plugin
	provides symbol type.
	(try_load_plugin): Add LDPT_ADD_SYMBOLS_V2.
	(bfd_plugin_canonicalize_symtab): Use LTO plugin symbol type if
	available.
2020-03-19 21:00:58 -07:00
Alan Modra 67338173a4 XCOFF uninitialized read
* coff-rs6000.c (_bfd_xcoff_slurp_armap): Ensure size is large
	enough to read number of symbols.
2020-03-20 12:35:51 +10:30
Alan Modra a859124df2 tidy elf_backend calls
Function pointers in elfNN_bed that are initialized by elfxx-target.h
to non-zero values generally don't need a non-NULL test before calling
them.  Targets don't set a non-NULL function to NULL.  The one
exception being elfnn-ia64.c and that exception is removed here.

	* elf.c (_bfd_elf_setup_sections): Don't test known non-NULL
	backend functions for NULL before calling.
	(copy_special_section_fields, _bfd_elf_copy_private_bfd_data),
	(bfd_section_from_shdr, assign_section_numbers): Likewise.
	* elfcode.h (elf_write_relocs, elf_slurp_reloc_table): Likewise.
	* elfnn-ia64.c (ignore_errors): New function.
	(elf_backend_link_order_error_handler): Redefine as ignore_errors.
2020-03-20 11:02:49 +10:30
GDB Administrator ce2ea1c7e0 Automatic date update in version.in 2020-03-20 00:00:14 +00:00
Nick Clifton f3a08f7778 Fix discrepancies in nm's --line-number output by adding support for the DW_AT_specification DWARF Attttribute.
PR 25676
bfd	* dwarf2.c (struct varinfo): Add unit_offset field to record the
	location of the varinfo in the unit's debug info data.  Change the
	type of the stack field to a boolean.
	(lookup_var_by_offset): New function.  Returns the varinfo
	structure for the variable described at the given offset in the
	unit's debug info.
	(scan_unit_for_symbols): Add support for variables which have the
	DW_AT_specification attribute.

binutils* testsuite/binutils-all/dw4.s: New test source file.
	* testsuite/binutils-all/nm.exp: Run the new test.
2020-03-19 16:55:13 +00:00
Nick Clifton 6a541707f3 Fix assertion failure in the BFD library when called to parse a file containing corrupt ELF group information.
PR 25699
	* elf.c (bfd_elf_set_group_contents): Replace assertion with an
	error return.
2020-03-19 14:40:00 +00:00
Sebastian Huber effc14f54c Additional c99 elfxx-riscv.c fix
Similar to 2d0e121701.

bfd/

    	* elfxx-riscv.c (riscv_parse_subset): Don't use C99.
2020-03-19 07:07:11 +01:00
GDB Administrator cdf236890c Automatic date update in version.in 2020-03-19 00:00:06 +00:00
Nick Clifton ac4bf06ca2 Fix seg-fault in strip when copying a file containing corrupt secondary relocs.
PR 25673
	* elf.c (_bfd_elf_write_secondary_reloc_section): Fix illegal
	memory access when processing a corrupt secondary reloc section.
2020-03-18 12:12:07 +00:00
Christophe Lyon 53215f214c Non-contiguous memory regions support: Avoid calls to abort
Use '%F' format when printing error messages to exit cleanly rather
than by calling abort().

2020-03-18  Christophe Lyon  <christophe.lyon@linaro.org>

	bfd/
	* elf32-arm.c (arm_build_one_stub): Emit a fatal error message
	instead of calling abort.
	* elf32-csky.c (csky_build_one_stub): Likewise.
	* elf32-hppa.c (hppa_build_one_stub): Likewise.
	* elf32-m68hc11.c (m68hc11_elf_build_one_stub): Likewise.
	* elf32-m68hc12.c (m68hc12_elf_build_one_stub): Likewise.
	* elf32-metag.c (metag_build_one_stub): Likewise.
	* elf32-nios2.c (nios2_build_one_stub): Likewise.
	* elf64-ppc.c (ppc_build_one_stub): Likewise.
	(ppc_size_one_stub): Likewise.
	* elfnn-aarch64.c (aarch64_build_one_stub): Likewise.

	ld/
	* emultempl/xtensaelf.em: Emit a fatal error message
	instead of calling abort.
	* ldlang.c: Likewise.

Change-Id: I60deaeeee59d4e7cab06b8a40a3e51837c43a8ab
2020-03-18 10:09:43 +00:00
GDB Administrator fe64b263e0 Automatic date update in version.in 2020-03-18 00:00:05 +00:00
Nick Clifton d3c3c54293 Fix PR number in previous delta 2020-03-17 17:03:53 +00:00
Nick Clifton 327ef784ba Replace a couple of assertions in the BFD library that can be triggered by attempts to parse corrupt input files.
PR 25633
	* elf.c (_bfd_elf_copy_special_section_fields): Replace assertions
	with error messages.
2020-03-17 17:02:15 +00:00
Nick Clifton ecbbbdba71 Remove a double free in the BFD library triggered when parsing a corrupt file.
PR 25687
	* elf.c (_bfd_elf_slurp_secondary_reloc_section): Remove redundant
	free.  Add free on another failure path.
2020-03-17 16:45:07 +00:00
GDB Administrator 946ffddcae Automatic date update in version.in 2020-03-17 13:14:43 +00:00
Alan Modra 4b3ecb3b91 PR25675: SIGSEGV in bfd_octets_per_byte
PR 25675
	* elf.c (elf_sort_segments): Don't call bfd_octets_per_byte unless
	we have a non-zero section count.  Do lma comparison in octets.
2020-03-16 19:35:12 +10:30
Alan Modra 7bac4137d7 asan: alpha-vms: null dereference
* vms-alpha.c (dst_restore_location): Validate index into
	dst_ptr_offsets array before accessing.  Return status.
	(dst_retrieve_location): Similarly, making "loc" parameter a
	pointer to return value.
	(_bfd_vms_slurp_etir): Update calls to above functions.
2020-03-16 10:51:53 +10:30
Kamil Rytarowski 8b5d0a4f6f Include netbsd-core.lo for all arm/mips NetBSD targets
bfd/ChangeLog:

	* configure.ac: Include netbsd-core.lo for all NetBSD arm and mips
	targets.
	* configure: Regenerated.
2020-03-14 12:01:55 +01:00
Alan Modra 48e81d7f63 BFD_FAKE_SECTIONS formatting
After the ld non-contiguous memory support my regen of bfd-in2.h
didn't match exactly what was committed, so I took the opportunity to
line up all the comments.

	* section.c (BFD_FAKE_SECTIONS): Formatting.
	* bfd-in2.h: Regenerate.
2020-03-14 17:23:56 +10:30
Kamil Rytarowski 06d949ec31 Implement NT_NETBSDCORE_LWPSTATUS (NetBSD-Core)
bfd/ChangeLog:

	* elf.c (elfcore_grok_netbsd_note): Add support for
	NT_NETBSDCORE_LWPSTATUS notes.

binutils/ChangeLog:

	* readelf.c (get_netbsd_elfcore_note_type): Add support for
	NT_NETBSDCORE_LWPSTATUS notes.

include/ChangeLog:

	* elf/common.h (NT_NETBSDCORE_LWPSTATUS): New define.
2020-03-14 00:31:16 +01:00
Christophe Lyon abf874aafe Add support for non-contiguous memory regions
2020-01-06  Christophe Lyon  <christophe.lyon@linaro.org>

	bfd/
	* bfd-in2.h: Regenerate.
	* section.c (asection): Add already_assigned field.
	(BFD_FAKE_SECTION): Add default initializer for it.
	* ecoff.c (bfd_debug_section): Initialize already_assigned field.
	* elf32-arm.c (arm_build_one_stub): Add support for
	non_contiguous_regions.
	* elf32-csky.c (csky_build_one_stub): Likewise.
	* elf32-hppa.c (hppa_build_one_stub): Likewise.
	* elf32-m68hc11.c (m68hc11_elf_build_one_stub): Likewise.
	* elf32-m68hc12.c (m68hc12_elf_build_one_stub): Likewise.
	* elf32-metag.c (metag_build_one_stub): Likewise.
	* elf32-nios2.c (nios2_build_one_stub): Likewise.
	* elf64-ppc.c (ppc_build_one_stub): Likewise.
	(ppc_size_one_stub): Likewise.
	* elfnn-aarch64.c (aarch64_build_one_stub): Likewise.
	* elflink.c (elf_link_input_bfd): Likewise.

	include/
	* bfdlink.h (bfd_link_info): Add non_contiguous_regions and
	non_contiguous_regions_warnings fields.

	ld/
	* ldlang.c (lang_add_section): Add support for
	non_contiguous_regions.
	(size_input_section): Likewise.
	(lang_size_sections_1): Likewise.
	(process_insert_statements): Likewise.
	* ldlex.h (option_values): Add OPTION_NON_CONTIGUOUS_REGIONS and
	OPTION_NON_CONTIGUOUS_REGIONS_WARNINGS.
	* lexsup.c (ld_options): Add entries for
	--enable-non-contiguous-regions and
	--enable-non-contiguous-regions-warnings.
	(parse_args): Handle it.
	* NEWS: Add --enable-non-contiguous-regions and
	--enable-non-contiguous-regions-warnings.
	* ld.texi: Add --enable-non-contiguous-regions and
	--enable-non-contiguous-regions-warnings documentation.
	* emultempl/armelf.em (elf32_arm_add_stub_section): Add
	SEC_LINKER_CREATED flag.
	* emultempl/xtensaelf.em (ld_build_required_section_dependence):
	Emit an error when --enable-non-contiguous-regions is used.
	* testsuite/ld-elf/non-contiguous.d: New.
	* testsuite/ld-elf/non-contiguous.ld: New.
	* testsuite/ld-elf/non-contiguous.s: New.
	* testsuite/ld-arm/arm-elf.exp: Run the new tests.
	* testsuite/ld-arm/arm-elf/non-contiguous-arm.s: New.
	* testsuite/ld-arm/arm-elf/non-contiguous-arm.d: New.
	* testsuite/ld-arm/arm-elf/non-contiguous-arm.ld: New.
	* testsuite/ld-arm/arm-elf/non-contiguous-arm2.d: New.
	* testsuite/ld-arm/arm-elf/non-contiguous-arm3.ld: New.
	* testsuite/ld-arm/arm-elf/non-contiguous-arm3.d: New.
	* testsuite/ld-arm/arm-elf/non-contiguous-arm3.ld: New.
	* testsuite/ld-arm/arm-elf/non-contiguous-arm4.d: New.
	* testsuite/ld-arm/arm-elf/non-contiguous-arm4.ld: New.
	* testsuite/ld-arm/arm-elf/non-contiguous-arm5.d: New.
	* testsuite/ld-arm/arm-elf/non-contiguous-arm5.ld: New.
	* testsuite/ld-arm/arm-elf/non-contiguous-arm6.d: New.
	* testsuite/ld-arm/arm-elf/non-contiguous-arm6.ld: New.
	* testsuite/ld-powerpc/powerpc.exp: Run new tests.
	* testsuite/ld-powerpc/non-contiguous-powerpc.d: New.
	* testsuite/ld-powerpc/non-contiguous-powerpc.ld: New.
	* testsuite/ld-powerpc/non-contiguous-powerpc.sd: New.
	* testsuite/ld-powerpc/non-contiguous-powerpc64.d: New.
2020-03-13 14:44:45 +00:00
H.J. Lu 74e10d1742 x86: Check static link of dynamic objects
On Linux/x86, when -static is passed to gcc, gcc passes it to linker
before all input files suitable for creating static executable.  X86
linker will report error for dynamic input objects if -static is passed
at command-line before all input files without --dynamic-linker unless
--no-dynamic-linker is used.

bfd/

	PR ld/24920
	* elf-linker-x86.h (elf_linker_x86_params): Add
	static_before_all_inputs and has_dynamic_linker.
	* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Report
	dynamic input objects if -static is passed at command-line
	before all input files without --dynamic-linker unless
	--no-dynamic-linker is used.

ld/

	PR ld/24920
	* emulparams/elf32_x86_64.sh: Use static.sh.
	* emulparams/elf_i386.sh: Likewise.
	* emulparams/elf_x86_64.sh: Likewise.
	* emulparams/static.sh: New file.
	* emultempl/elf-x86.em: Include "ldlex.h".
	* testsuite/ld-elf/pr24920.err: New file.
	* testsuite/ld-elf/linux-x86.exp: Run ld/24920 tests.
2020-03-13 07:39:06 -07:00
Kamil Rytarowski 015ec493d8 Recognize aarch64 PT_GETREGS and PT_GETFPREGS notes on NetBSD
* elf.c (elfcore_grok_netbsd_note): Add support for aarch64.
2020-03-13 14:16:35 +01:00
Christian Eggers 666318230c Fix several mix up between octets and bytes in ELF program headers
Fixes additional locations not handled in the first patch.

When converting between addresses in ELF headers [octets] and bfd
LMA/VMA [bytes], the number of octets per byte needs to be incorporated.

include/
	* bfdlink.h (struct bfd_link_order): Add unit (bytes/octets) to
	offset and size members.
	* elf/internal.h (struct elf_internal_phdr): Likewise for
	p_align member.
	(struct elf_segment_map): Likewise for p_paddr and p_size
	members
bfd/
	* bfd.c (bfd_record_phdr): New local "opb".  Fix assignment of
	"p_paddr" from "at".
	* elfcode.h (bfd_from_remote_memory): Add units to several
	parameters.  New local "opb".  Fix usage of p_align.  Fix
	calculation of "localbase" from "ehdr_vma" and "p_vaddr".  Fix
	call of target_read_memory.
	* elflink.c (elf_fixup_link_order): Fix scope of "s" local.  Fix
	calculation of "offset" and "output_offset".
	(bfd_elf_final_link): New local "opb".  Fix calculation of "size"
	from "offset" and fix calculation of "end" from "vma+size".  Fix
	comparison between "sh_addr" and "vma"/"output_offset".
	(bfd_elf_discard_info): Fix calculation of "eh_alignment".
	* elf-bfd.h (struct elf_link_hash_table): Add unit to tls_size
	member.
	* elf.c (_bfd_elf_map_sections_to_segments): Add unit (bytes/
	octets) to "wrap_to2 and "phdr_size" locals.  Fix calculation of
	"wrap_to" value.  Add unit (bytes) to phdr_lma variable.  Fix
	assignment of p_paddr from phdr_lma.  Fix comparison between
	"lma+size" and "next->lma".
	(elf_sort_segments): Fix assignment from p_paddr to lma.
	(assign_file_positions_for_load_sections): Add unit (bytes) to
	local "align".  Fix calculation of local "off_adjust".  Fix
	calculation of local "filehdr_vaddr".
	(assign_file_positions_for_non_load_sections): New local "opb".
	Fix calculation of "end" from "p_size". Fix comparison between
	"vma+SECTION_SIZE" and "start".  Fix calculation of "p_memsz"
	from "end" and "p_vaddr".
	(rewrite_elf_program_header): Fix comparison between p_vaddr and
	vma.  Fix assignment to p_paddr from lma.  Fix comparison between
	p_paddr and lma.  Fix assignment to p_paddr from lma.
	* merge.c (sec_merge_emit): New local "opb". Convert
	"alignment_power" to octets.
	(_bfd_add_merge_section): New locals "alignment_power" and
	"opb".  Fix comparison between "alignment_power" and
	"sizeof(align)".
	(_bfd_merge_sections): New local "opb".  Divide size by opb
	before checking align mask.
2020-03-13 15:48:01 +10:30
Christian Eggers 502794d432 Fix several mix up between octets and bytes in ELF program headers
When converting between addresses in ELF headers [octets] and bfd
LMA/VMA [bytes], the number of octets per byte needs to be
incorporated.

In ld, the SIZEOF_HEADERS linker script statement must be resolved to
bytes instead of octets.

include/
	* elf/internal.h (struct elf_internal_phdr): Add unit (octets)
	to several member field comments.
	(Elf_Internal_Shdr): likewise.
bfd/
	* elf.c (_bfd_elf_make_section_from_shdr): Introduce new temp
	opb.  Divide Elf_Internal_Shdr::sh_addr by opb when setting
	section LMA/VMA.
	(_bfd_elf_make_section_from_phdr): Similarly.
	(elf_fake_sections): Fix calculation of
	Elf_Internal_shdr::sh_addr from section VMA.
	(_bfd_elf_map_sections_to_segments): Fix mixup between octets
	and bytes.
	(assign_file_positions_for_load_sections): Fix calculations of
	Elf_Internal_shdr::p_vaddr and p_paddr from section LMA/VMA.  Fix
	comparison between program header address and section LMA.
	(assign_file_positions_for_non_load_sections): Likewise.
	(rewrite_elf_program_header): Likewise.  Introduce new temp opb.
	(IS_CONTAINED_BY_VMA): Add parameter opb.
	(IS_CONTAINED_BY_LMA,IS_SECTION_IN_INPUT_SEGMENT,
	INCLUDE_SECTION_IN_SEGMENT): Likewise.
	(copy_elf_program_header): Update call to ELF_SECTION_IN_SEGMENT.
	Fix calculations of p_addr_valid and p_vaddr_offset.
	* elflink.c (elf_link_add_object_symbols): Multiply section VMA
	with octets per byte when comparing against p_vaddr.
ld/
	* ldexp.c (fold_name): Return SIZEOF_HEADERS in bytes.
2020-03-13 15:37:11 +10:30
Alan Modra 8248d21a5b asan: som: unknown read
* som.c (setup_sections): Sanity check subspace.name.
2020-03-11 23:02:51 +10:30
Alan Modra 435edf0bf2 powerpc64-ld infinite loop
If this code dealing with possible conversion of inline plt sequences
is ever executed, ld will hang.  A binary with such sequences and of
code size larger than approximately 90% the reach of an unconditional
branch is the trigger.  Oops.

	* elf64-ppc.c (ppc64_elf_inline_plt): Do increment rel in for loop.
2020-03-11 15:01:15 +10:30
Alan Modra 6b5e16ffd3 PR25648, objcopy SIGSEGV in ihex_write_record
ihex_set_section_contents sorts records stored on the tdata.ihex_data
list by address, but ihex_write_object_contents went too far in
assuming they were not overlapping.  This patch fixes the problem by
not assuming anything about addresses in ihex_write_object_contents.

	PR 25648
	* ihex.c (ihex_write_object_contents): Don't assume ordering of
	addresses here.  Remove dead code.
2020-03-10 11:05:07 +10:30
Alan Modra 2f57795b8b asan: wasm: Out-of-memory
* wasm-module.c (wasm_scan): Sanity check file name length
	before allocating memory.  Move common section setup code.  Do
	without bfd_tell to calculate section size.
2020-03-09 10:10:36 +10:30
GDB Administrator 12e4371ae4 Automatic date update in version.in 2020-03-07 00:00:44 +00:00
Nick Clifton a0dcf29705 Fix an abort triggered when objcopy is used to set the "share" section flag on an ELF section.
binutils* objcopy.c (check_new_section_flags): New function.  Reject the
	SEC_COFF_SHARED flag if the target is not a COFF binary.
	(copy_object): Call check_new_section_flags.
	(setup_section): Likewise.
	* doc/binutils.texi (objcopy): Add a note that the 'share' section
	flag cannot be applied to ELF binaries.

bfd	* elf.c (_bfd_elf_set_section_contents): Replace call to abort
	with error messages and failure return values.
2020-03-06 10:09:22 +00:00
Max Filippov e15a8da9c7 bfd: xtensa: fix PR ld/25630
bfd/
2020-03-05  Max Filippov  <jcmvbkbc@gmail.com>

	* elf32-xtensa.c (shrink_dynamic_reloc_sections): Shrink dynamic
	relocation sections for any removed reference to a dynamic symbol.
2020-03-05 19:48:08 -08:00
GDB Administrator 97669d59c8 Automatic date update in version.in 2020-03-06 00:00:49 +00:00
Nick Clifton a8e14f4cc2 Add support for ELF files which contain multiple reloc sections which all target the same section.
* elf-bfd.h (struct elf_backend_data): Add new fields:
	init_secondary_reloc_section, slurp_secondary_reloc_section,
	write_secondary_reloc_section.
	(_bfd_elf_init_secondary_reloc_section): Prototype.
	(_bfd_elf_slurp_secondary_reloc_section): Prototype.
	(_bfd_elf_write_secondary_reloc_section): Prototype.
	* elf.c ( bfd_section_from_shdr): Invoke the new
	init_secondary_reloc_section backend function, if defined, when a
	second reloc section is encountered.
	(swap_out_syms): Invoke the new symbol_section_index function, if
	defined, when computing the section index of an OS/PROC specific
	symbol.
	(_bfd_elf_init_secondary_reloc_section): New function.
	(_bfd_elf_slurp_secondary_reloc_section): New function.
	(_bfd_elf_write_secondary_reloc_section): New function.
	(_bfd_elf_copy_special_section_fields): New function.
	* elfcode.h (elf_write_relocs): Invoke the new
	write_secondary_relocs function, if defined, in order to emit
	secondary relocs.
	(elf_slurp_reloc_table): Invoke the new slurp_secondary_relocs
	function, if defined, in order to read in secondary relocs.
	* elfxx-target.h (elf_backend_copy_special_section_fields):
	Provide a non-NULL default definition.
	(elf_backend_init_secondary_reloc_section): Likewise.
	(elf_backend_slurp_secondary_reloc_section): Likewise.
	(elf_backend_write_secondary_reloc_section): Likewise.
	(struct elf_backend_data elfNN_bed): Add initialisers for the new
	fields.
        * configure.ac (score_elf32_[bl]e_vec): Add elf64.lo
        * configure: Regenerate.
2020-03-05 15:47:15 +00:00
Alan Modra 6f8f95b4c4 Large memory allocation reading fuzzed 64-bit archive
This patch adds a sanity check for the size of an armap.

	* archive64.c (_bfd_archive_64_bit_slurp_armap): Check parsed_size
	against file size before allocating memory.  Use bfd_alloc rather
	than bfd_zalloc for carsym/strings memory.
2020-03-05 11:15:55 +10:30
GDB Administrator 8a7adb414e Automatic date update in version.in 2020-03-05 00:00:26 +00:00
Alan Modra 233bf4f847 sh_addralign inconsistent with sh_addr
The ELF gABI says in part of sh_addralign:  "The value of sh_addr must
be congruent to 0, modulo the value of sh_addralign."

	* elf.c (elf_fake_sections): Ensure sh_addralign is such that
	sh_addr mod sh_addalign is zero.
2020-03-04 15:31:03 +10:30
Alan Modra 1039fd9ac2 Call cleanup on bfd_check_format_matches error exit
* format.c (bfd_check_format_matches): Call cleanup on error exit.
2020-03-04 11:40:01 +10:30
GDB Administrator 3ba07c177d Automatic date update in version.in 2020-03-04 00:00:19 +00:00
Alan Modra f57140990f bfd_check_format_matches preserving matches vs. cleanups
It didn't take long for oss-fuzz to find double frees due to a bug in
the cleanup logic.  It's seen when reading in any alpha-vms object
file except when alpha_vms_vec is the default.  But alpha_vms_vec is
of course the default when building for --target=alpha-dec-vms (and
naturally what I used to  test the cleanup support since that is the
only target with a cleanup that does anything currently).

Anyway, the bug is that if bfd_check_format_matches is to preserve a
match the cleanup for that match can't be run.  Quite obviously that
would destroy part of the match state.

	* format.c (struct bfd_preserve): Add cleanup field.
	(bfd_preserve_save): Add cleanup param and save.
	(bfd_preserve_restore): Return cleanup.
	(bfd_preserve_finish): Call the cleanup for the discarded match.
	(bfd_check_format_matches): Pass cleanup to bfd_preserve_save,
	and clear when preserving a match.  Restore cleanup too when
	restoring that match.
2020-03-03 21:45:01 +10:30
GDB Administrator f45fb2900c Automatic date update in version.in 2020-03-03 00:00:46 +00:00
Alan Modra 40b35c78b6 Re: bfd_cleanup for object_p
I hate files that you can't compile.

	* cisco-core.c (cisco_core_file_p): Return bfd_cleanup.
	* hpux-core.c (hpux_core_core_file_p): Update prototype.
	* sco5-core.c (sco5_core_file_p): Return bfd_cleanup.
	(core_sco5_vec): Correct initialisers.
2020-03-03 00:12:44 +10:30
Alan Modra 601b73d500 Re: bfd_cleanup for object_p
More missing core file support changes.

	* aix386-core.c (aix386_core_file_p): Return bfd_cleanup.
	* aix5ppc-core.c (xcoff64_core_p): Likewise.
	* cisco-core.c (cisco_core_file_validate): Likewise.
	* hppabsd-core.c (hppabsd_core_core_file_p): Likewise.
	* hpux-core.c (hpux_core_core_file_p): Likewise.
	* irix-core.c (irix_core_core_file_p): Likewise.
	* lynx-core.c (lynx_core_file_p): Likewise.
	* netbsd-core.c (netbsd_core_file_p): Likewise.
	* osf-core.c (osf_core_core_file_p): Likewise.
	* ptrace-core.c (ptrace_unix_core_file_p): Likewise.
	* sco5-core.c (sco5_core_file_p): Likewise.
2020-03-02 23:49:03 +10:30