aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2025-05-04 21:32:17 +0200
committerGitHub <noreply@github.com>2025-05-04 12:32:17 -0700
commitc3ff3b2ba36aa638ab6101096799d3960bbd6f17 (patch)
treec8073713a1ac37a99c7a5d940892af145c4f8a42 /llvm/lib/Analysis/ModuleSummaryAnalysis.cpp
parent4c587f549cbbea0ac1db2b983b8c5fb4fff82d72 (diff)
downloadllvm-c3ff3b2ba36aa638ab6101096799d3960bbd6f17.zip
llvm-c3ff3b2ba36aa638ab6101096799d3960bbd6f17.tar.gz
llvm-c3ff3b2ba36aa638ab6101096799d3960bbd6f17.tar.bz2
[SPARC][MC] Fix `%gdop_hix22()` and `%gdop_lox10()` to use correct relocations (#137915)
1bfc5e7 introduced support for `%gdop_hix22()` and `%gdop_lox10()`. However, it incorrectly mapped them to `R_SPARC_GOTDATA_HIX22` and `R_SPARC_GOTDATA_LOX10`. They should in fact emit `R_SPARC_GOTDATA_OP_HIX22` and `R_SPARC_GOTDATA_OP_LOX10`. This became a problem when assembling glibc's PIC startup code: ```asm sethi %gdop_hix22(main), %o0 xor %o0, %gdop_lox10(main), %o0 ldx [%l7 + %o0], %o0, %gdop(main) ``` After the `xor`, `%o0` should contain the GOT offset for `main`, but because of the incorrect relocations, it actually ends up containing the address of `main`, which of course makes the following `ldx` fail.
Diffstat (limited to 'llvm/lib/Analysis/ModuleSummaryAnalysis.cpp')
0 files changed, 0 insertions, 0 deletions