diff options
| author | Ed Maste <emaste@freebsd.org> | 2016-04-12 21:11:46 +0000 |
|---|---|---|
| committer | Ed Maste <emaste@freebsd.org> | 2016-04-12 21:11:46 +0000 |
| commit | 1bc232d342cb9491a0683584df745c3c2fa393bd (patch) | |
| tree | 3f38f2dd53e1fb3886b8f1fe413f05ee54ad6375 | |
| parent | d5c75eed44e1231125935af5bf81067434c6f763 (diff) | |
| download | bcm5719-llvm-1bc232d342cb9491a0683584df745c3c2fa393bd.tar.gz bcm5719-llvm-1bc232d342cb9491a0683584df745c3c2fa393bd.zip | |
Always use --eh-frame-hdr on FreeBSD, even for -static
FreeBSD uses LLVM's libunwind on FreeBSD/arm64 today (and is expected to
use it more widely in the future), and it requires the EH frame segment
in static binaries.
This is the same as r203742 for NetBSD.
Differential Revision: http://reviews.llvm.org/D19029
llvm-svn: 266123
| -rw-r--r-- | clang/lib/Driver/Tools.cpp | 2 | ||||
| -rw-r--r-- | clang/test/Driver/freebsd.c | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 9fbb12c089c..f0b1de85b2a 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -8197,12 +8197,12 @@ void freebsd::Linker::ConstructJob(Compilation &C, const JobAction &JA, if (IsPIE) CmdArgs.push_back("-pie"); + CmdArgs.push_back("--eh-frame-hdr"); if (Args.hasArg(options::OPT_static)) { CmdArgs.push_back("-Bstatic"); } else { if (Args.hasArg(options::OPT_rdynamic)) CmdArgs.push_back("-export-dynamic"); - CmdArgs.push_back("--eh-frame-hdr"); if (Args.hasArg(options::OPT_shared)) { CmdArgs.push_back("-Bshareable"); } else { diff --git a/clang/test/Driver/freebsd.c b/clang/test/Driver/freebsd.c index 45e92043619..f008b76b93a 100644 --- a/clang/test/Driver/freebsd.c +++ b/clang/test/Driver/freebsd.c @@ -82,6 +82,7 @@ // RUN: %clang -no-canonical-prefixes -target x86_64-pc-freebsd8 -static %s \ // RUN: --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-STATIC %s +// CHECK-STATIC: ld{{.*}}" "--eh-frame-hdr" "-Bstatic" // CHECK-STATIC: crt1.o // CHECK-STATIC: crtbeginT.o |

