summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorCarson Fleming <cflems@cflems.net>2026-03-28 17:05:37 -1000
committerCarson Fleming <cflems@cflems.net>2026-03-28 17:05:37 -1000
commitb4d7305730606126d74862ca472a3efed964c2d8 (patch)
tree933ee0e11e30ec03181aba9051795513b94b0421 /main.c
parent0dc409ab0967d9973f36c138825067462b9a216f (diff)
downloadccc-b4d7305730606126d74862ca472a3efed964c2d8.tar.gz
rehashing and size tracking corrections
Diffstat (limited to 'main.c')
-rw-r--r--main.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/main.c b/main.c
index 5c26dd3..4cb0ba7 100644
--- a/main.c
+++ b/main.c
@@ -41,13 +41,28 @@ void test_parser(int argc, char** argv) {
for (int i = 1; i < argc; i++) {
struct root_node* root = parse(argv[i]);
unsigned int fn_sz = strlen(argv[i]);
- char outfile[fn_sz + 1];
- strcpy(outfile, argv[i]);
- outfile[fn_sz - 1] = 's';
- outfile[fn_sz] = 0;
+ char asm_file[fn_sz + 1];
+ strcpy(asm_file, argv[i]);
+ asm_file[fn_sz - 1] = 's';
+ asm_file[fn_sz] = 0;
- emit_code(root, outfile);
+ emit_code(root, asm_file);
ast_destroy(root);
+
+ char obj_file[fn_sz + 1];
+ strcpy(obj_file, argv[i]);
+ obj_file[fn_sz - 1] = 'o';
+ obj_file[fn_sz] = 0;
+
+ char cmd_buffer[2*fn_sz + 20];
+ snprintf(
+ cmd_buffer,
+ sizeof(cmd_buffer),
+ "nasm -f elf64 %s -o %s",
+ asm_file,
+ obj_file);
+ int status = system(cmd_buffer);
+ if (status != 0) exit(status);
}
}