diff options
author | Alex Rønne Petersen <alex@alexrp.com> | 2025-05-04 21:32:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-04 12:32:17 -0700 |
commit | c3ff3b2ba36aa638ab6101096799d3960bbd6f17 (patch) | |
tree | c8073713a1ac37a99c7a5d940892af145c4f8a42 /llvm/lib/Analysis/ModuleSummaryAnalysis.cpp | |
parent | 4c587f549cbbea0ac1db2b983b8c5fb4fff82d72 (diff) | |
download | llvm-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