diff options
author | Felipe Torrezan <felipe.torrezan@iar.com> | 2024-09-06 11:44:46 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2024-09-06 15:25:13 (GMT) |
commit | 654c357a057841455d047a42effc388842d63d06 (patch) | |
tree | 652cf345de7a5f0d70887af581d672b559b2636e /Tests/RunCMake/IAR | |
parent | 59df9479cc4db8adb321b0fb37ada6c1b0572539 (diff) | |
download | CMake-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.cmake | 11 | ||||
-rw-r--r-- | Tests/RunCMake/IAR/module.asm | 80 |
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 |