[lld-macho] Silently ignore the -objc_abi_version

This undocumented ld64 flag, based on the most recent ld64 source dump
from Xcode 12, only applies to i386. It seems like on all newer
architectures this behavior is the default.

Reviewed By: #lld-macho, int3

Differential Revision: https://reviews.llvm.org/D113070
This commit is contained in:
Keith Smiley 2021-11-03 21:47:49 -07:00
parent d49e7244cc
commit e7fdff403e
4 changed files with 37 additions and 18 deletions

View File

@ -780,6 +780,8 @@ static void warnIfUnimplementedOption(const Option &opt) {
case OPT_grp_ignored:
warn("Option `" + opt.getPrefixedName() + "' is ignored.");
break;
case OPT_grp_ignored_silently:
break;
default:
warn("Option `" + opt.getPrefixedName() +
"' is not yet implemented. Stay tuned...");

View File

@ -1277,10 +1277,6 @@ def no_new_main : Flag<["-"], "no_new_main">,
HelpText<"This option is undocumented in ld64">,
Flags<[HelpHidden]>,
Group<grp_undocumented>;
def objc_abi_version : Separate<["-"], "objc_abi_version">,
HelpText<"This option is undocumented in ld64">,
Flags<[HelpHidden]>,
Group<grp_undocumented>;
def pause : Flag<["-"], "pause">,
HelpText<"This option is undocumented in ld64">,
Flags<[HelpHidden]>,
@ -1324,3 +1320,10 @@ def new_linker : Flag<["-"], "new_linker">,
HelpText<"This option is ignored in ld64">,
Flags<[HelpHidden]>,
Group<grp_ignored>;
def grp_ignored_silently : OptionGroup<"ignored_silently">, HelpText<"IGNORED SILENTLY">;
def objc_abi_version : Separate<["-"], "objc_abi_version">,
HelpText<"This option only applies to i386 in ld64">,
Flags<[HelpHidden]>,
Group<grp_ignored_silently>;

View File

@ -0,0 +1,28 @@
# REQUIRES: x86
## Check that we correctly parse these flags, even though they are
## unimplemented. ## We may still emit warnings or errors for some of the
## unimplemented ones (but those ## errors are squelched because of the
## `--version` flag.)
# RUN: %lld --version \
# RUN: -dynamic \
# RUN: -no_deduplicate \
# RUN: -lto_library /lib/foo \
# RUN: -macosx_version_min 0 \
# RUN: -no_dtrace_dof \
# RUN: -dependency_info /path/to/dependency_info.dat \
# RUN: -lto_library ../lib/libLTO.dylib \
# RUN: -mllvm -time-passes \
# RUN: -objc_abi_version 2 \
# RUN: -ios_simulator_version_min 9.0.0 \
# RUN: -sdk_version 13.2
# RUN: not %lld -v --not-an-ignored-argument 2>&1 | FileCheck %s
# CHECK: error: unknown argument '--not-an-ignored-argument'
## Check that we don't emit any warnings nor errors for these unimplemented flags.
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
# RUN: %lld %t.o -o /dev/null -objc_abi_version 2
.globl _main
_main:
ret

View File

@ -1,14 +0,0 @@
RUN: %lld --version \
RUN: -dynamic \
RUN: -no_deduplicate \
RUN: -lto_library /lib/foo \
RUN: -macosx_version_min 0 \
RUN: -no_dtrace_dof \
RUN: -dependency_info /path/to/dependency_info.dat \
RUN: -lto_library ../lib/libLTO.dylib \
RUN: -mllvm -time-passes \
RUN: -objc_abi_version 2 \
RUN: -ios_simulator_version_min 9.0.0 \
RUN: -sdk_version 13.2
RUN: not %lld -v --not-an-ignored-argument 2>&1 | FileCheck %s
CHECK: error: unknown argument '--not-an-ignored-argument'