From 3b0a87254f8a1e48a155f5571c274297353a0106 Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Fri, 20 Sep 2024 20:46:37 -0400 Subject: start mld, add loading of object files, add fuzzing support --- mld/main.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 mld/main.c (limited to 'mld/main.c') diff --git a/mld/main.c b/mld/main.c new file mode 100644 index 0000000..3dd5b5c --- /dev/null +++ b/mld/main.c @@ -0,0 +1,50 @@ +#include +#include +#include +#include + +#include "link.h" + +void help(void) { + printf("usage: mld [options] objfile...\n\n"); + printf("options:\n"); + printf("\t-h\t\tprints this help message\n"); + printf("\t-o \tselect a output file destination\n"); +} + +int main(int argc, char **argv) { + + struct linker_arguments args = { + .in_files = NULL, + .in_count = 0, + .out_file = "a.out", + }; + + int c; + + while ((c = getopt(argc, argv, "ho:")) != 1) { + switch(c) { + case 'h': + help(); + return M_SUCCESS; + case 'o': + args.out_file = optarg; + break; + case '?': + return M_ERROR; + default: + goto next; + } + } + +next: + if (optind >= argc) { + ERROR("no object files passed"); + return M_ERROR; + } + + args.in_files = &argv[optind]; + args.in_count = argc - optind; + + return link_files(args); +} -- cgit v1.2.3-freya