[PATCH] D98259: [lld/mac] warn on -install_name without -dylib
Nico Weber via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 10 06:14:20 PST 2021
This revision was automatically updated to reflect the committed changes.
Closed by commit rG6e92f468c82b: [lld/mac] warn on -install_name without -dylib (authored by thakis).
Herald added a project: LLVM.
Changed prior to commit:
https://reviews.llvm.org/D98259?vs=329326&id=329639#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D98259/new/
https://reviews.llvm.org/D98259
Files:
lld/MachO/Driver.cpp
lld/test/MachO/install-name.s
Index: lld/test/MachO/install-name.s
===================================================================
--- /dev/null
+++ lld/test/MachO/install-name.s
@@ -0,0 +1,29 @@
+# REQUIRES: x86
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-macos -o %t.o %s
+
+# RUN: %no_fatal_warnings_lld -o %t.exec %t.o -install_name foo 2>&1 \
+# RUN: | FileCheck --check-prefix=WARN %s
+# RUN: llvm-objdump --macho --all-headers %t.exec \
+# RUN: | FileCheck --check-prefix=NO-ID %s
+
+# RUN: %no_fatal_warnings_lld -bundle -o %t.bundle %t.o -install_name foo 2>&1 \
+# RUN: | FileCheck --check-prefix=WARN %s
+# RUN: llvm-objdump --macho --all-headers %t.bundle \
+# RUN: | FileCheck --check-prefix=NO-ID %s
+
+# RUN: %lld -dylib -o %t.dylib %t.o -install_name foo 2>&1
+# RUN: llvm-objdump --macho --all-headers %t.dylib \
+# RUN: | FileCheck --check-prefix=ID %s
+
+# WARN: warning: -install_name foo: ignored, only has effect with -dylib
+
+# NO-ID-NOT: LC_ID_DYLIB
+
+# ID: cmd LC_ID_DYLIB
+# ID-NEXT: cmdsize
+# LID-NEXT: name foo
+
+.globl _main
+_main:
+ ret
Index: lld/MachO/Driver.cpp
===================================================================
--- lld/MachO/Driver.cpp
+++ lld/MachO/Driver.cpp
@@ -827,8 +827,6 @@
symtab->addDynamicLookup(arg->getValue());
config->outputFile = args.getLastArgValue(OPT_o, "a.out");
- config->installName =
- args.getLastArgValue(OPT_install_name, config->outputFile);
config->headerPad = args::getHex(args, OPT_headerpad, /*Default=*/32);
config->headerPadMaxInstallNames =
args.hasArg(OPT_headerpad_max_install_names);
@@ -850,6 +848,15 @@
config->demangle = args.hasArg(OPT_demangle);
config->implicitDylibs = !args.hasArg(OPT_no_implicit_dylibs);
+ if (const Arg *arg = args.getLastArg(OPT_install_name)) {
+ if (config->outputType != MH_DYLIB)
+ warn(arg->getAsString(args) + ": ignored, only has effect with -dylib");
+ else
+ config->installName = arg->getValue();
+ } else if (config->outputType == MH_DYLIB) {
+ config->installName = config->outputFile;
+ }
+
if (args.hasArg(OPT_mark_dead_strippable_dylib)) {
if (config->outputType != MH_DYLIB)
warn("-mark_dead_strippable_dylib: ignored, only has effect with -dylib");
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D98259.329639.patch
Type: text/x-patch
Size: 2277 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210310/0d07f801/attachment.bin>
More information about the llvm-commits
mailing list