]> git.ipfire.org Git - thirdparty/gcc.git/commit
[Darwin, machopic] Fix for 67183
authorIain Sandoe <iain@sandoe.co.uk>
Sun, 27 Oct 2019 21:21:49 +0000 (21:21 +0000)
committerIain Sandoe <iains@gcc.gnu.org>
Sun, 27 Oct 2019 21:21:49 +0000 (21:21 +0000)
commit87b32c6f409bda6ac11ab857607a6afe68d33f1e
treeae4d2687debd61868d2f4d43b8e32e583a293d9f
parent5f3b4ef9d55eb9e40db219f94eebcd846ca6b73c
[Darwin, machopic] Fix for 67183

When we're using the LLVM-based assembler (the default on modern Darwin)
the ordering of stubs and non-lazy symbol pointers is important.

Interleaving the output (current GCC behaviour) leads to crashes which
prevents us from building code with symbol stubs.

To resolve this, we order the output of stubs and symbol indirections:

1. Any indirections in the data section
2. Symbol stubs.
3. Non-lazy symbol pointers.

At present, we still emit LTO sections after these.

2019-10-27  Iain Sandoe  <iain@sandoe.co.uk>

Backport from mainline
2019-10-12  Iain Sandoe  <iain@sandoe.co.uk>

PR target/67183
* config/darwin.c (machopic_indirection): New field to flag
non-lazy-symbol-pointers in the data section.
(machopic_indirection_name): Compute if an indirection should
appear in the data section.
(machopic_output_data_section_indirection): New callback split
from machopic_output_indirection.
(machopic_output_stub_indirection): Likewise.
(machopic_output_indirection): Retain the code for non-lazy
symbol pointers in their regular section.
(machopic_finish): Use the new callbacks to order the indirection
output.

From-SVN: r277494
gcc/ChangeLog
gcc/config/darwin.c