aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
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;
}