diff options
author | June McEnroe <programble@gmail.com> | 2016-10-10 22:53:02 -0400 |
---|---|---|
committer | June McEnroe <programble@gmail.com> | 2016-10-10 22:53:02 -0400 |
commit | b7ce8a5789e66db396a9d4fb5f6acc57fb4d5667 (patch) | |
tree | 1bc454f895e0197b6c6e2a8287775fb5fc2b877a | |
parent | Split jrp nops on dword boundaries (diff) | |
download | src-b7ce8a5789e66db396a9d4fb5f6acc57fb4d5667.tar.gz src-b7ce8a5789e66db396a9d4fb5f6acc57fb4d5667.zip |
Add JRP_DUMP
-rwxr-xr-x | .bin/jrp.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/.bin/jrp.c b/.bin/jrp.c index 0904e705..d6a9272f 100755 --- a/.bin/jrp.c +++ b/.bin/jrp.c @@ -202,6 +202,12 @@ static void jitSrc(const char *src) { } } +static void jitDump(const char *path, FILE *file) { + size_t nitems = code.ptr - code.base; + size_t written = fwrite(code.base, sizeof(qop), nitems, file); + if (written < nitems) err(EX_IOERR, "%s", path); +} + static char *prompt(EditLine *el __attribute((unused))) { static char buf[4096]; char *bufPtr = buf; @@ -223,6 +229,13 @@ static char *prompt(EditLine *el __attribute((unused))) { } int main(int argc, char *argv[]) { + FILE *file = NULL; + char *path = getenv("JRP_DUMP"); + if (path) { + file = fopen(path, "w"); + if (!file) err(EX_CANTCREAT, "%s", path); + } + jitInit(); stackInit(); @@ -231,6 +244,7 @@ int main(int argc, char *argv[]) { for (int i = 1; i < argc; ++i) jitSrc(argv[i]); jitEnd(); + if (file) jitDump(path, file); jitExec(); return EX_OK; } @@ -248,6 +262,7 @@ int main(int argc, char *argv[]) { jitBegin(); jitSrc(line); jitEnd(); + if (file) jitDump(path, file); jitExec(); } |