Clang knows how to use the gnu assembler directly from doing so on linux and
hurd. The existing support worked out of the box on cygwin and mingw and I was
able to bootstrap clang with it in both systems (with pending patches for the
new mingw abi, but that is independent of the assembler).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@195554
91177308-0d34-0410-b5e6-
96231b3b80d8
}
Tool *Generic_GCC::buildAssembler() const {
- return new tools::gcc::Assemble(*this);
+ return new tools::gnutools::Assemble(*this);
}
Tool *Generic_GCC::buildLinker() const {
}
}
-void gcc::Assemble::RenderExtraToolArgs(const JobAction &JA,
- ArgStringList &CmdArgs) const {
- CmdArgs.push_back("-c");
-}
-
void gcc::Link::RenderExtraToolArgs(const JobAction &JA,
ArgStringList &CmdArgs) const {
// The types are (hopefully) good enough.
llvm::opt::ArgStringList &CmdArgs) const;
};
- class LLVM_LIBRARY_VISIBILITY Assemble : public Common {
- public:
- Assemble(const ToolChain &TC) : Common("gcc::Assemble",
- "assembler (via gcc)", TC) {}
-
- virtual bool hasIntegratedCPP() const { return false; }
-
- virtual void RenderExtraToolArgs(const JobAction &JA,
- llvm::opt::ArgStringList &CmdArgs) const;
- };
-
class LLVM_LIBRARY_VISIBILITY Link : public Common {
public:
Link(const ToolChain &TC) : Common("gcc::Link",
// Basic binding.
// RUN: %clang -target i386-unknown-unknown -ccc-print-bindings %s 2>&1 | FileCheck %s --check-prefix=CHECK01
// CHECK01: "clang", inputs: ["{{.*}}bindings.c"], output: "{{.*}}.s"
-// CHECK01: "gcc::Assemble", inputs: ["{{.*}}.s"], output: "{{.*}}.o"
+// CHECK01: "GNU::Assemble", inputs: ["{{.*}}.s"], output: "{{.*}}.o"
// CHECK01: "gcc::Link", inputs: ["{{.*}}.o"], output: "a.out"
// Clang control options
// CHECK: "-Wall" "-Wdocumentation"
// CHECK: "-o" "{{[^"]+}}.s"
//
-// gcc-as
-// CHECK: gcc{{[^"]*}}"
-// CHECK-NOT: "-mlinker-version=10"
-// CHECK-NOT: "-Xclang"
-// CHECK-NOT: "foo-bar"
-// CHECK-NOT: "-Wall"
-// CHECK-NOT: "-Wdocumentation"
-// CHECK: -march
-// CHECK-NOT: "-mlinker-version=10"
-// CHECK-NOT: "-Xclang"
-// CHECK-NOT: "foo-bar"
-// CHECK-NOT: "-Wall"
-// CHECK-NOT: "-Wdocumentation"
+// gnu-as
+// CHECK: as{{[^"]*}}"
// CHECK: "-o" "{{[^"]+}}.o"
//
// gcc-ld
// Ensure we get a crazy triple here as we asked for one.
// CHECK: Target: unknown-unknown-unknown
//
-// Also, ensure we don't blindly hand our target selection logic down to GCC.
-// CHECK: "{{.*gcc(\.[Ee][Xx][Ee])?}}"
-// CHECK-NOT: "-target"
-// CHECK-NOT: "unknown-unknown-unknown"
-// CHECK: "-x" "assembler"
-//
// Also check that the legacy spelling works.
// RUN: %clang -no-canonical-prefixes -target unknown-unknown-unknown -c %s \
// RUN: -o %t.o -### 2>&1 | FileCheck %s
// RUN: %clang -target x86_64-unknown-unknown -c -x assembler %s -### 2>&1 \
// RUN: | FileCheck -check-prefix=X86_64 %s
-// X86_64: {{.*gcc.*-m64}}
+// X86_64: {{.*as.*--64}}
// RUN: %clang -target x86_64-unknown-unknown -c -x assembler %s -### -m32 2>&1 \
// RUN: | FileCheck -check-prefix=X86_64-M32 %s
-// X86_64-M32: {{.*gcc.*-m32}}
+// X86_64-M32: {{.*as.*--32}}
// RUN: %clang -target i386-unknown-unknown -c -x assembler %s -### 2>&1 \
// RUN: | FileCheck -check-prefix=I386 %s
-// I386: {{.*gcc.*-m32}}
+// I386: {{.*as.*--32}}
// RUN: %clang -target i386-unknown-unknown -c -x assembler %s -### -m64 2>&1 \
// RUN: | FileCheck -check-prefix=I386-M64 %s
-// I386-M64: {{.*gcc.*-m64}}
+// I386-M64: {{.*as.*--64}}
// RUN: %clang -target powerpc64-unknown-unknown -c -x assembler %s -### 2>&1 \
// RUN: | FileCheck -check-prefix=PPC64 %s
-// PPC64: {{.*gcc.*-m64}}
+// PPC64: {{.*as.*-a64}}
// RUN: %clang -target powerpc64-unknown-unknown -c -x assembler %s -### -m32 2>&1 \
// RUN: | FileCheck -check-prefix=PPC64-M32 %s
-// PPC64-M32: {{.*gcc.*-m32}}
+// PPC64-M32: {{.*as.*-a32}}
// RUN: %clang -target powerpc-unknown-unknown -c -x assembler %s -### 2>&1 \
// RUN: | FileCheck -check-prefix=PPC %s
-// PPC: {{.*gcc.*-m32}}
+// PPC: {{.*as.*-a32}}
// RUN: %clang -target powerpc-unknown-unknown -c -x assembler %s -### -m64 2>&1 \
// RUN: | FileCheck -check-prefix=PPC-M64 %s
-// PPC-M64: {{.*gcc.*-m64}}
+// PPC-M64: {{.*as.*-a64}}