Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] RetroWrite does not symbolize RIP-relative addressing and omits the definition of labels #45

Open
witbring opened this issue Oct 1, 2022 · 0 comments
Labels
analysis-needed This issue needs analysis and possible research to solve. bug Something isn't working

Comments

@witbring
Copy link

witbring commented Oct 1, 2022

Describe the bug

  1. RetroWrite fails on symbolizing RIP-relative addressing.
    I observed that RetroWrite fails on recovering RIP-relative addressing. As an example, given instruction  ‘leaq fix_syms(%rip), %rsi’ found in addr2line of binutils, RetroWrite reassembled the instruction as ‘leaq 5(%rip), %rsi’.
  • Compiler-generated assembly
_bfd_fix_excluded_sec_syms:             
    .cfi_startproc
    movq    %rdi, %rdx
    movq    40(%rsi), %rdi
    leaq    fix_syms(%rip), %rsi
    jmp bfd_link_hash_traverse          # TAILCALL
    .cfi_endproc

fix_syms:                               
    .cfi_startproc
    pushq   %r14
  • Binary
00000000000a663f <_bfd_fix_excluded_sec_syms>:
   a663f:    mov    %rdi,%rdx
   a6642:    mov    0x28(%rsi),%rdi
   a6646:    lea    0x5(%rip),%rsi        # a6652 <fix_syms>
   a664d:    jmpq   a3ec0 <bfd_link_hash_traverse>

00000000000a6652 <fix_syms>:
   a6652:    push   %r14
  • Reassembler-generated assembly 
.LCa6646:
    leaq 5(%rip), %rsi
  1. RetroWrite omits the definition of some labels.
    Also, I found that RetroWrite sometimes omits some definitions of labels. For example, given the data pointer 0x170c80, RetroWrite symbolized the pointer as '.LC170c80', but RetroWrite misses the definition of the label '.LC170c80'. As a result, it causes a compilation error. 

Describe how to reproduce the bug

  1. Platform: x86-64.
  2. Compiler: Clang v12.0 and GCC v7.5.0
  3. Binary: addr2line in binutils-2.31.1
@witbring witbring added analysis-needed This issue needs analysis and possible research to solve. bug Something isn't working labels Oct 1, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
analysis-needed This issue needs analysis and possible research to solve. bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant