Index: lib/Driver/Tools.cpp =================================================================== --- lib/Driver/Tools.cpp +++ lib/Driver/Tools.cpp @@ -6646,6 +6646,17 @@ CmdArgs.push_back("elf32ppc_fbsd"); } + if (Arg *A = Args.getLastArg(options::OPT_G)) { + if (ToolChain.getArch() == llvm::Triple::mips || + ToolChain.getArch() == llvm::Triple::mipsel || + ToolChain.getArch() == llvm::Triple::mips64 || + ToolChain.getArch() == llvm::Triple::mips64el) { + StringRef v = A->getValue(); + CmdArgs.push_back(Args.MakeArgString("-G" + v)); + A->claim(); + } + } + if (Output.isFilename()) { CmdArgs.push_back("-o"); CmdArgs.push_back(Output.getFilename()); Index: test/Driver/freebsd.c =================================================================== --- test/Driver/freebsd.c +++ test/Driver/freebsd.c @@ -55,29 +55,39 @@ // and provide correct path to the dynamic linker for MIPS platforms. // Also verify that we tell the assembler to target the right ISA and ABI. // RUN: %clang %s -### -o %t.o 2>&1 \ -// RUN: -target mips-unknown-freebsd10.0 \ +// RUN: -target mips-unknown-freebsd10.0 -G0 \ // RUN: | FileCheck --check-prefix=CHECK-MIPS %s // CHECK-MIPS: "{{[^" ]*}}ld{{[^" ]*}}" // CHECK-MIPS: "-dynamic-linker" "{{.*}}/libexec/ld-elf.so.1" +// CHECK-MIPS: "-G0" // CHECK-MIPS-NOT: "--hash-style={{gnu|both}}" // RUN: %clang %s -### -o %t.o 2>&1 \ -// RUN: -target mipsel-unknown-freebsd10.0 \ +// RUN: -target mipsel-unknown-freebsd10.0 -G0 \ // RUN: | FileCheck --check-prefix=CHECK-MIPSEL %s // CHECK-MIPSEL: "{{[^" ]*}}ld{{[^" ]*}}" // CHECK-MIPSEL: "-dynamic-linker" "{{.*}}/libexec/ld-elf.so.1" +// CHECK-MIPSEL: "-G0" // CHECK-MIPSEL-NOT: "--hash-style={{gnu|both}}" // RUN: %clang %s -### 2>&1 \ -// RUN: -target mips64-unknown-freebsd10.0 \ +// RUN: -target mips64-unknown-freebsd10.0 -G0 \ // RUN: | FileCheck --check-prefix=CHECK-MIPS64 %s // CHECK-MIPS64: "{{[^" ]*}}ld{{[^" ]*}}" // CHECK-MIPS64: "-dynamic-linker" "{{.*}}/libexec/ld-elf.so.1" +// CHECK-MIPS64: "-G0" // CHECK-MIPS64-NOT: "--hash-style={{gnu|both}}" // RUN: %clang %s -### 2>&1 \ -// RUN: -target mips64el-unknown-freebsd10.0 \ +// RUN: -target mips64el-unknown-freebsd10.0 -G0 \ // RUN: | FileCheck --check-prefix=CHECK-MIPS64EL %s // CHECK-MIPS64EL: "{{[^" ]*}}ld{{[^" ]*}}" // CHECK-MIPS64EL: "-dynamic-linker" "{{.*}}/libexec/ld-elf.so.1" +// CHECK-MIPS64EL: "-G0" // CHECK-MIPS64EL-NOT: "--hash-style={{gnu|both}}" +// RUN: %clang %s -### 2>&1 \ +// RUN: -target mips64el-unknown-freebsd10.0 \ +// RUN: | FileCheck --check-prefix=CHECK-MIPS64EL-NOG0 %s +// CHECK-MIPS64EL-NOG0: "{{[^" ]*}}ld{{[^" ]*}}" +// CHECK-MIPS64EL-NOG0: "-dynamic-linker" "{{.*}}/libexec/ld-elf.so.1" +// CHECK-MIPS64EL-NOG0-NOT: "-G0" // RUN: %clang -no-canonical-prefixes -target x86_64-pc-freebsd8 -static %s \ // RUN: --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \