aboutsummaryrefslogtreecommitdiffstats
path: root/coq
diff options
context:
space:
mode:
authorBernhard Schommer <bschommer@users.noreply.github.com>2020-02-20 18:55:34 +0100
committerGitHub <noreply@github.com>2020-02-20 18:55:34 +0100
commita9eaf4897c825093aba2137ff76e56bfbf1e72d5 (patch)
treec7a0787cd0a1a716a3ac448683c3cda75ffb6486 /coq
parent797829058aedff543c1f30b269b8fc8a0be35e36 (diff)
downloadcompcert-kvx-a9eaf4897c825093aba2137ff76e56bfbf1e72d5.tar.gz
compcert-kvx-a9eaf4897c825093aba2137ff76e56bfbf1e72d5.zip
More precise determination of small data accesses (#220)
We can get linker errors for addresses of the form "symbol + offset" where "symbol" is in the small data area and "offset" is large enough to overflow the relative displacement from the SDA base register. To avoid this, this commit enriches `C2C.atom_is_small_data`, which is the implementation of `Asm.symbol_is_small_data` in the PPC port, with a check that the offset is within the bounds of the symbol. If it is not, `Asm.symbol_is_small_data` returns `false` and Asmgen produces an absolute addressing instead of a SDA-relative addressing. To implement the check, we record the sizes of symbols in the atom table, just like we already record their alignments.
Diffstat (limited to 'coq')
0 files changed, 0 insertions, 0 deletions