aboutsummaryrefslogtreecommitdiff
path: root/gdb/language.h
diff options
context:
space:
mode:
authorSriraman Tallam <tmsriram@google.com>2014-05-13 10:33:59 -0700
committerSriraman Tallam <tmsriram@google.com>2014-05-13 10:33:59 -0700
commit1642b4b33783d70979dca379d57a0ce02559daec (patch)
tree3c6acad3723dbb6cd240af55940a07af3121d647 /gdb/language.h
parent9b44a3a57d17ea2d35823780007a38daeeaec6a4 (diff)
downloadgdb-1642b4b33783d70979dca379d57a0ce02559daec.zip
gdb-1642b4b33783d70979dca379d57a0ce02559daec.tar.gz
gdb-1642b4b33783d70979dca379d57a0ce02559daec.tar.bz2
Optimizing accesses to Globals with -fpie -pie:
With -pie and x86, the linker complains if it sees a PC-relative relocation to access a global as it expects a GOTPCREL relocation. This is really not necessary as the linker could use a copy relocation to get around it. This patch enables copy relocations with pie. Context: This is useful because currently the GCC compiler with option -fpie makes every extern global access go through the GOT. That is because the compiler cannot tell if a global will end up being defined in the executable or not and is conservative. This ends up hurting performance when the binary is linked as mostly static where most of the globals do end up being defined in the executable. By allowing copy relocs with fPIE, the compiler need not generate a GOTPCREL(GOT access) for any global access. It can safely assume that all globals will be defined in the executable and generate a PC-relative access instead. Gold can then create a copy reloc for only the undefined globals.
Diffstat (limited to 'gdb/language.h')
0 files changed, 0 insertions, 0 deletions