binutils-gdb/include/elf
Jozef Lawrynowicz 99fabbc973 Support SHF_GNU_RETAIN ELF section flag
The SHF_GNU_RETAIN section flag is an extension to the GNU ELF OSABI.
It is defined as follows:

=========================================================
Section Attribute Flags
+-------------------------------------+
| Name           | Value              |
+-------------------------------------+
| SHF_GNU_RETAIN | 0x200000 (1 << 21) |
+-------------------------------------+

SHF_GNU_RETAIN
  The link editor should not garbage collect the section.
=========================================================

The .section directive accepts the "R" flag, which indicates
SHF_GNU_RETAIN should be applied to the section.

There is not a direct mapping of SHF_GNU_RETAIN to the BFD
section flag SEC_KEEP. Keeping these flags distinct allows
SHF_GNU_RETAIN sections to be explicitly removed by placing them in
/DISCARD/.

bfd/ChangeLog:

	* elf-bfd.h (enum elf_gnu_osabi): Add elf_gnu_osabi_retain.
	(struct elf_obj_tdata): Increase has_gnu_osabi to 4 bits.
	* elf.c (_bfd_elf_make_section_from_shdr): Set elf_gnu_osabi_retain
	for SHF_GNU_RETAIN.
	(_bfd_elf_final_write_processing): Report if SHF_GNU_RETAIN is
	not supported by the OSABI.
	Adjust error messages.
	* elflink.c (elf_link_input_bfd): Copy enabled has_gnu_osabi bits from
	input BFD to output BFD.
	(bfd_elf_gc_sections): gc_mark the section if SHF_GNU_RETAIN is set.

binutils/ChangeLog:

	* NEWS: Announce SHF_GNU_RETAIN support.
	* readelf.c (get_elf_section_flags): Handle SHF_GNU_RETAIN.
	Recognize SHF_GNU_RETAIN and SHF_GNU_MBIND only for supported OSABIs.
	* testsuite/binutils-all/readelf.exp: Run new tests.
	Don't run run_dump_test when there isn't an assembler available.
	* testsuite/lib/binutils-common.exp (supports_gnu_osabi): Adjust
	comment.
	* testsuite/binutils-all/readelf-maskos-1a.d: New test.
	* testsuite/binutils-all/readelf-maskos-1b.d: New test.
	* testsuite/binutils-all/readelf-maskos.s: New test.
	* testsuite/binutils-all/retain1.s: New test.
	* testsuite/binutils-all/retain1a.d: New test.
	* testsuite/binutils-all/retain1b.d: New test.

gas/ChangeLog:

	* NEWS: Announce SHF_GNU_RETAIN support.
	* config/obj-elf.c (obj_elf_change_section): Merge SHF_GNU_RETAIN bit
	between section declarations.
	(obj_elf_parse_section_letters): Handle 'R' flag.
	Handle numeric flag values within the SHF_MASKOS range.
	(obj_elf_section): Validate SHF_GNU_RETAIN usage.
	* doc/as.texi: Document 'R' flag to .section directive.
	* testsuite/gas/elf/elf.exp: Run new tests.
	* testsuite/gas/elf/section10.d: Unset SHF_GNU_RETAIN bit.
	* testsuite/gas/elf/section10.s: Likewise.
	* testsuite/gas/elf/section22.d: New test.
	* testsuite/gas/elf/section22.s: New test.
	* testsuite/gas/elf/section23.s: New test.
	* testsuite/gas/elf/section23a.d: New test.
	* testsuite/gas/elf/section23b.d: New test.
	* testsuite/gas/elf/section23b.err: New test.
	* testsuite/gas/elf/section24.l: New test.
	* testsuite/gas/elf/section24.s: New test.
	* testsuite/gas/elf/section24a.d: New test.
	* testsuite/gas/elf/section24b.d: New test.

include/ChangeLog:

	* elf/common.h (SHF_GNU_RETAIN): Define.

