[all-commits] [llvm/llvm-project] 702608: [XCOFF] Use RLDs to print branches even without -r...

stephenpeckham via All-commits all-commits at lists.llvm.org
Thu Dec 21 06:17:46 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 70260860739fcbea2a5bee9a0d5e1d1d32ac6603
      https://github.com/llvm/llvm-project/commit/70260860739fcbea2a5bee9a0d5e1d1d32ac6603
  Author: stephenpeckham <118857872+stephenpeckham at users.noreply.github.com>
  Date:   2023-12-21 (Thu, 21 Dec 2023)

  Changed paths:
    M llvm/test/CodeGen/PowerPC/aix-return55.ll
    M llvm/test/CodeGen/PowerPC/aix-xcoff-funcsect.ll
    M llvm/test/CodeGen/PowerPC/aix-xcoff-reloc.ll
    M llvm/test/tools/llvm-objdump/XCOFF/disassemble-symbolize-operands.ll
    A llvm/test/tools/llvm-objdump/XCOFF/disassemble-symbolize-operands2.ll
    M llvm/tools/llvm-objdump/XCOFFDump.cpp
    M llvm/tools/llvm-objdump/XCOFFDump.h
    M llvm/tools/llvm-objdump/llvm-objdump.cpp

  Log Message:
  -----------
  [XCOFF] Use RLDs to print branches even without -r (#74342)

This presents misleading and confusing output. If you have a function
defined at the beginning of an XCOFF object file, and you have a
function call to an external function, the function call disassembles as
a branch to the local function. That is,

`void f() { f(); g();}`

disassembles as 
>00000000 <.f>:
       0: 7c 08 02 a6   mflr 0
4: 94 21 ff c0 stwu 1, -64(1)
       8: 90 01 00 48   stw 0, 72(1)
      c: 4b ff ff f5   bl 0x0 <.f>
      10: 4b ff ff f1   bl 0x0 <.f> 

With this PR, the second call will display:

`10: 4b ff ff f1   bl 0x0 <.g>  `

Using -r can help, but you still get the confusing output:

>10: 4b ff ff f1   bl 0x0 <.f>
      00000010:  R_RBR        .g




More information about the All-commits mailing list