Commit Graph

18936 Commits

Author SHA1 Message Date
Srinath Parvathaneni
ba52022915 aarch64: Add support for GCS in AArch64 linker.
This patch adds support for GCS in AArch64 linker.

This patch implements the following:
1) Defines GNU_PROPERTY_AARCH64_FEATURE_1_GCS bit for GCS in
GNU_PROPERTY_AARCH64_FEATURE_1_AND macro.

2) Adds readelf support to read and print the GNU properties
in AArch64.

Displaying notes found in: .note.gnu.property
[      ]+Owner[        ]+Data size[    ]+Description
  GNU                  0x00000010      NT_GNU_PROPERTY_TYPE_0
      Properties: AArch64 feature: GCS

3) Adds support for -z experimental-gcs linker option and document
all the values allowed with option (-z experimental-gcs[=always|never|implicit]).
-z experimental-gcs is equivalent to -z experimental-gcs=always and
when option is not passed in the command line, it defaults to implicit.

4) Adds support for -z experimental-gcs-report linker option and document
all the values allowed with this option (-z experimental-gcs-report[=none|warning|error]).
-z experimental-gcs-report is equivalent to -z experimental-gcs-report=none
and when option is not passed in the command line, it defaults to none.

The ABI changes adding GNU_PROPERTY_AARCH64_FEATURE_1_GCS to the
GNU property GNU_PROPERTY_AARCH64_FEATURE_1_AND is merged into main and
can be found below.
https://github.com/ARM-software/abi-aa/blob/main/sysvabi64/sysvabi64.rst
2024-01-30 08:59:55 +00:00
GDB Administrator
b960445a45 Automatic date update in version.in 2024-01-30 00:00:26 +00:00
Alan Modra
e175a2fc60 PR31314, chew crashing on use of uninitialized value
The "drop" call in wrap_comment already increments pc.  Defining DOCDD
in proto.str is a warning fix.

	PR 31314
	* chew.c (wrap_comment): Don't increment pc.
	* proto.str (DOCDD): Define.
2024-01-30 09:42:59 +10:30
Jose E. Marchesi
34e222d3c2 bfd: restore Threading menu entry in bfd.texi
I mistakenly vandalized bfd.texi in the commit
0c45feb159 by removing an entry in the
manual menu.  This commit reverts that thunk.
2024-01-29 19:47:28 +01:00
Jose E. Marchesi
0c45feb159 bpf: there is no ldinddw nor ldabsdw instructions
There are no legacy ldind nor ldabs BPF instructions with BPF_SIZE_DW.
For some reason we were (incorrectly) supporting these.  This patch
updates the opcodes so the instructions get removed and modifies the
GAS manual and testsuite accordingly.

See discussion at
https://lore.kernel.org/bpf/110aad7a-f8a3-46ed-9fda-2f8ee54dcb89@linux.dev

Tested in bpf-uknonwn-none target, x86-64-linux-gnu host.

include/ChangeLog:

2024-01-29  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* opcode/bpf.h (enum bpf_insn_id): Remove BPF_INSN_LDINDDW and
	BPF_INSN_LDABSDW instructions.

opcodes/ChangeLog:

2024-01-29  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* bpf-opc.c (bpf_opcodes): Remove BPF_INSN_LDINDDW and
	BPF_INSN_LDABSDW instructions.

gas/ChangeLog:

2024-01-29  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* doc/c-bpf.texi (BPF Instructions): There is no indirect 64-bit
	load instruction.
	(BPF Instructions): There is no absolute 64-bit load instruction.
	* testsuite/gas/bpf/mem.s: Update test accordingly.
	* testsuite/gas/bpf/mem-be-pseudoc.d: Likewise.
	* testsuite/gas/bpf/mem-be.d: Likewise.
	* testsuite/gas/bpf/mem-pseudoc.d: Likewise.
	* testsuite/gas/bpf/mem-pseudoc.s: Likewise.
	* testsuite/gas/bpf/mem.d: Likewise.
	* testsuite/gas/bpf/mem.s: Likewise.
