binutils-gdb/ld/testsuite
Maciej W. Rozycki 6798f8bfa6 MIPS/BFD: Fix the size of .reginfo' and .MIPS.abiflags' sections
Use the SEC_FIXED_SIZE flag to actually fix the size of `.reginfo' and
`.MIPS.abiflags' sections in `_bfd_mips_elf_always_size_sections', as
originally intended, removing link failures such as:

ld: final link failed: Section has no contents

or:

ld: final link failed: Bad value

or:

ld: foo: .reginfo section size should be 24 bytes, actual size is 32

and assertion failures like:

ld: BFD (GNU Binutils) 2.30.51.20180131 assertion fail .../bfd/elfxx-mips.c:14322

in link scenarios involving a linker script that either creates an
output `.reginfo' or `.MIPS.abiflags' section from scratch or produces
either section from different sections.  If such an output section's
size turns out to be incorrect according to the psABI, then the section
is either truncated or padded out to the correct size, as relevant.

This allows people to handle these sections in a link in an unusual way,
while still addressing the issue covered by commit 58807c48a5
("_bfd_mips_elf_final_link: Notify user about wrong .reginfo size").

The original arrangement, coming from an unindentified change made to
what was called `mips_elf_always_size_sections' back then, between
commit 02650bd0a9 ("This adds ABI flags to MIPS/ELF object files.")
and commit 252b5132c7 ("19990502 sourceware import"), also missing
from BFD ChangeLog files, assumed that the output section size is not
going to change after return from `bfd_elf_size_dynamic_sections', the
caller of that function, called in turn from `ldemul_before_allocation'
via `gld${EMULATION_NAME}_before_allocation' in ld/emultempl/elf32.em,
and ultimately from `lang_process'.  This is because later on in
`lang_process' processing `lang_size_sections' is called , happily
recalculating the section size, and it has actually already been the
case at the time of commit 252b5132c7 ("19990502 sourceware import"),
so the assumption was clearly incorrect right from the beginning.

	bfd/
	* elfxx-mips.c (_bfd_mips_elf_always_size_sections): Set
	SEC_FIXED_SIZE and SEC_HAS_CONTENTS flags for `.reginfo' and
	`.MIPS.abiflags' sections.
	(_bfd_mips_elf_final_link): Avoid reading beyond `.reginfo'
	section's end.

	ld/
	* testsuite/ld-mips-elf/reginfo-0.d: New test.
	* testsuite/ld-mips-elf/reginfo-0r.d: New test.
	* testsuite/ld-mips-elf/reginfo-1.d: New test.
	* testsuite/ld-mips-elf/reginfo-1r.d: New test.
	* testsuite/ld-mips-elf/reginfo-2.d: New test.
	* testsuite/ld-mips-elf/reginfo-2r.d: New test.
	* testsuite/ld-mips-elf/mips-abiflags-0.d: New test.
	* testsuite/ld-mips-elf/mips-abiflags-0r.d: New test.
	* testsuite/ld-mips-elf/mips-abiflags-1.d: New test.
	* testsuite/ld-mips-elf/mips-abiflags-1r.d: New test.
	* testsuite/ld-mips-elf/mips-abiflags-2.d: New test.
	* testsuite/ld-mips-elf/mips-abiflags-2r.d: New test.
	* testsuite/ld-mips-elf/reginfo-0.ld: New test linker script.
	* testsuite/ld-mips-elf/reginfo-1.ld: New test linker script.
	* testsuite/ld-mips-elf/mips-abiflags-0.ld: New test linker
	script.
	* testsuite/ld-mips-elf/mips-abiflags-1.ld: New test linker
	script.
	* testsuite/ld-mips-elf/reginfo-1.s: New test source.
	* testsuite/ld-mips-elf/reginfo-2.s: New test source.
	* testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.
2018-02-19 18:38:41 +00:00
..
config ld: Skip unsupported static executable tests 2018-01-29 04:55:23 -08:00
ld-aarch64 [PR22764][LD][AARCH64]Allow R_AARCH64_ABS16 and R_AARCH64_ABS32 against absolution symbol or undefine symbol in shared object. 2018-02-05 18:18:45 +00:00
ld-alpha Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-arc Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-arm Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-auto-import Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-avr Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-bootstrap ld: Skip unsupported static executable tests 2018-01-29 04:55:23 -08:00
ld-cdtest Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-checks Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-cris Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-crx Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-cygwin Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-d10v Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-discard Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-elf ld: Add -z separate-code tests to frame.exp 2018-02-19 05:07:47 -08:00
ld-elfcomm Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-elfvers Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-elfvsb Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-elfweak Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-fastcall Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-frv Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-gc MIPS/LD/testsuite: Correct dynamic links with VR4100, VR4300 and VR5000 2018-01-31 14:47:12 +00:00
ld-h8300 Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-i386 i386: Add -z noseparate-code to linker tests 2018-02-16 09:07:58 -08:00
ld-ia64 Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-ifunc x86: Add -z noseparate-code to IFUNC tests 2018-02-16 09:45:24 -08:00
ld-libs Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-linkonce Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-m68hc11 Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-m68k Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-mep Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-metag Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-mips-elf MIPS/BFD: Fix the size of .reginfo' and .MIPS.abiflags' sections 2018-02-19 18:38:41 +00:00
ld-misc Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-mmix Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-mn10300 Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-msp430-elf Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-nds32 Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-nios2
ld-pe Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-pie Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-plugin Add a testcase for PR ld/22751 2018-01-27 16:04:34 -08:00
ld-powerpc Revert "PowerPC PLT speculative execution barriers" 2018-02-07 14:23:08 +10:30
ld-pru
ld-riscv-elf RISC-V: Give error for ignored pcrel_lo addend. 2018-02-15 10:53:46 -08:00
ld-s390 Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-scripts ld: Fix issue where PROVIDE overrides defined symbol 2018-01-11 17:35:35 +00:00
ld-selective Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-sh Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-shared Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-size Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-sparc Fix PR ld/22263 on SPARC. 2018-02-06 18:17:39 +01:00
ld-spu Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-srec Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-tic6x Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-tilegx Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-tilepro Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-undefined Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-unique Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-v850 Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-vax-elf Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-versados Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-visium Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-vxworks Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-x86-64 x86-64: Add -z max-page-size=0x200000 -z noseparate-code to linker tests 2018-02-16 10:03:12 -08:00
ld-xc16x Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-xstormy16 Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-xtensa Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
ld-z8k Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
lib ld: Skip unsupported static executable tests 2018-01-29 04:55:23 -08:00
ChangeLog-2004
ChangeLog-2005
ChangeLog-2006
ChangeLog-2007
ChangeLog-2008
ChangeLog-2009
ChangeLog-2010
ChangeLog-2011
ChangeLog-2012
ChangeLog-2013
ChangeLog-2014
ChangeLog-2015
ChangeLog-9303