[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug gas/22791] PLT32 should be used for 32-bit PC-relative branches
From: |
cvs-commit at gcc dot gnu.org |
Subject: |
[Bug gas/22791] PLT32 should be used for 32-bit PC-relative branches |
Date: |
Tue, 13 Feb 2018 15:35:39 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=22791
--- Comment #18 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot
gnu.org> ---
The master branch has been updated by H.J. Lu <address@hidden>:
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=bd7ab16b4537788ad53521c45469a1bdae84ad4a
commit bd7ab16b4537788ad53521c45469a1bdae84ad4a
Author: H.J. Lu <address@hidden>
Date: Tue Feb 13 07:34:22 2018 -0800
x86-64: Generate branch with PLT32 relocation
Since there is no need to prepare for PLT branch on x86-64, generate
R_X86_64_PLT32, instead of R_X86_64_PC32, if possible, which can be
used as a marker for 32-bit PC-relative branches.
To compile Linux kernel, this patch:
From: "H.J. Lu" <address@hidden>
Subject: [PATCH] x86: Treat R_X86_64_PLT32 as R_X86_64_PC32
On i386, there are 2 types of PLTs, PIC and non-PIC. PIE and shared
objects must use PIC PLT. To use PIC PLT, you need to load
_GLOBAL_OFFSET_TABLE_ into EBX first. There is no need for that on
x86-64 since x86-64 uses PC-relative PLT.
On x86-64, for 32-bit PC-relative branches, we can generate PLT32
relocation, instead of PC32 relocation, which can also be used as
a marker for 32-bit PC-relative branches. Linker can always reduce
PLT32 relocation to PC32 if function is defined locally. Local
functions should use PC32 relocation. As far as Linux kernel is
concerned, R_X86_64_PLT32 can be treated the same as R_X86_64_PC32
since Linux kernel doesn't use PLT.
is needed. It is available on hjl/plt32/master branch at
https://github.com/hjl-tools/linux
bfd/
PR gas/22791
* elf64-x86-64.c (is_32bit_relative_branch): Removed.
(elf_x86_64_relocate_section): Check PIC relocations in PIE.
Remove is_32bit_relative_branch usage. Disallow PC32 reloc
against protected function in shared object.
gas/
PR gas/22791
* config/tc-i386.c (need_plt32_p): New function.
(output_jump): Generate BFD_RELOC_X86_64_PLT32 if possible.
(md_estimate_size_before_relax): Likewise.
* testsuite/gas/i386/reloc64.d: Updated.
* testsuite/gas/i386/x86-64-jump.d: Likewise.
* testsuite/gas/i386/x86-64-mpx-branch-1.d: Likewise.
* testsuite/gas/i386/x86-64-mpx-branch-2.d: Likewise.
* testsuite/gas/i386/x86-64-relax-2.d: Likewise.
* testsuite/gas/i386/x86-64-relax-3.d: Likewise.
* testsuite/gas/i386/ilp32/reloc64.d: Likewise.
* testsuite/gas/i386/ilp32/x86-64-branch.d: Likewise.
ld/
PR gas/22791
* testsuite/ld-x86-64/mpx1c.rd: Updated.
* testsuite/ld-x86-64/pr22791-1.err: New file.
* testsuite/ld-x86-64/pr22791-1a.c: Likewise.
* testsuite/ld-x86-64/pr22791-1b.s: Likewise.
* testsuite/ld-x86-64/pr22791-2.rd: Likewise.
* testsuite/ld-x86-64/pr22791-2a.s: Likewise.
* testsuite/ld-x86-64/pr22791-2b.c: Likewise.
* testsuite/ld-x86-64/pr22791-2c.s: Likewise.
* testsuite/ld-x86-64/x86-64.exp: Run PR ld/22791 tests.
--
You are receiving this mail because:
You are on the CC list for the bug.
- [Bug gold/22791] Don't error when a -pie executable uses a shared function without PIC/PIE relocation, (continued)
- [Bug gold/22791] Don't error when a -pie executable uses a shared function without PIC/PIE relocation, ccoutant at gmail dot com, 2018/02/05
- [Bug gold/22791] Don't error when a -pie executable uses a shared function without PIC/PIE relocation, rafael.espindola at gmail dot com, 2018/02/05
- [Bug gold/22791] Don't error when a -pie executable uses a shared function without PIC/PIE relocation, ccoutant at gmail dot com, 2018/02/05
- [Bug gold/22791] Don't error when a -pie executable uses a shared function without PIC/PIE relocation, rafael.espindola at gmail dot com, 2018/02/05
- [Bug gold/22791] Don't error when a -pie executable uses a shared function without PIC/PIE relocation, hjl.tools at gmail dot com, 2018/02/06
- [Bug gold/22791] Don't error when a -pie executable uses a shared function without PIC/PIE relocation, ccoutant at gmail dot com, 2018/02/06
- [Bug gold/22791] Don't error when a -pie executable uses a shared function without PIC/PIE relocation, hjl.tools at gmail dot com, 2018/02/06
- [Bug gas/22791] PLT32 should be used for 32-bit PC-relative branches, hjl.tools at gmail dot com, 2018/02/07
- [Bug gas/22791] PLT32 should be used for 32-bit PC-relative branches, rafael.espindola at gmail dot com, 2018/02/07
- [Bug gas/22791] PLT32 should be used for 32-bit PC-relative branches, hjl.tools at gmail dot com, 2018/02/07
- [Bug gas/22791] PLT32 should be used for 32-bit PC-relative branches,
cvs-commit at gcc dot gnu.org <=
- [Bug gas/22791] PLT32 should be used for 32-bit PC-relative branches, hjl.tools at gmail dot com, 2018/02/13
- [Bug gas/22791] PLT32 should be used for 32-bit PC-relative branches, rafael.espindola at gmail dot com, 2018/02/13
- [Bug gas/22791] PLT32 should be used for 32-bit PC-relative branches, hjl.tools at gmail dot com, 2018/02/13
- [Bug gas/22791] PLT32 should be used for 32-bit PC-relative branches, rafael.espindola at gmail dot com, 2018/02/13