ENH: add a simple assembler test
Alex
This commit is contained in:
parent
a28b298aa6
commit
5021eb90b9
22
Tests/Assembler/CMakeLists.txt
Normal file
22
Tests/Assembler/CMakeLists.txt
Normal file
@ -0,0 +1,22 @@
|
||||
project(Assembler)
|
||||
|
||||
set(SRCS)
|
||||
|
||||
# if no file has been set as source and we are on linux with an x86 processor try to use the gas/as assembler
|
||||
if(NOT SRCS AND CMAKE_SYSTEM_NAME MATCHES Linux AND CMAKE_SYSTEM_PROCESSOR MATCHES "[ix].?86$")
|
||||
message(STATUS "Trying to enable ASM-ATT for Linux/x86")
|
||||
enable_language(ASM-ATT)
|
||||
if(CMAKE_ASM-ATT_COMPILER_WORKS)
|
||||
message(STATUS "Trying to enable ASM-ATT for Linux/x86 - succeeded")
|
||||
# this assembler file was created using gcc -S main.c
|
||||
set(SRCS main-linux-x86-gas.s)
|
||||
endif(CMAKE_ASM-ATT_COMPILER_WORKS)
|
||||
endif(NOT SRCS AND CMAKE_SYSTEM_NAME MATCHES Linux AND CMAKE_SYSTEM_PROCESSOR MATCHES "[ix].?86$")
|
||||
|
||||
if(NOT SRCS)
|
||||
message(STATUS "No assembler enabled, using C")
|
||||
set(SRCS main.c)
|
||||
endif(NOT SRCS)
|
||||
|
||||
add_executable(HelloAsm ${SRCS})
|
||||
set_target_properties(HelloAsm PROPERTIES LINKER_LANGUAGE C)
|
29
Tests/Assembler/main-linux-x86-gas.s
Normal file
29
Tests/Assembler/main-linux-x86-gas.s
Normal file
@ -0,0 +1,29 @@
|
||||
.file "main.c"
|
||||
.section .rodata
|
||||
.align 4
|
||||
.LC0:
|
||||
.string "hello assembler world, %d arguments given\n"
|
||||
.text
|
||||
.globl main
|
||||
.type main, @function
|
||||
main:
|
||||
leal 4(%esp), %ecx
|
||||
andl $-16, %esp
|
||||
pushl -4(%ecx)
|
||||
pushl %ebp
|
||||
movl %esp, %ebp
|
||||
pushl %ecx
|
||||
subl $20, %esp
|
||||
movl (%ecx), %eax
|
||||
movl %eax, 4(%esp)
|
||||
movl $.LC0, (%esp)
|
||||
call printf
|
||||
movl $0, %eax
|
||||
addl $20, %esp
|
||||
popl %ecx
|
||||
popl %ebp
|
||||
leal -4(%ecx), %esp
|
||||
ret
|
||||
.size main, .-main
|
||||
.ident "GCC: (GNU) 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)"
|
||||
.section .note.GNU-stack,"",@progbits
|
7
Tests/Assembler/main.c
Normal file
7
Tests/Assembler/main.c
Normal file
@ -0,0 +1,7 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
printf("hello assembler world, %d arguments given\n", argc);
|
||||
return 0;
|
||||
}
|
@ -47,6 +47,7 @@ IF(BUILD_TESTING)
|
||||
ADD_TEST_MACRO(MacroTest miniMacroTest)
|
||||
ADD_TEST_MACRO(Framework bar)
|
||||
ADD_TEST_MACRO(Properties Properties)
|
||||
ADD_TEST_MACRO(Assembler HelloAsm)
|
||||
|
||||
# add tests with more complex invocations
|
||||
ADD_TEST(TargetName ${CMAKE_CTEST_COMMAND}
|
||||
|
Loading…
x
Reference in New Issue
Block a user