[lld] [lld] Use position independent argument parsing for Unresolved Symbol (PR #123950)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 22 07:19:39 PST 2025
https://github.com/aokblast updated https://github.com/llvm/llvm-project/pull/123950
>From 5ece6c77699e8bfc5d79260c261f53c92101b96d Mon Sep 17 00:00:00 2001
From: SHENGYI HONG <aokblast at FreeBSD.org>
Date: Thu, 2 Jan 2025 00:30:02 +0800
Subject: [PATCH] [lld] Use position independent argument parsing for
Unresolved Symbol policy
---
lld/ELF/Driver.cpp | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp
index 019388c9bd2e2c..534be393976465 100644
--- a/lld/ELF/Driver.cpp
+++ b/lld/ELF/Driver.cpp
@@ -757,15 +757,18 @@ static void setUnresolvedSymbolPolicy(Ctx &ctx, opt::InputArgList &args) {
break;
arg->claim();
break;
- case OPT_allow_shlib_undefined:
- diagShlib = false;
- break;
- case OPT_no_allow_shlib_undefined:
- diagShlib = true;
- break;
}
}
+ opt::Arg *allow_shlib = args.getLastArg(OPT_allow_shlib_undefined);
+ opt::Arg *no_allow_shlib = args.getLastArg(OPT_no_allow_shlib_undefined);
+
+ if (allow_shlib != nullptr && no_allow_shlib != nullptr)
+ diagShlib =
+ allow_shlib->getIndex() < no_allow_shlib->getIndex() ? true : false;
+ else if (allow_shlib != nullptr || no_allow_shlib != nullptr)
+ diagShlib = no_allow_shlib != nullptr ? true : false;
+
ctx.arg.unresolvedSymbols =
diagRegular ? errorOrWarn : UnresolvedPolicy::Ignore;
ctx.arg.unresolvedSymbolsInShlib =
More information about the llvm-commits
mailing list