diff options
author | Bernhard Schommer <bschommer@users.noreply.github.com> | 2020-02-20 18:55:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-20 18:55:34 +0100 |
commit | a9eaf4897c825093aba2137ff76e56bfbf1e72d5 (patch) | |
tree | c7a0787cd0a1a716a3ac448683c3cda75ffb6486 /test/clightgen/Makefile | |
parent | 797829058aedff543c1f30b269b8fc8a0be35e36 (diff) | |
download | compcert-a9eaf4897c825093aba2137ff76e56bfbf1e72d5.tar.gz compcert-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 'test/clightgen/Makefile')
0 files changed, 0 insertions, 0 deletions