Leslie Zhai via llvm-dev
2020-Jun-16 10:19 UTC
[llvm-dev] [MIPS64] Workaround fixup_Mips_32 for getExprOpValue
Hi, Testcase: $ cat llvm/test/MC/Mips/reloc-directive-bad-n64.s # RUN: llvm-mc -triple mips64el-unknown-linux < %s -show-encoding \ # RUN: -target-abi=n64 2>&1 | FileCheck %s .text .global main main: nop daddiu $t9, $ra, main - . # CHECK: :[[@LINE]]:25: warning: should use explicit constraints! nop .word main GNU toolchain: $ gcc -fPIC -c ./llvm/test/MC/Mips/reloc-directive-bad-n64.s -o t.gnu.o $ objdump -r t.gnu.o t.gnu.o: file format elf64-tradlittlemips RELOCATION RECORDS FOR [.text]: OFFSET TYPE VALUE 000000000000000c R_MIPS_32 main 000000000000000c R_MIPS_NONE *ABS* 000000000000000c R_MIPS_NONE *ABS* But LLVM toolchain: $ clang -fPIC -c ./llvm/test/MC/Mips/reloc-directive-bad-n64.s -o t.llvm.o $ objdump -r t.llvm.o t.llvm.o: file format elf64-tradlittlemips RELOCATION RECORDS FOR [.text]: OFFSET TYPE VALUE 0000000000000004 R_MIPS_32 main 0000000000000004 R_MIPS_NONE *ABS* 0000000000000004 R_MIPS_NONE *ABS* 0000000000000004 R_MIPS_32 .text+0x0000000000000004 0000000000000004 R_MIPS_NONE *ABS*+0x0000000000000004 0000000000000004 R_MIPS_NONE *ABS*+0x0000000000000004 000000000000000c R_MIPS_32 main 000000000000000c R_MIPS_NONE *ABS* 000000000000000c R_MIPS_NONE *ABS* Warning the user and behaviour the same as GNU toolchain after applied the workaround patch[1]: $ ./build/bin/clang -fPIC -c ./llvm/test/MC/Mips/reloc-directive-bad-n64.s -o t.llvm.o ./llvm/test/MC/Mips/reloc-directive-bad-n64.s:7:25: warning: should use explicit constraints! daddiu $t9, $ra, main - . # CHECK: :[[@LINE]]:25: warning: should use explicit constraints! ^ <unknown>:0: warning: should use explicit constraints! $ objdump -r t.llvm.o t.llvm.o: file format elf64-tradlittlemips RELOCATION RECORDS FOR [.text]: OFFSET TYPE VALUE 000000000000000c R_MIPS_32 main 000000000000000c R_MIPS_NONE *ABS* 000000000000000c R_MIPS_NONE *ABS* Passed make check-llvm-mc-mips: [100%] Running lit suite /home/loongson/zhaixiang/llvm-project-8.x/llvm/test/MC/Mips Testing Time: 5.36s Expected Passes : 415 Expected Failures : 19 [100%] Built target check-llvm-mc-mips Please review the patch[1], and give me some advice! [1] https://reviews.llvm.org/D81919 Thanks, Leslie Zhai