Skip to content

[BUG] RetroWrite omits data sections #38

Open
@miksh

Description

@miksh

Description:
RetroWrite did not create data sections, like .data.rel.ro.local, .fini.array
As a result, RetroWrite not only recover certain relocation information,
but also emit incorrect assembly code.

My test program has relocation information in .data.rel.ro.local

$ readelf -r  hello  | grep .data.rel.ro.local -A 20
Relocation section '.rela.data.rel.ro.local' at offset 0x9a3d8 contains 165 entries:
  Offset          Info           Type           Sym. Value    Sym. Name + Addend
000000020360  000100000001 R_X86_64_64       0000000000003c90 .text + 26a0
000000020368  000100000001 R_X86_64_64       0000000000003c90 .text + 2d60
000000020370  000100000001 R_X86_64_64       0000000000003c90 .text + 26b0
000000020378  000100000001 R_X86_64_64       0000000000003c90 .text + 2e20
...

Its binary code refers .data.rel.ro.local section.

  • Disassembly code
    61ec:	48 8d 05 6d a1 01 00 	lea    0x1a16d(%rip),%rax        # 20360 <sort_functions>

However, RetroWrite emited weird assembly code.

  • Reassembled code
.LC61ec:
	leaq 41984+.LC15f60(%rip), %rax

I examined the reassembly file and found that RetroWrite did not create .data.rel.ro.local section.

I hope to fix the errors.

Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    analysis-neededThis issue needs analysis and possible research to solve.bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions