Index: llvm/docs/CommandGuide/llvm-objdump.rst =================================================================== --- llvm/docs/CommandGuide/llvm-objdump.rst +++ llvm/docs/CommandGuide/llvm-objdump.rst @@ -226,7 +226,7 @@ When printing a PC-relative global symbol reference, print it as an offset from the leading symbol. - Only works with PowerPC objects or X86 linked images. + Only works with PowerPC or RISC-V objects, or X86 linked images. Example: A non-symbolized branch instruction with a local target and pc-relative memory access like Index: llvm/test/tools/llvm-objdump/ELF/RISCV/branches.s =================================================================== --- llvm/test/tools/llvm-objdump/ELF/RISCV/branches.s +++ llvm/test/tools/llvm-objdump/ELF/RISCV/branches.s @@ -1,74 +1,88 @@ -# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+c < %s | \ -# RUN: llvm-objdump -d -M no-aliases --no-show-raw-insn - | \ -# RUN: FileCheck %s +# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+c < %s -o %t +# RUN: llvm-objdump %t -d -M no-aliases --no-show-raw-insn | \ +# RUN: FileCheck -check-prefixes=CHECK-NOSYMBOLIZE,CHECK-COMMON %s +# RUN: llvm-objdump %t -d -M no-aliases --no-show-raw-insn --symbolize-operands | \ +# RUN: FileCheck -check-prefixes=CHECK-SYMBOLIZE,CHECK-COMMON %s # CHECK-LABEL: : foo: -# CHECK: beq t0, t1, 0x58 +# CHECK-NOSYMBOLIZE: beq t0, t1, 0x58 +# CHECK-SYMBOLIZE: beq t0, t1, 0x58 beq t0, t1, .Llocal -# CHECK: bne t0, t1, 0x58 +# CHECK-NOSYMBOLIZE: bne t0, t1, 0x58 +# CHECK-SYMBOLIZE: bne t0, t1, 0x58 bne t0, t1, .Llocal -# CHECK: blt t0, t1, 0x58 +# CHECK-NOSYMBOLIZE: blt t0, t1, 0x58 +# CHECK-SYMBOLIZE: blt t0, t1, 0x58 blt t0, t1, .Llocal -# CHECK: bge t0, t1, 0x58 +# CHECK-NOSYMBOLIZE: bge t0, t1, 0x58 +# CHECK-SYMBOLIZE: bge t0, t1, 0x58 bge t0, t1, .Llocal -# CHECK: bltu t0, t1, 0x58 +# CHECK-NOSYMBOLIZE: bltu t0, t1, 0x58 +# CHECK-SYMBOLIZE: bltu t0, t1, 0x58 bltu t0, t1, .Llocal -# CHECK: bgeu t0, t1, 0x58 +# CHECK-NOSYMBOLIZE: bgeu t0, t1, 0x58 +# CHECK-SYMBOLIZE: bgeu t0, t1, 0x58 bgeu t0, t1, .Llocal -# CHECK: c.beqz a0, 0x58 +# CHECK-NOSYMBOLIZE: c.beqz a0, 0x58 +# CHECK-SYMBOLIZE: c.beqz a0, 0x58 beq a0, zero, .Llocal -# CHECK: c.bnez a0, 0x58 +# CHECK-NOSYMBOLIZE: c.bnez a0, 0x58 +# CHECK-SYMBOLIZE: c.bnez a0, 0x58 bne a0, zero, .Llocal -# CHECK: beq t0, t1, 0x60 +# CHECK-COMMON: beq t0, t1, 0x60 beq t0, t1, bar -# CHECK: bne t0, t1, 0x60 +# CHECK-COMMON: bne t0, t1, 0x60 bne t0, t1, bar -# CHECK: blt t0, t1, 0x60 +# CHECK-COMMON: blt t0, t1, 0x60 blt t0, t1, bar -# CHECK: bge t0, t1, 0x60 +# CHECK-COMMON: bge t0, t1, 0x60 bge t0, t1, bar -# CHECK: bltu t0, t1, 0x60 +# CHECK-COMMON: bltu t0, t1, 0x60 bltu t0, t1, bar -# CHECK: bgeu t0, t1, 0x60 +# CHECK-COMMON: bgeu t0, t1, 0x60 bgeu t0, t1, bar -# CHECK: c.beqz a0, 0x60 +# CHECK-COMMON: c.beqz a0, 0x60 beq a0, zero, bar -# CHECK: c.bnez a0, 0x60 +# CHECK-COMMON: c.bnez a0, 0x60 bne a0, zero, bar -# CHECK: jal t0, 0x58 +# CHECK-NOSYMBOLIZE: jal t0, 0x58 +# CHECK-SYMBOLIZE: jal t0, 0x58 jal t0, .Llocal -# CHECK: c.jal 0x58 +# CHECK-NOSYMBOLIZE: c.jal 0x58 +# CHECK-SYMBOLIZE: c.jal 0x58 c.jal .Llocal -# CHECK: c.j 0x58 +# CHECK-NOSYMBOLIZE: c.j 0x58 +# CHECK-SYMBOLIZE: c.j 0x58 c.j .Llocal -# CHECK: jal t0, 0x60 +# CHECK-COMMON: jal t0, 0x60 jal t0, bar -# CHECK: c.jal 0x60 +# CHECK-COMMON: c.jal 0x60 c.jal bar -# CHECK: c.j 0x60 +# CHECK-COMMON: c.j 0x60 c.j bar -# CHECK: auipc ra, 0 -# CHECK: jalr ra, 16(ra) +# CHECK-COMMON: auipc ra, 0 +# CHECK-NOSYMBOLIZE: jalr ra, 16(ra) +# CHECK-SYMBOLIZE: jalr ra, 16(ra) call .Llocal -# CHECK: auipc ra, 0 -# CHECK: jalr ra, 16(ra) +# CHECK-COMMON: auipc ra, 0 +# CHECK-COMMON: jalr ra, 16(ra) call bar .Llocal: -# CHECK: 58: c.nop -# CHECK: c.nop -# CHECK: c.nop -# CHECK: c.nop +# CHECK-COMMON: 58: c.nop +# CHECK-COMMON: c.nop +# CHECK-COMMON: c.nop +# CHECK-COMMON: c.nop nop nop nop @@ -76,5 +90,5 @@ # CHECK-LABEL: : bar: -# CHECK: 60: c.nop +# CHECK-COMMON: 60: c.nop nop Index: llvm/tools/llvm-objdump/llvm-objdump.cpp =================================================================== --- llvm/tools/llvm-objdump/llvm-objdump.cpp +++ llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -978,8 +978,9 @@ const MCSubtargetInfo *STI, uint64_t SectionAddr, uint64_t Start, uint64_t End, std::unordered_map &Labels) { - // So far only supports PowerPC and X86. - if (!STI->getTargetTriple().isPPC() && !STI->getTargetTriple().isX86()) + // So far only supports PowerPC, RISC-V, and X86. + if (!STI->getTargetTriple().isPPC() && !STI->getTargetTriple().isRISCV() && + !STI->getTargetTriple().isX86()) return; Labels.clear();