This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 0/5] Improve x86 Position-Independent codegen


This set of patches improves x86 Position-Independent codegen by

1. Use copy reloction to access externally defined global data from
PIE if linker supports it.
2. Add -fsymbolic to control how references to global symbols are
bound, avoiding copy relocation in PIE against DSO created by
-Wl,-Bsymbolic.
3. Pass -fsymbolic to GCC if -Bsymbolic is used with -flto.
4. Properly handle -fno-plt in ix86_expand_call
5. Generate R_386_GOT32x relocation for -fno-plt -fno-pic if binutils
supports R_386_GOT32x.

H.J. Lu (5):
  X86: Optimize access to globals in PIE with copy reloc
  Enable -fsymbolic in LTO if -Bsymbolic is used
  Properly handle -fno-plt in ix86_expand_call
  Check if x86 binutils supports R_386_GOT32X/R_X86_64_GOTPCRELX
  Generate R_386_GOT32x relocation for -fno-plt -fno-pic

 gcc/calls.c                                      |  12 --
 gcc/collect2.c                                   |  51 ++++++++-
 gcc/common.opt                                   |   4 +
 gcc/config.in                                    |  29 ++++-
 gcc/config/i386/i386.c                           | 134 +++++++++++++++++------
 gcc/config/i386/predicates.md                    |   7 +-
 gcc/configure                                    | 129 ++++++++++++++++++++--
 gcc/configure.ac                                 | 109 ++++++++++++++++--
 gcc/doc/invoke.texi                              |  13 ++-
 gcc/doc/tm.texi                                  |  10 ++
 gcc/doc/tm.texi.in                               |   2 +
 gcc/output.h                                     |   4 +-
 gcc/target.def                                   |  14 +++
 gcc/testsuite/gcc.target/i386/pie-copyrelocs-1.c |   4 +-
 gcc/testsuite/gcc.target/i386/pie-copyrelocs-2.c |   4 +-
 gcc/testsuite/gcc.target/i386/pie-copyrelocs-3.c |   2 +-
 gcc/testsuite/gcc.target/i386/pie-copyrelocs-4.c |   4 +-
 gcc/testsuite/gcc.target/i386/pr32219-10.c       |  16 +++
 gcc/testsuite/gcc.target/i386/pr32219-9.c        |   2 +
 gcc/testsuite/gcc.target/i386/pr65886-1.c        |  17 +++
 gcc/testsuite/gcc.target/i386/pr65886-2.c        |  15 +++
 gcc/testsuite/gcc.target/i386/pr65886-3.c        |  16 +++
 gcc/testsuite/gcc.target/i386/pr65886-4.c        |  15 +++
 gcc/testsuite/gcc.target/i386/pr65886-5.c        |  18 +++
 gcc/testsuite/gcc.target/i386/pr65886-6.c        |  18 +++
 gcc/testsuite/gcc.target/i386/pr66232-10.c       |  13 +++
 gcc/testsuite/gcc.target/i386/pr66232-11.c       |  14 +++
 gcc/testsuite/gcc.target/i386/pr66232-12.c       |  13 +++
 gcc/testsuite/gcc.target/i386/pr66232-13.c       |  13 +++
 gcc/testsuite/gcc.target/i386/pr67215-1.c        |  20 ++++
 gcc/testsuite/gcc.target/i386/pr67215-2.c        |  20 ++++
 gcc/testsuite/gcc.target/i386/pr67215-3.c        |  13 +++
 gcc/testsuite/lib/target-supports.exp            | 114 ++++++++++++++++++-
 gcc/varasm.c                                     |  69 +++++++++---
 34 files changed, 848 insertions(+), 90 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/i386/pr32219-10.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr65886-1.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr65886-2.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr65886-3.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr65886-4.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr65886-5.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr65886-6.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr66232-10.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr66232-11.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr66232-12.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr66232-13.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr67215-1.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr67215-2.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr67215-3.c

-- 
2.4.3


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]