aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2025-05-23x86: Check MODRM for call and jmp in binutils older than 2.45binutils-2_43-branchH.J. Lu2-0/+18
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)
2025-05-22x86: Report expected register for elf_x86_tls_error_indirect_callH.J. Lu6-12/+15
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)
2025-05-06dwarf: Dump .debug_loclists only for DWARF-5H.J. Lu6-2/+1175
.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)
2025-04-10s390: Add support for z17 as CPU nameJens Remus4-5/+8
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)
2025-03-17elf: Clear the SEC_ALLOC bit for NOLOAD note sectionsH.J. Lu4-3/+32
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)
2025-02-23PR 32731 ub sanitizer accessing filenames_reversedAlan Modra1-1/+2
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)
2025-02-23PR32238, ld -r slowdown since 21401fc7bfAlan Modra1-21/+45
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)
2025-01-19Automatic date update in version.inGDB Administrator1-1/+1
2025-01-18Automatic date update in version.inGDB Administrator1-1/+1
2025-01-17aarch64: Fix sve2p1 gating and add missing instructionsAndrew Carlotti35-373/+2424
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.
2025-01-17Automatic date update in version.inGDB Administrator1-1/+1
2025-01-16Automatic date update in version.inGDB Administrator1-1/+1
2025-01-15Automatic date update in version.inGDB Administrator1-1/+1
2025-01-14Automatic date update in version.inGDB Administrator1-1/+1
2025-01-13Automatic date update in version.inGDB Administrator1-1/+1
2025-01-12Automatic date update in version.inGDB Administrator1-1/+1
2025-01-11Automatic date update in version.inGDB Administrator1-1/+1
2025-01-10aarch64: Fix incorrect gating of sme-lutv2 instructionsAndrew Carlotti3-4/+18
Only the strided form of the luti4 intrinsic requires FEAT_SME2p1.
2025-01-10Automatic date update in version.inGDB Administrator1-1/+1
2025-01-09Automatic date update in version.inGDB Administrator1-1/+1
2025-01-08Automatic date update in version.inGDB Administrator1-1/+1
2025-01-07Automatic date update in version.inGDB Administrator1-1/+1
2025-01-06Automatic date update in version.inGDB Administrator1-1/+1
2025-01-05Automatic date update in version.inGDB Administrator1-1/+1
2025-01-04_bfd_write_ar_hdrAlan Modra2-2/+2
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)
2025-01-04PR32266, segv when linking libclang_rt.asan-powerpc64.soAlan Modra5-96/+90
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)
2025-01-04Automatic date update in version.inGDB Administrator1-1/+1
2025-01-03Automatic date update in version.inGDB Administrator1-1/+1
2025-01-02Automatic date update in version.inGDB Administrator1-1/+1
2025-01-01Automatic date update in version.inGDB Administrator1-1/+1
2024-12-31Automatic date update in version.inGDB Administrator1-1/+1
2024-12-30LoongArch: Add relaxation support for call36 that jump to PLT entrymengqinggang1-0/+5
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>
2024-12-30Automatic date update in version.inGDB Administrator1-1/+1
2024-12-29Automatic date update in version.inGDB Administrator1-1/+1
2024-12-28LoongArch: Fix broken DESC => IE transition for 2.43 branchXi Ruoyao1-22/+23
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>
2024-12-28Automatic date update in version.inGDB Administrator1-1/+1
2024-12-27Automatic date update in version.inGDB Administrator1-1/+1
2024-12-26Automatic date update in version.inGDB Administrator1-1/+1
2024-12-25Automatic date update in version.inGDB Administrator1-1/+1
2024-12-24Automatic date update in version.inGDB Administrator1-1/+1
2024-12-23Automatic date update in version.inGDB Administrator1-1/+1
2024-12-22Automatic date update in version.inGDB Administrator1-1/+1
2024-12-21Automatic date update in version.inGDB Administrator1-1/+1
2024-12-20Automatic date update in version.inGDB Administrator1-1/+1
2024-12-19x86-64: correct CODE_5 relocsJan Beulich1-6/+6
Two of them had their numbers swapped; luckily they aren't really in use just yet. Correct indentation as well while at it.
2024-12-19Automatic date update in version.inGDB Administrator1-1/+1
2024-12-18Automatic date update in version.inGDB Administrator1-1/+1
2024-12-17nm: Avoid potential segmentation fault when displaying symbols without ↵Nick Clifton1-8/+16
version info. PR 32467
2024-12-17Automatic date update in version.inGDB Administrator1-1/+1
2024-12-16Automatic date update in version.inGDB Administrator1-1/+1