diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2012-12-31 22:41:36 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2012-12-31 22:41:36 +0000 |
commit | 6cc2a68c1ecb20054819a0b154ccfb7ff7498595 (patch) | |
tree | 9a559ace3742b1d27a4162b07d3be54482f88d25 | |
parent | 8c6fe1467094a8650bb0d3b19f0e001be13362f7 (diff) | |
download | clang-6cc2a68c1ecb20054819a0b154ccfb7ff7498595.tar.gz |
Silence some warnings and allow passing down some feature flags to the linker.
Patch by Brad Smith.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171329 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Driver/Tools.cpp | 12 | ||||
-rw-r--r-- | test/Driver/openbsd.c | 18 |
2 files changed, 30 insertions, 0 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index ed012931bd..53acad14a4 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -4682,6 +4682,14 @@ void openbsd::Link::ConstructJob(Compilation &C, const JobAction &JA, const Driver &D = getToolChain().getDriver(); ArgStringList CmdArgs; + // Silence warning for "clang -g foo.o -o foo" + Args.ClaimAllArgs(options::OPT_g_Group); + // and "clang -emit-llvm foo.o -o foo" + Args.ClaimAllArgs(options::OPT_emit_llvm); + // and for "clang -w foo.o -o foo". Other warning options are already + // handled somewhere else. + Args.ClaimAllArgs(options::OPT_w); + if ((!Args.hasArg(options::OPT_nostdlib)) && (!Args.hasArg(options::OPT_shared))) { CmdArgs.push_back("-e"); @@ -4736,6 +4744,10 @@ void openbsd::Link::ConstructJob(Compilation &C, const JobAction &JA, Args.AddAllArgs(CmdArgs, options::OPT_L); Args.AddAllArgs(CmdArgs, options::OPT_T_Group); Args.AddAllArgs(CmdArgs, options::OPT_e); + Args.AddAllArgs(CmdArgs, options::OPT_s); + Args.AddAllArgs(CmdArgs, options::OPT_t); + Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag); + Args.AddAllArgs(CmdArgs, options::OPT_r); AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs); diff --git a/test/Driver/openbsd.c b/test/Driver/openbsd.c index afd8b5ade9..5bd85f6cb2 100644 --- a/test/Driver/openbsd.c +++ b/test/Driver/openbsd.c @@ -7,3 +7,21 @@ // RUN: | FileCheck --check-prefix=CHECK-PG %s // CHECK-PG: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd" // CHECK-PG: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "{{.*}}.o" "-lgcc" "-lpthread_p" "-lc_p" "-lgcc" "{{.*}}crtend.o" + +// Check that the new linker flags are passed to OpenBSD +// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -r %s -### 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-LD-R %s +// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -s %s -### 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-LD-S %s +// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -t %s -### 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-LD-T %s +// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -Z %s -### 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-LD-Z %s +// CHECK-LD-R: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd" +// CHECK-LD-R: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "-L{{.*}}" "-r" "{{.*}}.o" "-lgcc" "-lc" "-lgcc" "{{.*}}crtend.o" +// CHECK-LD-S: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd" +// CHECK-LD-S: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "-L{{.*}}" "-s" "{{.*}}.o" "-lgcc" "-lc" "-lgcc" "{{.*}}crtend.o" +// CHECK-LD-T: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd" +// CHECK-LD-T: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "-L{{.*}}" "-t" "{{.*}}.o" "-lgcc" "-lc" "-lgcc" "{{.*}}crtend.o" +// CHECK-LD-Z: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd" +// CHECK-LD-Z: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "-L{{.*}}" "-Z" "{{.*}}.o" "-lgcc" "-lc" "-lgcc" "{{.*}}crtend.o" |