2024-01-29 19:22:41 +01:00
Nick Clifton
bd3828b0de Remove support for the beos file format 2024-01-29 16:07:45 +00:00
GDB Administrator
1cb2b3dfd8 Automatic date update in version.in 2024-01-29 00:00:28 +00:00
GDB Administrator
3dfc29463a Automatic date update in version.in 2024-01-28 00:00:08 +00:00
GDB Administrator
e0f17bb4c7 Automatic date update in version.in 2024-01-27 00:00:30 +00:00
mengqinggang
cd35c9fd1e LoongArch: Fix a bug of getting relocation type
The old code works because R_LARCH_RELAX has no symbol index. It causes
'(rel + 1)->r_info == R_LARCH_RELAX' is 1 and ELFNN_R_TYPE (1) is 1.
2024-01-26 16:49:53 +08:00
mengqinggang
a0aa6f4abd LoongArch: ld: Add support for TLS LE symbol with addend
Add support for TLS LE symbol with addend, such as:
  lu12i.w $t0, %le_hi20(a + 0x8)
  ori	  $t0, $t0, %le_lo12(a + 0x8)
2024-01-26 16:49:09 +08:00
GDB Administrator
8409b75c8d Automatic date update in version.in 2024-01-26 00:00:23 +00:00
GDB Administrator
726f209eb1 Automatic date update in version.in 2024-01-25 00:00:45 +00:00
GDB Administrator
f11786a195 Automatic date update in version.in 2024-01-24 00:00:33 +00:00
GDB Administrator
48a121f83c Automatic date update in version.in 2024-01-23 00:00:49 +00:00
Nick Clifton
e97522312b Updated Serbian translations for th bfd, gold and opcodes directories 2024-01-22 17:26:36 +00:00
Tatsuyuki Ishi
d5e68872d0 LoongArch: Do not add DF_STATIC_TLS for TLS LE
TLS LE is exclusively for executables, while DF_STATIC_TLS is for DLLs.
DF_STATIC_TLS should only be set for TLS IE (and when it's DLL), not LE.
2024-01-22 17:14:29 +08:00
GDB Administrator
58ce812559 Automatic date update in version.in 2024-01-22 00:00:13 +00:00
GDB Administrator
5a75433a12 Automatic date update in version.in 2024-01-21 00:00:09 +00:00
GDB Administrator
40ca2746ce Automatic date update in version.in 2024-01-20 00:00:13 +00:00
H.J. Lu
dbca3300ea Remove hosts/mipsbsd.h and scripttempl/mipsbsd.sc
Remove hosts/mipsbsd.h and scripttempl/mipsbsd.sc which are unused
after

commit 3596d8ceb2
Author: Alan Modra <amodra@gmail.com>
Date:   Wed Apr 18 15:39:34 2018 +0930

    Remove mips aout, coff, and pe support

bfd/

	* hosts/mipsbsd.h: Removed.

ld/

	* scripttempl/mipsbsd.sc: Removed.
2024-01-19 07:25:31 -08:00
GDB Administrator
64db3e4d88 Automatic date update in version.in 2024-01-19 00:00:54 +00:00
Nick Clifton
bfdd2ca621 Updated translations for various sub-directories 2024-01-18 11:23:48 +00:00
GDB Administrator
9be58d0790 Automatic date update in version.in 2024-01-18 00:00:59 +00:00
Alan Modra
f91074ebd8 PR30824 internal error with -z pack-relative-relocs
This corrects a counting problem, where prior to relocate_section relr
encoded relative relocs were allowed when it was known they were on
even boundaries, but relocate_section can only put relative relocs
(non-relr) on eight byte boundaries.

	PR 30824
	* elf64-ppc.c (RELR_ALIGN): Define, use throughout.
	(maybe_relr): New function, use throughout.
2024-01-18 09:38:14 +10:30
Xi Ruoyao
6590ec8097 LoongArch: Adapt R_LARCH_{PCALA,GOT,TLS_IE,TLS_DESC}64_* handling per psABI v2.30
In LoongArch psABI v2.30, an offset (-8 for LO20 and -12 for HI12)
should be applied on PC for these reloc types to avoid wrong relocation
when the instruction sequence crosses a page boundary.

The lld linker has already adapted the change.  Make it for the bfd
linker too.

Link: https://github.com/loongson/la-abi-specs/releases/v2.30
Link: https://github.com/loongson-community/discussions/issues/17
Link: https://github.com/llvm/llvm-project/pull/73387
Signed-off-by: Xi Ruoyao <xry111@xry111.site>
2024-01-17 15:15:33 +08:00
GDB Administrator
5e35a3a8bb Automatic date update in version.in 2024-01-17 00:00:37 +00:00
GDB Administrator
8733968023 Automatic date update in version.in 2024-01-16 00:00:34 +00:00
Nick Clifton
e775d3a9b7 Change version to 2.42.50 and regenerate files 2024-01-15 15:13:36 +00:00
Nick Clifton
299b91cd85 Add markers for 2.42 branch 2024-01-15 14:42:15 +00:00
Mark Wielaard
907aee5baf bfd: riscv_maybe_function_sym check _bfd_elf_is_local_label_name
This fixes the ld "Handle no DWARF information" testcase. Which
currently fails on riscv because a local label name is assumed
to be the current function name.

bfd/ChangeLog:

* elfnn-riscv.c (riscv_maybe_function_sym): Also check
	_bfd_elf_is_local_label_name.
2024-01-15 14:01:15 +01:00
GDB Administrator
b750cfb78e Automatic date update in version.in 2024-01-15 00:00:09 +00:00
GDB Administrator
f4be209229 Automatic date update in version.in 2024-01-14 00:00:15 +00:00
GDB Administrator
52c9ea7a83 Automatic date update in version.in 2024-01-13 00:00:15 +00:00
David Faust
ba7c1e37cf bpf: fix relocation addend incorrect symbol value
Relocations installed by the BPF ELF backend were sometimes incorrectly
adding the symbol value to the relocation entry addend, when the correct
relocation value was already stored in the addend. This could lead to a
relocation effectively adding the symbol value twice.

Fix that by making bpf_elf_generic_reloc () more similar to the flow of
bfd_install_relocation in the case where howto->install_addend is set,
which is how it ought to behave.

bfd/
	* bpf-reloc.def (R_BPF_64_ABS32, R_BPF_64_ABS64)
	(R_BPF_64_NODYLD32): Set partial_inplace to true.
	* elf64-bpf.c (bpf_elf_generic_reloc): Do not include the value
	of the symbol when installing relocation. Copy some additional
	logic from bfd_elf_generic_reloc.

gas/
	* testsuite/gas/bpf/bpf.exp: Run new test.
	* testsuite/gas/bpf/elf-relo-1.d: New.
	* testsuite/gas/bpf/elf-relo-1.s: New.
2024-01-12 08:22:23 -08:00
mengqinggang
156a2edbdb LoongArch: Fix relaxation overflow caused by section alignment
When deleting NOP instructions addend by .align at second pass, this may cause
the PC decrease but the symbol address to remain unchanged due to section
alignment.

To solve this question, we subtract a maximux alignment of all sections like
RISC-V.
2024-01-12 15:38:42 +08:00
GDB Administrator
9b32960754 Automatic date update in version.in 2024-01-12 00:00:11 +00:00
GDB Administrator
a4b35c1e59 Automatic date update in version.in 2024-01-11 00:00:28 +00:00
GDB Administrator
1ae0d437f7 Automatic date update in version.in 2024-01-10 00:02:52 +00:00
H.J. Lu
9167304255 elf: Add elf_backend_add_glibc_version_dependency
When -z mark-plt is used to add DT_X86_64_PLT, DT_X86_64_PLTSZ and
DT_X86_64_PLTENT, the r_addend field of the R_X86_64_JUMP_SLOT relocation
stores the offset of the indirect branch instruction.  However, glibc
versions which don't have this commit in glibc 2.36:

commit f8587a61892cbafd98ce599131bf4f103466f084
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri May 20 19:21:48 2022 -0700

    x86-64: Ignore r_addend for R_X86_64_GLOB_DAT/R_X86_64_JUMP_SLOT

    According to x86-64 psABI, r_addend should be ignored for R_X86_64_GLOB_DAT
    and R_X86_64_JUMP_SLOT.  Since linkers always set their r_addends to 0, we
    can ignore their r_addends.

    Reviewed-by: Fangrui Song <maskray@google.com>

won't ignore the r_addend value in the R_X86_64_JUMP_SLOT relocation.
Although this commit has been backported to glibc 2.33/2.34/2.35 release
branches, it is safer to require glibc 2.36 for such binaries.

Extend the glibc version dependency of GLIBC_ABI_DT_RELR for DT_RELR to
also add GLIBC_2.36 version dependency for -z mark-plt on the shared C
library if it provides a GLIBC_2.XX symbol version.

	* elflink.c (elf_find_verdep_info): Moved to ...
	* elf-bfd.h (elf_find_verdep_info): Here.
	(elf_backend_data): Add elf_backend_add_glibc_version_dependency.
	(_bfd_elf_link_add_glibc_version_dependency): New function.
	(_bfd_elf_link_add_dt_relr_dependency): Likewise.
	* elf64-x86-64.c (elf_x86_64_add_glibc_version_dependency):
	Likewise.
	(elf_backend_add_glibc_version_dependency): New.
	* elflink.c (elf_link_add_dt_relr_dependency): Renamed to ...
	(elf_link_add_glibc_verneed): This.  Modified to support other
	glibc dependencies.
	(_bfd_elf_link_add_glibc_version_dependency): Likewise.
	(_bfd_elf_link_add_dt_relr_dependency): Likewise.
	(bfd_elf_size_dynamic_sections): Call
	elf_backend_add_glibc_version_dependency instead of
	elf_link_add_dt_relr_dependency.
	* elfxx-target.h (elf_backend_add_glibc_version_dependency): New.
	(elfNN_bed): Add elf_backend_add_glibc_version_dependency.

ld/

	* testsuite/ld-x86-64/mark-plt-1a.rd: New file.
	* testsuite/ld-x86-64/mark-plt-1b.rd: Likewise.
	* testsuite/ld-x86-64/x86-64.exp: Run -z mark-plt test for
	GLIBC_2.36 dependency.
2024-01-09 06:45:38 -08:00
H.J. Lu
2e93abb858 x86: Don't check R_386_NONE nor R_X86_64_NONE
Update x86 ELF linker to skip R_386_NONE/R_X86_64_NONE when scanning
relocations.

bfd/

	* PR ld/31047
	* elf32-i386.c (elf_i386_scan_relocs): Don't check R_386_NONE.
	* elf64-x86-64.c (elf_x86_64_scan_relocs): Don't check
	R_X86_64_NONE.

ld/

	* PR ld/31047
	* testsuite/ld-i386/i386.exp: Run PR ld/31047 test.
	* testsuite/ld-x86-64/x86-64.exp: Likewise.
	* testsuite/ld-i386/pr31047.d: New file.
	* testsuite/ld-x86-64/pr31047-x32.d: Likewise.
	* testsuite/ld-x86-64/pr31047.d: Likewise.
	* testsuite/ld-x86-64/pr31047a.s: Likewise.
	* testsuite/ld-x86-64/pr31047b.s: Likewise.
2024-01-09 06:39:42 -08:00
Jan Beulich
ac1b12b513 PPC64/ELF: adjust comment wrt ABI versions
While having been moved a couple of times since its introduction in
f6c7c3e8b7 ("Referencing a function's address on PowerPC64 ELFv2"),
the wording has always remained the same. In particular ELFv1 and ELFv2
have always been the wrong way round.
2024-01-09 13:49:13 +01:00
GDB Administrator
707877ab59 Automatic date update in version.in 2024-01-09 00:02:02 +00:00
Cupertino Miranda
ad4e57ab11 bpf: Added linker support for R_BPF_64_NODYLD32.
This patch adds linker support to patch R_BPF_64_NODYLD32 relocations.
The implementation was based on comments and code in LLVM, as the GNU
toolchain does not uses this relocation type.
2024-01-08 20:44:37 +00:00
Sergey Bugaev
950b68acd4 Add support for the aarch64-gnu target (GNU/Hurd on AArch64)
Also recognized are aarch64-*-gnu tagrets, e.g. aarch64-pc-gnu or
aarch64-unknown-gnu.

The ld/emulparams/aarch64gnu.sh file is (for now) identical to aarch64fbsd.sh,
or to aarch64linux.sh with Linux-specific logic removed; and mainly different
from the generic aarch64elf.sh in that it does not set EMBEDDED=yes.

Coupled with a corresponding GCC patch, this produces a toolchain that can
sucessfully build working binaries targeting aarch64-gnu.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
2024-01-08 09:51:58 +00:00
GDB Administrator
b4043a7a02 Automatic date update in version.in 2024-01-08 00:01:17 +00:00
GDB Administrator
6541385ca2 Automatic date update in version.in 2024-01-07 00:01:58 +00:00
GDB Administrator
e3a48480b7 Automatic date update in version.in 2024-01-06 00:01:23 +00:00
Alan Modra
375beedfd3 loongarch: 'index' shadows global
Avoid an error when compiling with older versions of gcc.

	* elfnn-loongarch.c (loongarch_relax_align): Rename "index" to
	"sym_index".
2024-01-05 13:00:11 +10:30
Alan Modra
1826e070a0 Tidy bfd_scan_vma
In commit 83c79df86b I removed configure tests for strtoull among
other library functions part of C99, but didn't remove what is now
dead code.

	* bfd.c (bfd_scan_vma): Delete fall-back for strtoull.
2024-01-05 13:00:11 +10:30