From 9bdf90e5c29032cc2a74c32167d1e5b0b9a8d5f5 Mon Sep 17 00:00:00 2001 From: Tim Northover Date: Tue, 1 Jul 2014 08:41:45 +0000 Subject: [PATCH] [mach-o]: make the default dylib install-name the output filename. llvm-svn: 212094 --- lld/lib/Driver/DarwinLdDriver.cpp | 4 ++++ lld/test/mach-o/dylib-install-names.yaml | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/lld/lib/Driver/DarwinLdDriver.cpp b/lld/lib/Driver/DarwinLdDriver.cpp index c667840..6686caf 100644 --- a/lld/lib/Driver/DarwinLdDriver.cpp +++ b/lld/lib/Driver/DarwinLdDriver.cpp @@ -191,6 +191,8 @@ bool DarwinLdDriver::parse(int argc, const char *argv[], // Handle -o xxx if (llvm::opt::Arg *outpath = parsedArgs->getLastArg(OPT_output)) ctx.setOutputPath(outpath->getValue()); + else + ctx.setOutputPath("a.out"); // Handle -dead_strip if (parsedArgs->getLastArg(OPT_dead_strip)) @@ -203,6 +205,8 @@ bool DarwinLdDriver::parse(int argc, const char *argv[], // Handle -install_name if (llvm::opt::Arg *installName = parsedArgs->getLastArg(OPT_install_name)) ctx.setInstallName(installName->getValue()); + else + ctx.setInstallName(ctx.outputPath()); // Handle -mark_dead_strippable_dylib if (parsedArgs->getLastArg(OPT_mark_dead_strippable_dylib)) diff --git a/lld/test/mach-o/dylib-install-names.yaml b/lld/test/mach-o/dylib-install-names.yaml index 6a1c6c2..05f268f 100644 --- a/lld/test/mach-o/dylib-install-names.yaml +++ b/lld/test/mach-o/dylib-install-names.yaml @@ -1,7 +1,20 @@ +# Check we accept -install_name correctly: # RUN: lld -flavor darwin -arch x86_64 -install_name libwibble.dylib -dylib %s -o %t.dylib # RUN: macho-dump %t.dylib | FileCheck %s --check-prefix=CHECK-BINARY-WRITE + +# Check we read LC_ID_DYLIB correctly: # RUN: lld -flavor darwin -arch x86_64 %p/Inputs/use-dylib-install-names.yaml %t.dylib -r -print_atoms | FileCheck %s --check-prefix=CHECK-BINARY-READ +# Check we default the install-name to the output file: +# RUN: lld -flavor darwin -arch x86_64 -dylib %s -o libwibble.dylib +# RUN: macho-dump libwibble.dylib | FileCheck %s --check-prefix=CHECK-BINARY-WRITE +# RUN: rm -f libwibble.dylib + +# Check the default output file is a.out, and this also goes into LC_ID_DYLIB. +# RUN: lld -flavor darwin -arch x86_64 -dylib %s +# RUN: macho-dump a.out | FileCheck %s --check-prefix=CHECK-BINARY-WRITE-AOUT +# RUN: rm -f a.out + --- !mach-o arch: x86_64 file-type: MH_OBJECT @@ -36,6 +49,10 @@ global-symbols: # CHECK-BINARY-WRITE-NEXT: ('size', 40) # CHECK-BINARY-WRITE-NEXT: ('install_name', 'libwibble.dylib') +# CHECK-BINARY-WRITE-AOUT: (('command', 13) +# CHECK-BINARY-WRITE-AOUT-NEXT: ('size', 32) +# CHECK-BINARY-WRITE-AOUT-NEXT: ('install_name', 'a.out') + # CHECK-BINARY-READ: shared-library-atoms: # CHECK-BINARY-READ: - name: _myGlobal # CHECK-BINARY-READ: load-name: libwibble.dylib -- 2.7.4