Disallow --incremental with -pie and force -no-pie for incremental tests.
authorCary Coutant <ccoutant@gmail.com>
Wed, 15 Feb 2017 08:25:29 +0000 (00:25 -0800)
committerCary Coutant <ccoutant@gmail.com>
Sat, 2 Dec 2017 07:46:03 +0000 (23:46 -0800)
commit158600eb989bcbc364c6d18259f1cb32ea9dc478
tree2e056287d85a96d63be8a078e21c6d32bfa8b7b5
parent0af4ccfc5bc7ded4d87f813e3754486eb5a75349
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.
gold/ChangeLog
gold/incremental.cc
gold/options.cc
gold/testsuite/Makefile.am
gold/testsuite/Makefile.in
gold/x86_64.cc