aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-04-10 00:57:43 -0400
committerIan Moffett <ian@osmora.org>2025-04-10 01:24:11 -0400
commitd869a6b0c3315de350799f4f1fdd4bc3538b0855 (patch)
treeda2efecc1f950a1cadb2adac834d2a02e9669f93 /src/main.c
parentfcdf12d4b12bcbfe604c9ba683796042fff26eb2 (diff)
core: Add core impl
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c41
1 files changed, 38 insertions, 3 deletions
diff --git a/src/main.c b/src/main.c
index bec0265..30612a7 100644
--- a/src/main.c
+++ b/src/main.c
@@ -28,24 +28,59 @@
*/
#include <stdio.h>
-#include <ldo/elf.h>
+#include <unistd.h>
#include <ldo/file.h>
+#include <ldo/ldo.h>
+
+static ldo_flags_t flags = 0;
static void
usage(const char *argv0)
{
- fprintf(stderr, "Usage: %s <*.o>\n", argv0);
+ fprintf(stderr, "Usage: %s <*.oo>\n", argv0);
+}
+
+/*
+ * Get linker runtime flags
+ */
+ldo_flags_t
+ldo_rtflags(void)
+{
+ return flags;
}
int
main(int argc, char **argv)
{
- struct ldo_file *lfp;
+ char c;
+ int i;
if (argc < 2) {
usage(argv[0]);
return -1;
}
+ while ((c = getopt(argc, argv, "hv")) >= 0) {
+ switch (c) {
+ case 'h':
+ usage(argv[0]);
+ return 0;
+ case 'v':
+ flags |= LDO_F_VERBOSE;
+ break;
+ case '?':
+ fprintf(stderr, "Bad argument: -%c\n", optopt);
+ break;
+ }
+ }
+
+ ldo_init();
+
+ /* Load object files */
+ if (optind < argc) {
+ for (i = optind; i < argc; ++i) {
+ ldo_load(argv[i]);
+ }
+ }
return 0;
}