diff options
author | Joerg Sonnenberger <joerg@bec.de> | 2014-08-13 14:17:32 +0000 |
---|---|---|
committer | Joerg Sonnenberger <joerg@bec.de> | 2014-08-13 14:17:32 +0000 |
commit | dd13b30c29ecd669703d67459e2c91a693796dbf (patch) | |
tree | cdc4cf28997da3f713e209f74a3b77077f46fc00 | |
parent | 5eddaac17f2289ee2811f3e235da2bfba714b4b2 (diff) | |
download | bcm5719-llvm-dd13b30c29ecd669703d67459e2c91a693796dbf.tar.gz bcm5719-llvm-dd13b30c29ecd669703d67459e2c91a693796dbf.zip |
For NetBSD, use the same settings for PPC64 as for PPC when it comes to
integrated assembler, libc++ and libgcc. Set emulation for ld for both
platforms for correct -m32 handling.
llvm-svn: 215551
-rw-r--r-- | clang/lib/Driver/ToolChains.cpp | 5 | ||||
-rw-r--r-- | clang/lib/Driver/ToolChains.h | 9 | ||||
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 12 | ||||
-rw-r--r-- | clang/test/Driver/Inputs/basic_netbsd_tree/usr/lib/powerpc/crti.o | 0 | ||||
-rw-r--r-- | clang/test/Driver/netbsd.c | 30 | ||||
-rw-r--r-- | clang/test/Driver/netbsd.cpp | 24 |
6 files changed, 73 insertions, 7 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index 9b880807c52..aedc2798175 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -2609,6 +2609,9 @@ NetBSD::NetBSD(const Driver &D, const llvm::Triple& Triple, const ArgList &Args) else if (tools::mips::hasMipsAbiArg(Args, "64")) getFilePaths().push_back("=/usr/lib/64"); break; + case llvm::Triple::ppc: + getFilePaths().push_back("=/usr/lib/powerpc"); + break; case llvm::Triple::sparc: getFilePaths().push_back("=/usr/lib/sparc"); break; @@ -2651,6 +2654,8 @@ NetBSD::GetCXXStdlibType(const ArgList &Args) const { case llvm::Triple::thumb: case llvm::Triple::thumbeb: case llvm::Triple::ppc: + case llvm::Triple::ppc64: + case llvm::Triple::ppc64le: case llvm::Triple::x86: case llvm::Triple::x86_64: return ToolChain::CST_Libcxx; diff --git a/clang/lib/Driver/ToolChains.h b/clang/lib/Driver/ToolChains.h index 556e8845fe7..e8503e0333d 100644 --- a/clang/lib/Driver/ToolChains.h +++ b/clang/lib/Driver/ToolChains.h @@ -622,9 +622,14 @@ public: return true; } bool IsIntegratedAssemblerDefault() const override { - if (getTriple().getArch() == llvm::Triple::ppc) + switch (getTriple().getArch()) { + case llvm::Triple::ppc: + case llvm::Triple::ppc64: + case llvm::Triple::ppc64le: return true; - return Generic_ELF::IsIntegratedAssemblerDefault(); + default: + return Generic_ELF::IsIntegratedAssemblerDefault(); + } } protected: diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 21ffce24432..801ba2f3e19 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -6922,6 +6922,16 @@ void netbsd::Link::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("elf64ltsmip"); } break; + case llvm::Triple::ppc: + CmdArgs.push_back("-m"); + CmdArgs.push_back("elf32ppc_nbsd"); + break; + + case llvm::Triple::ppc64: + case llvm::Triple::ppc64le: + CmdArgs.push_back("-m"); + CmdArgs.push_back("elf64ppc"); + break; case llvm::Triple::sparc: CmdArgs.push_back("-m"); @@ -6982,6 +6992,8 @@ void netbsd::Link::ConstructJob(Compilation &C, const JobAction &JA, case llvm::Triple::thumb: case llvm::Triple::thumbeb: case llvm::Triple::ppc: + case llvm::Triple::ppc64: + case llvm::Triple::ppc64le: case llvm::Triple::x86: case llvm::Triple::x86_64: useLibgcc = false; diff --git a/clang/test/Driver/Inputs/basic_netbsd_tree/usr/lib/powerpc/crti.o b/clang/test/Driver/Inputs/basic_netbsd_tree/usr/lib/powerpc/crti.o new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/clang/test/Driver/Inputs/basic_netbsd_tree/usr/lib/powerpc/crti.o diff --git a/clang/test/Driver/netbsd.c b/clang/test/Driver/netbsd.c index 014bb5ff130..55144051df6 100644 --- a/clang/test/Driver/netbsd.c +++ b/clang/test/Driver/netbsd.c @@ -38,8 +38,11 @@ // RUN: -no-integrated-as --sysroot=%S/Inputs/basic_netbsd_tree %s -### 2>&1 \ // RUN: | FileCheck -check-prefix=SPARC64 %s // RUN: %clang -no-canonical-prefixes -target powerpc--netbsd \ -// RUN: -no-integrated-as --sysroot=%S/Inputs/basic_netbsd_tree %s -### 2>&1 \ +// RUN: --sysroot=%S/Inputs/basic_netbsd_tree %s -### 2>&1 \ // RUN: | FileCheck -check-prefix=POWERPC %s +// RUN: %clang -no-canonical-prefixes -target powerpc64--netbsd \ +// RUN: --sysroot=%S/Inputs/basic_netbsd_tree %s -### 2>&1 \ +// RUN: | FileCheck -check-prefix=POWERPC64 %s // RUN: %clang -no-canonical-prefixes -target x86_64--netbsd -static \ // RUN: --sysroot=%S/Inputs/basic_netbsd_tree %s -### 2>&1 \ @@ -74,6 +77,9 @@ // RUN: %clang -no-canonical-prefixes -target powerpc--netbsd -static \ // RUN: --sysroot=%S/Inputs/basic_netbsd_tree %s -### 2>&1 \ // RUN: | FileCheck -check-prefix=S-POWERPC %s +// RUN: %clang -no-canonical-prefixes -target powerpc64--netbsd -static \ +// RUN: --sysroot=%S/Inputs/basic_netbsd_tree %s -### 2>&1 \ +// RUN: | FileCheck -check-prefix=S-POWERPC64 %s // X86_64: clang{{.*}}" "-cc1" "-triple" "x86_64--netbsd" // X86_64: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/libexec/ld.elf_so" @@ -176,11 +182,20 @@ // POWERPC: clang{{.*}}" "-cc1" "-triple" "powerpc--netbsd" // POWERPC: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/libexec/ld.elf_so" +// POWERPC: "-m" "elf32ppc_nbsd" // POWERPC: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" -// POWERPC: "{{.*}}/usr/lib{{/|\\\\}}crti.o" +// POWERPC: "{{.*}}/usr/lib{{/|\\\\}}powerpc{{/|\\\\}}crti.o" // POWERPC: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc" // POWERPC: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" +// POWERPC64: clang{{.*}}" "-cc1" "-triple" "powerpc64--netbsd" +// POWERPC64: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/libexec/ld.elf_so" +// POWERPC64: "-m" "elf64ppc" +// POWERPC64: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" +// POWERPC64: "{{.*}}/usr/lib{{/|\\\\}}crti.o" +// POWERPC64: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc" +// POWERPC64: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" + // S-X86_64: clang{{.*}}" "-cc1" "-triple" "x86_64--netbsd" // S-X86_64: ld{{.*}}" "--eh-frame-hdr" "-Bstatic" // S-X86_64: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" "{{.*}}/usr/lib{{/|\\\\}}crti.o" @@ -256,7 +271,16 @@ // S-POWERPC: clang{{.*}}" "-cc1" "-triple" "powerpc--netbsd" // S-POWERPC: ld{{.*}}" "--eh-frame-hdr" "-Bstatic" +// S-POWERPC: "-m" "elf32ppc_nbsd" // S-POWERPC: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" -// S-POWERPC: "{{.*}}/usr/lib{{/|\\\\}}crti.o" +// S-POWERPC: "{{.*}}/usr/lib{{/|\\\\}}powerpc{{/|\\\\}}crti.o" // S-POWERPC: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc" // S-POWERPC: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" + +// S-POWERPC64: clang{{.*}}" "-cc1" "-triple" "powerpc64--netbsd" +// S-POWERPC64: ld{{.*}}" "--eh-frame-hdr" "-Bstatic" +// S-POWERPC64: "-m" "elf64ppc" +// S-POWERPC64: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" +// S-POWERPC64: "{{.*}}/usr/lib{{/|\\\\}}crti.o" +// S-POWERPC64: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc" +// S-POWERPC64: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" diff --git a/clang/test/Driver/netbsd.cpp b/clang/test/Driver/netbsd.cpp index 6ab6cb7727f..e386a212de2 100644 --- a/clang/test/Driver/netbsd.cpp +++ b/clang/test/Driver/netbsd.cpp @@ -28,6 +28,9 @@ // RUN: %clangxx -no-canonical-prefixes -target powerpc--netbsd \ // RUN: --sysroot=%S/Inputs/basic_netbsd_tree %s -### 2>&1 \ // RUN: | FileCheck -check-prefix=POWERPC %s +// RUN: %clangxx -no-canonical-prefixes -target powerpc64--netbsd \ +// RUN: --sysroot=%S/Inputs/basic_netbsd_tree %s -### 2>&1 \ +// RUN: | FileCheck -check-prefix=POWERPC64 %s // RUN: %clangxx -no-canonical-prefixes -target x86_64--netbsd -static \ // RUN: --sysroot=%S/Inputs/basic_netbsd_tree %s -### 2>&1 \ @@ -59,6 +62,9 @@ // RUN: %clangxx -no-canonical-prefixes -target powerpc--netbsd -static \ // RUN: --sysroot=%S/Inputs/basic_netbsd_tree %s -### 2>&1 \ // RUN: | FileCheck -check-prefix=S-POWERPC %s +// RUN: %clangxx -no-canonical-prefixes -target powerpc64--netbsd -static \ +// RUN: --sysroot=%S/Inputs/basic_netbsd_tree %s -### 2>&1 \ +// RUN: | FileCheck -check-prefix=S-POWERPC64 %s // X86_64: clang{{.*}}" "-cc1" "-triple" "x86_64--netbsd" // X86_64: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/libexec/ld.elf_so" @@ -124,10 +130,17 @@ // POWERPC: clang{{.*}}" "-cc1" "-triple" "powerpc--netbsd" // POWERPC: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/libexec/ld.elf_so" // POWERPC: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" -// POWERPC: "{{.*}}/usr/lib{{/|\\\\}}crti.o" +// POWERPC: "{{.*}}/usr/lib{{/|\\\\}}powerpc{{/|\\\\}}crti.o" // POWERPC: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc++" // POWERPC: "-lm" "-lc" "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" +// POWERPC64: clang{{.*}}" "-cc1" "-triple" "powerpc64--netbsd" +// POWERPC64: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/libexec/ld.elf_so" +// POWERPC64: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" +// POWERPC64: "{{.*}}/usr/lib{{/|\\\\}}crti.o" +// POWERPC64: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc++" +// POWERPC64: "-lm" "-lc" "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" + // S-X86_64: clang{{.*}}" "-cc1" "-triple" "x86_64--netbsd" // S-X86_64: ld{{.*}}" "--eh-frame-hdr" "-Bstatic" // S-X86_64: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" "{{.*}}/usr/lib{{/|\\\\}}crti.o" @@ -192,6 +205,13 @@ // S-POWERPC: clang{{.*}}" "-cc1" "-triple" "powerpc--netbsd" // S-POWERPC: ld{{.*}}" "--eh-frame-hdr" "-Bstatic" // S-POWERPC: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" -// S-POWERPC: "{{.*}}/usr/lib{{/|\\\\}}crti.o" +// S-POWERPC: "{{.*}}/usr/lib{{/|\\\\}}powerpc{{/|\\\\}}crti.o" // S-POWERPC: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc++" // S-POWERPC: "-lm" "-lc" "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" + +// S-POWERPC64: clang{{.*}}" "-cc1" "-triple" "powerpc64--netbsd" +// S-POWERPC64: ld{{.*}}" "--eh-frame-hdr" "-Bstatic" +// S-POWERPC64: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" +// S-POWERPC64: "{{.*}}/usr/lib{{/|\\\\}}crti.o" +// S-POWERPC64: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc++" +// S-POWERPC64: "-lm" "-lc" "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o" |