ld/ChangeLog:

	* NEWS: Announce support for SHF_GNU_RETAIN.
	* ld.texi (garbage collection): Document SHF_GNU_RETAIN.
	(Output Section Discarding): Likewise.
	* testsuite/ld-elf/elf.exp: Run new tests.
	* testsuite/ld-elf/retain1.s: New test.
	* testsuite/ld-elf/retain1a.d: New test.
	* testsuite/ld-elf/retain1b.d: New test.
	* testsuite/ld-elf/retain2.d: New test.
	* testsuite/ld-elf/retain2.ld: New test.
	* testsuite/ld-elf/retain2.map: New test.
	* testsuite/ld-elf/retain3.d: New test.
	* testsuite/ld-elf/retain3.s: New test.
	* testsuite/ld-elf/retain4.d: New test.
	* testsuite/ld-elf/retain4.s: New test.
	* testsuite/ld-elf/retain5.d: New test.
	* testsuite/ld-elf/retain5.map: New test.
	* testsuite/ld-elf/retain5lib.s: New test.
	* testsuite/ld-elf/retain5main.s: New test.
	* testsuite/ld-elf/retain6a.d: New test.
	* testsuite/ld-elf/retain6b.d: New test.
	* testsuite/ld-elf/retain6lib.s: New test.
	* testsuite/ld-elf/retain6main.s: New test.
2020-11-18 11:51:13 +00:00
..
aarch64.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
alpha.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
arc-cpu.def [ARC][committed] Update ARC cpu list 2020-01-13 11:16:47 +02:00
arc-reloc.def Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
arc.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
arm.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
avr.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
bfin.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
bpf.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
ChangeLog-0415
ChangeLog-9103
common.h Support SHF_GNU_RETAIN ELF section flag 2020-11-18 11:51:13 +00:00
cr16.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
cris.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
crx.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
csky.h CSKY: Support attribute section. 2020-08-28 17:23:24 +08:00
d10v.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
d30v.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
dlx.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
dwarf.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
epiphany.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
external.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
fr30.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
frv.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
ft32.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
h8.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
hppa.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
i370.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
i386.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
i860.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
i960.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
ia64.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
internal.h Fix several mix up between octets and bytes in ELF program headers 2020-03-13 15:48:01 +10:30
ip2k.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
iq2000.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
lm32.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
m32c.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
m32r.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
m68hc11.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
m68k.h m68k: tag floating-point ABI used 2020-06-26 14:42:19 +09:30
mcore.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
mep.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
metag.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
microblaze.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
mips.h asan: readelf: process_mips_specific buffer overflow 2020-06-11 13:54:46 +09:30
mmix.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
mn10200.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
mn10300.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
moxie.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
msp430.h MSP430: Support relocations for subtract expressions in .uleb128 directives 2020-09-08 16:18:38 +01:00
mt.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
nds32.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
nfp.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
nios2.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
or1k.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
pj.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
ppc.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
ppc64.h C++ comments 2020-06-29 10:07:56 +09:30
pru.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
reloc-macros.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
riscv.h RISC-V: Support GNU indirect functions. 2020-10-16 10:11:18 +08:00
rl78.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
rx.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
s12z.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
s390.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
score.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
sh.h Remove SH-5 remnants 2020-04-21 11:35:43 +09:30
sparc.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
spu.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
tic6x-attrs.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
tic6x.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
tilegx.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
tilepro.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
v850.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
vax.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
visium.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
vxworks.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
wasm32.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
x86-64.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
xc16x.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
xgate.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
xstormy16.h Update year range in copyright notice of binutils files 2020-01-01 18:42:54 +10:30
xtensa.h xtensa: allow runtime ABI selection 2020-06-15 13:01:30 -07:00
z80.h Add support for the GBZ80 and Z80N variants of the Z80 architecture, and add DWARF debug info support to the Z80 assembler. 2020-02-07 14:53:46 +00:00