• Michael Munday's avatar
    cmd/compile: fix large global variables in -linkshared mode on s390x · 55ac5b50
    Michael Munday authored
    When rewriting loads and stores accessing global variables to use the
    GOT we were making use of REGTMP (R10). Unfortunately loads and stores
    with large offsets (larger than 20-bits) were also using REGTMP,
    causing it to be clobbered and subsequently a segmentation fault.
    
    This can be fixed by using REGTMP2 (R11) for the rewrite. This is fine
    because REGTMP2 only has a couple of uses in the assembler (division,
    high multiplication and storage-to-storage instructions). We didn't
    use REGTMP2 originally because it used to be used more frequently,
    in particular for stores of constants to memory. However we have now
    eliminated those uses.
    
    This was found while writing a test case for CL 63030. That test case
    is included in this CL.
    
    Change-Id: I13956f1f3ca258a7c8a7ff0a7570d2848adf7f68
    Reviewed-on: https://go-review.googlesource.com/65011Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
    Run-TryBot: Cherry Zhang <cherryyz@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    55ac5b50
Name
Last commit
Last update
..
errors Loading commit data...
fortran Loading commit data...
gmp Loading commit data...
life Loading commit data...
nocgo Loading commit data...
stdio Loading commit data...
test Loading commit data...
testasan Loading commit data...
testcarchive Loading commit data...
testcshared Loading commit data...
testgodefs Loading commit data...
testplugin Loading commit data...
testsanitizers Loading commit data...
testshared Loading commit data...
testsigfwd Loading commit data...
testso Loading commit data...
testsovar Loading commit data...
testtls Loading commit data...