https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98618

--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-8 branch has been updated by Wilco Dijkstra
<wi...@gcc.gnu.org>:

https://gcc.gnu.org/g:c9569046bd8ba2671833d600b3bdbdb7de593873

commit r8-10736-gc9569046bd8ba2671833d600b3bdbdb7de593873
Author: Wilco Dijkstra <wdijk...@arm.com>
Date:   Wed Oct 16 14:24:41 2019 +0000

    [AArch64] Fix symbol offset limit (PR 98618)

    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/
            PR target/98618
            * config/aarch64/aarch64.c (aarch64_classify_symbol):
            Apply reasonable limit to symbol offsets.

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

    (cherry picked from commit 7d3b27ff12610fde9d6c4b56abc70c6ee9b6b3db)

Reply via email to