HexHive / retrowrite

RetroWrite -- Retrofitting compiler passes through binary rewriting
Other
655 stars 78 forks source link

[BUG] cannot use retrowrite with binary compiled with gcc or g++ #34

Open ha2san opened 2 years ago

ha2san commented 2 years ago

Description retrowrite print no issue when runned on binary compiled with gcc but when I try to assemble the generated assembly with gcc I get this error:

/usr/bin/ld:hello.asm: file format not recognized; treating as linker script
/usr/bin/ld:hello.asm:1: syntax error
collect2: error: ld returned 1 exit status

Environment:

OS: 5.14.21-2-MANJARO x86_64 GNU/Linux GCC: gcc (GCC) 11.2.0 clang:13.0.1 retrowrite at commit: 7c230bc

I tried with a simple hello world program:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    printf("Hello, World!\n");

    return 0;
}

And compile it with gcc: gcc -O0 -ggdb -Wall -Wpedantic -Wextra -fPIC -fPIE -pie hello.c -o hello then ./retrowrite hello hello.asm gcc hello.asm -o hello_instrumented => error note that clang hello.asm -o hello_instrumented seems to work on some files