forked from OSchip/llvm-project
[lld-macho] Ignore -platform_version and -syslibroot flags.
clang passes these flags; this makes it easier to try `clang -v` output with `ld -flavor darwinnew`. Differential Revision: https://reviews.llvm.org/D79797
This commit is contained in:
parent
e17a47b2d3
commit
759bae956a
|
@ -131,6 +131,18 @@ static bool markSubLibrary(StringRef searchName) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void handlePlatformVersion(opt::ArgList::iterator &it,
|
||||||
|
const opt::ArgList::iterator &end) {
|
||||||
|
// -platform_version takes 3 args, which LLVM's option library doesn't
|
||||||
|
// support directly. So this explicitly handles that.
|
||||||
|
// FIXME: stash skipped args for later use.
|
||||||
|
for (int i = 0; i < 3; ++i) {
|
||||||
|
++it;
|
||||||
|
if (it == end || (*it)->getOption().getID() != OPT_INPUT)
|
||||||
|
fatal("usage: -platform_version platform min_version sdk_version");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool macho::link(llvm::ArrayRef<const char *> argsArr, bool canExitEarly,
|
bool macho::link(llvm::ArrayRef<const char *> argsArr, bool canExitEarly,
|
||||||
raw_ostream &stdoutOS, raw_ostream &stderrOS) {
|
raw_ostream &stdoutOS, raw_ostream &stderrOS) {
|
||||||
lld::stdoutOS = &stdoutOS;
|
lld::stdoutOS = &stdoutOS;
|
||||||
|
@ -162,7 +174,9 @@ bool macho::link(llvm::ArrayRef<const char *> argsArr, bool canExitEarly,
|
||||||
return !errorCount();
|
return !errorCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (opt::Arg *arg : args) {
|
for (opt::ArgList::iterator it = args.begin(), end = args.end(); it != end;
|
||||||
|
++it) {
|
||||||
|
const opt::Arg *arg = *it;
|
||||||
switch (arg->getOption().getID()) {
|
switch (arg->getOption().getID()) {
|
||||||
case OPT_INPUT:
|
case OPT_INPUT:
|
||||||
addFile(arg->getValue());
|
addFile(arg->getValue());
|
||||||
|
@ -171,6 +185,10 @@ bool macho::link(llvm::ArrayRef<const char *> argsArr, bool canExitEarly,
|
||||||
if (Optional<std::string> path = findDylib(arg->getValue()))
|
if (Optional<std::string> path = findDylib(arg->getValue()))
|
||||||
addFile(*path);
|
addFile(*path);
|
||||||
break;
|
break;
|
||||||
|
case OPT_platform_version: {
|
||||||
|
handlePlatformVersion(it, end); // Can advance "it".
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,5 +32,7 @@ def v: Flag<["-"], "v">, HelpText<"Display the version number and exit">;
|
||||||
def: Flag<["-"], "demangle">;
|
def: Flag<["-"], "demangle">;
|
||||||
def: Flag<["-"], "dynamic">;
|
def: Flag<["-"], "dynamic">;
|
||||||
def: Flag<["-"], "no_deduplicate">;
|
def: Flag<["-"], "no_deduplicate">;
|
||||||
|
def platform_version: Flag<["-"], "platform_version">;
|
||||||
def: Separate<["-"], "lto_library">;
|
def: Separate<["-"], "lto_library">;
|
||||||
def: Separate<["-"], "macosx_version_min">;
|
def: Separate<["-"], "macosx_version_min">;
|
||||||
|
def: Separate<["-"], "syslibroot">;
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
# RUN: not lld -flavor darwinnew -platform_version 2>&1 \
|
||||||
|
# RUN: | FileCheck --check-prefix=FAIL %s
|
||||||
|
# RUN: not lld -flavor darwinnew -platform_version macos 2>&1 \
|
||||||
|
# RUN: | FileCheck --check-prefix=FAIL %s
|
||||||
|
# RUN: not lld -flavor darwinnew -platform_version macos 10.15 2>&1 \
|
||||||
|
# RUN: | FileCheck --check-prefix=FAIL %s
|
||||||
|
# RUN: not lld -flavor darwinnew -platform_version macos -lfoo 10.15 2>&1 \
|
||||||
|
# RUN: | FileCheck --check-prefix=FAIL %s
|
||||||
|
# RUN: not lld -flavor darwinnew -platform_version macos 10.15 10.15.4 2>&1 \
|
||||||
|
# RUN: | FileCheck --check-prefix=GOOD %s
|
||||||
|
# RUN: not lld -flavor darwinnew -platform_version macos 10.15 10.15.4 foobar 2>&1 \
|
||||||
|
# RUN: | FileCheck --check-prefix=FAIL_FILE %s
|
||||||
|
|
||||||
|
FAIL: usage: -platform_version platform min_version sdk_version
|
||||||
|
GOOD: undefined symbol: _main
|
||||||
|
FAIL_FILE: cannot open foobar
|
|
@ -3,6 +3,7 @@ RUN: -demangle \
|
||||||
RUN: -dynamic \
|
RUN: -dynamic \
|
||||||
RUN: -no_deduplicate \
|
RUN: -no_deduplicate \
|
||||||
RUN: -lto_library /lib/foo \
|
RUN: -lto_library /lib/foo \
|
||||||
RUN: -macosx_version_min 0
|
RUN: -macosx_version_min 0 \
|
||||||
|
RUN: -syslibroot /path/to/MacOSX.platform/Developer/SDKs/MacOSX.sdk
|
||||||
RUN: not lld -flavor darwinnew -v --not-an-ignored-argument 2>&1 | FileCheck %s
|
RUN: not lld -flavor darwinnew -v --not-an-ignored-argument 2>&1 | FileCheck %s
|
||||||
CHECK: error: unknown argument: --not-an-ignored-argument
|
CHECK: error: unknown argument: --not-an-ignored-argument
|
||||||
|
|
Loading…
Reference in New Issue