diff options
author | Heiko Carstens <[email protected]> | 2022-05-11 14:05:30 +0200 |
---|---|---|
committer | Heiko Carstens <[email protected]> | 2022-05-17 15:16:29 +0200 |
commit | e9953b729b789c0e2984859e3b2170b7fa8520d5 (patch) | |
tree | 9b0ed9313105dcd2b3028bc598d23e9f010a8a61 /lib/test_fortify/write_overflow-memcpy.c | |
parent | adda746629b4a3950f313bc645fa0e54daee871c (diff) |
s390/boot: workaround llvm IAS bug
For at least the mvc and clc instructions llvm's integrated assembler can
generate incorrect code. In particular this happens with decompressor boot
code. The reason seems to be that relocations for the second displacement
of each instruction are at incorrect locations (-/+: gas vs llvm IAS):
mvc __LC_IO_NEW_PSW(16),.Lnewpsw
results in
4: d2 0f 01 f0 00 00 mvc 496(16,%r0),0
- 8: R_390_12 .head.text+0x10
+ 6: R_390_12 .head.text+0x10
and
clc 0(3,%r4),.L_hdr
results in
258: d5 02 40 00 00 00 clc 0(3,%r4),0
- 25c: R_390_12 .head.text+0x324
+ 25a: R_390_12 .head.text+0x324
Workaround this by writing the code in a different way.
Tested-by: Nathan Chancellor <[email protected]>
Tested-by: Nick Desaulniers <[email protected]>
Link: https://github.com/llvm/llvm-project/issues/55411
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Heiko Carstens <[email protected]>
Diffstat (limited to 'lib/test_fortify/write_overflow-memcpy.c')
0 files changed, 0 insertions, 0 deletions