radare2/libr/egg/t/test.c
pancake 429a475ac0 * Deprecate rarc2 and rarc2-tool
- 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
2011-08-08 02:07:26 +02:00

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");
}
*/