@@ -1038,6 +1038,7 @@ elif run_os in ['windows-msvc']:
1038
1038
config .target_shared_library_suffix = '.dll'
1039
1039
config .target_sdk_name = 'windows'
1040
1040
config .target_runtime = 'native'
1041
+ config .target_cc_options = ""
1041
1042
1042
1043
config .target_build_swift = \
1043
1044
('%r -target %s %s %s %s %s -libc %s' % \
@@ -1065,7 +1066,8 @@ elif run_os in ['windows-msvc']:
1065
1066
config .target_add_rpath = r''
1066
1067
1067
1068
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 ))
1069
1071
config .target_ld = \
1070
1072
('%r -libpath:%s' % (config .link , os .path .join (test_resource_dir , \
1071
1073
config .target_sdk_name )))
@@ -1105,24 +1107,28 @@ elif (run_os in ['linux-gnu', 'linux-gnueabihf', 'freebsd', 'openbsd', 'windows-
1105
1107
config .target_shared_library_prefix = 'lib'
1106
1108
config .target_shared_library_suffix = ".dll"
1107
1109
config .target_sdk_name = "cygwin"
1110
+ config .target_cc_options = ""
1108
1111
elif run_os == 'windows-gnu' :
1109
1112
lit_config .note ("Testing MinGW " + config .variant_triple )
1110
1113
config .target_object_format = "coff"
1111
1114
config .target_shared_library_prefix = 'lib'
1112
1115
config .target_shared_library_suffix = ".dll"
1113
1116
config .target_sdk_name = "mingw"
1117
+ config .target_cc_options = ""
1114
1118
elif run_os == 'freebsd' :
1115
1119
lit_config .note ("Testing FreeBSD " + config .variant_triple )
1116
1120
config .target_object_format = "elf"
1117
1121
config .target_shared_library_prefix = 'lib'
1118
1122
config .target_shared_library_suffix = ".so"
1119
1123
config .target_sdk_name = "freebsd"
1124
+ config .target_cc_options = "-fPIE"
1120
1125
elif run_os == 'openbsd' :
1121
1126
lit_config .note ("Testing OpenBSD " + config .variant_triple )
1122
1127
config .target_object_format = "elf"
1123
1128
config .target_shared_library_prefix = 'lib'
1124
1129
config .target_shared_library_suffix = ".so"
1125
1130
config .target_sdk_name = "openbsd"
1131
+ config .target_cc_options = "-fPIE"
1126
1132
elif kIsAndroid :
1127
1133
lit_config .note ("Testing Android " + config .variant_triple )
1128
1134
config .target_object_format = "elf"
@@ -1132,12 +1138,14 @@ elif (run_os in ['linux-gnu', 'linux-gnueabihf', 'freebsd', 'openbsd', 'windows-
1132
1138
# Needed by several ParseableInterface/swift_build_sdk_interfaces tests on
1133
1139
# Android
1134
1140
config .environment ['ANDROID_DATA' ] = os .environ ['ANDROID_DATA' ]
1141
+ config .target_cc_options = "-fPIE"
1135
1142
else :
1136
1143
lit_config .note ("Testing Linux " + config .variant_triple )
1137
1144
config .target_object_format = "elf"
1138
1145
config .target_shared_library_prefix = 'lib'
1139
1146
config .target_shared_library_suffix = ".so"
1140
1147
config .target_sdk_name = "linux"
1148
+ config .target_cc_options = "-fPIE"
1141
1149
config .target_runtime = "native"
1142
1150
config .target_swift_autolink_extract = inferSwiftBinary ("swift-autolink-extract" )
1143
1151
@@ -1195,8 +1203,8 @@ elif (run_os in ['linux-gnu', 'linux-gnueabihf', 'freebsd', 'openbsd', 'windows-
1195
1203
'%s -emit-pcm -target %s' %
1196
1204
(config .swiftc , config .variant_triple ))
1197
1205
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 ))
1200
1208
config .target_ld = "ld -L%r" % (make_path (test_resource_dir , config .target_sdk_name ))
1201
1209
elif run_os == 'linux-androideabi' or run_os == 'linux-android' :
1202
1210
# 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':
1205
1213
target_specific_module_triple = re .sub (r'androideabi' , 'android' ,
1206
1214
target_specific_module_triple )
1207
1215
config .variant_triple = re .sub (r'androideabi' , 'android' , config .variant_triple )
1216
+ config .target_cc_options = "-fPIE"
1208
1217
def get_architecture_value (** kwargs ):
1209
1218
result = kwargs [run_cpu ]
1210
1219
if result is None :
@@ -1325,7 +1334,7 @@ elif run_os == 'linux-androideabi' or run_os == 'linux-android':
1325
1334
'clang++' ,
1326
1335
'-target' , config .variant_triple ,
1327
1336
clang_mcp_opt , android_include_system_paths_opt ,
1328
- '-fobjc-runtime=ios-5.0' ])
1337
+ config . target_cc_options , '-fobjc-runtime=ios-5.0' ])
1329
1338
config .target_ld = ' ' .join ([
1330
1339
tools_directory ,
1331
1340
'-L%s' % make_path (test_resource_dir , config .target_sdk_name )])
0 commit comments