зеркало из https://github.com/microsoft/clang-1.git
Do not pass -pie flag to linker if -shared specified. This matches
the gcc driver and makes it possible to add -pie to $CC or similar and have it apply in the right places. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172753 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
205ecf0193
Коммит
17d481fb97
|
@ -5506,7 +5506,7 @@ void linuxtools::Link::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
if (!D.SysRoot.empty())
|
||||
CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
|
||||
|
||||
if (Args.hasArg(options::OPT_pie))
|
||||
if (Args.hasArg(options::OPT_pie) && !Args.hasArg(options::OPT_shared))
|
||||
CmdArgs.push_back("-pie");
|
||||
|
||||
if (Args.hasArg(options::OPT_rdynamic))
|
||||
|
|
|
@ -34,6 +34,8 @@
|
|||
//
|
||||
// CHECK-NON-DARWIN-DYNAMIC-NO-PIC: error: unsupported option '-mdynamic-no-pic' for target 'i386-unknown-unknown'
|
||||
//
|
||||
// CHECK-NO-PIE-NOT: "-pie"
|
||||
//
|
||||
// RUN: %clang -c %s -target i386-unknown-unknown -### 2>&1 \
|
||||
// RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC
|
||||
// RUN: %clang -c %s -target i386-unknown-unknown -fpic -### 2>&1 \
|
||||
|
@ -127,6 +129,10 @@
|
|||
// RUN: %clang -c %s -target i386-unknown-unknown -static -fPIC -### 2>&1 \
|
||||
// RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC
|
||||
//
|
||||
// On Linux, disregard -pie if we have -shared.
|
||||
// RUN: %clang %s -target i386-unknown-linux -shared -pie -### 2>&1 \
|
||||
// RUN: | FileCheck %s --check-prefix=CHECK-NO-PIE
|
||||
//
|
||||
// Darwin is a beautiful and unique snowflake when it comes to these flags.
|
||||
// When targetting a 32-bit darwin system, the -fno-* flag variants work and
|
||||
// disable PIC, but any other flag enables PIC (*not* PIE) even if the flag
|
||||
|
|
Загрузка…
Ссылка в новой задаче