Age | Commit message (Collapse) | Author | Files | Lines |
|
When i386 glibc was assembled with commit:
commit 11c2852449825a5f486f63bc40aabed56b7c04c1 (HEAD)
Author: Jan Beulich <jbeulich@suse.com>
Date: Fri Feb 21 10:24:50 2025 +0100
x86: widen @got{,pcrel} support to PUSH and APX IMUL
With us doing the transformation to an immediate operand for MOV and
various ALU insns, there's little reason to then not support the same
conversion for the other two insns which have respective immediate
operand forms. Unfortunately for IMUL (due to the 0F opcode prefix)
there's no suitable relocation, so the pre-APX forms cannot be marked
for relaxation in the assembler.
"pushl main@GOT(%ebx)" in sysdeps/i386/start.S was assembled to
1c: ff b3 00 00 00 00 push 0x0(%ebx) 1e: R_386_GOT32X main
Linkers in binutils versions older than 2.45 treated it as jmp and relaxed
it to
22c: e9 cf ff ff ff jmp 200 <main>
231: 90 nop
Update elf_i386_convert_load_reloc in binutils versions older than 2.45
to check MODRM for call and jmp to work with i386 glibc assembled with
binutils 2.45 or newer. Do the same in elf_x86_64_convert_load_reloc.
PR ld/32991
* elf32-i386.c (elf_i386_convert_load_reloc): Check MODRM for
call and jmp.
* elf64-x86-64.c (elf_x86_64_convert_load_reloc): Likewise.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
(cherry picked from commit 452f5511154ca02095a271cf085e17f536587207)
|
|
Since R_386_TLS_DESC_CALL can only be used with
call *variable@TLSCALL(%eax)
and R_X86_64_TLSDESC_CALL can only be used with
call *variable@TLSCALL(%rax)
update TLS transition error report to display the expected register in
indirect CALL.
bfd/
PR ld/32017
* elfxx-x86.c (_bfd_x86_elf_link_hash_table_create): Initialize
the ax_register field.
(_bfd_x86_elf_link_report_tls_transition_error): Report the
expected register in elf_x86_tls_error_indirect_call error.
* elfxx-x86.h (elf_x86_link_hash_table): Add ax_register.
ld/
PR ld/32017
* testsuite/ld-i386/tlsgdesc2.d: Updated.
* testsuite/ld-i386/tlsgdesc2.s: Change jmp to call via ECX.
* testsuite/ld-x86-64/tlsdesc4.d: Updated.
* testsuite/ld-x86-64/tlsdesc4.s: Change jmp to call via RCX.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
(cherry picked from commit c9652a062fe1a44ed1dd7eae53e847a85b8911e5)
|
|
.debug_loclists section is loaded into debug_information as DWARF-5 debug
info and .debug_loc section is loaded into debug_information as pre-DWARF-5
debug info. When dumping .debug_loc section, we should only process
pre-DWARF-5 debug info in debug_information. When dumping .debug_loclists
section, we should only process DWARF-5 info in debug_information.
binutils/
PR binutils/32809
* dwarf.c (display_debug_loc): Dump .debug_loclists only for
DWARF-5.
ld/
PR binutils/32809
* testsuite/ld-x86-64/dwarf4.s: New file.
* testsuite/ld-x86-64/dwarf5a.s: Likewise.
* testsuite/ld-x86-64/dwarf5b.s: Likewise.
* testsuite/ld-x86-64/pr32809.d: Likewise.
* testsuite/ld-x86-64/x86-64.exp: Run pr32809.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
(cherry picked from commit 82bdc396a40e64ea17acdba072bafbb3f620518f)
|
|
So far IBM z17 was identified as arch15. Add the real name, as it has
been announced. [1]
[1]: IBM z17 announcement letter, AD25-0015,
https://www.ibm.com/docs/en/announcements/z17-makes-more-possible
gas/
* config/tc-s390.c (s390_parse_cpu): Add z17 as alternate CPU
name for arch15.
* doc/c-s390.texi: Likewise.
* doc/as.texi: Likewise.
opcodes/
* s390-mkopc.c (main): Add z17 as alternate CPU name for arch15.
Signed-off-by: Jens Remus <jremus@linux.ibm.com>
(cherry picked from commit 981fe5fd80faf511aa265e841a380c9b46be30e6)
|
|
When generating an ELF output file, if a note section is marked as
NOLOAD, clear the SEC_ALLOC bit so that it won't be treated as an
SHF_ALLOC section, like a .bss style section.
PR ld/32787
* ld.texi: Update NOLOAD for ELF output files.
* ldlang.c (lang_add_section): Clear the SEC_ALLOC bit for NOLOAD
note sections for ELF output files.
* testsuite/ld-elf/pr32787.d: New file.
* testsuite/ld-elf/pr32787.t: Likewise.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
(cherry picked from commit d87be451ebbf831d44ac168ca9ea2b79ab5a79b3)
|
|
tic4x-coff and mcore-pe tickle this bug by a peculiarity of their
default ld scripts.
PR 32731
* ldlang.c (lang_add_wild): Init filenames_reversed when no
filespec.
(cherry picked from commit a021382482a6c891d74d302a598688f447ae97e0)
|
|
PR 32238
* ldlang.c (struct out_section_hash_entry): Add "tail".
(output_section_statement_newfunc_1): New, extracted from..
(output_section_statement_newfunc): ..here. Init tail.
(lang_output_section_statement_lookup): Use tail to avoid
list traversal.
(cherry picked from commit a55875bd182258a917af303c653d6667593e7b3e)
|
|
|
|
|
|
Many FEAT_SVE2p1 instructions need to be enabled by either of two
different features (one for streaming mode, and one for non-streaming
mode). This patch adds correct gating conditions for these
instructions.
There were also a few sve2p1 instructions missing altogether, so add
those as well.
The testsuite is modified to check for all alternative enablement
conditions. In many cases this is done by adding an alternative
assembler commands to existing test files. For some SME/SME2 tests,
only some of the instructions are enabled by +sve2p1, so these are
copied into a separate test. For original SVE2p1 tests, the non-SME2p1
instructions have been moved to a separate test file.
There are also new tests for the newly added instructions. These
include a couple of fixme comments relating to bad error reporting,
which should be investigated later.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Only the strided form of the luti4 intrinsic requires FEAT_SME2p1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This has been broken since commit 8f95b6e44955 in 2010, and apparently
nobody has noticed. How we write archive headers depends on the
archive, not the contents.
* libbfd-in.h (_bfd_write_ar_hdr): Correct.
* libbfd.h: Regenerate.
(cherry picked from commit c232d080c4f05b16e998bd49d6e2d92c56b6421e)
|
|
Change the mmap support added with commit 9ba56acee518 to always mmap
memory with PROT_READ | PROT_WRITE. Prior to that commit most file
contents were read into a buffer allocated with bfd_alloc or
bfd_malloc and thus the memory was read/write. Even after that commit
any section contents with relocations must be read/write to apply the
relocs. Making them all read/write is not a major change, and it
should not introduce any measurable linker slowdown for contents that
are not modified. More importantly, it removes a BFD behaviour
difference that only triggers when large files are involved.
PR 32266
PR 32109
* libbfd.c (bfd_mmap_local): Remove prot param. Always mmap
with PROT_READ | PROT_WRITE. Adjust all calls.
(_bfd_mmap_temporary): Rename from _bfd_mmap_readonly_temporary.
(_bfd_munmap_temporary): Rename from _bfd_munmap_readonly_temporary.
_bfd_mmap_persistent): Rename from _bfd_mmap_readonly_persistent.
(_bfd_generic_get_section_contents): Use PROT_READ | PROT_WRITE
regardless of relocs.
* libbfd-in.h: Update decls to suit. Make non-USE_MMAP variants
static inline functions.
* elflink.c: Update all uses of _bfd_mmap functions.
* elf.c: Likewise.
(bfd_elf_get_str_section): Revert commit 656f8fbaae.
* libbfd.h: Regenerate.
(cherry picked from commit 76eab8f47a743bde86be410bce8fd8382eaea6c2)
|
|
|
|
|
|
|
|
|
|
|
|
Part of commit a104f0a3e620 ("LoongArch: Add more relaxation support for
call36") in master. This part is needed for 2.43 branch to fix a link
failure of QtWebEngine-6.8.1, which can be demonstrated with a reduced
test case (with -shared):
.text
.zero 1 << 27 # pretending we have a lot of code in .text
.globl f # preemptible, thus must be called via PLT
f:
move $a0, $r0
ret
g:
pcaddu18i $t0, %call36(f)
jr $t0
Signed-off-by: Xi Ruoyao <xry111@xry111.site>
|
|
|
|
|
|
If code compiled with -fPIC -mtls-dialect=desc is linked into a PDE or
PIE, and the code refers to external DSO symbols, we can produce broken
link unit as check_relocs expects DESC => IE transition to happen and
emits a TLS IE entry in the GOT, but a too early "continue" in
relax_section actually jumps over the DESC => IE transition so the code
sequence is unchanged and still expecting a TLS descriptor (instead of
an IE entry) in the GOT.
The bug is already fixed in master branch by commit 5c3d09c1855b
("LoongArch: Optimize the relaxation process") so this fix is only
needed for the 2.43 branch.
Reported-by: Icenowy Zheng <uwu@icenowy.me>
Closes: https://gcc.gnu.org/PR118114
Tested-by: Icenowy Zheng <uwu@icenowy.me>
Signed-off-by: Xi Ruoyao <xry111@xry111.site>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Two of them had their numbers swapped; luckily they aren't really in use
just yet. Correct indentation as well while at it.
|
|
|
|
|
|
version info.
PR 32467
|
|
|
|
|