summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake/IAR
diff options
context:
space:
mode:
authorFelipe Torrezan <felipe.torrezan@iar.com>2024-09-06 11:44:46 (GMT)
committerBrad King <brad.king@kitware.com>2024-09-06 15:25:13 (GMT)
commit654c357a057841455d047a42effc388842d63d06 (patch)
tree652cf345de7a5f0d70887af581d672b559b2636e /Tests/RunCMake/IAR
parent59df9479cc4db8adb321b0fb37ada6c1b0572539 (diff)
downloadCMake-654c357a057841455d047a42effc388842d63d06.zip
CMake-654c357a057841455d047a42effc388842d63d06.tar.gz
CMake-654c357a057841455d047a42effc388842d63d06.tar.bz2
Tests/RunCMake/IAR: Fix ASM cases for XLINK targets
The IAR Assemblers seem to be missing some built-in target-identifier symbols. Instead, identify the affected target architectures by using their respective `__TID__` (Target Identifier) built-in symbols. Also make sure the test has an IAR Assembly implementation for each target. Fixes: #26267
Diffstat (limited to 'Tests/RunCMake/IAR')
-rw-r--r--Tests/RunCMake/IAR/RunCMakeTest.cmake11
-rw-r--r--Tests/RunCMake/IAR/module.asm80
2 files changed, 50 insertions, 41 deletions
diff --git a/Tests/RunCMake/IAR/RunCMakeTest.cmake b/Tests/RunCMake/IAR/RunCMakeTest.cmake
index 8d1d308..1d6bd4f 100644
--- a/Tests/RunCMake/IAR/RunCMakeTest.cmake
+++ b/Tests/RunCMake/IAR/RunCMakeTest.cmake
@@ -67,13 +67,10 @@ foreach(_iar_toolchain IN LISTS _iar_toolchains)
-DCMAKE_EXE_LINKER_FLAGS=${LINK_OPTS}
)
- # FIXME(#26267): ASM tests fail on Windows.
- if(NOT CMAKE_HOST_WIN32)
- run_toolchain(iar-asm
- -DCMAKE_SYSTEM_NAME=Generic
- -DCMAKE_ASM_COMPILER=${IAR_ASSEMBLER}
- )
- endif()
+ run_toolchain(iar-asm
+ -DCMAKE_SYSTEM_NAME=Generic
+ -DCMAKE_ASM_COMPILER=${IAR_ASSEMBLER}
+ )
run_toolchain(iar-lib
-DCMAKE_SYSTEM_NAME=Generic
diff --git a/Tests/RunCMake/IAR/module.asm b/Tests/RunCMake/IAR/module.asm
index 1e08236..cf4c6cd 100644
--- a/Tests/RunCMake/IAR/module.asm
+++ b/Tests/RunCMake/IAR/module.asm
@@ -1,41 +1,53 @@
-#if defined(__IASM8051__) || defined(__IASM430__)
- NAME main
-#else
- MODULE main
+#if !defined(__IAR_SYSTEMS_ASM__)
+#error This source file should be assembled by the IAR Assembler.
#endif
- PUBLIC main
- PUBLIC __iar_program_start
- PUBLIC __program_start
+#if !defined(__A430__) && \
+ !(((__TID__ >> 8) & 0x7F) == 32) && \
+ !(((__TID__ >> 8) & 0x7F) == 90) && \
+ !defined(__IASMARM__) && \
+ !defined(__IASMRH850__) && \
+ !defined(__IASMRISCV__) && \
+ !defined(__IASMRL78__) && \
+ !defined(__IASMRX__) && \
+ !defined(__IASMSTM8__)
+#error Unable to detect a supported target architecture.
+#endif
+ NAME main
+
+ PUBLIC main
+ PUBLIC __iar_program_start
+ PUBLIC __program_start
-#if defined(__IASMSTM8__)
- EXTERN CSTACK$$Limit
- SECTION `.near_func.text`:CODE:NOROOT(0)
-#elif defined(__IASMAVR__)
- ORG $0
- RJMP main
- RSEG CODE
-#elif defined(__IASM8051__)
- ORG 0FFFEh
- DC16 main
- RSEG RCODE
-?cmain:
-#elif defined(__IASM430__)
- ORG 0FFFEh
- DC16 init
- RSEG CSTACK
- RSEG CODE
-init:
- MOV #SFE(CSTACK), SP
-#else
- EXTERN __iar_static_base$$GPREL
- SECTION CSTACK:DATA:NOROOT(4)
- SECTION `.cstartup`:CODE(2)
- CODE
+#if defined(__A430__)
+ ORG 0FFFEh
+ DC16 init
+ RSEG CSTACK
+ RSEG CODE
+init: MOV #SFE(CSTACK), SP
+ RSEG CODE
+#elif (((__TID__ >> 8) & 0x7F) == 32)
+ ORG 0FFFEh ; __A8051__
+ DC16 main
+ RSEG RCODE
+#elif (((__TID__ >> 8) & 0x7F) == 90)
+ ORG $0 ; __AAVR__
+ RJMP main
+#elif defined(__IASMARM__) || \
+ defined(__IASMRH850__) || \
+ defined(__IASMRISCV__) || \
+ defined(__IASMRL78__) || \
+ defined(__IASMRX__)
+ EXTERN __iar_static_base$$GPREL
+ SECTION CSTACK:DATA:NOROOT(4)
+ SECTION `.cstartup`:CODE(2)
+ CODE
+#elif defined(__IASMSTM8__)
+ EXTERN CSTACK$$Limit
+ SECTION `.near_func.text`:CODE:NOROOT(0)
#endif
__program_start:
__iar_program_start:
-main:
- NOP
- END
+main: NOP
+ END