aboutsummaryrefslogtreecommitdiff
path: root/gold/incremental.cc
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@gmail.com>2017-02-15 00:25:29 -0800
committerCary Coutant <ccoutant@gmail.com>2017-12-01 23:46:03 -0800
commit158600eb989bcbc364c6d18259f1cb32ea9dc478 (patch)
tree2e056287d85a96d63be8a078e21c6d32bfa8b7b5 /gold/incremental.cc
parent0af4ccfc5bc7ded4d87f813e3754486eb5a75349 (diff)
downloadbinutils-158600eb989bcbc364c6d18259f1cb32ea9dc478.zip
binutils-158600eb989bcbc364c6d18259f1cb32ea9dc478.tar.gz
binutils-158600eb989bcbc364c6d18259f1cb32ea9dc478.tar.bz2
Disallow --incremental with -pie and force -no-pie for incremental tests.
This is a partial fix for the gold testsuite failures documented in PR 21090. The use of -fpie triggers some mov-to-lea optimizations that are not compatible with incremental linking, so those optimizations need to be disabled. We also diagnose the attempt to use -pie with incremental linking, and force -no-pie for the incremental tests in case the build has been configured to have GCC pass -pie all the time. We still have a problem where compiling with -fpie results in some GOT entries even when linking with -no-pie. This combination still causes test failures because we are not updating the GOT entries in an incremental update link. gold/ PR gold/21090 * incremental.cc (Sized_relobj_incr::do_relocate): Fix comment. * options.cc (General_options::finalize): Disallow -pie with incremental linking. * x86_64.cc (Target_x86_64::Scan::local): Don't do mov-to-lea or callq-to-direct optimizations for incremental links. (Target_x86_64::Scan::global): Likewise. (Target_x86_64::Relocate::relocate): Likewise. * testsuite/Makefile.am (incremental_test): Force -no-pie. (incremental_test_2): Likewise. (incremental_test_3): Likewise. (incremental_test_4): Likewise. (incremental_test_5): Likewise. (incremental_test_6): Likewise. (incremental_copy_test): Likewise. (incremental_common_test_1): Likewise. (incremental_comdat_test_1): Likewise. * testsuite/Makefile.in: Regenerate.
Diffstat (limited to 'gold/incremental.cc')
-rw-r--r--gold/incremental.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/gold/incremental.cc b/gold/incremental.cc
index 6d6b34a..8db7bc6 100644
--- a/gold/incremental.cc
+++ b/gold/incremental.cc
@@ -2536,8 +2536,8 @@ Sized_relobj_incr<size, big_endian>::do_set_local_dynsym_offset(off_t)
// Relocate the input sections and write out the local symbols.
// We don't actually do any relocation here. For unchanged input files,
// we reapply relocations only for symbols that have changed; that happens
-// in queue_final_tasks. We do need to rewrite the incremental relocations
-// for this object.
+// in Layout_task_runner::run(). We do need to rewrite the incremental
+// relocations for this object.
template<int size, bool big_endian>
void