Browse Source

Merge topic 'iar-fix-asm-windows'

654c357a05 Tests/RunCMake/IAR: Fix ASM cases for XLINK targets

Acked-by: Kitware Robot <[email protected]>
Merge-request: !9801
Brad King 1 year ago
parent
commit
ad88376506
2 changed files with 50 additions and 41 deletions
  1. 4 7
      Tests/RunCMake/IAR/RunCMakeTest.cmake
  2. 46 34
      Tests/RunCMake/IAR/module.asm

+ 4 - 7
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

+ 46 - 34
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