mirror of
https://github.com/radareorg/radare2.git
synced 2025-02-10 08:14:35 +00:00
![pancake](/assets/img/avatar_default.png)
- Replaced by ragg2 - the new r_egg based tool for r2 * Add r_egg_assemble as a 2nd step for compilation * Fix memory leak in r_egg_free * Add support for 'cmp' and more 'test' variants for x86.nz - Ignore 'dword ptr' string - More test cases * Fix SCSIZE issue in rasc2 -s --HG-- rename : binr/rarc2/Makefile => binr/old.rarc2/Makefile rename : binr/rarc2/README => binr/old.rarc2/README rename : binr/rarc2/config.def.h => binr/old.rarc2/config.def.h rename : binr/rarc2/config.h => binr/old.rarc2/config.h rename : binr/rarc2/emit_arm.c => binr/old.rarc2/emit_arm.c rename : binr/rarc2/emit_x64.c => binr/old.rarc2/emit_x64.c rename : binr/rarc2/emit_x86.c => binr/old.rarc2/emit_x86.c rename : binr/rarc2/i/libc.r => binr/old.rarc2/i/libc.r rename : binr/rarc2/i/socket.r => binr/old.rarc2/i/socket.r rename : binr/rarc2/osxtest.r => binr/old.rarc2/osxtest.r rename : binr/rarc2/out.c => binr/old.rarc2/out.c rename : binr/rarc2/rarc2-tool => binr/old.rarc2/rarc2-tool rename : binr/rarc2/rarc2.c => binr/old.rarc2/rarc2.c rename : binr/rarc2/rarc2.h => binr/old.rarc2/rarc2.h rename : binr/rarc2/t/Makefile => binr/old.rarc2/t/Makefile rename : binr/rarc2/t/argv.r => binr/old.rarc2/t/argv.r rename : binr/rarc2/t/bytedump.r => binr/old.rarc2/t/bytedump.r rename : binr/rarc2/t/data.r => binr/old.rarc2/t/data.r rename : binr/rarc2/t/dump.r => binr/old.rarc2/t/dump.r rename : binr/rarc2/t/hello.r => binr/old.rarc2/t/hello.r rename : binr/rarc2/t/hi.r => binr/old.rarc2/t/hi.r rename : binr/rarc2/t/if.r => binr/old.rarc2/t/if.r rename : binr/rarc2/t/inline.r => binr/old.rarc2/t/inline.r rename : binr/rarc2/t/input.r => binr/old.rarc2/t/input.r rename : binr/rarc2/t/loop.r => binr/old.rarc2/t/loop.r rename : binr/rarc2/t/ptr.r => binr/old.rarc2/t/ptr.r rename : binr/rarc2/t/rawsys.r => binr/old.rarc2/t/rawsys.r rename : binr/rarc2/t/rawsys64.r => binr/old.rarc2/t/rawsys64.r rename : binr/rarc2/t/regs.r => binr/old.rarc2/t/regs.r rename : binr/rarc2/t/ret.r => binr/old.rarc2/t/ret.r rename : binr/rarc2/t/room.r => binr/old.rarc2/t/room.r rename : binr/rarc2/t/segfault.r => binr/old.rarc2/t/segfault.r rename : binr/rarc2/t/shell.r => binr/old.rarc2/t/shell.r rename : binr/rarc2/t/sub.r => binr/old.rarc2/t/sub.r rename : binr/rarc2/t/syscall.r => binr/old.rarc2/t/syscall.r rename : binr/rarc2/test.r => binr/old.rarc2/test.r rename : libr/egg/t/syscall.r => binr/ragg2/syscall.r
78 lines
1.6 KiB
C
78 lines
1.6 KiB
C
/* radare - LGPL - Copyright 2011 pancake<@nopcode.org> */
|
|
#include <r_egg.h>
|
|
#include <getopt.h>
|
|
|
|
static int usage () {
|
|
eprintf ("./test [-a x86|arm] [-b 32|64] foo.r\n");
|
|
return 1;
|
|
}
|
|
|
|
int main(int argc, char **argv) {
|
|
const char *arch = "x86";
|
|
int bits = 32;
|
|
int c, i;
|
|
RBuffer *b;
|
|
REgg *egg = r_egg_new ();
|
|
|
|
while ((c = getopt (argc, argv, "ha:b:")) != -1) {
|
|
switch (c) {
|
|
case 'a':
|
|
arch = optarg;
|
|
break;
|
|
case 'b':
|
|
bits = atoi (optarg);
|
|
break;
|
|
case 'h':
|
|
return usage ();
|
|
}
|
|
}
|
|
|
|
if (optind == argc)
|
|
return usage ();
|
|
|
|
r_egg_setup (egg, arch, bits, 0, 0);
|
|
r_egg_include (egg, argv[optind], 0);
|
|
r_egg_compile (egg);
|
|
r_egg_assemble (egg);
|
|
//r_egg_setup (egg, "x86", 32, 0, 0);
|
|
//r_egg_setup (egg, "x86", 64, 0, 0);
|
|
|
|
//printf ("src (%s)\n", r_egg_get_source (egg));
|
|
printf ("asm (%s)\n", r_egg_get_assembly (egg));
|
|
b = r_egg_get_bin (egg);
|
|
if (b == NULL) {
|
|
eprintf ("Cannot assemble egg :(\n");
|
|
} else {
|
|
printf ("BUFFER : %d\n", b->length);
|
|
for (i=0;i<b->length;i++) {
|
|
printf ("%02x", b->buf[i]);
|
|
}
|
|
printf ("\n");
|
|
}
|
|
#if VALA
|
|
var egg = new REgg ();
|
|
egg.include ("test.r", 'r');
|
|
egg.compile ();
|
|
#endif
|
|
r_egg_free (egg);
|
|
return 0;
|
|
}
|
|
/*
|
|
r_egg_syscall (egg, "close", 0);
|
|
r_egg_compile (egg);
|
|
*/
|
|
/*
|
|
printf ("src (%s)\n", r_egg_get_source (egg));
|
|
printf ("ass (%s)\n", r_egg_get_assembly (egg));
|
|
b = r_egg_get_bin (egg);
|
|
if (b == NULL) {
|
|
eprintf ("Cannot assemble egg :(\n");
|
|
} else {
|
|
printf ("BUFFER : %d\n", b->length);
|
|
for (i=0;i<b->length;i++) {
|
|
printf ("%02x", b->buf[i]);
|
|
}
|
|
printf ("\n");
|
|
}
|
|
*/
|