aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2026-04-18 22:32:24 +0200
committerlemon <lsof@mailbox.org>2026-04-18 22:32:24 +0200
commit87b7c10777f1e9114574ec6fc3736dc478edc0cd (patch)
tree47664ebc0799beef94c0d61a83b07d03a1e7c378
parent2a07b1fae89dd3efc4c4898b2794a2b3b337987d (diff)
driver: allow space after -l, -L
-rw-r--r--src/a_main.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/a_main.c b/src/a_main.c
index f9c2021..4382544 100644
--- a/src/a_main.c
+++ b/src/a_main.c
@@ -243,7 +243,7 @@ optparse(char **args)
} else if (!strcmp(arg, "pthread")) {
cpp0define("_REENTRANT", NULL);
vpush(&task.linkargs, "-lpthread");
- } else if (*arg == 'l' || *arg == 'L' || *arg == 'B' || !strcmp(arg, "shared") || !strcmp(arg, "static")) {
+ } else if (!strcmp(arg, "shared") || !strcmp(arg, "static")) {
/* XXX having some issues with linker commands for -shared */
if (!strcmp(arg, "shared"))
task.link_with_cc = 1;
@@ -261,11 +261,21 @@ optparse(char **args)
vpush(&task.linkargs, larg);
}
}
- } else if (!memcmp(arg, "z", 2)) {
- const char *kw = *++args;
- if (!kw) fatal(NULL, "missing argument to `-z`");
- vpush(&task.linkargs, "-z");
- vpush(&task.linkargs, kw);
+ } else if (*arg == 'z' || *arg == 'L' || *arg == 'l' || *arg == 'B') {
+ const char *x = arg[1] ? arg+1 : *++args;
+ if (!x) fatal(NULL, "missing argument to `%S`", arg-1, 2);
+ if (*arg == 'z') {
+ vpush(&task.linkargs, "-z");
+ vpush(&task.linkargs, x);
+ } else {
+ if (arg[1]) vpush(&task.linkargs, arg-1);
+ else {
+ char *temp = alloc(&globarena, 2 + strlen(x) + 1, 1);
+ temp[0] = '-', temp[1] = *arg;
+ strcpy(temp+2, x);
+ vpush(&task.linkargs, temp);
+ }
+ }
} else if (!strcmp(arg, "v") || !strcmp(arg, "-verbose")) {
task.verbose = 1;
} else if (!strcmp(arg, "c")) {