Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions clang/include/clang/Driver/Options.td
Original file line number Diff line number Diff line change
Expand Up @@ -5999,7 +5999,6 @@ def nofixprebinding : Flag<["-"], "nofixprebinding">;
def nolibc : Flag<["-"], "nolibc">;
def nomultidefs : Flag<["-"], "nomultidefs">;
def nopie : Flag<["-"], "nopie">, Visibility<[ClangOption, FlangOption]>, Flags<[TargetSpecific]>; // OpenBSD
def no_pie : Flag<["-"], "no-pie">, Visibility<[ClangOption, FlangOption]>;
def noprebind : Flag<["-"], "noprebind">;
def noprofilelib : Flag<["-"], "noprofilelib">;
def noseglinkedit : Flag<["-"], "noseglinkedit">;
Expand Down Expand Up @@ -6113,7 +6112,6 @@ defm pthread : BoolOption<"", "pthread",
PosFlag<SetTrue, [], [ClangOption], "Support POSIX threads in generated code">,
NegFlag<SetFalse>,
BothFlags<[], [ClangOption, CC1Option, FlangOption, FC1Option]>>;
def pie : Flag<["-"], "pie">, Group<Link_Group>;
def static_pie : Flag<["-"], "static-pie">, Group<Link_Group>;
def read__only__relocs : Separate<["-"], "read_only_relocs">;
def remap : Flag<["-"], "remap">;
Expand Down Expand Up @@ -6508,6 +6506,8 @@ def fpic : Flag<["-"], "fpic">, Group<f_Group>;
def fno_pic : Flag<["-"], "fno-pic">, Group<f_Group>;
def fpie : Flag<["-"], "fpie">, Group<f_Group>;
def fno_pie : Flag<["-"], "fno-pie">, Group<f_Group>;
def pie : Flag<["-"], "pie">, Group<Link_Group>;
def no_pie : Flag<["-"], "no-pie">, Group<Link_Group>;

} // let Vis = [Default, FlangOption]

Expand Down
106 changes: 106 additions & 0 deletions flang/test/Driver/linker-options.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
! Make sure that `-l` is "visible" to Flang's driver
! RUN: %flang -lpgmath -### %s

! Make sure that `-Wl` is "visible" to Flang's driver
! RUN: %flang -Wl,abs -### %s

! Make sure that `-fuse-ld' is "visible" to Flang's driver
! RUN: %flang -fuse-ld= -### %s

! Make sure that `-L' is "visible" to Flang's driver
! RUN: %flang -L/ -### %s

! ------------------------------------------------------------------------------
! Check that '-pie' and '-no-pie' are "visible" to Flang's driver. Check that
! the correct option is added to the link line.
!
! Last match "wins"
! RUN: %flang -target x86_64-pc-linux-gnu -pie -no-pie -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=NO-PIE
! RUN: %flang -target x86_64-pc-linux-gnu -no-pie -pie -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=PIE
! RUN: %flang -target x86_64-pc-linux-gnu -pie -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=PIE
! RUN: %flang -target x86_64-pc-linux-gnu -no-pie -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=NO-PIE
!
! Ensure that "-pie" is passed to the linker.
! RUN: %flang -target i386-unknown-freebsd -pie -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=PIE
! RUN: %flang -target aarch64-pc-linux-gnu -pie -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=PIE
!
! On Musl Linux, PIE is enabled by default, but can be disabled.
! RUN: %flang -target x86_64-linux-musl -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=PIE
! RUN: %flang -target i686-linux-musl -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=PIE
! RUN: %flang -target armv6-linux-musleabihf %s -### 2>&1 \
! RUN: | FileCheck %s --check-prefix=PIE
! RUN: %flang -target armv7-linux-musleabihf %s -### 2>&1 \
! RUN: | FileCheck %s --check-prefix=PIE
! RUN: %flang --target=x86_64-linux-musl -no-pie -### 2>&1 \
! RUN: | FileCheck %s --check-prefix=NO-PIE
!
! On OpenBSD, -pie is not passed to the linker, but can be forced.
! RUN: %flang -target amd64-pc-openbsd -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=NO-PIE
! RUN: %flang -target i386-pc-openbsd -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=NO-PIE
! RUN: %flang -target aarch64-unknown-openbsd -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=NO-PIE
! RUN: %flang -target arm-unknown-openbsd -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=NO-PIE
! RUN: %flang -target powerpc-unknown-openbsd -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=NO-PIE
! RUN: %flang -target sparc64-unknown-openbsd -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=NO-PIE
! RUN: %flang -target i386-pc-openbsd -pie -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=PIE
!
! On FreeBSD, -pie is not passed to the linker, but can be forced.
! RUN: %flang -target amd64-pc-freebsd -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=NO-PIE
! RUN: %flang -target i386-pc-freebsd -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=NO-PIE
! RUN: %flang -target aarch64-unknown-freebsd -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=NO-PIE
! RUN: %flang -target arm-unknown-freebsd -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=NO-PIE
! RUN: %flang -target powerpc-unknown-freebsd -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=NO-PIE
! RUN: %flang -target sparc64-unknown-freebsd -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=NO-PIE
! RUN: %flang -target i386-pc-freebsd -pie -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefix=PIE
!
! On AIX, -pie is never passed to the linker.
! RUN: %flang -target powerpc64-unknown-aix -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefixes=NO-PIE
! RUN: %flang -target powerpc64-unknown-aix -pie -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefixes=NO-PIE,UNUSED
! RUN: %flang -target powerpc64-unknown-aix -no-pie -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefixes=NO-PIE,UNUSED
!
! On MinGW and Windows, -pie may be specified, but it is ignored.
! RUN: %flang -target aarch64-pc-windows-gnu -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefixes=NO-PIE
! RUN: %flang -target x86_64-pc-windows-gnu -pie -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefixes=NO-PIE,UNUSED
! RUN: %flang -target i686-pc-windows-gnu -no-pie -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefixes=NO-PIE,UNUSED
! RUN: %flang -target aarch64-windows-msvc -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefixes=NO-PIE
! RUN: %flang -target aarch64-windows-msvc -pie -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefixes=NO-PIE,UNUSED
! RUN: %flang -target aarch64-windows-msvc -no-pie -### %s 2>&1 \
! RUN: | FileCheck %s --check-prefixes=NO-PIE,UNUSED
!
! PIE: "-pie"
! NO-PIE-NOT: "-pie"
! UNUSED: warning: argument unused during compilation: '{{(-no)?}}-pie'
! ------------------------------------------------------------------------------

program hello
write(*,*), "Hello world!"
end program hello
15 changes: 0 additions & 15 deletions flang/test/Driver/misc-flags.f90

This file was deleted.