Skip to content

Commit b0a6b20

Browse files
committed
Add support for Thumb targets, make Linux-armv7 default to thumbv7.
Requires clang change apple/swift-clang@b071a9a
1 parent 89c5491 commit b0a6b20

File tree

5 files changed

+9
-3
lines changed

5 files changed

+9
-3
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
400400
set(SWIFT_PRIMARY_VARIANT_ARCH_default "x86_64")
401401
# FIXME: This only matches ARMv7l (by far the most common variant).
402402
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7l")
403-
configure_sdk_unix(LINUX "Linux" "linux" "linux" "armv7" "armv7-unknown-linux-gnueabihf")
403+
configure_sdk_unix(LINUX "Linux" "linux" "linux" "armv7" "thumbv7-unknown-linux-gnueabihf")
404404
set(SWIFT_HOST_VARIANT_ARCH "armv7")
405405
set(SWIFT_PRIMARY_VARIANT_ARCH_default "armv7")
406406
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64")

lib/Basic/LangOptions.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ std::pair<bool, bool> LangOptions::setTarget(llvm::Triple triple) {
110110
// Set the "arch" target configuration.
111111
switch (Target.getArch()) {
112112
case llvm::Triple::ArchType::arm:
113+
case llvm::Triple::ArchType::thumb:
113114
addTargetConfigOption("arch", "arm");
114115
break;
115116
case llvm::Triple::ArchType::aarch64:

lib/Driver/ToolChains.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,6 +1052,8 @@ toolchains::GenericUnix::constructInvocation(const LinkJobAction &job,
10521052
break;
10531053
case llvm::Triple::arm:
10541054
case llvm::Triple::armeb:
1055+
case llvm::Triple::thumb:
1056+
case llvm::Triple::thumbeb:
10551057
// Avoid emitting R_ARM_REL32 which is not supported by shared objects
10561058
// on ELF targets.
10571059
Arguments.push_back("-Wl,-Bsymbolic");

stdlib/public/runtime/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,9 @@ foreach(sdk ${SWIFT_CONFIGURED_SDKS})
7575
if("${sdk}" STREQUAL "LINUX" OR "${sdk}" STREQUAL "FREEBSD")
7676
foreach(arch ${SWIFT_SDK_${sdk}_ARCHITECTURES})
7777
if ("${sdk}" STREQUAL "LINUX" AND "${arch}" STREQUAL "armv7")
78-
# Handle special case for ARM on Linux.
78+
# Handle special case for ARM/Thumb on Linux.
7979
# FIXME: Find a more elegant way to handle this case.
80-
foreach(subarch armv7;armv7l)
80+
foreach(subarch armv7;armv7l;thumbv7;thumbv7l)
8181
set(arch_subdir "${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${subarch}")
8282

8383
configure_file(

test/1_stdlib/FloatingPointIR.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ func testConstantFoldFloatLiterals() {
4242
// armv7: call void @{{.*}}_TF15FloatingPointIR13acceptFloat32FSfT_(float 1.000000e+00)
4343
// armv7: call void @{{.*}}_TF15FloatingPointIR13acceptFloat64FSdT_(double 1.000000e+00)
4444

45+
// thumbv7: call void @{{.*}}_TF15FloatingPointIR13acceptFloat32FSfT_(float 1.000000e+00)
46+
// thumbv7: call void @{{.*}}_TF15FloatingPointIR13acceptFloat64FSdT_(double 1.000000e+00)
47+
4548
// armv7k: call void @{{.*}}_TF15FloatingPointIR13acceptFloat32FSfT_(float 1.000000e+00)
4649
// armv7k: call void @{{.*}}_TF15FloatingPointIR13acceptFloat64FSdT_(double 1.000000e+00)
4750

0 commit comments

Comments
 (0)