@@ -1038,6 +1038,7 @@ elif run_os in ['windows-msvc']:
10381038 config .target_shared_library_suffix = '.dll'
10391039 config .target_sdk_name = 'windows'
10401040 config .target_runtime = 'native'
1041+ config .target_cc_options = ""
10411042
10421043 config .target_build_swift = \
10431044 ('%r -target %s %s %s %s %s -libc %s' % \
@@ -1065,7 +1066,8 @@ elif run_os in ['windows-msvc']:
10651066 config .target_add_rpath = r''
10661067
10671068 config .target_clang = \
1068- ('clang++ -target %s %s -fobjc-runtime=ios-5.0' % (config .variant_triple , clang_mcp_opt ))
1069+ ('clang++ -target %s %s %s -fobjc-runtime=ios-5.0' % \
1070+ (config .variant_triple , clang_mcp_opt , config .target_cc_options ))
10691071 config .target_ld = \
10701072 ('%r -libpath:%s' % (config .link , os .path .join (test_resource_dir , \
10711073 config .target_sdk_name )))
@@ -1105,24 +1107,28 @@ elif (run_os in ['linux-gnu', 'linux-gnueabihf', 'freebsd', 'openbsd', 'windows-
11051107 config .target_shared_library_prefix = 'lib'
11061108 config .target_shared_library_suffix = ".dll"
11071109 config .target_sdk_name = "cygwin"
1110+ config .target_cc_options = ""
11081111 elif run_os == 'windows-gnu' :
11091112 lit_config .note ("Testing MinGW " + config .variant_triple )
11101113 config .target_object_format = "coff"
11111114 config .target_shared_library_prefix = 'lib'
11121115 config .target_shared_library_suffix = ".dll"
11131116 config .target_sdk_name = "mingw"
1117+ config .target_cc_options = ""
11141118 elif run_os == 'freebsd' :
11151119 lit_config .note ("Testing FreeBSD " + config .variant_triple )
11161120 config .target_object_format = "elf"
11171121 config .target_shared_library_prefix = 'lib'
11181122 config .target_shared_library_suffix = ".so"
11191123 config .target_sdk_name = "freebsd"
1124+ config .target_cc_options = "-fPIE"
11201125 elif run_os == 'openbsd' :
11211126 lit_config .note ("Testing OpenBSD " + config .variant_triple )
11221127 config .target_object_format = "elf"
11231128 config .target_shared_library_prefix = 'lib'
11241129 config .target_shared_library_suffix = ".so"
11251130 config .target_sdk_name = "openbsd"
1131+ config .target_cc_options = "-fPIE"
11261132 elif kIsAndroid :
11271133 lit_config .note ("Testing Android " + config .variant_triple )
11281134 config .target_object_format = "elf"
@@ -1132,12 +1138,14 @@ elif (run_os in ['linux-gnu', 'linux-gnueabihf', 'freebsd', 'openbsd', 'windows-
11321138 # Needed by several ParseableInterface/swift_build_sdk_interfaces tests on
11331139 # Android
11341140 config .environment ['ANDROID_DATA' ] = os .environ ['ANDROID_DATA' ]
1141+ config .target_cc_options = "-fPIE"
11351142 else :
11361143 lit_config .note ("Testing Linux " + config .variant_triple )
11371144 config .target_object_format = "elf"
11381145 config .target_shared_library_prefix = 'lib'
11391146 config .target_shared_library_suffix = ".so"
11401147 config .target_sdk_name = "linux"
1148+ config .target_cc_options = "-fPIE"
11411149 config .target_runtime = "native"
11421150 config .target_swift_autolink_extract = inferSwiftBinary ("swift-autolink-extract" )
11431151
@@ -1195,8 +1203,8 @@ elif (run_os in ['linux-gnu', 'linux-gnueabihf', 'freebsd', 'openbsd', 'windows-
11951203 '%s -emit-pcm -target %s' %
11961204 (config .swiftc , config .variant_triple ))
11971205 config .target_clang = (
1198- "clang++ -target %s %s -fobjc-runtime=ios-5.0" %
1199- (config .variant_triple , clang_mcp_opt ))
1206+ "clang++ -target %s %s %s -fobjc-runtime=ios-5.0" %
1207+ (config .variant_triple , clang_mcp_opt , config . target_cc_options ))
12001208 config .target_ld = "ld -L%r" % (make_path (test_resource_dir , config .target_sdk_name ))
12011209elif run_os == 'linux-androideabi' or run_os == 'linux-android' :
12021210 # The module triple for Android ARMv7 seems to be canonicalized in LLVM
@@ -1205,6 +1213,7 @@ elif run_os == 'linux-androideabi' or run_os == 'linux-android':
12051213 target_specific_module_triple = re .sub (r'androideabi' , 'android' ,
12061214 target_specific_module_triple )
12071215 config .variant_triple = re .sub (r'androideabi' , 'android' , config .variant_triple )
1216+ config .target_cc_options = "-fPIE"
12081217 def get_architecture_value (** kwargs ):
12091218 result = kwargs [run_cpu ]
12101219 if result is None :
@@ -1325,7 +1334,7 @@ elif run_os == 'linux-androideabi' or run_os == 'linux-android':
13251334 'clang++' ,
13261335 '-target' , config .variant_triple ,
13271336 clang_mcp_opt , android_include_system_paths_opt ,
1328- '-fobjc-runtime=ios-5.0' ])
1337+ config . target_cc_options , '-fobjc-runtime=ios-5.0' ])
13291338 config .target_ld = ' ' .join ([
13301339 tools_directory ,
13311340 '-L%s' % make_path (test_resource_dir , config .target_sdk_name )])
0 commit comments