Skip to content
Snippets Groups Projects
Commit 7d3b27ff authored by Wilco Dijkstra's avatar Wilco Dijkstra Committed by Wilco Dijkstra
Browse files

[AArch64] Fix symbol offset limit

In aarch64_classify_symbol symbols are allowed large offsets on relocations. 
This means the offset can use all of the +/-4GB offset, leaving no offset
available for the symbol itself.  This results in relocation overflow and
link-time errors for simple expressions like &global_array + 0xffffff00.

To avoid this, unless the offset_within_block_p is true, limit the offset
to +/-1MB so that the symbol needs to be within a 3.9GB offset from its
references.  For the tiny code model use a 64KB offset, allowing most of
the 1MB range for code/data between the symbol and its references.

    gcc/
	* config/aarch64/aarch64.c (aarch64_classify_symbol):
	Apply reasonable limit to symbol offsets.

    testsuite/
	* gcc.target/aarch64/symbol-range.c: Improve testcase.
	* gcc.target/aarch64/symbol-range-tiny.c: Likewise.

From-SVN: r277068
parent aab8c2fd
No related branches found
No related tags found
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment