├── interpreter ├── build │ ├── CMakeFiles │ │ ├── progress.marks │ │ ├── TargetDirectories.txt │ │ ├── cmake.check_cache │ │ ├── lanai-int.dir │ │ │ ├── progress.make │ │ │ ├── main.cpp.o │ │ │ ├── linker.cpp.o │ │ │ ├── interpreter.cpp.o │ │ │ ├── link.txt │ │ │ ├── flags.make │ │ │ ├── cmake_clean.cmake │ │ │ ├── depend.make │ │ │ ├── depend.internal │ │ │ ├── DependInfo.cmake │ │ │ ├── CXX.includecache │ │ │ └── build.make │ │ ├── feature_tests.bin │ │ ├── 3.2.2 │ │ │ ├── CompilerIdC │ │ │ │ ├── a.out │ │ │ │ └── CMakeCCompilerId.c │ │ │ ├── CompilerIdCXX │ │ │ │ ├── a.out │ │ │ │ └── CMakeCXXCompilerId.cpp │ │ │ ├── CMakeDetermineCompilerABI_C.bin │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin │ │ │ ├── CMakeSystem.cmake │ │ │ ├── CMakeCCompiler.cmake │ │ │ └── CMakeCXXCompiler.cmake │ │ ├── CMakeDirectoryInformation.cmake │ │ ├── feature_tests.c │ │ ├── Makefile.cmake │ │ ├── Makefile2 │ │ ├── feature_tests.cxx │ │ └── CMakeOutput.log │ ├── lanai-int │ ├── cmake_install.cmake │ ├── lanai-int.cbp │ ├── Makefile │ └── CMakeCache.txt ├── linker.h ├── CMakeLists.txt ├── main.cpp ├── interpreter.h ├── linker.cpp └── interpreter.cpp ├── llvm ├── example.o ├── build.sh ├── Dockerfile ├── example.c └── example.s ├── README.md └── interpreter-sol └── lanai.sol /interpreter/build/CMakeFiles/progress.marks: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /llvm/example.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TrueBitProject/lanai/HEAD/llvm/example.o -------------------------------------------------------------------------------- /interpreter/build/lanai-int: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TrueBitProject/lanai/HEAD/interpreter/build/lanai-int -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/TargetDirectories.txt: -------------------------------------------------------------------------------- 1 | /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/lanai-int.dir 2 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/cmake.check_cache: -------------------------------------------------------------------------------- 1 | # This file is generated by cmake for dependency checking of the CMakeCache.txt file 2 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/lanai-int.dir/progress.make: -------------------------------------------------------------------------------- 1 | CMAKE_PROGRESS_1 = 1 2 | CMAKE_PROGRESS_2 = 2 3 | CMAKE_PROGRESS_3 = 3 4 | 5 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/feature_tests.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TrueBitProject/lanai/HEAD/interpreter/build/CMakeFiles/feature_tests.bin -------------------------------------------------------------------------------- /interpreter/linker.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | struct Linker 6 | { 7 | static uint32_t link(std::string& data); 8 | }; 9 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/3.2.2/CompilerIdC/a.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TrueBitProject/lanai/HEAD/interpreter/build/CMakeFiles/3.2.2/CompilerIdC/a.out -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/lanai-int.dir/main.cpp.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TrueBitProject/lanai/HEAD/interpreter/build/CMakeFiles/lanai-int.dir/main.cpp.o -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/3.2.2/CompilerIdCXX/a.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TrueBitProject/lanai/HEAD/interpreter/build/CMakeFiles/3.2.2/CompilerIdCXX/a.out -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/lanai-int.dir/linker.cpp.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TrueBitProject/lanai/HEAD/interpreter/build/CMakeFiles/lanai-int.dir/linker.cpp.o -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/lanai-int.dir/interpreter.cpp.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TrueBitProject/lanai/HEAD/interpreter/build/CMakeFiles/lanai-int.dir/interpreter.cpp.o -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/3.2.2/CMakeDetermineCompilerABI_C.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TrueBitProject/lanai/HEAD/interpreter/build/CMakeFiles/3.2.2/CMakeDetermineCompilerABI_C.bin -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/3.2.2/CMakeDetermineCompilerABI_CXX.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TrueBitProject/lanai/HEAD/interpreter/build/CMakeFiles/3.2.2/CMakeDetermineCompilerABI_CXX.bin -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/lanai-int.dir/link.txt: -------------------------------------------------------------------------------- 1 | /usr/bin/c++ -std=c++11 -Wall -g CMakeFiles/lanai-int.dir/main.cpp.o CMakeFiles/lanai-int.dir/interpreter.cpp.o CMakeFiles/lanai-int.dir/linker.cpp.o -o lanai-int -rdynamic 2 | -------------------------------------------------------------------------------- /interpreter/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0.0) 2 | 3 | project(lanai-int VERSION "0.0.1") 4 | 5 | set(CMAKE_CXX_FLAGS "-std=c++11 -Wall") 6 | 7 | aux_source_directory(. SRC_LIST) 8 | add_executable(lanai-int ${SRC_LIST}) 9 | -------------------------------------------------------------------------------- /llvm/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -ev 4 | 5 | docker build -t clang-lanai . 6 | docker run -v $(pwd):/mnt -t clang-lanai clang --target=lanai -S /mnt/example.c 7 | docker run -v $(pwd):/mnt -t clang-lanai clang --target=lanai -c /mnt/example.c 8 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/lanai-int.dir/flags.make: -------------------------------------------------------------------------------- 1 | # CMAKE generated file: DO NOT EDIT! 2 | # Generated by "Unix Makefiles" Generator, CMake Version 3.2 3 | 4 | # compile CXX with /usr/bin/c++ 5 | CXX_FLAGS = -std=c++11 -Wall -g 6 | 7 | CXX_DEFINES = 8 | 9 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/lanai-int.dir/cmake_clean.cmake: -------------------------------------------------------------------------------- 1 | file(REMOVE_RECURSE 2 | "CMakeFiles/lanai-int.dir/main.cpp.o" 3 | "CMakeFiles/lanai-int.dir/interpreter.cpp.o" 4 | "CMakeFiles/lanai-int.dir/linker.cpp.o" 5 | "lanai-int.pdb" 6 | "lanai-int" 7 | ) 8 | 9 | # Per-language clean rules from dependency scanning. 10 | foreach(lang CXX) 11 | include(CMakeFiles/lanai-int.dir/cmake_clean_${lang}.cmake OPTIONAL) 12 | endforeach() 13 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/3.2.2/CMakeSystem.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_HOST_SYSTEM "Linux-3.19.0-32-generic") 2 | set(CMAKE_HOST_SYSTEM_NAME "Linux") 3 | set(CMAKE_HOST_SYSTEM_VERSION "3.19.0-32-generic") 4 | set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") 5 | 6 | 7 | 8 | set(CMAKE_SYSTEM "Linux-3.19.0-32-generic") 9 | set(CMAKE_SYSTEM_NAME "Linux") 10 | set(CMAKE_SYSTEM_VERSION "3.19.0-32-generic") 11 | set(CMAKE_SYSTEM_PROCESSOR "x86_64") 12 | 13 | set(CMAKE_CROSSCOMPILING "FALSE") 14 | 15 | set(CMAKE_SYSTEM_LOADED 1) 16 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/lanai-int.dir/depend.make: -------------------------------------------------------------------------------- 1 | # CMAKE generated file: DO NOT EDIT! 2 | # Generated by "Unix Makefiles" Generator, CMake Version 3.2 3 | 4 | CMakeFiles/lanai-int.dir/interpreter.cpp.o: ../interpreter.cpp 5 | CMakeFiles/lanai-int.dir/interpreter.cpp.o: ../interpreter.h 6 | 7 | CMakeFiles/lanai-int.dir/linker.cpp.o: ../linker.cpp 8 | CMakeFiles/lanai-int.dir/linker.cpp.o: ../linker.h 9 | 10 | CMakeFiles/lanai-int.dir/main.cpp.o: ../interpreter.h 11 | CMakeFiles/lanai-int.dir/main.cpp.o: ../linker.h 12 | CMakeFiles/lanai-int.dir/main.cpp.o: ../main.cpp 13 | 14 | -------------------------------------------------------------------------------- /llvm/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:xenial 2 | 3 | RUN apt-get update && apt-get -y install cmake git build-essential vim python clang 4 | RUN apt-get -y remove gcc g++ 5 | RUN mkdir /src 6 | RUN cd /src && git clone http://llvm.org/git/llvm.git 7 | RUN cd /src/llvm/tools && git clone http://llvm.org/git/clang.git 8 | RUN mkdir /src/llvm/build 9 | RUN sed -i -e s/Hexagon/Lanai/ /src/llvm/CMakeLists.txt 10 | RUN cd /src/llvm/build && cmake -DLLVM_TARGETS_TO_BUILD="X86;Lanai" .. 11 | RUN cd /src/llvm/build && make -j 3 12 | RUN cd /src/llvm/build && make install 13 | 14 | WORKDIR /mnt/ 15 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/lanai-int.dir/depend.internal: -------------------------------------------------------------------------------- 1 | # CMAKE generated file: DO NOT EDIT! 2 | # Generated by "Unix Makefiles" Generator, CMake Version 3.2 3 | 4 | CMakeFiles/lanai-int.dir/interpreter.cpp.o 5 | /home/christian/ethereum/lanai/interpreter/interpreter.cpp 6 | /home/christian/ethereum/lanai/interpreter/interpreter.h 7 | CMakeFiles/lanai-int.dir/linker.cpp.o 8 | /home/christian/ethereum/lanai/interpreter/linker.cpp 9 | /home/christian/ethereum/lanai/interpreter/linker.h 10 | CMakeFiles/lanai-int.dir/main.cpp.o 11 | /home/christian/ethereum/lanai/interpreter/interpreter.h 12 | /home/christian/ethereum/lanai/interpreter/linker.h 13 | /home/christian/ethereum/lanai/interpreter/main.cpp 14 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/CMakeDirectoryInformation.cmake: -------------------------------------------------------------------------------- 1 | # CMAKE generated file: DO NOT EDIT! 2 | # Generated by "Unix Makefiles" Generator, CMake Version 3.2 3 | 4 | # Relative path conversion top directories. 5 | set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/christian/ethereum/lanai/interpreter") 6 | set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/christian/ethereum/lanai/interpreter/build") 7 | 8 | # Force unix paths in dependencies. 9 | set(CMAKE_FORCE_UNIX_PATHS 1) 10 | 11 | 12 | # The C and CXX include file regular expressions for this directory. 13 | set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") 14 | set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") 15 | set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) 16 | set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) 17 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/feature_tests.c: -------------------------------------------------------------------------------- 1 | 2 | const char features[] = {"" 3 | "C_FEATURE:" 4 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 5 | "1" 6 | #else 7 | "0" 8 | #endif 9 | "c_function_prototypes\n" 10 | "C_FEATURE:" 11 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 12 | "1" 13 | #else 14 | "0" 15 | #endif 16 | "c_restrict\n" 17 | "C_FEATURE:" 18 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201000L 19 | "1" 20 | #else 21 | "0" 22 | #endif 23 | "c_static_assert\n" 24 | "C_FEATURE:" 25 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 26 | "1" 27 | #else 28 | "0" 29 | #endif 30 | "c_variadic_macros\n" 31 | 32 | }; 33 | 34 | int main(int argc, char** argv) { (void)argv; return features[argc]; } 35 | -------------------------------------------------------------------------------- /llvm/example.c: -------------------------------------------------------------------------------- 1 | unsigned mod(unsigned a, unsigned b) 2 | { 3 | while (a >= b) a -= b; 4 | return a; 5 | } 6 | 7 | int prime(int n) 8 | { 9 | int i = 2; 10 | int c; 11 | int count = 0; 12 | int primes[200]; 13 | int lastprime = 2; 14 | 15 | while (count < n) 16 | { 17 | for ( c = 2 ; c <= i - 1 ; c++ ) 18 | if ( mod(i, c) == 0 ) 19 | break; 20 | if ( c == i ) 21 | primes[count++] = lastprime = i; 22 | i++; 23 | } 24 | return lastprime; 25 | } 26 | 27 | int simple(int a) 28 | { 29 | return a + 20; 30 | } 31 | 32 | int compare(unsigned a, unsigned b) 33 | { 34 | return a >= b; 35 | } 36 | 37 | int select(int a, int b) 38 | { 39 | if (a < b) 40 | return 1; 41 | else 42 | return 2; 43 | } 44 | 45 | int fill() 46 | { 47 | int x[20]; 48 | for (int i = 0; i < 20; i++) 49 | x[i] = i; 50 | return x[19]; 51 | } 52 | 53 | int main() 54 | { 55 | // return simple(20); 56 | // return mod(0x24, 3); 57 | return prime(20); 58 | // return fill(); 59 | } 60 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/lanai-int.dir/DependInfo.cmake: -------------------------------------------------------------------------------- 1 | # The set of languages for which implicit dependencies are needed: 2 | set(CMAKE_DEPENDS_LANGUAGES 3 | "CXX" 4 | ) 5 | # The set of files for implicit dependencies of each language: 6 | set(CMAKE_DEPENDS_CHECK_CXX 7 | "/home/christian/ethereum/lanai/interpreter/interpreter.cpp" "/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/lanai-int.dir/interpreter.cpp.o" 8 | "/home/christian/ethereum/lanai/interpreter/linker.cpp" "/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/lanai-int.dir/linker.cpp.o" 9 | "/home/christian/ethereum/lanai/interpreter/main.cpp" "/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/lanai-int.dir/main.cpp.o" 10 | ) 11 | set(CMAKE_CXX_COMPILER_ID "GNU") 12 | 13 | # Targets to which this target links. 14 | set(CMAKE_TARGET_LINKED_INFO_FILES 15 | ) 16 | 17 | # The include file search paths: 18 | set(CMAKE_C_TARGET_INCLUDE_PATH 19 | ) 20 | set(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) 21 | set(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) 22 | set(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) 23 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/lanai-int.dir/CXX.includecache: -------------------------------------------------------------------------------- 1 | #IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">]) 2 | 3 | #IncludeRegexScan: ^.*$ 4 | 5 | #IncludeRegexComplain: ^$ 6 | 7 | #IncludeRegexTransform: 8 | 9 | /home/christian/ethereum/lanai/interpreter/interpreter.cpp 10 | string 11 | - 12 | iostream 13 | - 14 | iomanip 15 | - 16 | exception 17 | - 18 | functional 19 | - 20 | map 21 | - 22 | interpreter.h 23 | /home/christian/ethereum/lanai/interpreter/interpreter.h 24 | 25 | /home/christian/ethereum/lanai/interpreter/interpreter.h 26 | vector 27 | - 28 | array 29 | - 30 | 31 | /home/christian/ethereum/lanai/interpreter/linker.cpp 32 | fstream 33 | - 34 | iostream 35 | - 36 | climits 37 | - 38 | string 39 | - 40 | exception 41 | - 42 | functional 43 | - 44 | map 45 | - 46 | elf.h 47 | - 48 | linker.h 49 | /home/christian/ethereum/lanai/interpreter/linker.h 50 | 51 | /home/christian/ethereum/lanai/interpreter/linker.h 52 | string 53 | - 54 | 55 | /home/christian/ethereum/lanai/interpreter/main.cpp 56 | fstream 57 | - 58 | climits 59 | - 60 | iostream 61 | - 62 | iomanip 63 | - 64 | string 65 | - 66 | interpreter.h 67 | /home/christian/ethereum/lanai/interpreter/interpreter.h 68 | linker.h 69 | /home/christian/ethereum/lanai/interpreter/linker.h 70 | 71 | -------------------------------------------------------------------------------- /interpreter/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | #include "interpreter.h" 8 | #include "linker.h" 9 | 10 | using namespace std; 11 | 12 | string readfile(string const& file) 13 | { 14 | ifstream in(file, std::ifstream::binary); 15 | if (!in) 16 | throw new exception; 17 | 18 | in.seekg(0, in.end); 19 | size_t length = in.tellg(); 20 | in.seekg(0, in.beg); 21 | 22 | string data; 23 | data.resize(length); 24 | in.read(const_cast(data.data()), length); 25 | 26 | return data; 27 | } 28 | 29 | int main(int argc, char *argv[]) 30 | { 31 | if (argc != 2) 32 | { 33 | cout << "Usage: " << argv[0] << " " << endl; 34 | cout << " Runs the function called \"run\" in the specified lanai object file." << endl; 35 | return 1; 36 | } 37 | string data = readfile(argv[1]); 38 | 39 | uint32_t entrypoint = Linker::link(data); 40 | cout << "Linked code: "; 41 | for (uint32_t i = 0; i < data.size(); ++i) 42 | cout << hex << setfill('0') << setw(2) << unsigned(uint8_t(data[i])); 43 | cout << endl; 44 | cout << "Entrypoint: 0x" << hex << entrypoint << endl; 45 | 46 | Interpreter interpreter(data); 47 | interpreter.run(entrypoint, 0x100000, true); 48 | 49 | return 0; 50 | } 51 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Lanai Interpreter 2 | 3 | Lanai is a processor architecture developed by google. 4 | The reason it is used for TrueBit is because it is a very 5 | simplistic architecture (it is easy to implement an interpreter 6 | in Solidity and it does not have complex memory access patterns) 7 | and there is an actively maintained compiler from C/C++/Rust 8 | to this architecture (llvm). 9 | 10 | ## How to run the example 11 | 12 | To run the example, you have to compile the C code into a 13 | Lanai binary. This will also compile clang for lanai in a docker container 14 | because it is still an experimental backend: 15 | 16 | cd llvm 17 | ./build.sh 18 | 19 | This will generate ``example.o`` (the binary) and ``example.s`` 20 | (the lanai assembly for reference). 21 | 22 | Now compile the interpreter: 23 | 24 | cd ../interpreter 25 | mkdir build && cd build 26 | cmake .. && make 27 | 28 | Now you can run the binary file in the interpreter: 29 | 30 | ./lanai-int ../../llvm/example.o 31 | 32 | It will tell you the result of the computation and the number 33 | of steps it took. You can set a verbosity flag in ``main.cpp`` 34 | to get more output. 35 | 36 | Note that the number of steps is quite large because Lanai does not 37 | have multiplication opcodes, but that is mostly irrelevant for 38 | Truebit because of its logarithmic scalability - it is possible to 39 | verify 1000000 computational steps in about five rounds and 40 | for 100000000 steps it takes eight rounds. -------------------------------------------------------------------------------- /interpreter/build/cmake_install.cmake: -------------------------------------------------------------------------------- 1 | # Install script for directory: /home/christian/ethereum/lanai/interpreter 2 | 3 | # Set the install prefix 4 | if(NOT DEFINED CMAKE_INSTALL_PREFIX) 5 | set(CMAKE_INSTALL_PREFIX "/usr/local") 6 | endif() 7 | string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") 8 | 9 | # Set the install configuration name. 10 | if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) 11 | if(BUILD_TYPE) 12 | string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" 13 | CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") 14 | else() 15 | set(CMAKE_INSTALL_CONFIG_NAME "Debug") 16 | endif() 17 | message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") 18 | endif() 19 | 20 | # Set the component getting installed. 21 | if(NOT CMAKE_INSTALL_COMPONENT) 22 | if(COMPONENT) 23 | message(STATUS "Install component: \"${COMPONENT}\"") 24 | set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") 25 | else() 26 | set(CMAKE_INSTALL_COMPONENT) 27 | endif() 28 | endif() 29 | 30 | # Install shared libraries without execute permission? 31 | if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) 32 | set(CMAKE_INSTALL_SO_NO_EXE "1") 33 | endif() 34 | 35 | if(CMAKE_INSTALL_COMPONENT) 36 | set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") 37 | else() 38 | set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") 39 | endif() 40 | 41 | string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT 42 | "${CMAKE_INSTALL_MANIFEST_FILES}") 43 | file(WRITE "/home/christian/ethereum/lanai/interpreter/build/${CMAKE_INSTALL_MANIFEST}" 44 | "${CMAKE_INSTALL_MANIFEST_CONTENT}") 45 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/Makefile.cmake: -------------------------------------------------------------------------------- 1 | # CMAKE generated file: DO NOT EDIT! 2 | # Generated by "Unix Makefiles" Generator, CMake Version 3.2 3 | 4 | # The generator used is: 5 | set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") 6 | 7 | # The top level Makefile was generated from the following files: 8 | set(CMAKE_MAKEFILE_DEPENDS 9 | "CMakeCache.txt" 10 | "../CMakeLists.txt" 11 | "CMakeFiles/3.2.2/CMakeCCompiler.cmake" 12 | "CMakeFiles/3.2.2/CMakeCXXCompiler.cmake" 13 | "CMakeFiles/3.2.2/CMakeSystem.cmake" 14 | "/usr/share/cmake-3.2/Modules/CMakeCInformation.cmake" 15 | "/usr/share/cmake-3.2/Modules/CMakeCXXInformation.cmake" 16 | "/usr/share/cmake-3.2/Modules/CMakeCommonLanguageInclude.cmake" 17 | "/usr/share/cmake-3.2/Modules/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake" 18 | "/usr/share/cmake-3.2/Modules/CMakeFindCodeBlocks.cmake" 19 | "/usr/share/cmake-3.2/Modules/CMakeGenericSystem.cmake" 20 | "/usr/share/cmake-3.2/Modules/CMakeSystemSpecificInformation.cmake" 21 | "/usr/share/cmake-3.2/Modules/CMakeSystemSpecificInitialize.cmake" 22 | "/usr/share/cmake-3.2/Modules/Compiler/GNU-C.cmake" 23 | "/usr/share/cmake-3.2/Modules/Compiler/GNU-CXX.cmake" 24 | "/usr/share/cmake-3.2/Modules/Compiler/GNU.cmake" 25 | "/usr/share/cmake-3.2/Modules/Platform/Linux-GNU-C.cmake" 26 | "/usr/share/cmake-3.2/Modules/Platform/Linux-GNU-CXX.cmake" 27 | "/usr/share/cmake-3.2/Modules/Platform/Linux-GNU.cmake" 28 | "/usr/share/cmake-3.2/Modules/Platform/Linux.cmake" 29 | "/usr/share/cmake-3.2/Modules/Platform/UnixPaths.cmake" 30 | ) 31 | 32 | # The corresponding makefile is: 33 | set(CMAKE_MAKEFILE_OUTPUTS 34 | "Makefile" 35 | "CMakeFiles/cmake.check_cache" 36 | ) 37 | 38 | # Byproducts of CMake generate step: 39 | set(CMAKE_MAKEFILE_PRODUCTS 40 | "CMakeFiles/CMakeDirectoryInformation.cmake" 41 | ) 42 | 43 | # Dependency information for all targets: 44 | set(CMAKE_DEPEND_INFO_FILES 45 | "CMakeFiles/lanai-int.dir/DependInfo.cmake" 46 | ) 47 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/3.2.2/CMakeCCompiler.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_C_COMPILER "/usr/bin/cc") 2 | set(CMAKE_C_COMPILER_ARG1 "") 3 | set(CMAKE_C_COMPILER_ID "GNU") 4 | set(CMAKE_C_COMPILER_VERSION "4.8.4") 5 | set(CMAKE_C_COMPILE_FEATURES "c_function_prototypes;c_restrict;c_variadic_macros;c_static_assert") 6 | set(CMAKE_C90_COMPILE_FEATURES "c_function_prototypes") 7 | set(CMAKE_C99_COMPILE_FEATURES "c_restrict;c_variadic_macros") 8 | set(CMAKE_C11_COMPILE_FEATURES "c_static_assert") 9 | 10 | set(CMAKE_C_PLATFORM_ID "Linux") 11 | set(CMAKE_C_SIMULATE_ID "") 12 | set(CMAKE_C_SIMULATE_VERSION "") 13 | 14 | set(CMAKE_AR "/usr/bin/ar") 15 | set(CMAKE_RANLIB "/usr/bin/ranlib") 16 | set(CMAKE_LINKER "/usr/bin/ld") 17 | set(CMAKE_COMPILER_IS_GNUCC 1) 18 | set(CMAKE_C_COMPILER_LOADED 1) 19 | set(CMAKE_C_COMPILER_WORKS TRUE) 20 | set(CMAKE_C_ABI_COMPILED TRUE) 21 | set(CMAKE_COMPILER_IS_MINGW ) 22 | set(CMAKE_COMPILER_IS_CYGWIN ) 23 | if(CMAKE_COMPILER_IS_CYGWIN) 24 | set(CYGWIN 1) 25 | set(UNIX 1) 26 | endif() 27 | 28 | set(CMAKE_C_COMPILER_ENV_VAR "CC") 29 | 30 | if(CMAKE_COMPILER_IS_MINGW) 31 | set(MINGW 1) 32 | endif() 33 | set(CMAKE_C_COMPILER_ID_RUN 1) 34 | set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) 35 | set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) 36 | set(CMAKE_C_LINKER_PREFERENCE 10) 37 | 38 | # Save compiler ABI information. 39 | set(CMAKE_C_SIZEOF_DATA_PTR "8") 40 | set(CMAKE_C_COMPILER_ABI "ELF") 41 | set(CMAKE_C_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") 42 | 43 | if(CMAKE_C_SIZEOF_DATA_PTR) 44 | set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") 45 | endif() 46 | 47 | if(CMAKE_C_COMPILER_ABI) 48 | set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") 49 | endif() 50 | 51 | if(CMAKE_C_LIBRARY_ARCHITECTURE) 52 | set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") 53 | endif() 54 | 55 | 56 | 57 | 58 | set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "c") 59 | set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/4.8;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") 60 | set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /interpreter/interpreter.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | struct MachineState 5 | { 6 | std::string memory; 7 | std::array registers{{ 8 | 0, 0, 0, 0, 0, 0, 9 | 0, 0, 0, 0, 0, 0, 0, 0, 10 | 0, 0, 0, 0, 0, 0, 0, 0, 11 | 0, 0, 0, 0, 0, 0, 0, 0 12 | }}; 13 | 14 | uint32_t& pc = registers[0]; 15 | uint32_t& sp = registers[2]; 16 | uint32_t& fp = registers[3]; 17 | uint32_t& rv = registers[6]; 18 | uint32_t& rr1 = registers[8]; 19 | uint32_t& rr2 = registers[9]; 20 | uint32_t& rca = registers[13]; 21 | uint32_t pcDelay[3] = {uint32_t(-1), uint32_t(-1), uint32_t(-1)}; 22 | bool zero = false; 23 | bool negative = false; 24 | bool overflow = false; 25 | bool carry = false; 26 | 27 | // Calling conventions: 28 | // memory at fp contains return address, r6 holds first argument, rv/r8 receives return value 29 | }; 30 | 31 | class Interpreter 32 | { 33 | public: 34 | Interpreter(std::string const& code): code(code) {} 35 | 36 | uint32_t run(uint32_t entrypoint, uint32_t memsize, bool verbose = false); 37 | 38 | private: 39 | void initState(uint32_t entrypoint, uint32_t exitpoint, uint32_t memsize); 40 | 41 | void updatePC(); 42 | 43 | void printState(); 44 | void printMemory(); 45 | 46 | uint32_t currentInstruction() const; 47 | 48 | bool condition(uint16_t condition, bool invert) const; 49 | uint32_t operation(uint16_t op, uint32_t a, uint32_t b, bool updateFlags, bool arithmeticShift = false); 50 | 51 | static std::string operationName(uint16_t op); 52 | 53 | /// @returns the current value of the register i 54 | uint32_t reg(uint16_t i) const; 55 | void regStore(uint16_t i, uint32_t value, unsigned delayForPC); 56 | uint32_t pc() const { return reg(2); } 57 | 58 | static bool isPC(uint16_t i) { return i == 2; } 59 | 60 | static uint32_t readWord(std::string const& data, uint32_t pos); 61 | static uint32_t readByte(std::string const& data, uint32_t pos); 62 | 63 | uint32_t memWord(uint32_t pos); 64 | uint32_t memByte(uint32_t pos); 65 | 66 | void memStoreWord(uint32_t pos, uint32_t value); 67 | void memStoreByte(uint32_t pos, uint32_t value); 68 | 69 | uint32_t steps = 0; 70 | 71 | MachineState state; 72 | 73 | std::string const code; 74 | }; 75 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/Makefile2: -------------------------------------------------------------------------------- 1 | # CMAKE generated file: DO NOT EDIT! 2 | # Generated by "Unix Makefiles" Generator, CMake Version 3.2 3 | 4 | # Default target executed when no arguments are given to make. 5 | default_target: all 6 | .PHONY : default_target 7 | 8 | # The main recursive all target 9 | all: 10 | .PHONY : all 11 | 12 | # The main recursive preinstall target 13 | preinstall: 14 | .PHONY : preinstall 15 | 16 | #============================================================================= 17 | # Special targets provided by cmake. 18 | 19 | # Disable implicit rules so canonical targets will work. 20 | .SUFFIXES: 21 | 22 | # Remove some rules from gmake that .SUFFIXES does not remove. 23 | SUFFIXES = 24 | 25 | .SUFFIXES: .hpux_make_needs_suffix_list 26 | 27 | # Suppress display of executed commands. 28 | $(VERBOSE).SILENT: 29 | 30 | # A target that is always out of date. 31 | cmake_force: 32 | .PHONY : cmake_force 33 | 34 | #============================================================================= 35 | # Set environment variables for the build. 36 | 37 | # The shell in which to execute make rules. 38 | SHELL = /bin/sh 39 | 40 | # The CMake executable. 41 | CMAKE_COMMAND = /usr/bin/cmake 42 | 43 | # The command to remove a file. 44 | RM = /usr/bin/cmake -E remove -f 45 | 46 | # Escaping for special characters. 47 | EQUALS = = 48 | 49 | # The top-level source directory on which CMake was run. 50 | CMAKE_SOURCE_DIR = /home/christian/ethereum/lanai/interpreter 51 | 52 | # The top-level build directory on which CMake was run. 53 | CMAKE_BINARY_DIR = /home/christian/ethereum/lanai/interpreter/build 54 | 55 | #============================================================================= 56 | # Target rules for target CMakeFiles/lanai-int.dir 57 | 58 | # All Build rule for target. 59 | CMakeFiles/lanai-int.dir/all: 60 | $(MAKE) -f CMakeFiles/lanai-int.dir/build.make CMakeFiles/lanai-int.dir/depend 61 | $(MAKE) -f CMakeFiles/lanai-int.dir/build.make CMakeFiles/lanai-int.dir/build 62 | $(CMAKE_COMMAND) -E cmake_progress_report /home/christian/ethereum/lanai/interpreter/build/CMakeFiles 1 2 3 63 | @echo "Built target lanai-int" 64 | .PHONY : CMakeFiles/lanai-int.dir/all 65 | 66 | # Include target in all. 67 | all: CMakeFiles/lanai-int.dir/all 68 | .PHONY : all 69 | 70 | # Build rule for subdir invocation for target. 71 | CMakeFiles/lanai-int.dir/rule: cmake_check_build_system 72 | $(CMAKE_COMMAND) -E cmake_progress_start /home/christian/ethereum/lanai/interpreter/build/CMakeFiles 3 73 | $(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/lanai-int.dir/all 74 | $(CMAKE_COMMAND) -E cmake_progress_start /home/christian/ethereum/lanai/interpreter/build/CMakeFiles 0 75 | .PHONY : CMakeFiles/lanai-int.dir/rule 76 | 77 | # Convenience name for target. 78 | lanai-int: CMakeFiles/lanai-int.dir/rule 79 | .PHONY : lanai-int 80 | 81 | # clean rule for target. 82 | CMakeFiles/lanai-int.dir/clean: 83 | $(MAKE) -f CMakeFiles/lanai-int.dir/build.make CMakeFiles/lanai-int.dir/clean 84 | .PHONY : CMakeFiles/lanai-int.dir/clean 85 | 86 | # clean rule for target. 87 | clean: CMakeFiles/lanai-int.dir/clean 88 | .PHONY : clean 89 | 90 | #============================================================================= 91 | # Special targets to cleanup operation of make. 92 | 93 | # Special rule to run CMake to check the build system integrity. 94 | # No rule that depends on this can have commands that come from listfiles 95 | # because they might be regenerated. 96 | cmake_check_build_system: 97 | $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 98 | .PHONY : cmake_check_build_system 99 | 100 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/3.2.2/CMakeCXXCompiler.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_CXX_COMPILER "/usr/bin/c++") 2 | set(CMAKE_CXX_COMPILER_ARG1 "") 3 | set(CMAKE_CXX_COMPILER_ID "GNU") 4 | set(CMAKE_CXX_COMPILER_VERSION "4.8.4") 5 | set(CMAKE_CXX_COMPILE_FEATURES "cxx_template_template_parameters;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") 6 | set(CMAKE_CXX98_COMPILE_FEATURES "cxx_template_template_parameters") 7 | set(CMAKE_CXX11_COMPILE_FEATURES "cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") 8 | set(CMAKE_CXX14_COMPILE_FEATURES "") 9 | 10 | set(CMAKE_CXX_PLATFORM_ID "Linux") 11 | set(CMAKE_CXX_SIMULATE_ID "") 12 | set(CMAKE_CXX_SIMULATE_VERSION "") 13 | 14 | set(CMAKE_AR "/usr/bin/ar") 15 | set(CMAKE_RANLIB "/usr/bin/ranlib") 16 | set(CMAKE_LINKER "/usr/bin/ld") 17 | set(CMAKE_COMPILER_IS_GNUCXX 1) 18 | set(CMAKE_CXX_COMPILER_LOADED 1) 19 | set(CMAKE_CXX_COMPILER_WORKS TRUE) 20 | set(CMAKE_CXX_ABI_COMPILED TRUE) 21 | set(CMAKE_COMPILER_IS_MINGW ) 22 | set(CMAKE_COMPILER_IS_CYGWIN ) 23 | if(CMAKE_COMPILER_IS_CYGWIN) 24 | set(CYGWIN 1) 25 | set(UNIX 1) 26 | endif() 27 | 28 | set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") 29 | 30 | if(CMAKE_COMPILER_IS_MINGW) 31 | set(MINGW 1) 32 | endif() 33 | set(CMAKE_CXX_COMPILER_ID_RUN 1) 34 | set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) 35 | set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;mm;CPP) 36 | set(CMAKE_CXX_LINKER_PREFERENCE 30) 37 | set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) 38 | 39 | # Save compiler ABI information. 40 | set(CMAKE_CXX_SIZEOF_DATA_PTR "8") 41 | set(CMAKE_CXX_COMPILER_ABI "ELF") 42 | set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") 43 | 44 | if(CMAKE_CXX_SIZEOF_DATA_PTR) 45 | set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") 46 | endif() 47 | 48 | if(CMAKE_CXX_COMPILER_ABI) 49 | set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") 50 | endif() 51 | 52 | if(CMAKE_CXX_LIBRARY_ARCHITECTURE) 53 | set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") 54 | endif() 55 | 56 | 57 | 58 | 59 | set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;c") 60 | set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/4.8;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") 61 | set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /interpreter/linker.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include 10 | 11 | #include "linker.h" 12 | 13 | using namespace std; 14 | 15 | template 16 | T swap_endian(T u) 17 | { 18 | union 19 | { 20 | T u; 21 | unsigned char u8[sizeof(T)]; 22 | } source, dest; 23 | 24 | source.u = u; 25 | 26 | for (size_t k = 0; k < sizeof(T); k++) 27 | dest.u8[k] = source.u8[sizeof(T) - k - 1]; 28 | 29 | return dest.u; 30 | } 31 | 32 | static inline Elf32_Shdr* elf_sheader(Elf32_Ehdr* hdr) 33 | { 34 | return reinterpret_cast(reinterpret_cast(hdr) + swap_endian(hdr->e_shoff)); 35 | } 36 | 37 | static inline Elf32_Shdr* elf_section(Elf32_Ehdr* hdr, int idx) 38 | { 39 | return &elf_sheader(hdr)[idx]; 40 | } 41 | 42 | static uint32_t elf_get_symval(Elf32_Ehdr* hdr, Elf32_Sym* symbol) 43 | { 44 | if (swap_endian(symbol->st_shndx) == SHN_UNDEF) 45 | { 46 | cerr << "Value of external symbol requested." << endl; 47 | return 0; 48 | } 49 | else if (swap_endian(symbol->st_shndx) == SHN_ABS) 50 | return swap_endian(symbol->st_value); 51 | else 52 | { 53 | Elf32_Shdr* target = elf_section(hdr, swap_endian(symbol->st_shndx)); 54 | return swap_endian(symbol->st_value) + swap_endian(target->sh_offset); 55 | } 56 | } 57 | 58 | static uint32_t elf_get_symval(Elf32_Ehdr* hdr, int table, uint idx) 59 | { 60 | if (table == SHN_UNDEF || idx == SHN_UNDEF) 61 | return 0; 62 | Elf32_Shdr* symtab = elf_section(hdr, table); 63 | 64 | uint32_t symtab_entries = swap_endian(symtab->sh_size) / swap_endian(symtab->sh_entsize); 65 | if(idx >= symtab_entries) 66 | { 67 | cerr << "Symbol index out of range." << endl; 68 | throw new exception; 69 | } 70 | 71 | int symaddr = reinterpret_cast(hdr) + swap_endian(symtab->sh_offset); 72 | Elf32_Sym* symbol = &(reinterpret_cast(symaddr))[idx]; 73 | return elf_get_symval(hdr, symbol); 74 | } 75 | 76 | /// End of ELF tools 77 | 78 | uint32_t Linker::link(string& _data) 79 | { 80 | uint32_t entrypoint = 0; 81 | 82 | Elf32_Ehdr* hdr = reinterpret_cast(const_cast(_data.data())); 83 | Elf32_Shdr* strtab = elf_section(hdr, swap_endian(hdr->e_shstrndx)); 84 | // Iterate over section headers 85 | for (size_t i = 0; i < swap_endian(hdr->e_shnum); i++) { 86 | Elf32_Shdr* section = elf_section(hdr, i); 87 | 88 | // Apply relocations if this is a relocation section 89 | if (swap_endian(section->sh_type) == SHT_RELA) { 90 | // Process each entry in the table 91 | for (size_t idx = 0; idx < swap_endian(section->sh_size) / swap_endian(section->sh_entsize); idx++) { 92 | Elf32_Rela* reltab = &(reinterpret_cast(reinterpret_cast(hdr) + swap_endian(section->sh_offset)))[idx]; 93 | Elf32_Shdr* target = elf_section(hdr, swap_endian(section->sh_info)); 94 | uint32_t ref = swap_endian(target->sh_offset) + swap_endian(reltab->r_offset); 95 | uint32_t symval = elf_get_symval(hdr, swap_endian(section->sh_link), ELF32_R_SYM(swap_endian(reltab->r_info))); 96 | if (ELF32_R_TYPE(swap_endian(reltab->r_info)) != 0x03) 97 | { 98 | cerr << "Unknown relocation type." << endl; 99 | //throw new exception; 100 | } 101 | if (reltab->r_addend != 0) 102 | { 103 | cerr << "Nonzero addend." << endl; 104 | //throw new exception; 105 | } 106 | for (size_t i = 0; i < 4; symval >>= 8, ++i) 107 | _data[ref + 3 - i] |= symval & 0xff; 108 | } 109 | } 110 | else if (swap_endian(section->sh_type) == SHT_SYMTAB) 111 | { 112 | for (uint32_t symoff = 0; symoff < swap_endian(section->sh_size); symoff += swap_endian(section->sh_entsize)) 113 | { 114 | Elf32_Sym* symbol = reinterpret_cast( 115 | reinterpret_cast(hdr) + swap_endian(section->sh_offset) + symoff 116 | ); 117 | char const* name = reinterpret_cast(hdr) + swap_endian(strtab->sh_offset) + swap_endian(symbol->st_name); 118 | if (string(name) == "main") 119 | entrypoint = elf_get_symval(hdr, symbol); 120 | } 121 | } 122 | } 123 | return entrypoint; 124 | } 125 | -------------------------------------------------------------------------------- /interpreter/build/lanai-int.cbp: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 101 | 102 | -------------------------------------------------------------------------------- /interpreter/build/Makefile: -------------------------------------------------------------------------------- 1 | # CMAKE generated file: DO NOT EDIT! 2 | # Generated by "Unix Makefiles" Generator, CMake Version 3.2 3 | 4 | # Default target executed when no arguments are given to make. 5 | default_target: all 6 | .PHONY : default_target 7 | 8 | # Allow only one "make -f Makefile2" at a time, but pass parallelism. 9 | .NOTPARALLEL: 10 | 11 | #============================================================================= 12 | # Special targets provided by cmake. 13 | 14 | # Disable implicit rules so canonical targets will work. 15 | .SUFFIXES: 16 | 17 | # Remove some rules from gmake that .SUFFIXES does not remove. 18 | SUFFIXES = 19 | 20 | .SUFFIXES: .hpux_make_needs_suffix_list 21 | 22 | # Suppress display of executed commands. 23 | $(VERBOSE).SILENT: 24 | 25 | # A target that is always out of date. 26 | cmake_force: 27 | .PHONY : cmake_force 28 | 29 | #============================================================================= 30 | # Set environment variables for the build. 31 | 32 | # The shell in which to execute make rules. 33 | SHELL = /bin/sh 34 | 35 | # The CMake executable. 36 | CMAKE_COMMAND = /usr/bin/cmake 37 | 38 | # The command to remove a file. 39 | RM = /usr/bin/cmake -E remove -f 40 | 41 | # Escaping for special characters. 42 | EQUALS = = 43 | 44 | # The top-level source directory on which CMake was run. 45 | CMAKE_SOURCE_DIR = /home/christian/ethereum/lanai/interpreter 46 | 47 | # The top-level build directory on which CMake was run. 48 | CMAKE_BINARY_DIR = /home/christian/ethereum/lanai/interpreter/build 49 | 50 | #============================================================================= 51 | # Targets provided globally by CMake. 52 | 53 | # Special rule for the target edit_cache 54 | edit_cache: 55 | @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..." 56 | /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. 57 | .PHONY : edit_cache 58 | 59 | # Special rule for the target edit_cache 60 | edit_cache/fast: edit_cache 61 | .PHONY : edit_cache/fast 62 | 63 | # Special rule for the target rebuild_cache 64 | rebuild_cache: 65 | @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." 66 | /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) 67 | .PHONY : rebuild_cache 68 | 69 | # Special rule for the target rebuild_cache 70 | rebuild_cache/fast: rebuild_cache 71 | .PHONY : rebuild_cache/fast 72 | 73 | # The main all target 74 | all: cmake_check_build_system 75 | $(CMAKE_COMMAND) -E cmake_progress_start /home/christian/ethereum/lanai/interpreter/build/CMakeFiles /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/progress.marks 76 | $(MAKE) -f CMakeFiles/Makefile2 all 77 | $(CMAKE_COMMAND) -E cmake_progress_start /home/christian/ethereum/lanai/interpreter/build/CMakeFiles 0 78 | .PHONY : all 79 | 80 | # The main clean target 81 | clean: 82 | $(MAKE) -f CMakeFiles/Makefile2 clean 83 | .PHONY : clean 84 | 85 | # The main clean target 86 | clean/fast: clean 87 | .PHONY : clean/fast 88 | 89 | # Prepare targets for installation. 90 | preinstall: all 91 | $(MAKE) -f CMakeFiles/Makefile2 preinstall 92 | .PHONY : preinstall 93 | 94 | # Prepare targets for installation. 95 | preinstall/fast: 96 | $(MAKE) -f CMakeFiles/Makefile2 preinstall 97 | .PHONY : preinstall/fast 98 | 99 | # clear depends 100 | depend: 101 | $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 102 | .PHONY : depend 103 | 104 | #============================================================================= 105 | # Target rules for targets named lanai-int 106 | 107 | # Build rule for target. 108 | lanai-int: cmake_check_build_system 109 | $(MAKE) -f CMakeFiles/Makefile2 lanai-int 110 | .PHONY : lanai-int 111 | 112 | # fast build rule for target. 113 | lanai-int/fast: 114 | $(MAKE) -f CMakeFiles/lanai-int.dir/build.make CMakeFiles/lanai-int.dir/build 115 | .PHONY : lanai-int/fast 116 | 117 | interpreter.o: interpreter.cpp.o 118 | .PHONY : interpreter.o 119 | 120 | # target to build an object file 121 | interpreter.cpp.o: 122 | $(MAKE) -f CMakeFiles/lanai-int.dir/build.make CMakeFiles/lanai-int.dir/interpreter.cpp.o 123 | .PHONY : interpreter.cpp.o 124 | 125 | interpreter.i: interpreter.cpp.i 126 | .PHONY : interpreter.i 127 | 128 | # target to preprocess a source file 129 | interpreter.cpp.i: 130 | $(MAKE) -f CMakeFiles/lanai-int.dir/build.make CMakeFiles/lanai-int.dir/interpreter.cpp.i 131 | .PHONY : interpreter.cpp.i 132 | 133 | interpreter.s: interpreter.cpp.s 134 | .PHONY : interpreter.s 135 | 136 | # target to generate assembly for a file 137 | interpreter.cpp.s: 138 | $(MAKE) -f CMakeFiles/lanai-int.dir/build.make CMakeFiles/lanai-int.dir/interpreter.cpp.s 139 | .PHONY : interpreter.cpp.s 140 | 141 | linker.o: linker.cpp.o 142 | .PHONY : linker.o 143 | 144 | # target to build an object file 145 | linker.cpp.o: 146 | $(MAKE) -f CMakeFiles/lanai-int.dir/build.make CMakeFiles/lanai-int.dir/linker.cpp.o 147 | .PHONY : linker.cpp.o 148 | 149 | linker.i: linker.cpp.i 150 | .PHONY : linker.i 151 | 152 | # target to preprocess a source file 153 | linker.cpp.i: 154 | $(MAKE) -f CMakeFiles/lanai-int.dir/build.make CMakeFiles/lanai-int.dir/linker.cpp.i 155 | .PHONY : linker.cpp.i 156 | 157 | linker.s: linker.cpp.s 158 | .PHONY : linker.s 159 | 160 | # target to generate assembly for a file 161 | linker.cpp.s: 162 | $(MAKE) -f CMakeFiles/lanai-int.dir/build.make CMakeFiles/lanai-int.dir/linker.cpp.s 163 | .PHONY : linker.cpp.s 164 | 165 | main.o: main.cpp.o 166 | .PHONY : main.o 167 | 168 | # target to build an object file 169 | main.cpp.o: 170 | $(MAKE) -f CMakeFiles/lanai-int.dir/build.make CMakeFiles/lanai-int.dir/main.cpp.o 171 | .PHONY : main.cpp.o 172 | 173 | main.i: main.cpp.i 174 | .PHONY : main.i 175 | 176 | # target to preprocess a source file 177 | main.cpp.i: 178 | $(MAKE) -f CMakeFiles/lanai-int.dir/build.make CMakeFiles/lanai-int.dir/main.cpp.i 179 | .PHONY : main.cpp.i 180 | 181 | main.s: main.cpp.s 182 | .PHONY : main.s 183 | 184 | # target to generate assembly for a file 185 | main.cpp.s: 186 | $(MAKE) -f CMakeFiles/lanai-int.dir/build.make CMakeFiles/lanai-int.dir/main.cpp.s 187 | .PHONY : main.cpp.s 188 | 189 | # Help Target 190 | help: 191 | @echo "The following are some of the valid targets for this Makefile:" 192 | @echo "... all (the default if no target is provided)" 193 | @echo "... clean" 194 | @echo "... depend" 195 | @echo "... edit_cache" 196 | @echo "... rebuild_cache" 197 | @echo "... lanai-int" 198 | @echo "... interpreter.o" 199 | @echo "... interpreter.i" 200 | @echo "... interpreter.s" 201 | @echo "... linker.o" 202 | @echo "... linker.i" 203 | @echo "... linker.s" 204 | @echo "... main.o" 205 | @echo "... main.i" 206 | @echo "... main.s" 207 | .PHONY : help 208 | 209 | 210 | 211 | #============================================================================= 212 | # Special targets to cleanup operation of make. 213 | 214 | # Special rule to run CMake to check the build system integrity. 215 | # No rule that depends on this can have commands that come from listfiles 216 | # because they might be regenerated. 217 | cmake_check_build_system: 218 | $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 219 | .PHONY : cmake_check_build_system 220 | 221 | -------------------------------------------------------------------------------- /llvm/example.s: -------------------------------------------------------------------------------- 1 | .text 2 | .file "/mnt/example.c" 3 | .globl mod 4 | .p2align 2 5 | .type mod,@function 6 | mod: ! @mod 7 | ! BB#0: ! %entry 8 | st %fp, [--%sp] 9 | add %sp, 0x8, %fp 10 | sub %sp, 0x18, %sp 11 | or %r7, 0x0, %r3 12 | or %r6, 0x0, %r9 13 | st %r6, -12[%fp] 14 | st %r7, -16[%fp] 15 | st %r3, -20[%fp] 16 | bt .LBB0_1 17 | st %r9, -24[%fp] 18 | .LBB0_1: ! %while.cond 19 | ! =>This Inner Loop Header: Depth=1 20 | ld -12[%fp], %r3 21 | ld -16[%fp], %r9 22 | sub.f %r3, %r9, %r0 23 | bult .LBB0_3 24 | nop 25 | bt .LBB0_2 26 | nop 27 | .LBB0_2: ! %while.body 28 | ! in Loop: Header=BB0_1 Depth=1 29 | ld -16[%fp], %r3 30 | ld -12[%fp], %r9 31 | sub %r9, %r3, %r3 32 | bt .LBB0_1 33 | st %r3, -12[%fp] 34 | .LBB0_3: ! %while.end 35 | ld -12[%fp], %rv 36 | ld -4[%fp], %pc ! return 37 | add %fp, 0x0, %sp 38 | ld -8[%fp], %fp 39 | .Lfunc_end0: 40 | .size mod, .Lfunc_end0-mod 41 | 42 | .globl prime 43 | .p2align 2 44 | .type prime,@function 45 | prime: ! @prime 46 | ! BB#0: ! %entry 47 | st %fp, [--%sp] 48 | add %sp, 0x8, %fp 49 | sub %sp, 0x340, %sp 50 | or %r6, 0x0, %r3 51 | st %r6, -12[%fp] 52 | mov 0x2, %r6 53 | st %r6, -16[%fp] 54 | st %r0, -24[%fp] 55 | st %r6, -828[%fp] 56 | bt .LBB1_1 57 | st %r3, -832[%fp] 58 | .LBB1_1: ! %while.cond 59 | ! =>This Loop Header: Depth=1 60 | ! Child Loop BB1_3 Depth 2 61 | ld -24[%fp], %r3 62 | ld -12[%fp], %r9 63 | sub.f %r3, %r9, %r0 64 | bge .LBB1_11 65 | nop 66 | bt .LBB1_2 67 | nop 68 | .LBB1_2: ! %while.body 69 | ! in Loop: Header=BB1_1 Depth=1 70 | mov 0x2, %r3 71 | bt .LBB1_3 72 | st %r3, -20[%fp] 73 | .LBB1_3: ! %for.cond 74 | ! Parent Loop BB1_1 Depth=1 75 | ! => This Inner Loop Header: Depth=2 76 | ld -20[%fp], %r3 77 | ld -16[%fp], %r9 78 | sub %r9, 0x1, %r9 79 | sub.f %r3, %r9, %r0 80 | bgt .LBB1_8 81 | nop 82 | bt .LBB1_4 83 | nop 84 | .LBB1_4: ! %for.body 85 | ! in Loop: Header=BB1_3 Depth=2 86 | ld -16[%fp], %r6 87 | add %pc, 0x10, %rca 88 | st %rca, [--%sp] 89 | bt mod 90 | ld -20[%fp], %r7 91 | sub.f %rv, 0x0, %r0 92 | bne .LBB1_6 93 | nop 94 | bt .LBB1_5 95 | nop 96 | .LBB1_5: ! %if.then 97 | ! in Loop: Header=BB1_1 Depth=1 98 | bt .LBB1_8 99 | nop 100 | .LBB1_6: ! %if.end 101 | ! in Loop: Header=BB1_3 Depth=2 102 | bt .LBB1_7 103 | nop 104 | .LBB1_7: ! %for.inc 105 | ! in Loop: Header=BB1_3 Depth=2 106 | ld -20[%fp], %r3 107 | add %r3, 0x1, %r3 108 | bt .LBB1_3 109 | st %r3, -20[%fp] 110 | .LBB1_8: ! %for.end 111 | ! in Loop: Header=BB1_1 Depth=1 112 | ld -20[%fp], %r3 113 | ld -16[%fp], %r9 114 | sub.f %r3, %r9, %r0 115 | bne .LBB1_10 116 | nop 117 | bt .LBB1_9 118 | nop 119 | .LBB1_9: ! %if.then4 120 | ! in Loop: Header=BB1_1 Depth=1 121 | ld -16[%fp], %r3 122 | st %r3, -828[%fp] 123 | ld -24[%fp], %r9 124 | add %r9, 0x1, %r12 125 | st %r12, -24[%fp] 126 | sh %r9, 0x2, %r9 127 | sub %fp, 0x338, %r12 128 | bt .LBB1_10 129 | st %r3, [%r12 add %r9] 130 | .LBB1_10: ! %if.end6 131 | ! in Loop: Header=BB1_1 Depth=1 132 | ld -16[%fp], %r3 133 | add %r3, 0x1, %r3 134 | bt .LBB1_1 135 | st %r3, -16[%fp] 136 | .LBB1_11: ! %while.end 137 | ld -828[%fp], %rv 138 | ld -4[%fp], %pc ! return 139 | add %fp, 0x0, %sp 140 | ld -8[%fp], %fp 141 | .Lfunc_end1: 142 | .size prime, .Lfunc_end1-prime 143 | 144 | .globl simple 145 | .p2align 2 146 | .type simple,@function 147 | simple: ! @simple 148 | ! BB#0: ! %entry 149 | st %fp, [--%sp] 150 | add %sp, 0x8, %fp 151 | sub %sp, 0x10, %sp 152 | or %r6, 0x0, %r3 153 | st %r6, -12[%fp] 154 | add %r6, 0x14, %rv 155 | st %r3, -16[%fp] 156 | ld -4[%fp], %pc ! return 157 | add %fp, 0x0, %sp 158 | ld -8[%fp], %fp 159 | .Lfunc_end2: 160 | .size simple, .Lfunc_end2-simple 161 | 162 | .globl compare 163 | .p2align 2 164 | .type compare,@function 165 | compare: ! @compare 166 | ! BB#0: ! %entry 167 | st %fp, [--%sp] 168 | add %sp, 0x8, %fp 169 | sub %sp, 0x18, %sp 170 | or %r7, 0x0, %r3 171 | or %r6, 0x0, %r9 172 | st %r6, -12[%fp] 173 | st %r7, -16[%fp] 174 | ld -12[%fp], %r6 175 | sub.f %r6, %r7, %r0 176 | suge %rv 177 | st %r3, -20[%fp] 178 | st %r9, -24[%fp] 179 | ld -4[%fp], %pc ! return 180 | add %fp, 0x0, %sp 181 | ld -8[%fp], %fp 182 | .Lfunc_end3: 183 | .size compare, .Lfunc_end3-compare 184 | 185 | .globl select 186 | .p2align 2 187 | .type select,@function 188 | select: ! @select 189 | ! BB#0: ! %entry 190 | st %fp, [--%sp] 191 | add %sp, 0x8, %fp 192 | sub %sp, 0x20, %sp 193 | or %r7, 0x0, %r3 194 | or %r6, 0x0, %r9 195 | st %r6, -16[%fp] 196 | st %r7, -20[%fp] 197 | ld -16[%fp], %r6 198 | sub.f %r6, %r7, %r0 199 | st %r3, -24[%fp] 200 | bge .LBB4_2 201 | st %r9, -28[%fp] 202 | bt .LBB4_1 203 | nop 204 | .LBB4_1: ! %if.then 205 | mov 0x1, %r3 206 | bt .LBB4_3 207 | st %r3, -12[%fp] 208 | .LBB4_2: ! %if.else 209 | mov 0x2, %r3 210 | bt .LBB4_3 211 | st %r3, -12[%fp] 212 | .LBB4_3: ! %return 213 | ld -12[%fp], %rv 214 | ld -4[%fp], %pc ! return 215 | add %fp, 0x0, %sp 216 | ld -8[%fp], %fp 217 | .Lfunc_end4: 218 | .size select, .Lfunc_end4-select 219 | 220 | .globl fill 221 | .p2align 2 222 | .type fill,@function 223 | fill: ! @fill 224 | ! BB#0: ! %entry 225 | st %fp, [--%sp] 226 | add %sp, 0x8, %fp 227 | sub %sp, 0x60, %sp 228 | bt .LBB5_1 229 | st %r0, -92[%fp] 230 | .LBB5_1: ! %for.cond 231 | ! =>This Inner Loop Header: Depth=1 232 | ld -92[%fp], %r3 233 | sub.f %r3, 0x13, %r0 234 | bgt .LBB5_4 235 | nop 236 | bt .LBB5_2 237 | nop 238 | .LBB5_2: ! %for.body 239 | ! in Loop: Header=BB5_1 Depth=1 240 | ld -92[%fp], %r3 241 | sh %r3, 0x2, %r9 242 | sub %fp, 0x58, %r12 243 | bt .LBB5_3 244 | st %r3, [%r12 add %r9] 245 | .LBB5_3: ! %for.inc 246 | ! in Loop: Header=BB5_1 Depth=1 247 | ld -92[%fp], %r3 248 | add %r3, 0x1, %r3 249 | bt .LBB5_1 250 | st %r3, -92[%fp] 251 | .LBB5_4: ! %for.end 252 | ld -12[%fp], %rv 253 | ld -4[%fp], %pc ! return 254 | add %fp, 0x0, %sp 255 | ld -8[%fp], %fp 256 | .Lfunc_end5: 257 | .size fill, .Lfunc_end5-fill 258 | 259 | .globl main 260 | .p2align 2 261 | .type main,@function 262 | main: ! @main 263 | ! BB#0: ! %entry 264 | st %fp, [--%sp] 265 | add %sp, 0x8, %fp 266 | sub %sp, 0x10, %sp 267 | st %r0, -12[%fp] 268 | add %pc, 0x10, %rca 269 | st %rca, [--%sp] 270 | bt prime 271 | mov 0x14, %r6 272 | ld -4[%fp], %pc ! return 273 | add %fp, 0x0, %sp 274 | ld -8[%fp], %fp 275 | .Lfunc_end6: 276 | .size main, .Lfunc_end6-main 277 | 278 | 279 | .ident "clang version 4.0.0 (http://llvm.org/git/clang.git 656204ffb45bbf056101265d3ae4811638184c17) (http://llvm.org/git/llvm.git c662b7eae3c4ffd44ce42e85024d94015ac5b08a)" 280 | .section ".note.GNU-stack","",@progbits 281 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/lanai-int.dir/build.make: -------------------------------------------------------------------------------- 1 | # CMAKE generated file: DO NOT EDIT! 2 | # Generated by "Unix Makefiles" Generator, CMake Version 3.2 3 | 4 | #============================================================================= 5 | # Special targets provided by cmake. 6 | 7 | # Disable implicit rules so canonical targets will work. 8 | .SUFFIXES: 9 | 10 | # Remove some rules from gmake that .SUFFIXES does not remove. 11 | SUFFIXES = 12 | 13 | .SUFFIXES: .hpux_make_needs_suffix_list 14 | 15 | # Suppress display of executed commands. 16 | $(VERBOSE).SILENT: 17 | 18 | # A target that is always out of date. 19 | cmake_force: 20 | .PHONY : cmake_force 21 | 22 | #============================================================================= 23 | # Set environment variables for the build. 24 | 25 | # The shell in which to execute make rules. 26 | SHELL = /bin/sh 27 | 28 | # The CMake executable. 29 | CMAKE_COMMAND = /usr/bin/cmake 30 | 31 | # The command to remove a file. 32 | RM = /usr/bin/cmake -E remove -f 33 | 34 | # Escaping for special characters. 35 | EQUALS = = 36 | 37 | # The top-level source directory on which CMake was run. 38 | CMAKE_SOURCE_DIR = /home/christian/ethereum/lanai/interpreter 39 | 40 | # The top-level build directory on which CMake was run. 41 | CMAKE_BINARY_DIR = /home/christian/ethereum/lanai/interpreter/build 42 | 43 | # Include any dependencies generated for this target. 44 | include CMakeFiles/lanai-int.dir/depend.make 45 | 46 | # Include the progress variables for this target. 47 | include CMakeFiles/lanai-int.dir/progress.make 48 | 49 | # Include the compile flags for this target's objects. 50 | include CMakeFiles/lanai-int.dir/flags.make 51 | 52 | CMakeFiles/lanai-int.dir/main.cpp.o: CMakeFiles/lanai-int.dir/flags.make 53 | CMakeFiles/lanai-int.dir/main.cpp.o: ../main.cpp 54 | $(CMAKE_COMMAND) -E cmake_progress_report /home/christian/ethereum/lanai/interpreter/build/CMakeFiles $(CMAKE_PROGRESS_1) 55 | @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/lanai-int.dir/main.cpp.o" 56 | /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/lanai-int.dir/main.cpp.o -c /home/christian/ethereum/lanai/interpreter/main.cpp 57 | 58 | CMakeFiles/lanai-int.dir/main.cpp.i: cmake_force 59 | @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/lanai-int.dir/main.cpp.i" 60 | /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -E /home/christian/ethereum/lanai/interpreter/main.cpp > CMakeFiles/lanai-int.dir/main.cpp.i 61 | 62 | CMakeFiles/lanai-int.dir/main.cpp.s: cmake_force 63 | @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/lanai-int.dir/main.cpp.s" 64 | /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -S /home/christian/ethereum/lanai/interpreter/main.cpp -o CMakeFiles/lanai-int.dir/main.cpp.s 65 | 66 | CMakeFiles/lanai-int.dir/main.cpp.o.requires: 67 | .PHONY : CMakeFiles/lanai-int.dir/main.cpp.o.requires 68 | 69 | CMakeFiles/lanai-int.dir/main.cpp.o.provides: CMakeFiles/lanai-int.dir/main.cpp.o.requires 70 | $(MAKE) -f CMakeFiles/lanai-int.dir/build.make CMakeFiles/lanai-int.dir/main.cpp.o.provides.build 71 | .PHONY : CMakeFiles/lanai-int.dir/main.cpp.o.provides 72 | 73 | CMakeFiles/lanai-int.dir/main.cpp.o.provides.build: CMakeFiles/lanai-int.dir/main.cpp.o 74 | 75 | CMakeFiles/lanai-int.dir/interpreter.cpp.o: CMakeFiles/lanai-int.dir/flags.make 76 | CMakeFiles/lanai-int.dir/interpreter.cpp.o: ../interpreter.cpp 77 | $(CMAKE_COMMAND) -E cmake_progress_report /home/christian/ethereum/lanai/interpreter/build/CMakeFiles $(CMAKE_PROGRESS_2) 78 | @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/lanai-int.dir/interpreter.cpp.o" 79 | /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/lanai-int.dir/interpreter.cpp.o -c /home/christian/ethereum/lanai/interpreter/interpreter.cpp 80 | 81 | CMakeFiles/lanai-int.dir/interpreter.cpp.i: cmake_force 82 | @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/lanai-int.dir/interpreter.cpp.i" 83 | /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -E /home/christian/ethereum/lanai/interpreter/interpreter.cpp > CMakeFiles/lanai-int.dir/interpreter.cpp.i 84 | 85 | CMakeFiles/lanai-int.dir/interpreter.cpp.s: cmake_force 86 | @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/lanai-int.dir/interpreter.cpp.s" 87 | /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -S /home/christian/ethereum/lanai/interpreter/interpreter.cpp -o CMakeFiles/lanai-int.dir/interpreter.cpp.s 88 | 89 | CMakeFiles/lanai-int.dir/interpreter.cpp.o.requires: 90 | .PHONY : CMakeFiles/lanai-int.dir/interpreter.cpp.o.requires 91 | 92 | CMakeFiles/lanai-int.dir/interpreter.cpp.o.provides: CMakeFiles/lanai-int.dir/interpreter.cpp.o.requires 93 | $(MAKE) -f CMakeFiles/lanai-int.dir/build.make CMakeFiles/lanai-int.dir/interpreter.cpp.o.provides.build 94 | .PHONY : CMakeFiles/lanai-int.dir/interpreter.cpp.o.provides 95 | 96 | CMakeFiles/lanai-int.dir/interpreter.cpp.o.provides.build: CMakeFiles/lanai-int.dir/interpreter.cpp.o 97 | 98 | CMakeFiles/lanai-int.dir/linker.cpp.o: CMakeFiles/lanai-int.dir/flags.make 99 | CMakeFiles/lanai-int.dir/linker.cpp.o: ../linker.cpp 100 | $(CMAKE_COMMAND) -E cmake_progress_report /home/christian/ethereum/lanai/interpreter/build/CMakeFiles $(CMAKE_PROGRESS_3) 101 | @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/lanai-int.dir/linker.cpp.o" 102 | /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/lanai-int.dir/linker.cpp.o -c /home/christian/ethereum/lanai/interpreter/linker.cpp 103 | 104 | CMakeFiles/lanai-int.dir/linker.cpp.i: cmake_force 105 | @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/lanai-int.dir/linker.cpp.i" 106 | /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -E /home/christian/ethereum/lanai/interpreter/linker.cpp > CMakeFiles/lanai-int.dir/linker.cpp.i 107 | 108 | CMakeFiles/lanai-int.dir/linker.cpp.s: cmake_force 109 | @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/lanai-int.dir/linker.cpp.s" 110 | /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -S /home/christian/ethereum/lanai/interpreter/linker.cpp -o CMakeFiles/lanai-int.dir/linker.cpp.s 111 | 112 | CMakeFiles/lanai-int.dir/linker.cpp.o.requires: 113 | .PHONY : CMakeFiles/lanai-int.dir/linker.cpp.o.requires 114 | 115 | CMakeFiles/lanai-int.dir/linker.cpp.o.provides: CMakeFiles/lanai-int.dir/linker.cpp.o.requires 116 | $(MAKE) -f CMakeFiles/lanai-int.dir/build.make CMakeFiles/lanai-int.dir/linker.cpp.o.provides.build 117 | .PHONY : CMakeFiles/lanai-int.dir/linker.cpp.o.provides 118 | 119 | CMakeFiles/lanai-int.dir/linker.cpp.o.provides.build: CMakeFiles/lanai-int.dir/linker.cpp.o 120 | 121 | # Object files for target lanai-int 122 | lanai__int_OBJECTS = \ 123 | "CMakeFiles/lanai-int.dir/main.cpp.o" \ 124 | "CMakeFiles/lanai-int.dir/interpreter.cpp.o" \ 125 | "CMakeFiles/lanai-int.dir/linker.cpp.o" 126 | 127 | # External object files for target lanai-int 128 | lanai__int_EXTERNAL_OBJECTS = 129 | 130 | lanai-int: CMakeFiles/lanai-int.dir/main.cpp.o 131 | lanai-int: CMakeFiles/lanai-int.dir/interpreter.cpp.o 132 | lanai-int: CMakeFiles/lanai-int.dir/linker.cpp.o 133 | lanai-int: CMakeFiles/lanai-int.dir/build.make 134 | lanai-int: CMakeFiles/lanai-int.dir/link.txt 135 | @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking CXX executable lanai-int" 136 | $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/lanai-int.dir/link.txt --verbose=$(VERBOSE) 137 | 138 | # Rule to build all files generated by this target. 139 | CMakeFiles/lanai-int.dir/build: lanai-int 140 | .PHONY : CMakeFiles/lanai-int.dir/build 141 | 142 | CMakeFiles/lanai-int.dir/requires: CMakeFiles/lanai-int.dir/main.cpp.o.requires 143 | CMakeFiles/lanai-int.dir/requires: CMakeFiles/lanai-int.dir/interpreter.cpp.o.requires 144 | CMakeFiles/lanai-int.dir/requires: CMakeFiles/lanai-int.dir/linker.cpp.o.requires 145 | .PHONY : CMakeFiles/lanai-int.dir/requires 146 | 147 | CMakeFiles/lanai-int.dir/clean: 148 | $(CMAKE_COMMAND) -P CMakeFiles/lanai-int.dir/cmake_clean.cmake 149 | .PHONY : CMakeFiles/lanai-int.dir/clean 150 | 151 | CMakeFiles/lanai-int.dir/depend: 152 | cd /home/christian/ethereum/lanai/interpreter/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/christian/ethereum/lanai/interpreter /home/christian/ethereum/lanai/interpreter /home/christian/ethereum/lanai/interpreter/build /home/christian/ethereum/lanai/interpreter/build /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/lanai-int.dir/DependInfo.cmake --color=$(COLOR) 153 | .PHONY : CMakeFiles/lanai-int.dir/depend 154 | 155 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/feature_tests.cxx: -------------------------------------------------------------------------------- 1 | 2 | const char features[] = {"" 3 | "CXX_FEATURE:" 4 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L 5 | "1" 6 | #else 7 | "0" 8 | #endif 9 | "cxx_aggregate_default_initializers\n" 10 | "CXX_FEATURE:" 11 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L 12 | "1" 13 | #else 14 | "0" 15 | #endif 16 | "cxx_alias_templates\n" 17 | "CXX_FEATURE:" 18 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L 19 | "1" 20 | #else 21 | "0" 22 | #endif 23 | "cxx_alignas\n" 24 | "CXX_FEATURE:" 25 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L 26 | "1" 27 | #else 28 | "0" 29 | #endif 30 | "cxx_alignof\n" 31 | "CXX_FEATURE:" 32 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L 33 | "1" 34 | #else 35 | "0" 36 | #endif 37 | "cxx_attributes\n" 38 | "CXX_FEATURE:" 39 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L 40 | "1" 41 | #else 42 | "0" 43 | #endif 44 | "cxx_attribute_deprecated\n" 45 | "CXX_FEATURE:" 46 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 47 | "1" 48 | #else 49 | "0" 50 | #endif 51 | "cxx_auto_type\n" 52 | "CXX_FEATURE:" 53 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L 54 | "1" 55 | #else 56 | "0" 57 | #endif 58 | "cxx_binary_literals\n" 59 | "CXX_FEATURE:" 60 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 61 | "1" 62 | #else 63 | "0" 64 | #endif 65 | "cxx_constexpr\n" 66 | "CXX_FEATURE:" 67 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L 68 | "1" 69 | #else 70 | "0" 71 | #endif 72 | "cxx_contextual_conversions\n" 73 | "CXX_FEATURE:" 74 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 75 | "1" 76 | #else 77 | "0" 78 | #endif 79 | "cxx_decltype\n" 80 | "CXX_FEATURE:" 81 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L 82 | "1" 83 | #else 84 | "0" 85 | #endif 86 | "cxx_decltype_auto\n" 87 | "CXX_FEATURE:" 88 | #if ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40801) && __cplusplus >= 201103L 89 | "1" 90 | #else 91 | "0" 92 | #endif 93 | "cxx_decltype_incomplete_return_types\n" 94 | "CXX_FEATURE:" 95 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 96 | "1" 97 | #else 98 | "0" 99 | #endif 100 | "cxx_default_function_template_args\n" 101 | "CXX_FEATURE:" 102 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 103 | "1" 104 | #else 105 | "0" 106 | #endif 107 | "cxx_defaulted_functions\n" 108 | "CXX_FEATURE:" 109 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 110 | "1" 111 | #else 112 | "0" 113 | #endif 114 | "cxx_defaulted_move_initializers\n" 115 | "CXX_FEATURE:" 116 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L 117 | "1" 118 | #else 119 | "0" 120 | #endif 121 | "cxx_delegating_constructors\n" 122 | "CXX_FEATURE:" 123 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 124 | "1" 125 | #else 126 | "0" 127 | #endif 128 | "cxx_deleted_functions\n" 129 | "CXX_FEATURE:" 130 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L 131 | "1" 132 | #else 133 | "0" 134 | #endif 135 | "cxx_digit_separators\n" 136 | "CXX_FEATURE:" 137 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 138 | "1" 139 | #else 140 | "0" 141 | #endif 142 | "cxx_enum_forward_declarations\n" 143 | "CXX_FEATURE:" 144 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 145 | "1" 146 | #else 147 | "0" 148 | #endif 149 | "cxx_explicit_conversions\n" 150 | "CXX_FEATURE:" 151 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L 152 | "1" 153 | #else 154 | "0" 155 | #endif 156 | "cxx_extended_friend_declarations\n" 157 | "CXX_FEATURE:" 158 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 159 | "1" 160 | #else 161 | "0" 162 | #endif 163 | "cxx_extern_templates\n" 164 | "CXX_FEATURE:" 165 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L 166 | "1" 167 | #else 168 | "0" 169 | #endif 170 | "cxx_final\n" 171 | "CXX_FEATURE:" 172 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 173 | "1" 174 | #else 175 | "0" 176 | #endif 177 | "cxx_func_identifier\n" 178 | "CXX_FEATURE:" 179 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 180 | "1" 181 | #else 182 | "0" 183 | #endif 184 | "cxx_generalized_initializers\n" 185 | "CXX_FEATURE:" 186 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L 187 | "1" 188 | #else 189 | "0" 190 | #endif 191 | "cxx_generic_lambdas\n" 192 | "CXX_FEATURE:" 193 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L 194 | "1" 195 | #else 196 | "0" 197 | #endif 198 | "cxx_inheriting_constructors\n" 199 | "CXX_FEATURE:" 200 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 201 | "1" 202 | #else 203 | "0" 204 | #endif 205 | "cxx_inline_namespaces\n" 206 | "CXX_FEATURE:" 207 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 208 | "1" 209 | #else 210 | "0" 211 | #endif 212 | "cxx_lambdas\n" 213 | "CXX_FEATURE:" 214 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L 215 | "1" 216 | #else 217 | "0" 218 | #endif 219 | "cxx_lambda_init_captures\n" 220 | "CXX_FEATURE:" 221 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 222 | "1" 223 | #else 224 | "0" 225 | #endif 226 | "cxx_local_type_template_args\n" 227 | "CXX_FEATURE:" 228 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 229 | "1" 230 | #else 231 | "0" 232 | #endif 233 | "cxx_long_long_type\n" 234 | "CXX_FEATURE:" 235 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 236 | "1" 237 | #else 238 | "0" 239 | #endif 240 | "cxx_noexcept\n" 241 | "CXX_FEATURE:" 242 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L 243 | "1" 244 | #else 245 | "0" 246 | #endif 247 | "cxx_nonstatic_member_init\n" 248 | "CXX_FEATURE:" 249 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 250 | "1" 251 | #else 252 | "0" 253 | #endif 254 | "cxx_nullptr\n" 255 | "CXX_FEATURE:" 256 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L 257 | "1" 258 | #else 259 | "0" 260 | #endif 261 | "cxx_override\n" 262 | "CXX_FEATURE:" 263 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 264 | "1" 265 | #else 266 | "0" 267 | #endif 268 | "cxx_range_for\n" 269 | "CXX_FEATURE:" 270 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 271 | "1" 272 | #else 273 | "0" 274 | #endif 275 | "cxx_raw_string_literals\n" 276 | "CXX_FEATURE:" 277 | #if ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40801) && __cplusplus >= 201103L 278 | "1" 279 | #else 280 | "0" 281 | #endif 282 | "cxx_reference_qualified_functions\n" 283 | "CXX_FEATURE:" 284 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L 285 | "1" 286 | #else 287 | "0" 288 | #endif 289 | "cxx_relaxed_constexpr\n" 290 | "CXX_FEATURE:" 291 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L 292 | "1" 293 | #else 294 | "0" 295 | #endif 296 | "cxx_return_type_deduction\n" 297 | "CXX_FEATURE:" 298 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 299 | "1" 300 | #else 301 | "0" 302 | #endif 303 | "cxx_right_angle_brackets\n" 304 | "CXX_FEATURE:" 305 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 306 | "1" 307 | #else 308 | "0" 309 | #endif 310 | "cxx_rvalue_references\n" 311 | "CXX_FEATURE:" 312 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 313 | "1" 314 | #else 315 | "0" 316 | #endif 317 | "cxx_sizeof_member\n" 318 | "CXX_FEATURE:" 319 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 320 | "1" 321 | #else 322 | "0" 323 | #endif 324 | "cxx_static_assert\n" 325 | "CXX_FEATURE:" 326 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 327 | "1" 328 | #else 329 | "0" 330 | #endif 331 | "cxx_strong_enums\n" 332 | "CXX_FEATURE:" 333 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && __cplusplus 334 | "1" 335 | #else 336 | "0" 337 | #endif 338 | "cxx_template_template_parameters\n" 339 | "CXX_FEATURE:" 340 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L 341 | "1" 342 | #else 343 | "0" 344 | #endif 345 | "cxx_thread_local\n" 346 | "CXX_FEATURE:" 347 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 348 | "1" 349 | #else 350 | "0" 351 | #endif 352 | "cxx_trailing_return_types\n" 353 | "CXX_FEATURE:" 354 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 355 | "1" 356 | #else 357 | "0" 358 | #endif 359 | "cxx_unicode_literals\n" 360 | "CXX_FEATURE:" 361 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 362 | "1" 363 | #else 364 | "0" 365 | #endif 366 | "cxx_uniform_initialization\n" 367 | "CXX_FEATURE:" 368 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 369 | "1" 370 | #else 371 | "0" 372 | #endif 373 | "cxx_unrestricted_unions\n" 374 | "CXX_FEATURE:" 375 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L 376 | "1" 377 | #else 378 | "0" 379 | #endif 380 | "cxx_user_literals\n" 381 | "CXX_FEATURE:" 382 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L 383 | "1" 384 | #else 385 | "0" 386 | #endif 387 | "cxx_variable_templates\n" 388 | "CXX_FEATURE:" 389 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 390 | "1" 391 | #else 392 | "0" 393 | #endif 394 | "cxx_variadic_macros\n" 395 | "CXX_FEATURE:" 396 | #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__)) 397 | "1" 398 | #else 399 | "0" 400 | #endif 401 | "cxx_variadic_templates\n" 402 | 403 | }; 404 | 405 | int main(int argc, char** argv) { (void)argv; return features[argc]; } 406 | -------------------------------------------------------------------------------- /interpreter/interpreter.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include "interpreter.h" 9 | 10 | using namespace std; 11 | 12 | 13 | uint32_t Interpreter::run(uint32_t entrypoint, uint32_t memsize, bool verbose) 14 | { 15 | uint32_t exitpoint = (uint32_t(1) << 31) & ~uint32_t(3); 16 | initState(entrypoint, exitpoint, memsize); 17 | while (true) 18 | { 19 | steps++; 20 | updatePC(); 21 | if (verbose) 22 | printState(); 23 | 24 | if (pc() == exitpoint) 25 | { 26 | // Program terminated 27 | cout << "Program terminated after " << dec << steps << " steps." << endl; 28 | cout << "Return value: 0x" << setfill('0') << setw(8) << hex << state.rv << endl; 29 | return state.rv; 30 | } 31 | 32 | uint32_t instruction = currentInstruction(); 33 | unsigned opcode = instruction >> 28; 34 | uint16_t rd = (instruction >> 23) & 0x1f; 35 | uint16_t rs1 = (instruction >> 18) & 0x1f; 36 | uint16_t rs2 = (instruction >> 11) & 0x1f; 37 | bool p = (instruction >> 17) & 1; 38 | bool q = (instruction >> 16) & 1; 39 | uint16_t constant = instruction; 40 | 41 | if ((opcode & 8) == 0) // Register Immediate (RI) 42 | { 43 | if (verbose) 44 | cout << "RI -- " << operationName(opcode) << " rd: " << rd << " rs1: " << rs1 << " f: " << p << " h: " << q << " constant: " << constant << endl; 45 | 46 | uint32_t constant32 = q ? constant << 16 : constant; 47 | if (opcode == 4) 48 | constant32 |= q ? uint32_t(0xffff) : uint32_t(0xffff0000); 49 | else if (opcode == 7) 50 | constant32 = int32_t(int16_t(constant)); 51 | uint32_t result = operation(opcode, reg(rs1), constant32, p, q); 52 | regStore(rd, result, 1); 53 | } 54 | else if (opcode == 0xc) // Register Register (RR) 55 | { 56 | uint16_t op = (instruction >> 8) & 0x7; 57 | if (verbose) 58 | cout << "RR -- " << operationName(op) << " rd: " << rd << " rs1: " << rs1 << " rs2: " << rs2 << " f: " << p << " constant: " << constant << endl; 59 | uint32_t result = 0; 60 | uint16_t cond = instruction & 7; 61 | bool takeBranch = condition(cond, q); 62 | uint16_t jjj = (instruction >> 3) & 0x1f; 63 | if (op == 7 && jjj == 0) 64 | regStore(rd, takeBranch ? rs1 : rs2, 1); 65 | else 66 | { 67 | uint32_t b = reg(rs2); 68 | bool arithmeticShift = jjj & 0x8; 69 | if (op == 7) 70 | { 71 | if ((jjj & 0x10) != 0x10) 72 | throw new exception; 73 | if (int32_t(b) >= 0) 74 | b &= 0x1f; 75 | else 76 | b = (b & 0x1f) | uint32_t(0xffffffe0); 77 | } 78 | result = operation(op, reg(rs1), b, p, arithmeticShift); 79 | if (takeBranch) 80 | regStore(rd, result, 1); 81 | } 82 | } 83 | else if ((opcode & 0xe) == 0x8) // Register Memory (RM) 84 | { 85 | bool store = opcode & 1; 86 | if (verbose) 87 | cout << "RM -- store: " << store << " rd: " << rd << " rs1: " << rs1 << " p: " << p << " q: " << q << " constant: " << constant << endl; 88 | int32_t constantSE = int16_t(constant); 89 | uint32_t ea = reg(rs1) + (p ? constantSE : 0); 90 | if (store) 91 | memStoreWord(ea, reg(rd)); 92 | else 93 | regStore(rd, memWord(ea), 2); 94 | if (q) 95 | { 96 | if (isPC(rs1)) 97 | throw new exception; // TODO does this also have delay slots? 98 | regStore(rs1, reg(rs1) + constantSE, 0); 99 | } 100 | } 101 | else if ((opcode & 0xe) == 0xa) // Register Register Memory (RRM) 102 | { 103 | bool store = opcode & 1; 104 | uint16_t op = (instruction >> 8) & 0x7; 105 | if (verbose) 106 | cout << "RRM -- store: " << store << " rd: " << rd << " rs1: " << rs1 << " p: " << p << " q: " << q << " constant: " << constant << endl; 107 | if (op == 7) 108 | throw new exception; 109 | bool y = instruction & 4; 110 | bool l = instruction & 2; 111 | bool e = instruction & 1; 112 | if (!y && !l) 113 | throw new exception; 114 | uint32_t ea = reg(rs1); 115 | if (p) 116 | { 117 | if (op == 7) throw new exception; 118 | ea = operation(op, reg(rs1), reg(rs2), false); 119 | } 120 | if (store) 121 | { 122 | uint32_t val = reg(rd); 123 | if (y) 124 | memStoreByte(ea, val); 125 | else if (!l) 126 | throw new exception; 127 | else 128 | memStoreWord(ea, val); 129 | } 130 | else 131 | { 132 | uint32_t val = 0; 133 | if (y) 134 | { 135 | val = memByte(ea); 136 | if (e) 137 | val = val & 0xff; 138 | else 139 | val = int32_t(int8_t(uint8_t(val))); 140 | } 141 | else if (!l) 142 | throw new exception; 143 | else 144 | val = memWord(ea); 145 | regStore(rd, val, 2); 146 | } 147 | if (q) 148 | { 149 | if (isPC(rs1)) 150 | throw new exception; // TODO does this also have delay slots? 151 | if (op == 7) throw new exception; 152 | regStore(rs1, operation(op, reg(rs1), reg(rs2), false), 0); 153 | } 154 | } 155 | else if (opcode == 0xe) // Conditional branch 156 | { 157 | uint16_t cond = (instruction >> 25) & 7; 158 | uint32_t value = 0; 159 | bool invert = instruction & 1; 160 | bool takeBranch = condition(cond, invert); 161 | if (verbose) 162 | cout << "BR: condition: " << cond << " i: " << invert << " constant: " << constant << endl; 163 | uint16_t targetReg = 2; // pc 164 | if (instruction & 0x2) 165 | { 166 | if (instruction & (uint32_t(1) << 24)) 167 | value = reg(rs1) + (instruction & (((uint32_t(1) << 14) - 1) << 2)); 168 | else 169 | { 170 | value = takeBranch; 171 | targetReg = rs1; 172 | } 173 | } 174 | else 175 | value = instruction & (((uint32_t(1) << 23) - 1) << 2); 176 | if (takeBranch) 177 | regStore(targetReg, value, 1); 178 | } 179 | else if (opcode == 0xf) // Special Load/Store and others 180 | { 181 | if (p && q) 182 | { 183 | if (verbose) 184 | cout << "SPLS: rd: " << rd << " const upper: " << rs1 << " const lower: " << constant << endl; 185 | if (instruction & (1 << 15)) 186 | throw new exception; 187 | bool y = instruction & (1 << 14); 188 | bool s = instruction & (1 << 13); 189 | bool e = instruction & (1 << 12); 190 | p = instruction & (1 << 11); 191 | q = instruction & (1 << 10); 192 | int32_t constantSE = constant & 0x3ff; 193 | if (constant & (constant & (1 << 9))) 194 | constantSE = uint32_t(constantSE) | uint32_t(0xfffffc00); 195 | uint32_t ea = reg(rs1) + (p ? constantSE : 0); 196 | if (!y) throw new exception; 197 | if (s) 198 | memStoreByte(ea, reg(rd)); 199 | else 200 | { 201 | uint32_t value = memByte(ea); 202 | if (!e) 203 | value = int32_t(int8_t(uint8_t(value))); 204 | regStore(rd, value, 2); 205 | } 206 | if (q) 207 | { 208 | if (isPC(rs1)) 209 | throw new exception; // TODO does this also have delay slots? 210 | regStore(rs1, reg(rs1) + constantSE, 0); 211 | } 212 | } 213 | else 214 | { 215 | uint32_t value = (uint32_t(rs1) << 16) | constant; 216 | if (verbose) 217 | cout << "SLS: rd: " << rd << " p: " << p << " s: " << q << " addr upper: " << rs1 << " addr lower: " << constant << endl; 218 | if (q) 219 | memStoreWord(value, reg(rd)); 220 | else 221 | { 222 | if (!p) 223 | value = memWord(constant); 224 | regStore(rd, value, 2); 225 | } 226 | } 227 | } 228 | else if (opcode == 0xd) // Special instructions (popc, leadz, trailz) 229 | { 230 | cout << "Opcode 0xd not implemented." << endl; 231 | throw new exception; 232 | } 233 | else 234 | { 235 | cout << "Invalid opcode." << endl; 236 | throw new exception; 237 | } 238 | } 239 | } 240 | 241 | void Interpreter::initState(uint32_t entrypoint, uint32_t exitpoint, uint32_t memsize) 242 | { 243 | state.fp = memsize; 244 | state.sp = memsize; 245 | memStoreWord(state.fp, exitpoint); 246 | regStore(2, entrypoint, 0); 247 | } 248 | 249 | void Interpreter::updatePC() 250 | { 251 | state.pc = state.pcDelay[0]; 252 | state.pcDelay[0] = state.pcDelay[1]; 253 | state.pcDelay[1] = state.pcDelay[2]; 254 | state.pcDelay[2] = state.pcDelay[1] + 4; 255 | } 256 | 257 | void Interpreter::printState() 258 | { 259 | cout << "---------------------------------------------------" << endl; 260 | printMemory(); 261 | cout << "Regs:" << endl; 262 | cout << "pc/2: " << hex << reg(2) << " [ " << 263 | state.pcDelay[0] << ", " << 264 | state.pcDelay[1] << ", " << 265 | state.pcDelay[2] << " ]" << 266 | endl; 267 | cout << "r3: " << hex << reg(3) << endl; 268 | cout << "sp/4: " << hex << reg(4) << endl; 269 | cout << "fp/5: " << hex << reg(5) << endl; 270 | cout << "rv/8: " << hex << reg(8) << endl; 271 | cout << "rca/15: " << hex << reg(15); 272 | for (unsigned i = 4; i < 32; i ++) 273 | { 274 | if (i % 4 == 0) 275 | cout << endl << hex << setw(2) << i << ":"; 276 | cout << " " << hex << setfill('0') << setw(8) << reg(i); 277 | } 278 | cout << endl; 279 | cout << "Flags: " << (state.zero ? "Z" : "z") << (state.overflow ? "V" : "v") << (state.negative ? "N" : "n") << (state.carry ? "C" : "c") << endl; 280 | } 281 | 282 | void Interpreter::printMemory() 283 | { 284 | string const& data = state.memory; 285 | cout << "Mem: " << endl; 286 | cout << hex; 287 | unsigned rowlength = 32; 288 | for (size_t i = 0; i < data.length(); i += rowlength) 289 | { 290 | if (data.substr(i, rowlength) == string(rowlength, 0)) 291 | continue; 292 | cout << setw(4) << i << ":"; 293 | for (size_t j = 0; j < rowlength; j++) 294 | { 295 | if (j % 4 == 0) 296 | cout << " "; 297 | cout << setfill('0') << setw(2) << unsigned(uint8_t(data[i + j])); 298 | } 299 | cout << endl; 300 | } 301 | } 302 | 303 | uint32_t Interpreter::currentInstruction() const 304 | { 305 | return readWord(code, pc()); 306 | } 307 | 308 | bool Interpreter::condition(uint16_t condition, bool invert) const 309 | { 310 | bool takeBranch = false; 311 | if (condition == 0) 312 | takeBranch = true; 313 | else if (condition == 1) 314 | takeBranch = state.carry && !state.zero; 315 | else if (condition == 2) 316 | takeBranch = !state.carry; 317 | else if (condition == 3) 318 | takeBranch = !state.zero; 319 | else if (condition == 4) 320 | takeBranch = !state.overflow; 321 | else if (condition == 5) 322 | takeBranch = !state.negative; 323 | else if (condition == 6) 324 | { 325 | if (invert) 326 | return (state.negative && !state.overflow) || (!state.negative && state.overflow); 327 | else 328 | return (state.negative && state.overflow) || (!state.negative && !state.overflow); 329 | } 330 | else if (condition == 7) 331 | { 332 | if (invert) 333 | return state.zero || (state.negative && !state.overflow) || (!state.negative && state.overflow); 334 | else 335 | return (state.negative && state.overflow && !state.zero) || (!state.negative && !state.overflow && !state.zero); 336 | } 337 | else 338 | throw new exception; 339 | if (invert) 340 | takeBranch = !takeBranch; 341 | 342 | return takeBranch; 343 | } 344 | 345 | uint32_t Interpreter::operation(uint16_t op, uint32_t a, uint32_t b, bool updateFlags, bool arithmeticShift) 346 | { 347 | uint32_t result = 0; 348 | bool carry = false; 349 | if (op < 4) 350 | { 351 | // 0: add, 1: addc, 2: sub, 3: subb 352 | uint32_t bmod = op >= 2 ? ~b: b; 353 | uint32_t c = 0; 354 | if (op == 1) 355 | c = state.carry; 356 | else if (op == 2) 357 | c = 1; 358 | else if (op == 3) 359 | c = !state.carry; 360 | result = a + bmod + c; 361 | if (updateFlags && (uint64_t(a) + uint64_t(bmod) + uint64_t(c) >= (uint64_t(1) << 32))) 362 | carry = true; 363 | } 364 | else if (op == 4) 365 | result = a & b; 366 | else if (op == 5) 367 | result = a | b; 368 | else if (op == 6) 369 | result = a ^ b; 370 | else if (op == 7) 371 | { 372 | int32_t amount = int32_t(b); 373 | if (amount > 31 || amount < -31) 374 | throw new exception; 375 | if (amount >= 0) 376 | { 377 | result = a << amount; 378 | carry = (uint64_t(a) << amount) & (uint64_t(1) << 32); 379 | } 380 | else if (arithmeticShift) 381 | result = uint32_t(int32_t(a) >> (-amount)); 382 | else 383 | result = a >> (-amount); 384 | } 385 | 386 | if (updateFlags) 387 | { 388 | uint32_t msb = 0x80000000; 389 | if (op != 3 || state.zero) 390 | state.zero = result == 0; 391 | state.negative = result & msb; 392 | if (op < 2) 393 | state.overflow = (((a & msb) == (b & msb)) && ((a & msb) != (result & msb))); 394 | else if (op < 4) 395 | state.overflow = (((a & msb) == ((~b) & msb)) && ((a & msb) != (result & msb))); 396 | else 397 | state.overflow = false; 398 | state.carry = carry; 399 | } 400 | return result; 401 | } 402 | 403 | string Interpreter::operationName(uint16_t op) 404 | { 405 | if (op == 0) 406 | return "add"; 407 | else if (op == 1) 408 | return "addc"; 409 | else if (op == 2) 410 | return "sub"; 411 | else if (op == 3) 412 | return "subb"; 413 | else if (op == 4) 414 | return "and"; 415 | else if (op == 5) 416 | return "or"; 417 | else if (op == 6) 418 | return "xor"; 419 | else if (op == 7) 420 | return "shift"; 421 | return "???"; 422 | } 423 | 424 | uint32_t Interpreter::reg(uint16_t i) const 425 | { 426 | if (i == 0) 427 | return 0; 428 | if (i == 1) 429 | return uint32_t(-1); 430 | else 431 | return state.registers[i - 2]; 432 | } 433 | 434 | void Interpreter::regStore(uint16_t reg, uint32_t value, unsigned delayForPC) 435 | { 436 | if (reg == 0 || reg == 1) 437 | return; 438 | else if (isPC(reg)) 439 | { 440 | value = value & ~uint32_t(3); 441 | for (unsigned i = delayForPC; i < 3; ++i, value += 4) 442 | state.pcDelay[i] = value; 443 | } 444 | else 445 | state.registers[reg - 2] = value; 446 | } 447 | 448 | uint32_t Interpreter::readWord(string const& data, uint32_t pos) 449 | { 450 | if (pos > data.size() - 4) 451 | throw new exception; 452 | uint32_t ret = 0; 453 | for (unsigned i = 0; i < 4; i++) 454 | ret = (ret << 8) | (uint32_t(data[pos + i]) & 0xff); 455 | return ret; 456 | } 457 | 458 | uint32_t Interpreter::readByte(string const& data, uint32_t pos) 459 | { 460 | if (pos >= data.size()) 461 | throw new exception; 462 | return uint8_t(data[pos]); 463 | } 464 | 465 | uint32_t Interpreter::memWord(uint32_t index) 466 | { 467 | index &= ~uint32_t(3); 468 | state.memory.resize(max(state.memory.length(), index + 4), 0); 469 | return readWord(state.memory, index); 470 | } 471 | 472 | uint32_t Interpreter::memByte(uint32_t index) 473 | { 474 | state.memory.resize(max(state.memory.length(), index + 1), 0); 475 | return readByte(state.memory, index); 476 | } 477 | 478 | void Interpreter::memStoreWord(uint32_t pos, uint32_t value) 479 | { 480 | pos &= ~uint32_t(3); 481 | state.memory.resize(max(state.memory.length(), pos + 4), 0); 482 | for (size_t i = 0; i < 4; ++i) 483 | state.memory[pos + i] = (value >> (24 - i * 8)) & 0xff; 484 | } 485 | 486 | void Interpreter::memStoreByte(uint32_t pos, uint32_t value) 487 | { 488 | state.memory.resize(max(state.memory.length(), pos + 1), 0); 489 | state.memory[pos] = char(uint8_t(value & 0xff)); 490 | } 491 | -------------------------------------------------------------------------------- /interpreter-sol/lanai.sol: -------------------------------------------------------------------------------- 1 | pragma solidity ^0.4.0; 2 | 3 | library MachineState { 4 | struct State { 5 | bytes code; 6 | bytes mem; 7 | uint[30] registers; 8 | uint[3] pcDelay; 9 | 10 | bool zero; 11 | bool negative; 12 | bool overflow; 13 | bool carry; 14 | } 15 | using MachineState for MachineState.State; 16 | 17 | function init(bytes memory code, uint entrypoint, uint exitpoint, uint memsize) 18 | internal 19 | returns (State memory state) 20 | { 21 | state.mem = new bytes(memsize); 22 | state.code = code; 23 | state.registers[3] = memsize - 8; // FP 24 | state.registers[2] = memsize - 8; // SP 25 | state.memStoreWord(state.registers[3], exitpoint); 26 | state.regStore(2, entrypoint, 0); 27 | } 28 | function memStoreWord(State self, uint pos, uint value) internal { 29 | pos &= ~uint(3); 30 | self.mem[pos + 0] = byte(uint8(value / 0x1000000)); 31 | self.mem[pos + 1] = byte(uint8(value / 0x10000)); 32 | self.mem[pos + 2] = byte(uint8(value / 0x100)); 33 | self.mem[pos + 3] = byte(uint8(value / 0x1)); 34 | } 35 | function memStoreByte(State self, uint pos, uint value) internal { 36 | self.mem[pos] = byte(uint8(value)); 37 | } 38 | function memWord(State self, uint pos) internal returns (uint) { 39 | pos &= ~uint(3); 40 | return readWord(self.mem, pos); 41 | } 42 | function memByte(State self, uint pos) internal returns (uint) { 43 | return readByte(self.mem, pos); 44 | } 45 | function regStore(State self, uint reg, uint value, uint delayForPC) 46 | internal 47 | { 48 | if (reg == 0 || reg == 1) 49 | return; 50 | else if (isPC(reg)) 51 | { 52 | value = value & ~uint(3); 53 | for (uint i = delayForPC; i < 3; ++i) { 54 | self.pcDelay[i] = value; 55 | value += 4; 56 | } 57 | } 58 | else 59 | self.registers[reg - 2] = value; 60 | } 61 | function reg(State self, uint r) internal returns (uint) { 62 | if (r == 0) 63 | return 0; 64 | if (r == 1) 65 | return uint(-1); 66 | else 67 | return self.registers[r - 2]; 68 | } 69 | function isPC(uint reg) internal returns (bool) { 70 | return reg == 2; 71 | } 72 | function pc(State state) internal returns (uint) { 73 | return state.reg(2); 74 | } 75 | function nextPC(State self) internal returns (uint) { 76 | return self.pcDelay[0]; 77 | } 78 | function readWord(bytes memory data, uint pos) internal returns (uint) { 79 | uint ret = 0; 80 | for (uint i = 0; i < 4; i++) 81 | ret = (ret * 256) | readByte(data, pos + i); 82 | return ret; 83 | } 84 | function readByte(bytes memory data, uint pos) internal returns (uint) { 85 | return uint(uint8(data[pos])); 86 | } 87 | function currentInstruction(State self) internal returns (uint) { 88 | return readWord(self.code, self.pc()); 89 | } 90 | function updatePC(State self) internal { 91 | self.registers[0] = self.pcDelay[0]; 92 | self.pcDelay[0] = self.pcDelay[1]; 93 | self.pcDelay[1] = self.pcDelay[2]; 94 | self.pcDelay[2] = self.pcDelay[1] + 4; 95 | } 96 | /// @return (x >> endbit) & ((1 << len) - 1) 97 | function bitslice(uint x, uint endbit, uint len) returns (uint) { 98 | x /= uint(2)**endbit; 99 | return x & (uint(2)**len - 1); 100 | } 101 | 102 | function operation( 103 | State state, 104 | uint op, uint a, uint b, 105 | bool updateFlags, bool arithmeticShift 106 | ) internal returns (uint) { 107 | uint result = 0; 108 | bool carry = false; 109 | a = uint32(a); 110 | b = uint32(b); 111 | if (op < 4) 112 | { 113 | // 0: add, 1: addc, 2: sub, 3: subb 114 | uint bmod = uint32(op >= 2 ? ~b: b); 115 | uint c = 0; 116 | if (op == 1) 117 | c = state.carry ? 1 : 0; 118 | else if (op == 2) 119 | c = 1; 120 | else if (op == 3) 121 | c = state.carry ? 0 : 1; 122 | result = a + bmod + c; 123 | if (updateFlags && (a + bmod + c >= 0x100000000)) 124 | carry = true; 125 | } 126 | else if (op == 4) 127 | result = a & b; 128 | else if (op == 5) 129 | result = a | b; 130 | else if (op == 6) 131 | result = a ^ b; 132 | else if (op == 7) 133 | { 134 | int amount = int32(b); 135 | if (amount > 31 || amount < -31) 136 | throw; 137 | if (amount >= 0) 138 | { 139 | result = a * uint(2)**uint(amount); 140 | carry = (result & 0x100000000) > 0; 141 | } 142 | else 143 | result = a / uint(2)**uint(-amount); 144 | } 145 | result = uint32(result); 146 | 147 | if (updateFlags) 148 | { 149 | uint msb = 0x80000000; 150 | if (op != 3 || state.zero) 151 | state.zero = result == 0; 152 | state.negative = (result & msb) > 0; 153 | if (op < 2) 154 | state.overflow = (((a & msb) == (b & msb)) && ((a & msb) != (result & msb))); 155 | else if (op < 4) 156 | state.overflow = (((a & msb) == ((~b) & msb)) && ((a & msb) != (result & msb))); 157 | else 158 | state.overflow = false; 159 | state.carry = carry; 160 | } 161 | return result; 162 | } 163 | struct Instruction { 164 | uint instruction; 165 | uint opcode; 166 | uint rd; 167 | uint rs1; 168 | uint rs2; 169 | uint p; 170 | uint q; 171 | uint constant_; 172 | } 173 | function condition(State memory state, uint condition, bool invert) 174 | internal 175 | returns (bool) 176 | { 177 | bool takeBranch = false; 178 | if (condition == 0) 179 | takeBranch = true; 180 | else if (condition == 1) 181 | takeBranch = state.carry && !state.zero; 182 | else if (condition == 2) 183 | takeBranch = !state.carry; 184 | else if (condition == 3) 185 | takeBranch = !state.zero; 186 | else if (condition == 4) 187 | takeBranch = !state.overflow; 188 | else if (condition == 5) 189 | takeBranch = !state.negative; 190 | else if (condition == 6) 191 | { 192 | if (invert) 193 | return (state.negative && !state.overflow) || (!state.negative && state.overflow); 194 | else 195 | return (state.negative && state.overflow) || (!state.negative && !state.overflow); 196 | } 197 | else if (condition == 7) 198 | { 199 | if (invert) 200 | return state.zero || (state.negative && !state.overflow) || (!state.negative && state.overflow); 201 | else 202 | return (state.negative && state.overflow && !state.zero) || (!state.negative && !state.overflow && !state.zero); 203 | } 204 | else 205 | throw; 206 | if (invert) 207 | takeBranch = !takeBranch; 208 | 209 | return takeBranch; 210 | } 211 | function decodeInstruction(uint instruction) 212 | internal 213 | returns (Instruction memory) 214 | { 215 | return Instruction({ 216 | instruction: instruction, 217 | opcode: bitslice(instruction, 28, 4), 218 | rd: bitslice(instruction, 23, 5), 219 | rs1: bitslice(instruction, 18, 5), 220 | rs2: bitslice(instruction, 11, 5), 221 | p: bitslice(instruction, 17, 1), 222 | q: bitslice(instruction, 16, 1), 223 | constant_: bitslice(instruction, 0, 16) 224 | }); 225 | } 226 | function instrRI(State memory self, Instruction memory i) internal 227 | { 228 | uint constant32 = i.constant_ * 2**(16 * i.q); 229 | if (i.opcode == 4) 230 | constant32 |= i.q > 0 ? uint(0xffff) : uint(0xffff0000); 231 | else if (i.opcode == 7) 232 | constant32 = uint(int(int16(uint16(i.constant_)))); 233 | uint result = self.operation(i.opcode, self.reg(i.rs1), constant32, i.p > 0, i.q > 0); 234 | self.regStore(i.rd, result, 1); 235 | } 236 | function instrRR(State memory self, Instruction memory i) internal 237 | { 238 | uint op = bitslice(i.instruction, 8, 3); 239 | if (op == 7) 240 | throw; 241 | uint result = self.operation(op, self.reg(i.rs1), self.reg(i.rs2), i.p > 0, false); 242 | self.regStore(i.rd, result, 1); 243 | } 244 | function instrRM(State memory self, Instruction memory i) internal 245 | { 246 | bool store = (i.opcode & 1) > 0; 247 | uint constantSE = uint(int(int16(uint16(i.constant_)))); 248 | uint ea = self.reg(i.rs1) + (i.p > 0 ? constantSE : 0); 249 | if (store) 250 | self.memStoreWord(ea, self.reg(i.rd)); 251 | else 252 | self.regStore(i.rd, self.memWord(ea), 2); 253 | if (i.q > 0) { 254 | if (isPC(i.rs1)) 255 | throw; // TODO does this also have delay slots? 256 | self.regStore(i.rs1, self.reg(i.rs1) + constantSE, 0); 257 | } 258 | } 259 | function instrBR(State memory self, Instruction memory i) internal 260 | { 261 | uint cond = bitslice(i.instruction, 25, 3); 262 | uint value = 0; 263 | bool invert = (i.instruction & 1) > 0; 264 | bool takeBranch = condition(self, cond, invert); 265 | uint targetReg = 2; // pc 266 | if ((i.instruction & 0x2) > 0) { 267 | if ((i.instruction & 0x1000000) > 0) 268 | value = self.reg(i.rs1) + (i.instruction & 0xfffc); 269 | else 270 | { 271 | value = takeBranch ? 1 : 0; 272 | targetReg = i.rs1; 273 | } 274 | } 275 | else 276 | value = i.instruction & 0x1fffffc; 277 | if (takeBranch) 278 | self.regStore(targetReg, value, 1); 279 | } 280 | function instrRRM(State memory self, Instruction memory i) internal { 281 | bool store = (i.opcode & 1) > 0; 282 | uint op = bitslice(i.instruction, 8, 3); 283 | if (op == 7) 284 | throw; 285 | bool y = (i.instruction & 4) > 0; 286 | bool l = (i.instruction & 2) > 0; 287 | bool e = (i.instruction & 1) > 0; 288 | if (!y && !l) 289 | throw; 290 | uint ea = self.reg(i.rs1); 291 | if (i.p > 0) { 292 | if (op == 7) throw; 293 | ea = self.operation(op, self.reg(i.rs1), self.reg(i.rs2), false, false); 294 | } 295 | if (store) { 296 | uint val = self.reg(i.rd); 297 | if (y) 298 | self.memStoreByte(ea, val); 299 | else if (!l) 300 | throw; 301 | else 302 | self.memStoreWord(ea, val); 303 | } else { 304 | val = 0; 305 | if (y) 306 | { 307 | val = self.memByte(ea); 308 | if (e) 309 | val = uint(int(int8(val))); 310 | else 311 | val = val & 0xff; 312 | } 313 | else if (!l) 314 | throw; 315 | else 316 | val = self.memWord(ea); 317 | self.regStore(i.rd, val, 2); 318 | } 319 | if (i.q > 0) { 320 | if (isPC(i.rs1)) 321 | throw; // TODO does this also have delay slots? 322 | if (op == 7) throw; 323 | uint result = self.operation(op, self.reg(i.rs1), self.reg(i.rs2), false, false); 324 | self.regStore(i.rs1, result, 0); 325 | } 326 | } 327 | function instrSLS(State memory self, Instruction memory i) internal 328 | { 329 | if (i.p == 0 && i.q != 0) 330 | throw; 331 | uint value = (i.rs1 * 0x10000) | i.constant_; 332 | if (i.q != 0) 333 | self.memStoreWord(value, self.reg(i.rd)); 334 | else { 335 | if (i.p == 0) 336 | value = self.memWord(i.constant_); 337 | self.regStore(i.rd, value, 2); 338 | } 339 | } 340 | function step(State self) internal { 341 | self.updatePC(); 342 | Instruction memory i = decodeInstruction(self.currentInstruction()); 343 | if (i.opcode & 8 == 0) { 344 | self.instrRI(i); 345 | } else if (i.opcode == 0xc) { 346 | self.instrRR(i); 347 | } else if ((i.opcode & 0xe) == 0x8) { 348 | self.instrRM(i); 349 | } else if ((i.opcode & 0xe) == 0xa) { 350 | self.instrRRM(i); 351 | } else if (i.opcode == 0xe) { 352 | self.instrBR(i); 353 | } else if (i.opcode == 0xf) { 354 | self.instrSLS(i); 355 | } else 356 | throw; 357 | } 358 | } 359 | 360 | contract Lanai { 361 | using MachineState for MachineState.State; 362 | function shl(uint x, uint i) internal returns (uint) { 363 | return x * 2**i; 364 | } 365 | 366 | event StateLog(uint step, uint pc, uint rv); 367 | function runForSteps(uint n) returns (uint) { 368 | uint exitpoint = 0xfffff0; 369 | var state = getExampleProg(); 370 | for (uint i = 0; i < n && state.nextPC() != exitpoint; i++) { 371 | state.step(); 372 | StateLog(i, state.reg(2), state.reg(8)); 373 | } 374 | return state.reg(8); 375 | } 376 | 377 | function getExampleProg() internal returns (MachineState.State memory) { 378 | bytes memory code = hex"7f454c46010201000000000000000000000100f400000001000000000000000000000170000000000034000000000028000600019293fffc02900008221000109016fff4f40200148116fffc021400008296fff800636c616e672076657273696f6e20342e302e302028687474703a2f2f6c6c766d2e6f72672f6769742f636c616e672e6769742036353632303466666234356262663035363130313236356433616534383131363338313834633137292028687474703a2f2f6c6c766d2e6f72672f6769742f6c6c766d2e676974206336363262376561653363346666643434636534326538353032346439343031356163356230386129000000000000000000000000000000000000000000002500000000000000000400fff100000010000000000000002012000002002e74657874002e636f6d6d656e74006d61696e002e6e6f74652e474e552d737461636b002f6d6e742f6d696e696d616c2e63002e737472746162002e73796d7461620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000340000000300000000000000000000012c0000004400000000000000000000000100000000000000010000000100000006000000000000003400000020000000000000000000000004000000000000000700000001000000300000000000000054000000a60000000000000000000000010000000100000015000000010000000000000000000000fa00000000000000000000000000000001000000000000003c000000020000000000000000000000fc0000003000000001000000020000000400000010"; 379 | uint entrypoint = 0x34; 380 | return MachineState.init(code, entrypoint, 0xfffff0, 0x100); 381 | } 382 | function test() returns (uint) { 383 | bytes memory code = hex"7f454c46010201000000000000000000000100f400000001000000000000000000000170000000000034000000000028000600019293fffc02900008221000109016fff4f40200148116fffc021400008296fff800636c616e672076657273696f6e20342e302e302028687474703a2f2f6c6c766d2e6f72672f6769742f636c616e672e6769742036353632303466666234356262663035363130313236356433616534383131363338313834633137292028687474703a2f2f6c6c766d2e6f72672f6769742f6c6c766d2e676974206336363262376561653363346666643434636534326538353032346439343031356163356230386129000000000000000000000000000000000000000000002500000000000000000400fff100000010000000000000002012000002002e74657874002e636f6d6d656e74006d61696e002e6e6f74652e474e552d737461636b002f6d6e742f6d696e696d616c2e63002e737472746162002e73796d7461620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000340000000300000000000000000000012c0000004400000000000000000000000100000000000000010000000100000006000000000000003400000020000000000000000000000004000000000000000700000001000000300000000000000054000000a60000000000000000000000010000000100000015000000010000000000000000000000fa00000000000000000000000000000001000000000000003c000000020000000000000000000000fc0000003000000001000000020000000400000010"; 384 | uint entrypoint = 0x34; 385 | var state = MachineState.init(code, entrypoint, 0xfffff0, 0x100); 386 | return state.pc(); 387 | } 388 | } 389 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/3.2.2/CompilerIdCXX/CMakeCXXCompilerId.cpp: -------------------------------------------------------------------------------- 1 | /* This source file must have a .cpp extension so that all C++ compilers 2 | recognize the extension without flags. Borland does not know .cxx for 3 | example. */ 4 | #ifndef __cplusplus 5 | # error "A C compiler has been selected for C++." 6 | #endif 7 | 8 | 9 | /* Version number components: V=Version, R=Revision, P=Patch 10 | Version date components: YYYY=Year, MM=Month, DD=Day */ 11 | 12 | #if defined(__COMO__) 13 | # define COMPILER_ID "Comeau" 14 | /* __COMO_VERSION__ = VRR */ 15 | # define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) 16 | # define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) 17 | 18 | #elif defined(__INTEL_COMPILER) || defined(__ICC) 19 | # define COMPILER_ID "Intel" 20 | # if defined(_MSC_VER) 21 | # define SIMULATE_ID "MSVC" 22 | # endif 23 | /* __INTEL_COMPILER = VRP */ 24 | # define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) 25 | # define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) 26 | # if defined(__INTEL_COMPILER_UPDATE) 27 | # define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) 28 | # else 29 | # define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) 30 | # endif 31 | # if defined(__INTEL_COMPILER_BUILD_DATE) 32 | /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ 33 | # define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) 34 | # endif 35 | # if defined(_MSC_VER) 36 | /* _MSC_VER = VVRR */ 37 | # define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) 38 | # define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) 39 | # endif 40 | 41 | #elif defined(__PATHCC__) 42 | # define COMPILER_ID "PathScale" 43 | # define COMPILER_VERSION_MAJOR DEC(__PATHCC__) 44 | # define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) 45 | # if defined(__PATHCC_PATCHLEVEL__) 46 | # define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) 47 | # endif 48 | 49 | #elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) 50 | # define COMPILER_ID "Embarcadero" 51 | # define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) 52 | # define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) 53 | # define COMPILER_VERSION_PATCH HEX(__CODEGEARC_VERSION__ & 0xFFFF) 54 | 55 | #elif defined(__BORLANDC__) 56 | # define COMPILER_ID "Borland" 57 | /* __BORLANDC__ = 0xVRR */ 58 | # define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) 59 | # define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) 60 | 61 | #elif defined(__WATCOMC__) && __WATCOMC__ < 1200 62 | # define COMPILER_ID "Watcom" 63 | /* __WATCOMC__ = VVRR */ 64 | # define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) 65 | # define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) 66 | # if (__WATCOMC__ % 10) > 0 67 | # define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) 68 | # endif 69 | 70 | #elif defined(__WATCOMC__) 71 | # define COMPILER_ID "OpenWatcom" 72 | /* __WATCOMC__ = VVRP + 1100 */ 73 | # define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) 74 | # define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) 75 | # if (__WATCOMC__ % 10) > 0 76 | # define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) 77 | # endif 78 | 79 | #elif defined(__SUNPRO_CC) 80 | # define COMPILER_ID "SunPro" 81 | # if __SUNPRO_CC >= 0x5100 82 | /* __SUNPRO_CC = 0xVRRP */ 83 | # define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) 84 | # define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) 85 | # define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) 86 | # else 87 | /* __SUNPRO_CC = 0xVRP */ 88 | # define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) 89 | # define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) 90 | # define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) 91 | # endif 92 | 93 | #elif defined(__HP_aCC) 94 | # define COMPILER_ID "HP" 95 | /* __HP_aCC = VVRRPP */ 96 | # define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) 97 | # define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) 98 | # define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) 99 | 100 | #elif defined(__DECCXX) 101 | # define COMPILER_ID "Compaq" 102 | /* __DECCXX_VER = VVRRTPPPP */ 103 | # define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) 104 | # define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) 105 | # define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) 106 | 107 | #elif defined(__IBMCPP__) && defined(__COMPILER_VER__) 108 | # define COMPILER_ID "zOS" 109 | /* __IBMCPP__ = VRP */ 110 | # define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) 111 | # define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) 112 | # define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) 113 | 114 | #elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 115 | # define COMPILER_ID "XL" 116 | /* __IBMCPP__ = VRP */ 117 | # define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) 118 | # define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) 119 | # define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) 120 | 121 | #elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 122 | # define COMPILER_ID "VisualAge" 123 | /* __IBMCPP__ = VRP */ 124 | # define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) 125 | # define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) 126 | # define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) 127 | 128 | #elif defined(__PGI) 129 | # define COMPILER_ID "PGI" 130 | # define COMPILER_VERSION_MAJOR DEC(__PGIC__) 131 | # define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) 132 | # if defined(__PGIC_PATCHLEVEL__) 133 | # define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) 134 | # endif 135 | 136 | #elif defined(_CRAYC) 137 | # define COMPILER_ID "Cray" 138 | # define COMPILER_VERSION_MAJOR DEC(_RELEASE) 139 | # define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) 140 | 141 | #elif defined(__TI_COMPILER_VERSION__) 142 | # define COMPILER_ID "TI" 143 | /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ 144 | # define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) 145 | # define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) 146 | # define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) 147 | 148 | #elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) 149 | # define COMPILER_ID "Fujitsu" 150 | 151 | #elif defined(__SCO_VERSION__) 152 | # define COMPILER_ID "SCO" 153 | 154 | #elif defined(__clang__) && defined(__apple_build_version__) 155 | # define COMPILER_ID "AppleClang" 156 | # if defined(_MSC_VER) 157 | # define SIMULATE_ID "MSVC" 158 | # endif 159 | # define COMPILER_VERSION_MAJOR DEC(__clang_major__) 160 | # define COMPILER_VERSION_MINOR DEC(__clang_minor__) 161 | # define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) 162 | # if defined(_MSC_VER) 163 | /* _MSC_VER = VVRR */ 164 | # define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) 165 | # define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) 166 | # endif 167 | # define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) 168 | 169 | #elif defined(__clang__) 170 | # define COMPILER_ID "Clang" 171 | # if defined(_MSC_VER) 172 | # define SIMULATE_ID "MSVC" 173 | # endif 174 | # define COMPILER_VERSION_MAJOR DEC(__clang_major__) 175 | # define COMPILER_VERSION_MINOR DEC(__clang_minor__) 176 | # define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) 177 | # if defined(_MSC_VER) 178 | /* _MSC_VER = VVRR */ 179 | # define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) 180 | # define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) 181 | # endif 182 | 183 | #elif defined(__GNUC__) 184 | # define COMPILER_ID "GNU" 185 | # define COMPILER_VERSION_MAJOR DEC(__GNUC__) 186 | # define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) 187 | # if defined(__GNUC_PATCHLEVEL__) 188 | # define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) 189 | # endif 190 | 191 | #elif defined(_MSC_VER) 192 | # define COMPILER_ID "MSVC" 193 | /* _MSC_VER = VVRR */ 194 | # define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) 195 | # define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) 196 | # if defined(_MSC_FULL_VER) 197 | # if _MSC_VER >= 1400 198 | /* _MSC_FULL_VER = VVRRPPPPP */ 199 | # define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) 200 | # else 201 | /* _MSC_FULL_VER = VVRRPPPP */ 202 | # define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) 203 | # endif 204 | # endif 205 | # if defined(_MSC_BUILD) 206 | # define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) 207 | # endif 208 | 209 | #elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) 210 | # define COMPILER_ID "ADSP" 211 | #if defined(__VISUALDSPVERSION__) 212 | /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ 213 | # define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) 214 | # define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) 215 | # define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) 216 | #endif 217 | 218 | #elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC) 219 | # define COMPILER_ID "IAR" 220 | 221 | #elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) 222 | # define COMPILER_ID "MIPSpro" 223 | # if defined(_SGI_COMPILER_VERSION) 224 | /* _SGI_COMPILER_VERSION = VRP */ 225 | # define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100) 226 | # define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10) 227 | # define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10) 228 | # else 229 | /* _COMPILER_VERSION = VRP */ 230 | # define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100) 231 | # define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10) 232 | # define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10) 233 | # endif 234 | 235 | 236 | /* These compilers are either not known or too old to define an 237 | identification macro. Try to identify the platform and guess that 238 | it is the native compiler. */ 239 | #elif defined(__sgi) 240 | # define COMPILER_ID "MIPSpro" 241 | 242 | #elif defined(__hpux) || defined(__hpua) 243 | # define COMPILER_ID "HP" 244 | 245 | #else /* unknown compiler */ 246 | # define COMPILER_ID "" 247 | #endif 248 | 249 | /* Construct the string literal in pieces to prevent the source from 250 | getting matched. Store it in a pointer rather than an array 251 | because some compilers will just produce instructions to fill the 252 | array rather than assigning a pointer to a static array. */ 253 | char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; 254 | #ifdef SIMULATE_ID 255 | char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; 256 | #endif 257 | 258 | #ifdef __QNXNTO__ 259 | char const* qnxnto = "INFO" ":" "qnxnto[]"; 260 | #endif 261 | 262 | /* Identify known platforms by name. */ 263 | #if defined(__linux) || defined(__linux__) || defined(linux) 264 | # define PLATFORM_ID "Linux" 265 | 266 | #elif defined(__CYGWIN__) 267 | # define PLATFORM_ID "Cygwin" 268 | 269 | #elif defined(__MINGW32__) 270 | # define PLATFORM_ID "MinGW" 271 | 272 | #elif defined(__APPLE__) 273 | # define PLATFORM_ID "Darwin" 274 | 275 | #elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) 276 | # define PLATFORM_ID "Windows" 277 | 278 | #elif defined(__FreeBSD__) || defined(__FreeBSD) 279 | # define PLATFORM_ID "FreeBSD" 280 | 281 | #elif defined(__NetBSD__) || defined(__NetBSD) 282 | # define PLATFORM_ID "NetBSD" 283 | 284 | #elif defined(__OpenBSD__) || defined(__OPENBSD) 285 | # define PLATFORM_ID "OpenBSD" 286 | 287 | #elif defined(__sun) || defined(sun) 288 | # define PLATFORM_ID "SunOS" 289 | 290 | #elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) 291 | # define PLATFORM_ID "AIX" 292 | 293 | #elif defined(__sgi) || defined(__sgi__) || defined(_SGI) 294 | # define PLATFORM_ID "IRIX" 295 | 296 | #elif defined(__hpux) || defined(__hpux__) 297 | # define PLATFORM_ID "HP-UX" 298 | 299 | #elif defined(__HAIKU__) 300 | # define PLATFORM_ID "Haiku" 301 | 302 | #elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) 303 | # define PLATFORM_ID "BeOS" 304 | 305 | #elif defined(__QNX__) || defined(__QNXNTO__) 306 | # define PLATFORM_ID "QNX" 307 | 308 | #elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) 309 | # define PLATFORM_ID "Tru64" 310 | 311 | #elif defined(__riscos) || defined(__riscos__) 312 | # define PLATFORM_ID "RISCos" 313 | 314 | #elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) 315 | # define PLATFORM_ID "SINIX" 316 | 317 | #elif defined(__UNIX_SV__) 318 | # define PLATFORM_ID "UNIX_SV" 319 | 320 | #elif defined(__bsdos__) 321 | # define PLATFORM_ID "BSDOS" 322 | 323 | #elif defined(_MPRAS) || defined(MPRAS) 324 | # define PLATFORM_ID "MP-RAS" 325 | 326 | #elif defined(__osf) || defined(__osf__) 327 | # define PLATFORM_ID "OSF1" 328 | 329 | #elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) 330 | # define PLATFORM_ID "SCO_SV" 331 | 332 | #elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) 333 | # define PLATFORM_ID "ULTRIX" 334 | 335 | #elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) 336 | # define PLATFORM_ID "Xenix" 337 | 338 | #elif defined(__WATCOMC__) 339 | # if defined(__LINUX__) 340 | # define PLATFORM_ID "Linux" 341 | 342 | # elif defined(__DOS__) 343 | # define PLATFORM_ID "DOS" 344 | 345 | # elif defined(__OS2__) 346 | # define PLATFORM_ID "OS2" 347 | 348 | # elif defined(__WINDOWS__) 349 | # define PLATFORM_ID "Windows3x" 350 | 351 | # else /* unknown platform */ 352 | # define PLATFORM_ID "" 353 | # endif 354 | 355 | #else /* unknown platform */ 356 | # define PLATFORM_ID "" 357 | 358 | #endif 359 | 360 | /* For windows compilers MSVC and Intel we can determine 361 | the architecture of the compiler being used. This is because 362 | the compilers do not have flags that can change the architecture, 363 | but rather depend on which compiler is being used 364 | */ 365 | #if defined(_WIN32) && defined(_MSC_VER) 366 | # if defined(_M_IA64) 367 | # define ARCHITECTURE_ID "IA64" 368 | 369 | # elif defined(_M_X64) || defined(_M_AMD64) 370 | # define ARCHITECTURE_ID "x64" 371 | 372 | # elif defined(_M_IX86) 373 | # define ARCHITECTURE_ID "X86" 374 | 375 | # elif defined(_M_ARM) 376 | # define ARCHITECTURE_ID "ARM" 377 | 378 | # elif defined(_M_MIPS) 379 | # define ARCHITECTURE_ID "MIPS" 380 | 381 | # elif defined(_M_SH) 382 | # define ARCHITECTURE_ID "SHx" 383 | 384 | # else /* unknown architecture */ 385 | # define ARCHITECTURE_ID "" 386 | # endif 387 | 388 | #elif defined(__WATCOMC__) 389 | # if defined(_M_I86) 390 | # define ARCHITECTURE_ID "I86" 391 | 392 | # elif defined(_M_IX86) 393 | # define ARCHITECTURE_ID "X86" 394 | 395 | # else /* unknown architecture */ 396 | # define ARCHITECTURE_ID "" 397 | # endif 398 | 399 | #else 400 | # define ARCHITECTURE_ID "" 401 | #endif 402 | 403 | /* Convert integer to decimal digit literals. */ 404 | #define DEC(n) \ 405 | ('0' + (((n) / 10000000)%10)), \ 406 | ('0' + (((n) / 1000000)%10)), \ 407 | ('0' + (((n) / 100000)%10)), \ 408 | ('0' + (((n) / 10000)%10)), \ 409 | ('0' + (((n) / 1000)%10)), \ 410 | ('0' + (((n) / 100)%10)), \ 411 | ('0' + (((n) / 10)%10)), \ 412 | ('0' + ((n) % 10)) 413 | 414 | /* Convert integer to hex digit literals. */ 415 | #define HEX(n) \ 416 | ('0' + ((n)>>28 & 0xF)), \ 417 | ('0' + ((n)>>24 & 0xF)), \ 418 | ('0' + ((n)>>20 & 0xF)), \ 419 | ('0' + ((n)>>16 & 0xF)), \ 420 | ('0' + ((n)>>12 & 0xF)), \ 421 | ('0' + ((n)>>8 & 0xF)), \ 422 | ('0' + ((n)>>4 & 0xF)), \ 423 | ('0' + ((n) & 0xF)) 424 | 425 | /* Construct a string literal encoding the version number components. */ 426 | #ifdef COMPILER_VERSION_MAJOR 427 | char const info_version[] = { 428 | 'I', 'N', 'F', 'O', ':', 429 | 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', 430 | COMPILER_VERSION_MAJOR, 431 | # ifdef COMPILER_VERSION_MINOR 432 | '.', COMPILER_VERSION_MINOR, 433 | # ifdef COMPILER_VERSION_PATCH 434 | '.', COMPILER_VERSION_PATCH, 435 | # ifdef COMPILER_VERSION_TWEAK 436 | '.', COMPILER_VERSION_TWEAK, 437 | # endif 438 | # endif 439 | # endif 440 | ']','\0'}; 441 | #endif 442 | 443 | /* Construct a string literal encoding the version number components. */ 444 | #ifdef SIMULATE_VERSION_MAJOR 445 | char const info_simulate_version[] = { 446 | 'I', 'N', 'F', 'O', ':', 447 | 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', 448 | SIMULATE_VERSION_MAJOR, 449 | # ifdef SIMULATE_VERSION_MINOR 450 | '.', SIMULATE_VERSION_MINOR, 451 | # ifdef SIMULATE_VERSION_PATCH 452 | '.', SIMULATE_VERSION_PATCH, 453 | # ifdef SIMULATE_VERSION_TWEAK 454 | '.', SIMULATE_VERSION_TWEAK, 455 | # endif 456 | # endif 457 | # endif 458 | ']','\0'}; 459 | #endif 460 | 461 | /* Construct the string literal in pieces to prevent the source from 462 | getting matched. Store it in a pointer rather than an array 463 | because some compilers will just produce instructions to fill the 464 | array rather than assigning a pointer to a static array. */ 465 | char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; 466 | char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; 467 | 468 | 469 | 470 | 471 | /*--------------------------------------------------------------------------*/ 472 | 473 | int main(int argc, char* argv[]) 474 | { 475 | int require = 0; 476 | require += info_compiler[argc]; 477 | require += info_platform[argc]; 478 | #ifdef COMPILER_VERSION_MAJOR 479 | require += info_version[argc]; 480 | #endif 481 | #ifdef SIMULATE_ID 482 | require += info_simulate[argc]; 483 | #endif 484 | #ifdef SIMULATE_VERSION_MAJOR 485 | require += info_simulate_version[argc]; 486 | #endif 487 | (void)argv; 488 | return require; 489 | } 490 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/3.2.2/CompilerIdC/CMakeCCompilerId.c: -------------------------------------------------------------------------------- 1 | #ifdef __cplusplus 2 | # error "A C++ compiler has been selected for C." 3 | #endif 4 | 5 | #if defined(__18CXX) 6 | # define ID_VOID_MAIN 7 | #endif 8 | 9 | 10 | /* Version number components: V=Version, R=Revision, P=Patch 11 | Version date components: YYYY=Year, MM=Month, DD=Day */ 12 | 13 | #if defined(__INTEL_COMPILER) || defined(__ICC) 14 | # define COMPILER_ID "Intel" 15 | # if defined(_MSC_VER) 16 | # define SIMULATE_ID "MSVC" 17 | # endif 18 | /* __INTEL_COMPILER = VRP */ 19 | # define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) 20 | # define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) 21 | # if defined(__INTEL_COMPILER_UPDATE) 22 | # define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) 23 | # else 24 | # define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) 25 | # endif 26 | # if defined(__INTEL_COMPILER_BUILD_DATE) 27 | /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ 28 | # define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) 29 | # endif 30 | # if defined(_MSC_VER) 31 | /* _MSC_VER = VVRR */ 32 | # define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) 33 | # define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) 34 | # endif 35 | 36 | #elif defined(__PATHCC__) 37 | # define COMPILER_ID "PathScale" 38 | # define COMPILER_VERSION_MAJOR DEC(__PATHCC__) 39 | # define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) 40 | # if defined(__PATHCC_PATCHLEVEL__) 41 | # define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) 42 | # endif 43 | 44 | #elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) 45 | # define COMPILER_ID "Embarcadero" 46 | # define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) 47 | # define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) 48 | # define COMPILER_VERSION_PATCH HEX(__CODEGEARC_VERSION__ & 0xFFFF) 49 | 50 | #elif defined(__BORLANDC__) 51 | # define COMPILER_ID "Borland" 52 | /* __BORLANDC__ = 0xVRR */ 53 | # define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) 54 | # define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) 55 | 56 | #elif defined(__WATCOMC__) && __WATCOMC__ < 1200 57 | # define COMPILER_ID "Watcom" 58 | /* __WATCOMC__ = VVRR */ 59 | # define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) 60 | # define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) 61 | # if (__WATCOMC__ % 10) > 0 62 | # define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) 63 | # endif 64 | 65 | #elif defined(__WATCOMC__) 66 | # define COMPILER_ID "OpenWatcom" 67 | /* __WATCOMC__ = VVRP + 1100 */ 68 | # define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) 69 | # define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) 70 | # if (__WATCOMC__ % 10) > 0 71 | # define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) 72 | # endif 73 | 74 | #elif defined(__SUNPRO_C) 75 | # define COMPILER_ID "SunPro" 76 | # if __SUNPRO_C >= 0x5100 77 | /* __SUNPRO_C = 0xVRRP */ 78 | # define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) 79 | # define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) 80 | # define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) 81 | # else 82 | /* __SUNPRO_CC = 0xVRP */ 83 | # define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) 84 | # define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) 85 | # define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) 86 | # endif 87 | 88 | #elif defined(__HP_cc) 89 | # define COMPILER_ID "HP" 90 | /* __HP_cc = VVRRPP */ 91 | # define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) 92 | # define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) 93 | # define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) 94 | 95 | #elif defined(__DECC) 96 | # define COMPILER_ID "Compaq" 97 | /* __DECC_VER = VVRRTPPPP */ 98 | # define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) 99 | # define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) 100 | # define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) 101 | 102 | #elif defined(__IBMC__) && defined(__COMPILER_VER__) 103 | # define COMPILER_ID "zOS" 104 | /* __IBMC__ = VRP */ 105 | # define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) 106 | # define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) 107 | # define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) 108 | 109 | #elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 110 | # define COMPILER_ID "XL" 111 | /* __IBMC__ = VRP */ 112 | # define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) 113 | # define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) 114 | # define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) 115 | 116 | #elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 117 | # define COMPILER_ID "VisualAge" 118 | /* __IBMC__ = VRP */ 119 | # define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) 120 | # define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) 121 | # define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) 122 | 123 | #elif defined(__PGI) 124 | # define COMPILER_ID "PGI" 125 | # define COMPILER_VERSION_MAJOR DEC(__PGIC__) 126 | # define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) 127 | # if defined(__PGIC_PATCHLEVEL__) 128 | # define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) 129 | # endif 130 | 131 | #elif defined(_CRAYC) 132 | # define COMPILER_ID "Cray" 133 | # define COMPILER_VERSION_MAJOR DEC(_RELEASE) 134 | # define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) 135 | 136 | #elif defined(__TI_COMPILER_VERSION__) 137 | # define COMPILER_ID "TI" 138 | /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ 139 | # define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) 140 | # define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) 141 | # define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) 142 | 143 | #elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) 144 | # define COMPILER_ID "Fujitsu" 145 | 146 | #elif defined(__TINYC__) 147 | # define COMPILER_ID "TinyCC" 148 | 149 | #elif defined(__SCO_VERSION__) 150 | # define COMPILER_ID "SCO" 151 | 152 | #elif defined(__clang__) && defined(__apple_build_version__) 153 | # define COMPILER_ID "AppleClang" 154 | # if defined(_MSC_VER) 155 | # define SIMULATE_ID "MSVC" 156 | # endif 157 | # define COMPILER_VERSION_MAJOR DEC(__clang_major__) 158 | # define COMPILER_VERSION_MINOR DEC(__clang_minor__) 159 | # define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) 160 | # if defined(_MSC_VER) 161 | /* _MSC_VER = VVRR */ 162 | # define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) 163 | # define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) 164 | # endif 165 | # define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) 166 | 167 | #elif defined(__clang__) 168 | # define COMPILER_ID "Clang" 169 | # if defined(_MSC_VER) 170 | # define SIMULATE_ID "MSVC" 171 | # endif 172 | # define COMPILER_VERSION_MAJOR DEC(__clang_major__) 173 | # define COMPILER_VERSION_MINOR DEC(__clang_minor__) 174 | # define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) 175 | # if defined(_MSC_VER) 176 | /* _MSC_VER = VVRR */ 177 | # define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) 178 | # define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) 179 | # endif 180 | 181 | #elif defined(__GNUC__) 182 | # define COMPILER_ID "GNU" 183 | # define COMPILER_VERSION_MAJOR DEC(__GNUC__) 184 | # define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) 185 | # if defined(__GNUC_PATCHLEVEL__) 186 | # define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) 187 | # endif 188 | 189 | #elif defined(_MSC_VER) 190 | # define COMPILER_ID "MSVC" 191 | /* _MSC_VER = VVRR */ 192 | # define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) 193 | # define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) 194 | # if defined(_MSC_FULL_VER) 195 | # if _MSC_VER >= 1400 196 | /* _MSC_FULL_VER = VVRRPPPPP */ 197 | # define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) 198 | # else 199 | /* _MSC_FULL_VER = VVRRPPPP */ 200 | # define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) 201 | # endif 202 | # endif 203 | # if defined(_MSC_BUILD) 204 | # define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) 205 | # endif 206 | 207 | #elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) 208 | # define COMPILER_ID "ADSP" 209 | #if defined(__VISUALDSPVERSION__) 210 | /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ 211 | # define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) 212 | # define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) 213 | # define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) 214 | #endif 215 | 216 | #elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC) 217 | # define COMPILER_ID "IAR" 218 | 219 | #elif defined(SDCC) 220 | # define COMPILER_ID "SDCC" 221 | /* SDCC = VRP */ 222 | # define COMPILER_VERSION_MAJOR DEC(SDCC/100) 223 | # define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) 224 | # define COMPILER_VERSION_PATCH DEC(SDCC % 10) 225 | 226 | #elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) 227 | # define COMPILER_ID "MIPSpro" 228 | # if defined(_SGI_COMPILER_VERSION) 229 | /* _SGI_COMPILER_VERSION = VRP */ 230 | # define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100) 231 | # define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10) 232 | # define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10) 233 | # else 234 | /* _COMPILER_VERSION = VRP */ 235 | # define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100) 236 | # define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10) 237 | # define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10) 238 | # endif 239 | 240 | 241 | /* These compilers are either not known or too old to define an 242 | identification macro. Try to identify the platform and guess that 243 | it is the native compiler. */ 244 | #elif defined(__sgi) 245 | # define COMPILER_ID "MIPSpro" 246 | 247 | #elif defined(__hpux) || defined(__hpua) 248 | # define COMPILER_ID "HP" 249 | 250 | #else /* unknown compiler */ 251 | # define COMPILER_ID "" 252 | #endif 253 | 254 | /* Construct the string literal in pieces to prevent the source from 255 | getting matched. Store it in a pointer rather than an array 256 | because some compilers will just produce instructions to fill the 257 | array rather than assigning a pointer to a static array. */ 258 | char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; 259 | #ifdef SIMULATE_ID 260 | char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; 261 | #endif 262 | 263 | #ifdef __QNXNTO__ 264 | char const* qnxnto = "INFO" ":" "qnxnto[]"; 265 | #endif 266 | 267 | /* Identify known platforms by name. */ 268 | #if defined(__linux) || defined(__linux__) || defined(linux) 269 | # define PLATFORM_ID "Linux" 270 | 271 | #elif defined(__CYGWIN__) 272 | # define PLATFORM_ID "Cygwin" 273 | 274 | #elif defined(__MINGW32__) 275 | # define PLATFORM_ID "MinGW" 276 | 277 | #elif defined(__APPLE__) 278 | # define PLATFORM_ID "Darwin" 279 | 280 | #elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) 281 | # define PLATFORM_ID "Windows" 282 | 283 | #elif defined(__FreeBSD__) || defined(__FreeBSD) 284 | # define PLATFORM_ID "FreeBSD" 285 | 286 | #elif defined(__NetBSD__) || defined(__NetBSD) 287 | # define PLATFORM_ID "NetBSD" 288 | 289 | #elif defined(__OpenBSD__) || defined(__OPENBSD) 290 | # define PLATFORM_ID "OpenBSD" 291 | 292 | #elif defined(__sun) || defined(sun) 293 | # define PLATFORM_ID "SunOS" 294 | 295 | #elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) 296 | # define PLATFORM_ID "AIX" 297 | 298 | #elif defined(__sgi) || defined(__sgi__) || defined(_SGI) 299 | # define PLATFORM_ID "IRIX" 300 | 301 | #elif defined(__hpux) || defined(__hpux__) 302 | # define PLATFORM_ID "HP-UX" 303 | 304 | #elif defined(__HAIKU__) 305 | # define PLATFORM_ID "Haiku" 306 | 307 | #elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) 308 | # define PLATFORM_ID "BeOS" 309 | 310 | #elif defined(__QNX__) || defined(__QNXNTO__) 311 | # define PLATFORM_ID "QNX" 312 | 313 | #elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) 314 | # define PLATFORM_ID "Tru64" 315 | 316 | #elif defined(__riscos) || defined(__riscos__) 317 | # define PLATFORM_ID "RISCos" 318 | 319 | #elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) 320 | # define PLATFORM_ID "SINIX" 321 | 322 | #elif defined(__UNIX_SV__) 323 | # define PLATFORM_ID "UNIX_SV" 324 | 325 | #elif defined(__bsdos__) 326 | # define PLATFORM_ID "BSDOS" 327 | 328 | #elif defined(_MPRAS) || defined(MPRAS) 329 | # define PLATFORM_ID "MP-RAS" 330 | 331 | #elif defined(__osf) || defined(__osf__) 332 | # define PLATFORM_ID "OSF1" 333 | 334 | #elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) 335 | # define PLATFORM_ID "SCO_SV" 336 | 337 | #elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) 338 | # define PLATFORM_ID "ULTRIX" 339 | 340 | #elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) 341 | # define PLATFORM_ID "Xenix" 342 | 343 | #elif defined(__WATCOMC__) 344 | # if defined(__LINUX__) 345 | # define PLATFORM_ID "Linux" 346 | 347 | # elif defined(__DOS__) 348 | # define PLATFORM_ID "DOS" 349 | 350 | # elif defined(__OS2__) 351 | # define PLATFORM_ID "OS2" 352 | 353 | # elif defined(__WINDOWS__) 354 | # define PLATFORM_ID "Windows3x" 355 | 356 | # else /* unknown platform */ 357 | # define PLATFORM_ID "" 358 | # endif 359 | 360 | #else /* unknown platform */ 361 | # define PLATFORM_ID "" 362 | 363 | #endif 364 | 365 | /* For windows compilers MSVC and Intel we can determine 366 | the architecture of the compiler being used. This is because 367 | the compilers do not have flags that can change the architecture, 368 | but rather depend on which compiler is being used 369 | */ 370 | #if defined(_WIN32) && defined(_MSC_VER) 371 | # if defined(_M_IA64) 372 | # define ARCHITECTURE_ID "IA64" 373 | 374 | # elif defined(_M_X64) || defined(_M_AMD64) 375 | # define ARCHITECTURE_ID "x64" 376 | 377 | # elif defined(_M_IX86) 378 | # define ARCHITECTURE_ID "X86" 379 | 380 | # elif defined(_M_ARM) 381 | # define ARCHITECTURE_ID "ARM" 382 | 383 | # elif defined(_M_MIPS) 384 | # define ARCHITECTURE_ID "MIPS" 385 | 386 | # elif defined(_M_SH) 387 | # define ARCHITECTURE_ID "SHx" 388 | 389 | # else /* unknown architecture */ 390 | # define ARCHITECTURE_ID "" 391 | # endif 392 | 393 | #elif defined(__WATCOMC__) 394 | # if defined(_M_I86) 395 | # define ARCHITECTURE_ID "I86" 396 | 397 | # elif defined(_M_IX86) 398 | # define ARCHITECTURE_ID "X86" 399 | 400 | # else /* unknown architecture */ 401 | # define ARCHITECTURE_ID "" 402 | # endif 403 | 404 | #else 405 | # define ARCHITECTURE_ID "" 406 | #endif 407 | 408 | /* Convert integer to decimal digit literals. */ 409 | #define DEC(n) \ 410 | ('0' + (((n) / 10000000)%10)), \ 411 | ('0' + (((n) / 1000000)%10)), \ 412 | ('0' + (((n) / 100000)%10)), \ 413 | ('0' + (((n) / 10000)%10)), \ 414 | ('0' + (((n) / 1000)%10)), \ 415 | ('0' + (((n) / 100)%10)), \ 416 | ('0' + (((n) / 10)%10)), \ 417 | ('0' + ((n) % 10)) 418 | 419 | /* Convert integer to hex digit literals. */ 420 | #define HEX(n) \ 421 | ('0' + ((n)>>28 & 0xF)), \ 422 | ('0' + ((n)>>24 & 0xF)), \ 423 | ('0' + ((n)>>20 & 0xF)), \ 424 | ('0' + ((n)>>16 & 0xF)), \ 425 | ('0' + ((n)>>12 & 0xF)), \ 426 | ('0' + ((n)>>8 & 0xF)), \ 427 | ('0' + ((n)>>4 & 0xF)), \ 428 | ('0' + ((n) & 0xF)) 429 | 430 | /* Construct a string literal encoding the version number components. */ 431 | #ifdef COMPILER_VERSION_MAJOR 432 | char const info_version[] = { 433 | 'I', 'N', 'F', 'O', ':', 434 | 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', 435 | COMPILER_VERSION_MAJOR, 436 | # ifdef COMPILER_VERSION_MINOR 437 | '.', COMPILER_VERSION_MINOR, 438 | # ifdef COMPILER_VERSION_PATCH 439 | '.', COMPILER_VERSION_PATCH, 440 | # ifdef COMPILER_VERSION_TWEAK 441 | '.', COMPILER_VERSION_TWEAK, 442 | # endif 443 | # endif 444 | # endif 445 | ']','\0'}; 446 | #endif 447 | 448 | /* Construct a string literal encoding the version number components. */ 449 | #ifdef SIMULATE_VERSION_MAJOR 450 | char const info_simulate_version[] = { 451 | 'I', 'N', 'F', 'O', ':', 452 | 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', 453 | SIMULATE_VERSION_MAJOR, 454 | # ifdef SIMULATE_VERSION_MINOR 455 | '.', SIMULATE_VERSION_MINOR, 456 | # ifdef SIMULATE_VERSION_PATCH 457 | '.', SIMULATE_VERSION_PATCH, 458 | # ifdef SIMULATE_VERSION_TWEAK 459 | '.', SIMULATE_VERSION_TWEAK, 460 | # endif 461 | # endif 462 | # endif 463 | ']','\0'}; 464 | #endif 465 | 466 | /* Construct the string literal in pieces to prevent the source from 467 | getting matched. Store it in a pointer rather than an array 468 | because some compilers will just produce instructions to fill the 469 | array rather than assigning a pointer to a static array. */ 470 | char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; 471 | char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; 472 | 473 | 474 | 475 | 476 | /*--------------------------------------------------------------------------*/ 477 | 478 | #ifdef ID_VOID_MAIN 479 | void main() {} 480 | #else 481 | int main(int argc, char* argv[]) 482 | { 483 | int require = 0; 484 | require += info_compiler[argc]; 485 | require += info_platform[argc]; 486 | require += info_arch[argc]; 487 | #ifdef COMPILER_VERSION_MAJOR 488 | require += info_version[argc]; 489 | #endif 490 | #ifdef SIMULATE_ID 491 | require += info_simulate[argc]; 492 | #endif 493 | #ifdef SIMULATE_VERSION_MAJOR 494 | require += info_simulate_version[argc]; 495 | #endif 496 | (void)argv; 497 | return require; 498 | } 499 | #endif 500 | -------------------------------------------------------------------------------- /interpreter/build/CMakeCache.txt: -------------------------------------------------------------------------------- 1 | # This is the CMakeCache file. 2 | # For build in directory: /home/christian/ethereum/lanai/interpreter/build 3 | # It was generated by CMake: /usr/bin/cmake 4 | # You can edit this file to change values found and used by cmake. 5 | # If you do not want to change any of the values, simply exit the editor. 6 | # If you do want to change a value, simply edit, save, and exit the editor. 7 | # The syntax for the file is as follows: 8 | # KEY:TYPE=VALUE 9 | # KEY is the name of a variable in the cache. 10 | # TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. 11 | # VALUE is the current value for the KEY. 12 | 13 | ######################## 14 | # EXTERNAL cache entries 15 | ######################## 16 | 17 | //Path to a program. 18 | CMAKE_AR:FILEPATH=/usr/bin/ar 19 | 20 | //Choose the type of build, options are: None(CMAKE_CXX_FLAGS or 21 | // CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel. 22 | CMAKE_BUILD_TYPE:STRING=Debug 23 | 24 | //The CodeBlocks executable 25 | CMAKE_CODEBLOCKS_EXECUTABLE:FILEPATH=CMAKE_CODEBLOCKS_EXECUTABLE-NOTFOUND 26 | 27 | //Enable/Disable color output during build. 28 | CMAKE_COLOR_MAKEFILE:BOOL=ON 29 | 30 | //CXX compiler 31 | CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ 32 | 33 | //Flags used by the compiler during all build types. 34 | CMAKE_CXX_FLAGS:STRING= 35 | 36 | //Flags used by the compiler during debug builds. 37 | CMAKE_CXX_FLAGS_DEBUG:STRING=-g 38 | 39 | //Flags used by the compiler during release builds for minimum 40 | // size. 41 | CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG 42 | 43 | //Flags used by the compiler during release builds. 44 | CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG 45 | 46 | //Flags used by the compiler during release builds with debug info. 47 | CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG 48 | 49 | //C compiler 50 | CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc 51 | 52 | //Flags used by the compiler during all build types. 53 | CMAKE_C_FLAGS:STRING= 54 | 55 | //Flags used by the compiler during debug builds. 56 | CMAKE_C_FLAGS_DEBUG:STRING=-g 57 | 58 | //Flags used by the compiler during release builds for minimum 59 | // size. 60 | CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG 61 | 62 | //Flags used by the compiler during release builds. 63 | CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG 64 | 65 | //Flags used by the compiler during release builds with debug info. 66 | CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG 67 | 68 | //Flags used by the linker. 69 | CMAKE_EXE_LINKER_FLAGS:STRING= 70 | 71 | //Flags used by the linker during debug builds. 72 | CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= 73 | 74 | //Flags used by the linker during release minsize builds. 75 | CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= 76 | 77 | //Flags used by the linker during release builds. 78 | CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= 79 | 80 | //Flags used by the linker during Release with Debug Info builds. 81 | CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= 82 | 83 | //Enable/Disable output of compile commands during generation. 84 | CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF 85 | 86 | //Install path prefix, prepended onto install directories. 87 | CMAKE_INSTALL_PREFIX:PATH=/usr/local 88 | 89 | //Path to a program. 90 | CMAKE_LINKER:FILEPATH=/usr/bin/ld 91 | 92 | //Path to a program. 93 | CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make 94 | 95 | //Flags used by the linker during the creation of modules. 96 | CMAKE_MODULE_LINKER_FLAGS:STRING= 97 | 98 | //Flags used by the linker during debug builds. 99 | CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= 100 | 101 | //Flags used by the linker during release minsize builds. 102 | CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= 103 | 104 | //Flags used by the linker during release builds. 105 | CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= 106 | 107 | //Flags used by the linker during Release with Debug Info builds. 108 | CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= 109 | 110 | //Path to a program. 111 | CMAKE_NM:FILEPATH=/usr/bin/nm 112 | 113 | //Path to a program. 114 | CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy 115 | 116 | //Path to a program. 117 | CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump 118 | 119 | //Value Computed by CMake 120 | CMAKE_PROJECT_NAME:STATIC=lanai-int 121 | 122 | //Path to a program. 123 | CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib 124 | 125 | //Flags used by the linker during the creation of dll's. 126 | CMAKE_SHARED_LINKER_FLAGS:STRING= 127 | 128 | //Flags used by the linker during debug builds. 129 | CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= 130 | 131 | //Flags used by the linker during release minsize builds. 132 | CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= 133 | 134 | //Flags used by the linker during release builds. 135 | CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= 136 | 137 | //Flags used by the linker during Release with Debug Info builds. 138 | CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= 139 | 140 | //If set, runtime paths are not added when installing shared libraries, 141 | // but are added when building. 142 | CMAKE_SKIP_INSTALL_RPATH:BOOL=NO 143 | 144 | //If set, runtime paths are not added when using shared libraries. 145 | CMAKE_SKIP_RPATH:BOOL=NO 146 | 147 | //Flags used by the linker during the creation of static libraries. 148 | CMAKE_STATIC_LINKER_FLAGS:STRING= 149 | 150 | //Flags used by the linker during debug builds. 151 | CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= 152 | 153 | //Flags used by the linker during release minsize builds. 154 | CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= 155 | 156 | //Flags used by the linker during release builds. 157 | CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= 158 | 159 | //Flags used by the linker during Release with Debug Info builds. 160 | CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= 161 | 162 | //Path to a program. 163 | CMAKE_STRIP:FILEPATH=/usr/bin/strip 164 | 165 | //If true, cmake will use relative paths in makefiles and projects. 166 | CMAKE_USE_RELATIVE_PATHS:BOOL=OFF 167 | 168 | //If this value is on, makefiles will be generated without the 169 | // .SILENT directive, and all commands will be echoed to the console 170 | // during the make. This is useful for debugging only. With Visual 171 | // Studio IDE projects all commands are done without /nologo. 172 | CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE 173 | 174 | //Value Computed by CMake 175 | lanai-int_BINARY_DIR:STATIC=/home/christian/ethereum/lanai/interpreter/build 176 | 177 | //Value Computed by CMake 178 | lanai-int_SOURCE_DIR:STATIC=/home/christian/ethereum/lanai/interpreter 179 | 180 | 181 | ######################## 182 | # INTERNAL cache entries 183 | ######################## 184 | 185 | //ADVANCED property for variable: CMAKE_AR 186 | CMAKE_AR-ADVANCED:INTERNAL=1 187 | //This is the directory where this CMakeCache.txt was created 188 | CMAKE_CACHEFILE_DIR:INTERNAL=/home/christian/ethereum/lanai/interpreter/build 189 | //Major version of cmake used to create the current loaded cache 190 | CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 191 | //Minor version of cmake used to create the current loaded cache 192 | CMAKE_CACHE_MINOR_VERSION:INTERNAL=2 193 | //Patch version of cmake used to create the current loaded cache 194 | CMAKE_CACHE_PATCH_VERSION:INTERNAL=2 195 | //ADVANCED property for variable: CMAKE_COLOR_MAKEFILE 196 | CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 197 | //Path to CMake executable. 198 | CMAKE_COMMAND:INTERNAL=/usr/bin/cmake 199 | //Path to cpack program executable. 200 | CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack 201 | //Path to ctest program executable. 202 | CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest 203 | //ADVANCED property for variable: CMAKE_CXX_COMPILER 204 | CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 205 | //ADVANCED property for variable: CMAKE_CXX_FLAGS 206 | CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 207 | //ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG 208 | CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 209 | //ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL 210 | CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 211 | //ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE 212 | CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 213 | //ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO 214 | CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 215 | //ADVANCED property for variable: CMAKE_C_COMPILER 216 | CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 217 | //ADVANCED property for variable: CMAKE_C_FLAGS 218 | CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 219 | //ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG 220 | CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 221 | //ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL 222 | CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 223 | //ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE 224 | CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 225 | //ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO 226 | CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 227 | //Executable file format 228 | CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF 229 | //ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS 230 | CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 231 | //ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG 232 | CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 233 | //ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL 234 | CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 235 | //ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE 236 | CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 237 | //ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO 238 | CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 239 | //ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS 240 | CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 241 | //Name of external makefile project generator. 242 | CMAKE_EXTRA_GENERATOR:INTERNAL=CodeBlocks 243 | //CXX compiler system defined macros 244 | CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_DEFINED_MACROS:INTERNAL=__STDC__;1;__STDC_HOSTED__;1;__GNUC__;4;__GNUC_MINOR__;8;__GNUC_PATCHLEVEL__;4;__VERSION__;"4.8.4";__ATOMIC_RELAXED; ;__ATOMIC_SEQ_CST;5;__ATOMIC_ACQUIRE;2;__ATOMIC_RELEASE;3;__ATOMIC_ACQ_REL;4;__ATOMIC_CONSUME;1;__FINITE_MATH_ONLY__; ;_LP64;1;__LP64__;1;__SIZEOF_INT__;4;__SIZEOF_LONG__;8;__SIZEOF_LONG_LONG__;8;__SIZEOF_SHORT__;2;__SIZEOF_FLOAT__;4;__SIZEOF_DOUBLE__;8;__SIZEOF_LONG_DOUBLE__;16;__SIZEOF_SIZE_T__;8;__CHAR_BIT__;8;__BIGGEST_ALIGNMENT__;16;__ORDER_LITTLE_ENDIAN__;1234;__ORDER_BIG_ENDIAN__;4321;__ORDER_PDP_ENDIAN__;3412;__BYTE_ORDER__;__ORDER_LITTLE_ENDIAN__;__FLOAT_WORD_ORDER__;__ORDER_LITTLE_ENDIAN__;__SIZEOF_POINTER__;8;__SIZE_TYPE__;long unsigned int;__PTRDIFF_TYPE__;long int;__WCHAR_TYPE__;int;__WINT_TYPE__;unsigned int;__INTMAX_TYPE__;long int;__UINTMAX_TYPE__;long unsigned int;__CHAR16_TYPE__;short unsigned int;__CHAR32_TYPE__;unsigned int;__SIG_ATOMIC_TYPE__;int;__INT8_TYPE__;signed char;__INT16_TYPE__;short int;__INT32_TYPE__;int;__INT64_TYPE__;long int;__UINT8_TYPE__;unsigned char;__UINT16_TYPE__;short unsigned int;__UINT32_TYPE__;unsigned int;__UINT64_TYPE__;long unsigned int;__INT_LEAST8_TYPE__;signed char;__INT_LEAST16_TYPE__;short int;__INT_LEAST32_TYPE__;int;__INT_LEAST64_TYPE__;long int;__UINT_LEAST8_TYPE__;unsigned char;__UINT_LEAST16_TYPE__;short unsigned int;__UINT_LEAST32_TYPE__;unsigned int;__UINT_LEAST64_TYPE__;long unsigned int;__INT_FAST8_TYPE__;signed char;__INT_FAST16_TYPE__;long int;__INT_FAST32_TYPE__;long int;__INT_FAST64_TYPE__;long int;__UINT_FAST8_TYPE__;unsigned char;__UINT_FAST16_TYPE__;long unsigned int;__UINT_FAST32_TYPE__;long unsigned int;__UINT_FAST64_TYPE__;long unsigned int;__INTPTR_TYPE__;long int;__UINTPTR_TYPE__;long unsigned int;__GXX_ABI_VERSION;1002;__SCHAR_MAX__;127;__SHRT_MAX__;32767;__INT_MAX__;2147483647;__LONG_MAX__;9223372036854775807L;__LONG_LONG_MAX__;9223372036854775807LL;__WCHAR_MAX__;2147483647;__WCHAR_MIN__;(-__WCHAR_MAX__ - 1);__WINT_MAX__;4294967295U;__WINT_MIN__;0U;__PTRDIFF_MAX__;9223372036854775807L;__SIZE_MAX__;18446744073709551615UL;__INTMAX_MAX__;9223372036854775807L;__INTMAX_C(c);c ## L;__UINTMAX_MAX__;18446744073709551615UL;__UINTMAX_C(c);c ## UL;__SIG_ATOMIC_MAX__;2147483647;__SIG_ATOMIC_MIN__;(-__SIG_ATOMIC_MAX__ - 1);__INT8_MAX__;127;__INT16_MAX__;32767;__INT32_MAX__;2147483647;__INT64_MAX__;9223372036854775807L;__UINT8_MAX__;255;__UINT16_MAX__;65535;__UINT32_MAX__;4294967295U;__UINT64_MAX__;18446744073709551615UL;__INT_LEAST8_MAX__;127;__INT8_C(c);c;__INT_LEAST16_MAX__;32767;__INT16_C(c);c;__INT_LEAST32_MAX__;2147483647;__INT32_C(c);c;__INT_LEAST64_MAX__;9223372036854775807L;__INT64_C(c);c ## L;__UINT_LEAST8_MAX__;255;__UINT8_C(c);c;__UINT_LEAST16_MAX__;65535;__UINT16_C(c);c;__UINT_LEAST32_MAX__;4294967295U;__UINT32_C(c);c ## U;__UINT_LEAST64_MAX__;18446744073709551615UL;__UINT64_C(c);c ## UL;__INT_FAST8_MAX__;127;__INT_FAST16_MAX__;9223372036854775807L;__INT_FAST32_MAX__;9223372036854775807L;__INT_FAST64_MAX__;9223372036854775807L;__UINT_FAST8_MAX__;255;__UINT_FAST16_MAX__;18446744073709551615UL;__UINT_FAST32_MAX__;18446744073709551615UL;__UINT_FAST64_MAX__;18446744073709551615UL;__INTPTR_MAX__;9223372036854775807L;__UINTPTR_MAX__;18446744073709551615UL;__FLT_EVAL_METHOD__; ;__DEC_EVAL_METHOD__;2;__FLT_RADIX__;2;__FLT_MANT_DIG__;24;__FLT_DIG__;6;__FLT_MIN_EXP__;(-125);__FLT_MIN_10_EXP__;(-37);__FLT_MAX_EXP__;128;__FLT_MAX_10_EXP__;38;__FLT_DECIMAL_DIG__;9;__FLT_MAX__;3.40282346638528859812e+38F;__FLT_MIN__;1.17549435082228750797e-38F;__FLT_EPSILON__;1.19209289550781250000e-7F;__FLT_DENORM_MIN__;1.40129846432481707092e-45F;__FLT_HAS_DENORM__;1;__FLT_HAS_INFINITY__;1;__FLT_HAS_QUIET_NAN__;1;__DBL_MANT_DIG__;53;__DBL_DIG__;15;__DBL_MIN_EXP__;(-1021);__DBL_MIN_10_EXP__;(-307);__DBL_MAX_EXP__;1024;__DBL_MAX_10_EXP__;308;__DBL_DECIMAL_DIG__;17;__DBL_MAX__;((double)1.79769313486231570815e+308L);__DBL_MIN__;((double)2.22507385850720138309e-308L);__DBL_EPSILON__;((double)2.22044604925031308085e-16L);__DBL_DENORM_MIN__;((double)4.94065645841246544177e-324L);__DBL_HAS_DENORM__;1;__DBL_HAS_INFINITY__;1;__DBL_HAS_QUIET_NAN__;1;__LDBL_MANT_DIG__;64;__LDBL_DIG__;18;__LDBL_MIN_EXP__;(-16381);__LDBL_MIN_10_EXP__;(-4931);__LDBL_MAX_EXP__;16384;__LDBL_MAX_10_EXP__;4932;__DECIMAL_DIG__;21;__LDBL_MAX__;1.18973149535723176502e+4932L;__LDBL_MIN__;3.36210314311209350626e-4932L;__LDBL_EPSILON__;1.08420217248550443401e-19L;__LDBL_DENORM_MIN__;3.64519953188247460253e-4951L;__LDBL_HAS_DENORM__;1;__LDBL_HAS_INFINITY__;1;__LDBL_HAS_QUIET_NAN__;1;__DEC32_MANT_DIG__;7;__DEC32_MIN_EXP__;(-94);__DEC32_MAX_EXP__;97;__DEC32_MIN__;1E-95DF;__DEC32_MAX__;9.999999E96DF;__DEC32_EPSILON__;1E-6DF;__DEC32_SUBNORMAL_MIN__;0.000001E-95DF;__DEC64_MANT_DIG__;16;__DEC64_MIN_EXP__;(-382);__DEC64_MAX_EXP__;385;__DEC64_MIN__;1E-383DD;__DEC64_MAX__;9.999999999999999E384DD;__DEC64_EPSILON__;1E-15DD;__DEC64_SUBNORMAL_MIN__;0.000000000000001E-383DD;__DEC128_MANT_DIG__;34;__DEC128_MIN_EXP__;(-6142);__DEC128_MAX_EXP__;6145;__DEC128_MIN__;1E-6143DL;__DEC128_MAX__;9.999999999999999999999999999999999E6144DL;__DEC128_EPSILON__;1E-33DL;__DEC128_SUBNORMAL_MIN__;0.000000000000000000000000000000001E-6143DL;__REGISTER_PREFIX__; ;__USER_LABEL_PREFIX__; ;__GNUC_GNU_INLINE__;1;__NO_INLINE__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8;1;__GCC_ATOMIC_BOOL_LOCK_FREE;2;__GCC_ATOMIC_CHAR_LOCK_FREE;2;__GCC_ATOMIC_CHAR16_T_LOCK_FREE;2;__GCC_ATOMIC_CHAR32_T_LOCK_FREE;2;__GCC_ATOMIC_WCHAR_T_LOCK_FREE;2;__GCC_ATOMIC_SHORT_LOCK_FREE;2;__GCC_ATOMIC_INT_LOCK_FREE;2;__GCC_ATOMIC_LONG_LOCK_FREE;2;__GCC_ATOMIC_LLONG_LOCK_FREE;2;__GCC_ATOMIC_TEST_AND_SET_TRUEVAL;1;__GCC_ATOMIC_POINTER_LOCK_FREE;2;__GCC_HAVE_DWARF2_CFI_ASM;1;__PRAGMA_REDEFINE_EXTNAME;1;__SSP__;1;__SIZEOF_INT128__;16;__SIZEOF_WCHAR_T__;4;__SIZEOF_WINT_T__;4;__SIZEOF_PTRDIFF_T__;8;__amd64;1;__amd64__;1;__x86_64;1;__x86_64__;1;__ATOMIC_HLE_ACQUIRE;65536;__ATOMIC_HLE_RELEASE;131072;__k8;1;__k8__;1;__code_model_small__;1;__MMX__;1;__SSE__;1;__SSE2__;1;__FXSR__;1;__SSE_MATH__;1;__SSE2_MATH__;1;__gnu_linux__;1;__linux;1;__linux__;1;linux;1;__unix;1;__unix__;1;unix;1;__ELF__;1;__DECIMAL_BID_FORMAT__;1;_STDC_PREDEF_H;1;__STDC_IEC_559__;1;__STDC_IEC_559_COMPLEX__;1;__STDC_ISO_10646__;201103L;__STDC_NO_THREADS__;1;__STDC__;1;__cplusplus;199711L;__STDC_HOSTED__;1;__GNUC__;4;__GNUC_MINOR__;8;__GNUC_PATCHLEVEL__;4;__VERSION__;"4.8.4";__ATOMIC_RELAXED; ;__ATOMIC_SEQ_CST;5;__ATOMIC_ACQUIRE;2;__ATOMIC_RELEASE;3;__ATOMIC_ACQ_REL;4;__ATOMIC_CONSUME;1;__FINITE_MATH_ONLY__; ;_LP64;1;__LP64__;1;__SIZEOF_INT__;4;__SIZEOF_LONG__;8;__SIZEOF_LONG_LONG__;8;__SIZEOF_SHORT__;2;__SIZEOF_FLOAT__;4;__SIZEOF_DOUBLE__;8;__SIZEOF_LONG_DOUBLE__;16;__SIZEOF_SIZE_T__;8;__CHAR_BIT__;8;__BIGGEST_ALIGNMENT__;16;__ORDER_LITTLE_ENDIAN__;1234;__ORDER_BIG_ENDIAN__;4321;__ORDER_PDP_ENDIAN__;3412;__BYTE_ORDER__;__ORDER_LITTLE_ENDIAN__;__FLOAT_WORD_ORDER__;__ORDER_LITTLE_ENDIAN__;__SIZEOF_POINTER__;8;__GNUG__;4;__SIZE_TYPE__;long unsigned int;__PTRDIFF_TYPE__;long int;__WCHAR_TYPE__;int;__WINT_TYPE__;unsigned int;__INTMAX_TYPE__;long int;__UINTMAX_TYPE__;long unsigned int;__CHAR16_TYPE__;short unsigned int;__CHAR32_TYPE__;unsigned int;__SIG_ATOMIC_TYPE__;int;__INT8_TYPE__;signed char;__INT16_TYPE__;short int;__INT32_TYPE__;int;__INT64_TYPE__;long int;__UINT8_TYPE__;unsigned char;__UINT16_TYPE__;short unsigned int;__UINT32_TYPE__;unsigned int;__UINT64_TYPE__;long unsigned int;__INT_LEAST8_TYPE__;signed char;__INT_LEAST16_TYPE__;short int;__INT_LEAST32_TYPE__;int;__INT_LEAST64_TYPE__;long int;__UINT_LEAST8_TYPE__;unsigned char;__UINT_LEAST16_TYPE__;short unsigned int;__UINT_LEAST32_TYPE__;unsigned int;__UINT_LEAST64_TYPE__;long unsigned int;__INT_FAST8_TYPE__;signed char;__INT_FAST16_TYPE__;long int;__INT_FAST32_TYPE__;long int;__INT_FAST64_TYPE__;long int;__UINT_FAST8_TYPE__;unsigned char;__UINT_FAST16_TYPE__;long unsigned int;__UINT_FAST32_TYPE__;long unsigned int;__UINT_FAST64_TYPE__;long unsigned int;__INTPTR_TYPE__;long int;__UINTPTR_TYPE__;long unsigned int;__GXX_WEAK__;1;__DEPRECATED;1;__GXX_RTTI;1;__EXCEPTIONS;1;__GXX_ABI_VERSION;1002;__SCHAR_MAX__;127;__SHRT_MAX__;32767;__INT_MAX__;2147483647;__LONG_MAX__;9223372036854775807L;__LONG_LONG_MAX__;9223372036854775807LL;__WCHAR_MAX__;2147483647;__WCHAR_MIN__;(-__WCHAR_MAX__ - 1);__WINT_MAX__;4294967295U;__WINT_MIN__;0U;__PTRDIFF_MAX__;9223372036854775807L;__SIZE_MAX__;18446744073709551615UL;__INTMAX_MAX__;9223372036854775807L;__INTMAX_C(c);c ## L;__UINTMAX_MAX__;18446744073709551615UL;__UINTMAX_C(c);c ## UL;__SIG_ATOMIC_MAX__;2147483647;__SIG_ATOMIC_MIN__;(-__SIG_ATOMIC_MAX__ - 1);__INT8_MAX__;127;__INT16_MAX__;32767;__INT32_MAX__;2147483647;__INT64_MAX__;9223372036854775807L;__UINT8_MAX__;255;__UINT16_MAX__;65535;__UINT32_MAX__;4294967295U;__UINT64_MAX__;18446744073709551615UL;__INT_LEAST8_MAX__;127;__INT8_C(c);c;__INT_LEAST16_MAX__;32767;__INT16_C(c);c;__INT_LEAST32_MAX__;2147483647;__INT32_C(c);c;__INT_LEAST64_MAX__;9223372036854775807L;__INT64_C(c);c ## L;__UINT_LEAST8_MAX__;255;__UINT8_C(c);c;__UINT_LEAST16_MAX__;65535;__UINT16_C(c);c;__UINT_LEAST32_MAX__;4294967295U;__UINT32_C(c);c ## U;__UINT_LEAST64_MAX__;18446744073709551615UL;__UINT64_C(c);c ## UL;__INT_FAST8_MAX__;127;__INT_FAST16_MAX__;9223372036854775807L;__INT_FAST32_MAX__;9223372036854775807L;__INT_FAST64_MAX__;9223372036854775807L;__UINT_FAST8_MAX__;255;__UINT_FAST16_MAX__;18446744073709551615UL;__UINT_FAST32_MAX__;18446744073709551615UL;__UINT_FAST64_MAX__;18446744073709551615UL;__INTPTR_MAX__;9223372036854775807L;__UINTPTR_MAX__;18446744073709551615UL;__FLT_EVAL_METHOD__; ;__DEC_EVAL_METHOD__;2;__FLT_RADIX__;2;__FLT_MANT_DIG__;24;__FLT_DIG__;6;__FLT_MIN_EXP__;(-125);__FLT_MIN_10_EXP__;(-37);__FLT_MAX_EXP__;128;__FLT_MAX_10_EXP__;38;__FLT_DECIMAL_DIG__;9;__FLT_MAX__;3.40282346638528859812e+38F;__FLT_MIN__;1.17549435082228750797e-38F;__FLT_EPSILON__;1.19209289550781250000e-7F;__FLT_DENORM_MIN__;1.40129846432481707092e-45F;__FLT_HAS_DENORM__;1;__FLT_HAS_INFINITY__;1;__FLT_HAS_QUIET_NAN__;1;__DBL_MANT_DIG__;53;__DBL_DIG__;15;__DBL_MIN_EXP__;(-1021);__DBL_MIN_10_EXP__;(-307);__DBL_MAX_EXP__;1024;__DBL_MAX_10_EXP__;308;__DBL_DECIMAL_DIG__;17;__DBL_MAX__;double(1.79769313486231570815e+308L);__DBL_MIN__;double(2.22507385850720138309e-308L);__DBL_EPSILON__;double(2.22044604925031308085e-16L);__DBL_DENORM_MIN__;double(4.94065645841246544177e-324L);__DBL_HAS_DENORM__;1;__DBL_HAS_INFINITY__;1;__DBL_HAS_QUIET_NAN__;1;__LDBL_MANT_DIG__;64;__LDBL_DIG__;18;__LDBL_MIN_EXP__;(-16381);__LDBL_MIN_10_EXP__;(-4931);__LDBL_MAX_EXP__;16384;__LDBL_MAX_10_EXP__;4932;__DECIMAL_DIG__;21;__LDBL_MAX__;1.18973149535723176502e+4932L;__LDBL_MIN__;3.36210314311209350626e-4932L;__LDBL_EPSILON__;1.08420217248550443401e-19L;__LDBL_DENORM_MIN__;3.64519953188247460253e-4951L;__LDBL_HAS_DENORM__;1;__LDBL_HAS_INFINITY__;1;__LDBL_HAS_QUIET_NAN__;1;__DEC32_MANT_DIG__;7;__DEC32_MIN_EXP__;(-94);__DEC32_MAX_EXP__;97;__DEC32_MIN__;1E-95DF;__DEC32_MAX__;9.999999E96DF;__DEC32_EPSILON__;1E-6DF;__DEC32_SUBNORMAL_MIN__;0.000001E-95DF;__DEC64_MANT_DIG__;16;__DEC64_MIN_EXP__;(-382);__DEC64_MAX_EXP__;385;__DEC64_MIN__;1E-383DD;__DEC64_MAX__;9.999999999999999E384DD;__DEC64_EPSILON__;1E-15DD;__DEC64_SUBNORMAL_MIN__;0.000000000000001E-383DD;__DEC128_MANT_DIG__;34;__DEC128_MIN_EXP__;(-6142);__DEC128_MAX_EXP__;6145;__DEC128_MIN__;1E-6143DL;__DEC128_MAX__;9.999999999999999999999999999999999E6144DL;__DEC128_EPSILON__;1E-33DL;__DEC128_SUBNORMAL_MIN__;0.000000000000000000000000000000001E-6143DL;__REGISTER_PREFIX__; ;__USER_LABEL_PREFIX__; ;__GNUC_GNU_INLINE__;1;__NO_INLINE__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8;1;__GCC_ATOMIC_BOOL_LOCK_FREE;2;__GCC_ATOMIC_CHAR_LOCK_FREE;2;__GCC_ATOMIC_CHAR16_T_LOCK_FREE;2;__GCC_ATOMIC_CHAR32_T_LOCK_FREE;2;__GCC_ATOMIC_WCHAR_T_LOCK_FREE;2;__GCC_ATOMIC_SHORT_LOCK_FREE;2;__GCC_ATOMIC_INT_LOCK_FREE;2;__GCC_ATOMIC_LONG_LOCK_FREE;2;__GCC_ATOMIC_LLONG_LOCK_FREE;2;__GCC_ATOMIC_TEST_AND_SET_TRUEVAL;1;__GCC_ATOMIC_POINTER_LOCK_FREE;2;__GCC_HAVE_DWARF2_CFI_ASM;1;__PRAGMA_REDEFINE_EXTNAME;1;__SSP__;1;__SIZEOF_INT128__;16;__SIZEOF_WCHAR_T__;4;__SIZEOF_WINT_T__;4;__SIZEOF_PTRDIFF_T__;8;__amd64;1;__amd64__;1;__x86_64;1;__x86_64__;1;__ATOMIC_HLE_ACQUIRE;65536;__ATOMIC_HLE_RELEASE;131072;__k8;1;__k8__;1;__code_model_small__;1;__MMX__;1;__SSE__;1;__SSE2__;1;__FXSR__;1;__SSE_MATH__;1;__SSE2_MATH__;1;__gnu_linux__;1;__linux;1;__linux__;1;linux;1;__unix;1;__unix__;1;unix;1;__ELF__;1;__DECIMAL_BID_FORMAT__;1;_GNU_SOURCE;1;_STDC_PREDEF_H;1;__STDC_IEC_559__;1;__STDC_IEC_559_COMPLEX__;1;__STDC_ISO_10646__;201103L;__STDC_NO_THREADS__;1 245 | //CXX compiler system include directories 246 | CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS:INTERNAL=/usr/include/c++/4.8;/usr/include/x86_64-linux-gnu/c++/4.8;/usr/include/c++/4.8/backward;/usr/lib/gcc/x86_64-linux-gnu/4.8/include;/usr/local/include;/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed;/usr/include/x86_64-linux-gnu;/usr/include 247 | //C compiler system defined macros 248 | CMAKE_EXTRA_GENERATOR_C_SYSTEM_DEFINED_MACROS:INTERNAL=__STDC__;1;__STDC_HOSTED__;1;__GNUC__;4;__GNUC_MINOR__;8;__GNUC_PATCHLEVEL__;4;__VERSION__;"4.8.4";__ATOMIC_RELAXED; ;__ATOMIC_SEQ_CST;5;__ATOMIC_ACQUIRE;2;__ATOMIC_RELEASE;3;__ATOMIC_ACQ_REL;4;__ATOMIC_CONSUME;1;__FINITE_MATH_ONLY__; ;_LP64;1;__LP64__;1;__SIZEOF_INT__;4;__SIZEOF_LONG__;8;__SIZEOF_LONG_LONG__;8;__SIZEOF_SHORT__;2;__SIZEOF_FLOAT__;4;__SIZEOF_DOUBLE__;8;__SIZEOF_LONG_DOUBLE__;16;__SIZEOF_SIZE_T__;8;__CHAR_BIT__;8;__BIGGEST_ALIGNMENT__;16;__ORDER_LITTLE_ENDIAN__;1234;__ORDER_BIG_ENDIAN__;4321;__ORDER_PDP_ENDIAN__;3412;__BYTE_ORDER__;__ORDER_LITTLE_ENDIAN__;__FLOAT_WORD_ORDER__;__ORDER_LITTLE_ENDIAN__;__SIZEOF_POINTER__;8;__SIZE_TYPE__;long unsigned int;__PTRDIFF_TYPE__;long int;__WCHAR_TYPE__;int;__WINT_TYPE__;unsigned int;__INTMAX_TYPE__;long int;__UINTMAX_TYPE__;long unsigned int;__CHAR16_TYPE__;short unsigned int;__CHAR32_TYPE__;unsigned int;__SIG_ATOMIC_TYPE__;int;__INT8_TYPE__;signed char;__INT16_TYPE__;short int;__INT32_TYPE__;int;__INT64_TYPE__;long int;__UINT8_TYPE__;unsigned char;__UINT16_TYPE__;short unsigned int;__UINT32_TYPE__;unsigned int;__UINT64_TYPE__;long unsigned int;__INT_LEAST8_TYPE__;signed char;__INT_LEAST16_TYPE__;short int;__INT_LEAST32_TYPE__;int;__INT_LEAST64_TYPE__;long int;__UINT_LEAST8_TYPE__;unsigned char;__UINT_LEAST16_TYPE__;short unsigned int;__UINT_LEAST32_TYPE__;unsigned int;__UINT_LEAST64_TYPE__;long unsigned int;__INT_FAST8_TYPE__;signed char;__INT_FAST16_TYPE__;long int;__INT_FAST32_TYPE__;long int;__INT_FAST64_TYPE__;long int;__UINT_FAST8_TYPE__;unsigned char;__UINT_FAST16_TYPE__;long unsigned int;__UINT_FAST32_TYPE__;long unsigned int;__UINT_FAST64_TYPE__;long unsigned int;__INTPTR_TYPE__;long int;__UINTPTR_TYPE__;long unsigned int;__GXX_ABI_VERSION;1002;__SCHAR_MAX__;127;__SHRT_MAX__;32767;__INT_MAX__;2147483647;__LONG_MAX__;9223372036854775807L;__LONG_LONG_MAX__;9223372036854775807LL;__WCHAR_MAX__;2147483647;__WCHAR_MIN__;(-__WCHAR_MAX__ - 1);__WINT_MAX__;4294967295U;__WINT_MIN__;0U;__PTRDIFF_MAX__;9223372036854775807L;__SIZE_MAX__;18446744073709551615UL;__INTMAX_MAX__;9223372036854775807L;__INTMAX_C(c);c ## L;__UINTMAX_MAX__;18446744073709551615UL;__UINTMAX_C(c);c ## UL;__SIG_ATOMIC_MAX__;2147483647;__SIG_ATOMIC_MIN__;(-__SIG_ATOMIC_MAX__ - 1);__INT8_MAX__;127;__INT16_MAX__;32767;__INT32_MAX__;2147483647;__INT64_MAX__;9223372036854775807L;__UINT8_MAX__;255;__UINT16_MAX__;65535;__UINT32_MAX__;4294967295U;__UINT64_MAX__;18446744073709551615UL;__INT_LEAST8_MAX__;127;__INT8_C(c);c;__INT_LEAST16_MAX__;32767;__INT16_C(c);c;__INT_LEAST32_MAX__;2147483647;__INT32_C(c);c;__INT_LEAST64_MAX__;9223372036854775807L;__INT64_C(c);c ## L;__UINT_LEAST8_MAX__;255;__UINT8_C(c);c;__UINT_LEAST16_MAX__;65535;__UINT16_C(c);c;__UINT_LEAST32_MAX__;4294967295U;__UINT32_C(c);c ## U;__UINT_LEAST64_MAX__;18446744073709551615UL;__UINT64_C(c);c ## UL;__INT_FAST8_MAX__;127;__INT_FAST16_MAX__;9223372036854775807L;__INT_FAST32_MAX__;9223372036854775807L;__INT_FAST64_MAX__;9223372036854775807L;__UINT_FAST8_MAX__;255;__UINT_FAST16_MAX__;18446744073709551615UL;__UINT_FAST32_MAX__;18446744073709551615UL;__UINT_FAST64_MAX__;18446744073709551615UL;__INTPTR_MAX__;9223372036854775807L;__UINTPTR_MAX__;18446744073709551615UL;__FLT_EVAL_METHOD__; ;__DEC_EVAL_METHOD__;2;__FLT_RADIX__;2;__FLT_MANT_DIG__;24;__FLT_DIG__;6;__FLT_MIN_EXP__;(-125);__FLT_MIN_10_EXP__;(-37);__FLT_MAX_EXP__;128;__FLT_MAX_10_EXP__;38;__FLT_DECIMAL_DIG__;9;__FLT_MAX__;3.40282346638528859812e+38F;__FLT_MIN__;1.17549435082228750797e-38F;__FLT_EPSILON__;1.19209289550781250000e-7F;__FLT_DENORM_MIN__;1.40129846432481707092e-45F;__FLT_HAS_DENORM__;1;__FLT_HAS_INFINITY__;1;__FLT_HAS_QUIET_NAN__;1;__DBL_MANT_DIG__;53;__DBL_DIG__;15;__DBL_MIN_EXP__;(-1021);__DBL_MIN_10_EXP__;(-307);__DBL_MAX_EXP__;1024;__DBL_MAX_10_EXP__;308;__DBL_DECIMAL_DIG__;17;__DBL_MAX__;((double)1.79769313486231570815e+308L);__DBL_MIN__;((double)2.22507385850720138309e-308L);__DBL_EPSILON__;((double)2.22044604925031308085e-16L);__DBL_DENORM_MIN__;((double)4.94065645841246544177e-324L);__DBL_HAS_DENORM__;1;__DBL_HAS_INFINITY__;1;__DBL_HAS_QUIET_NAN__;1;__LDBL_MANT_DIG__;64;__LDBL_DIG__;18;__LDBL_MIN_EXP__;(-16381);__LDBL_MIN_10_EXP__;(-4931);__LDBL_MAX_EXP__;16384;__LDBL_MAX_10_EXP__;4932;__DECIMAL_DIG__;21;__LDBL_MAX__;1.18973149535723176502e+4932L;__LDBL_MIN__;3.36210314311209350626e-4932L;__LDBL_EPSILON__;1.08420217248550443401e-19L;__LDBL_DENORM_MIN__;3.64519953188247460253e-4951L;__LDBL_HAS_DENORM__;1;__LDBL_HAS_INFINITY__;1;__LDBL_HAS_QUIET_NAN__;1;__DEC32_MANT_DIG__;7;__DEC32_MIN_EXP__;(-94);__DEC32_MAX_EXP__;97;__DEC32_MIN__;1E-95DF;__DEC32_MAX__;9.999999E96DF;__DEC32_EPSILON__;1E-6DF;__DEC32_SUBNORMAL_MIN__;0.000001E-95DF;__DEC64_MANT_DIG__;16;__DEC64_MIN_EXP__;(-382);__DEC64_MAX_EXP__;385;__DEC64_MIN__;1E-383DD;__DEC64_MAX__;9.999999999999999E384DD;__DEC64_EPSILON__;1E-15DD;__DEC64_SUBNORMAL_MIN__;0.000000000000001E-383DD;__DEC128_MANT_DIG__;34;__DEC128_MIN_EXP__;(-6142);__DEC128_MAX_EXP__;6145;__DEC128_MIN__;1E-6143DL;__DEC128_MAX__;9.999999999999999999999999999999999E6144DL;__DEC128_EPSILON__;1E-33DL;__DEC128_SUBNORMAL_MIN__;0.000000000000000000000000000000001E-6143DL;__REGISTER_PREFIX__; ;__USER_LABEL_PREFIX__; ;__GNUC_GNU_INLINE__;1;__NO_INLINE__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8;1;__GCC_ATOMIC_BOOL_LOCK_FREE;2;__GCC_ATOMIC_CHAR_LOCK_FREE;2;__GCC_ATOMIC_CHAR16_T_LOCK_FREE;2;__GCC_ATOMIC_CHAR32_T_LOCK_FREE;2;__GCC_ATOMIC_WCHAR_T_LOCK_FREE;2;__GCC_ATOMIC_SHORT_LOCK_FREE;2;__GCC_ATOMIC_INT_LOCK_FREE;2;__GCC_ATOMIC_LONG_LOCK_FREE;2;__GCC_ATOMIC_LLONG_LOCK_FREE;2;__GCC_ATOMIC_TEST_AND_SET_TRUEVAL;1;__GCC_ATOMIC_POINTER_LOCK_FREE;2;__GCC_HAVE_DWARF2_CFI_ASM;1;__PRAGMA_REDEFINE_EXTNAME;1;__SSP__;1;__SIZEOF_INT128__;16;__SIZEOF_WCHAR_T__;4;__SIZEOF_WINT_T__;4;__SIZEOF_PTRDIFF_T__;8;__amd64;1;__amd64__;1;__x86_64;1;__x86_64__;1;__ATOMIC_HLE_ACQUIRE;65536;__ATOMIC_HLE_RELEASE;131072;__k8;1;__k8__;1;__code_model_small__;1;__MMX__;1;__SSE__;1;__SSE2__;1;__FXSR__;1;__SSE_MATH__;1;__SSE2_MATH__;1;__gnu_linux__;1;__linux;1;__linux__;1;linux;1;__unix;1;__unix__;1;unix;1;__ELF__;1;__DECIMAL_BID_FORMAT__;1;_STDC_PREDEF_H;1;__STDC_IEC_559__;1;__STDC_IEC_559_COMPLEX__;1;__STDC_ISO_10646__;201103L;__STDC_NO_THREADS__;1 249 | //C compiler system include directories 250 | CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS:INTERNAL=/usr/lib/gcc/x86_64-linux-gnu/4.8/include;/usr/local/include;/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed;/usr/include/x86_64-linux-gnu;/usr/include 251 | //Name of generator. 252 | CMAKE_GENERATOR:INTERNAL=Unix Makefiles 253 | //Name of generator platform. 254 | CMAKE_GENERATOR_PLATFORM:INTERNAL= 255 | //Name of generator toolset. 256 | CMAKE_GENERATOR_TOOLSET:INTERNAL= 257 | //Start directory with the top level CMakeLists.txt file for this 258 | // project 259 | CMAKE_HOME_DIRECTORY:INTERNAL=/home/christian/ethereum/lanai/interpreter 260 | //Install .so files without execute permission. 261 | CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 262 | //ADVANCED property for variable: CMAKE_LINKER 263 | CMAKE_LINKER-ADVANCED:INTERNAL=1 264 | //ADVANCED property for variable: CMAKE_MAKE_PROGRAM 265 | CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 266 | //ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS 267 | CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 268 | //ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG 269 | CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 270 | //ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL 271 | CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 272 | //ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE 273 | CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 274 | //ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO 275 | CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 276 | //ADVANCED property for variable: CMAKE_NM 277 | CMAKE_NM-ADVANCED:INTERNAL=1 278 | //number of local generators 279 | CMAKE_NUMBER_OF_LOCAL_GENERATORS:INTERNAL=1 280 | //ADVANCED property for variable: CMAKE_OBJCOPY 281 | CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 282 | //ADVANCED property for variable: CMAKE_OBJDUMP 283 | CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 284 | //ADVANCED property for variable: CMAKE_RANLIB 285 | CMAKE_RANLIB-ADVANCED:INTERNAL=1 286 | //Path to CMake installation. 287 | CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.2 288 | //ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS 289 | CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 290 | //ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG 291 | CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 292 | //ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL 293 | CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 294 | //ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE 295 | CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 296 | //ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO 297 | CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 298 | //ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH 299 | CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 300 | //ADVANCED property for variable: CMAKE_SKIP_RPATH 301 | CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 302 | //ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS 303 | CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 304 | //ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG 305 | CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 306 | //ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL 307 | CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 308 | //ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE 309 | CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 310 | //ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO 311 | CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 312 | //ADVANCED property for variable: CMAKE_STRIP 313 | CMAKE_STRIP-ADVANCED:INTERNAL=1 314 | //uname command 315 | CMAKE_UNAME:INTERNAL=/bin/uname 316 | //ADVANCED property for variable: CMAKE_USE_RELATIVE_PATHS 317 | CMAKE_USE_RELATIVE_PATHS-ADVANCED:INTERNAL=1 318 | //ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE 319 | CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 320 | 321 | -------------------------------------------------------------------------------- /interpreter/build/CMakeFiles/CMakeOutput.log: -------------------------------------------------------------------------------- 1 | The system is: Linux - 3.19.0-32-generic - x86_64 2 | Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. 3 | Compiler: /usr/bin/cc 4 | Build flags: 5 | Id flags: 6 | 7 | The output was: 8 | 0 9 | 10 | 11 | Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" 12 | 13 | The C compiler identification is GNU, found in "/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/3.2.2/CompilerIdC/a.out" 14 | 15 | Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. 16 | Compiler: /usr/bin/c++ 17 | Build flags: 18 | Id flags: 19 | 20 | The output was: 21 | 0 22 | 23 | 24 | Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" 25 | 26 | The CXX compiler identification is GNU, found in "/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/3.2.2/CompilerIdCXX/a.out" 27 | 28 | Determining if the C compiler works passed with the following output: 29 | Change Dir: /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp 30 | 31 | Run Build Command:"/usr/bin/make" "cmTryCompileExec2597855653/fast" 32 | /usr/bin/make -f CMakeFiles/cmTryCompileExec2597855653.dir/build.make CMakeFiles/cmTryCompileExec2597855653.dir/build 33 | make[1]: Entering directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 34 | /usr/bin/cmake -E cmake_progress_report /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp/CMakeFiles 1 35 | Building C object CMakeFiles/cmTryCompileExec2597855653.dir/testCCompiler.c.o 36 | /usr/bin/cc -o CMakeFiles/cmTryCompileExec2597855653.dir/testCCompiler.c.o -c /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp/testCCompiler.c 37 | Linking C executable cmTryCompileExec2597855653 38 | /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec2597855653.dir/link.txt --verbose=1 39 | /usr/bin/cc CMakeFiles/cmTryCompileExec2597855653.dir/testCCompiler.c.o -o cmTryCompileExec2597855653 -rdynamic 40 | make[1]: Leaving directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 41 | 42 | 43 | Detecting C compiler ABI info compiled with the following output: 44 | Change Dir: /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp 45 | 46 | Run Build Command:"/usr/bin/make" "cmTryCompileExec118949911/fast" 47 | /usr/bin/make -f CMakeFiles/cmTryCompileExec118949911.dir/build.make CMakeFiles/cmTryCompileExec118949911.dir/build 48 | make[1]: Entering directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 49 | /usr/bin/cmake -E cmake_progress_report /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp/CMakeFiles 1 50 | Building C object CMakeFiles/cmTryCompileExec118949911.dir/CMakeCCompilerABI.c.o 51 | /usr/bin/cc -o CMakeFiles/cmTryCompileExec118949911.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.2/Modules/CMakeCCompilerABI.c 52 | Linking C executable cmTryCompileExec118949911 53 | /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec118949911.dir/link.txt --verbose=1 54 | /usr/bin/cc -v CMakeFiles/cmTryCompileExec118949911.dir/CMakeCCompilerABI.c.o -o cmTryCompileExec118949911 -rdynamic 55 | Using built-in specs. 56 | COLLECT_GCC=/usr/bin/cc 57 | COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper 58 | Target: x86_64-linux-gnu 59 | Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04.3' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu 60 | Thread model: posix 61 | gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) 62 | COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/ 63 | LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/ 64 | COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec118949911' '-rdynamic' '-mtune=generic' '-march=x86-64' 65 | /usr/lib/gcc/x86_64-linux-gnu/4.8/collect2 --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTryCompileExec118949911 /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. CMakeFiles/cmTryCompileExec118949911.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o 66 | make[1]: Leaving directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 67 | 68 | 69 | Parsed C implicit link information from above output: 70 | link line regex: [^( *|.*[/\])(ld|([^/\]+-)?ld|collect2)[^/\]*( |$)] 71 | ignore line: [Change Dir: /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp] 72 | ignore line: [] 73 | ignore line: [Run Build Command:"/usr/bin/make" "cmTryCompileExec118949911/fast"] 74 | ignore line: [/usr/bin/make -f CMakeFiles/cmTryCompileExec118949911.dir/build.make CMakeFiles/cmTryCompileExec118949911.dir/build] 75 | ignore line: [make[1]: Entering directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp'] 76 | ignore line: [/usr/bin/cmake -E cmake_progress_report /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp/CMakeFiles 1] 77 | ignore line: [Building C object CMakeFiles/cmTryCompileExec118949911.dir/CMakeCCompilerABI.c.o] 78 | ignore line: [/usr/bin/cc -o CMakeFiles/cmTryCompileExec118949911.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.2/Modules/CMakeCCompilerABI.c] 79 | ignore line: [Linking C executable cmTryCompileExec118949911] 80 | ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec118949911.dir/link.txt --verbose=1] 81 | ignore line: [/usr/bin/cc -v CMakeFiles/cmTryCompileExec118949911.dir/CMakeCCompilerABI.c.o -o cmTryCompileExec118949911 -rdynamic ] 82 | ignore line: [Using built-in specs.] 83 | ignore line: [COLLECT_GCC=/usr/bin/cc] 84 | ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper] 85 | ignore line: [Target: x86_64-linux-gnu] 86 | ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04.3' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] 87 | ignore line: [Thread model: posix] 88 | ignore line: [gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ] 89 | ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/] 90 | ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/] 91 | ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec118949911' '-rdynamic' '-mtune=generic' '-march=x86-64'] 92 | link line: [ /usr/lib/gcc/x86_64-linux-gnu/4.8/collect2 --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTryCompileExec118949911 /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. CMakeFiles/cmTryCompileExec118949911.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o] 93 | arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/collect2] ==> ignore 94 | arg [--sysroot=/] ==> ignore 95 | arg [--build-id] ==> ignore 96 | arg [--eh-frame-hdr] ==> ignore 97 | arg [-m] ==> ignore 98 | arg [elf_x86_64] ==> ignore 99 | arg [--hash-style=gnu] ==> ignore 100 | arg [--as-needed] ==> ignore 101 | arg [-export-dynamic] ==> ignore 102 | arg [-dynamic-linker] ==> ignore 103 | arg [/lib64/ld-linux-x86-64.so.2] ==> ignore 104 | arg [-zrelro] ==> ignore 105 | arg [-o] ==> ignore 106 | arg [cmTryCompileExec118949911] ==> ignore 107 | arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o] ==> ignore 108 | arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o] ==> ignore 109 | arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o] ==> ignore 110 | arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8] 111 | arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu] 112 | arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib] 113 | arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] 114 | arg [-L/lib/../lib] ==> dir [/lib/../lib] 115 | arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] 116 | arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] 117 | arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..] 118 | arg [CMakeFiles/cmTryCompileExec118949911.dir/CMakeCCompilerABI.c.o] ==> ignore 119 | arg [-lgcc] ==> lib [gcc] 120 | arg [--as-needed] ==> ignore 121 | arg [-lgcc_s] ==> lib [gcc_s] 122 | arg [--no-as-needed] ==> ignore 123 | arg [-lc] ==> lib [c] 124 | arg [-lgcc] ==> lib [gcc] 125 | arg [--as-needed] ==> ignore 126 | arg [-lgcc_s] ==> lib [gcc_s] 127 | arg [--no-as-needed] ==> ignore 128 | arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o] ==> ignore 129 | arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o] ==> ignore 130 | remove lib [gcc] 131 | remove lib [gcc_s] 132 | remove lib [gcc] 133 | remove lib [gcc_s] 134 | collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8] ==> [/usr/lib/gcc/x86_64-linux-gnu/4.8] 135 | collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] 136 | collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib] ==> [/usr/lib] 137 | collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] 138 | collapse library dir [/lib/../lib] ==> [/lib] 139 | collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] 140 | collapse library dir [/usr/lib/../lib] ==> [/usr/lib] 141 | collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..] ==> [/usr/lib] 142 | implicit libs: [c] 143 | implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/4.8;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] 144 | implicit fwks: [] 145 | 146 | 147 | 148 | 149 | Detecting C [-std=c11] compiler features compiled with the following output: 150 | Change Dir: /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp 151 | 152 | Run Build Command:"/usr/bin/make" "cmTryCompileExec3151710198/fast" 153 | /usr/bin/make -f CMakeFiles/cmTryCompileExec3151710198.dir/build.make CMakeFiles/cmTryCompileExec3151710198.dir/build 154 | make[1]: Entering directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 155 | /usr/bin/cmake -E cmake_progress_report /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp/CMakeFiles 1 156 | Building C object CMakeFiles/cmTryCompileExec3151710198.dir/feature_tests.c.o 157 | /usr/bin/cc -std=c11 -o CMakeFiles/cmTryCompileExec3151710198.dir/feature_tests.c.o -c /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/feature_tests.c 158 | Linking C executable cmTryCompileExec3151710198 159 | /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec3151710198.dir/link.txt --verbose=1 160 | /usr/bin/cc CMakeFiles/cmTryCompileExec3151710198.dir/feature_tests.c.o -o cmTryCompileExec3151710198 -rdynamic 161 | make[1]: Leaving directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 162 | 163 | 164 | Feature record: C_FEATURE:1c_function_prototypes 165 | Feature record: C_FEATURE:1c_restrict 166 | Feature record: C_FEATURE:1c_static_assert 167 | Feature record: C_FEATURE:1c_variadic_macros 168 | 169 | 170 | Detecting C [-std=c99] compiler features compiled with the following output: 171 | Change Dir: /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp 172 | 173 | Run Build Command:"/usr/bin/make" "cmTryCompileExec2851957064/fast" 174 | /usr/bin/make -f CMakeFiles/cmTryCompileExec2851957064.dir/build.make CMakeFiles/cmTryCompileExec2851957064.dir/build 175 | make[1]: Entering directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 176 | /usr/bin/cmake -E cmake_progress_report /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp/CMakeFiles 1 177 | Building C object CMakeFiles/cmTryCompileExec2851957064.dir/feature_tests.c.o 178 | /usr/bin/cc -std=c99 -o CMakeFiles/cmTryCompileExec2851957064.dir/feature_tests.c.o -c /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/feature_tests.c 179 | Linking C executable cmTryCompileExec2851957064 180 | /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec2851957064.dir/link.txt --verbose=1 181 | /usr/bin/cc CMakeFiles/cmTryCompileExec2851957064.dir/feature_tests.c.o -o cmTryCompileExec2851957064 -rdynamic 182 | make[1]: Leaving directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 183 | 184 | 185 | Feature record: C_FEATURE:1c_function_prototypes 186 | Feature record: C_FEATURE:1c_restrict 187 | Feature record: C_FEATURE:0c_static_assert 188 | Feature record: C_FEATURE:1c_variadic_macros 189 | 190 | 191 | Detecting C [-std=c90] compiler features compiled with the following output: 192 | Change Dir: /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp 193 | 194 | Run Build Command:"/usr/bin/make" "cmTryCompileExec745722909/fast" 195 | /usr/bin/make -f CMakeFiles/cmTryCompileExec745722909.dir/build.make CMakeFiles/cmTryCompileExec745722909.dir/build 196 | make[1]: Entering directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 197 | /usr/bin/cmake -E cmake_progress_report /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp/CMakeFiles 1 198 | Building C object CMakeFiles/cmTryCompileExec745722909.dir/feature_tests.c.o 199 | /usr/bin/cc -std=c90 -o CMakeFiles/cmTryCompileExec745722909.dir/feature_tests.c.o -c /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/feature_tests.c 200 | Linking C executable cmTryCompileExec745722909 201 | /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec745722909.dir/link.txt --verbose=1 202 | /usr/bin/cc CMakeFiles/cmTryCompileExec745722909.dir/feature_tests.c.o -o cmTryCompileExec745722909 -rdynamic 203 | make[1]: Leaving directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 204 | 205 | 206 | Feature record: C_FEATURE:1c_function_prototypes 207 | Feature record: C_FEATURE:0c_restrict 208 | Feature record: C_FEATURE:0c_static_assert 209 | Feature record: C_FEATURE:0c_variadic_macros 210 | Determining if the CXX compiler works passed with the following output: 211 | Change Dir: /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp 212 | 213 | Run Build Command:"/usr/bin/make" "cmTryCompileExec624401892/fast" 214 | /usr/bin/make -f CMakeFiles/cmTryCompileExec624401892.dir/build.make CMakeFiles/cmTryCompileExec624401892.dir/build 215 | make[1]: Entering directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 216 | /usr/bin/cmake -E cmake_progress_report /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp/CMakeFiles 1 217 | Building CXX object CMakeFiles/cmTryCompileExec624401892.dir/testCXXCompiler.cxx.o 218 | /usr/bin/c++ -o CMakeFiles/cmTryCompileExec624401892.dir/testCXXCompiler.cxx.o -c /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp/testCXXCompiler.cxx 219 | Linking CXX executable cmTryCompileExec624401892 220 | /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec624401892.dir/link.txt --verbose=1 221 | /usr/bin/c++ CMakeFiles/cmTryCompileExec624401892.dir/testCXXCompiler.cxx.o -o cmTryCompileExec624401892 -rdynamic 222 | make[1]: Leaving directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 223 | 224 | 225 | Detecting CXX compiler ABI info compiled with the following output: 226 | Change Dir: /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp 227 | 228 | Run Build Command:"/usr/bin/make" "cmTryCompileExec1719440193/fast" 229 | /usr/bin/make -f CMakeFiles/cmTryCompileExec1719440193.dir/build.make CMakeFiles/cmTryCompileExec1719440193.dir/build 230 | make[1]: Entering directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 231 | /usr/bin/cmake -E cmake_progress_report /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp/CMakeFiles 1 232 | Building CXX object CMakeFiles/cmTryCompileExec1719440193.dir/CMakeCXXCompilerABI.cpp.o 233 | /usr/bin/c++ -o CMakeFiles/cmTryCompileExec1719440193.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.2/Modules/CMakeCXXCompilerABI.cpp 234 | Linking CXX executable cmTryCompileExec1719440193 235 | /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec1719440193.dir/link.txt --verbose=1 236 | /usr/bin/c++ -v CMakeFiles/cmTryCompileExec1719440193.dir/CMakeCXXCompilerABI.cpp.o -o cmTryCompileExec1719440193 -rdynamic 237 | Using built-in specs. 238 | COLLECT_GCC=/usr/bin/c++ 239 | COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper 240 | Target: x86_64-linux-gnu 241 | Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04.3' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu 242 | Thread model: posix 243 | gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) 244 | COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/ 245 | LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/ 246 | COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec1719440193' '-rdynamic' '-shared-libgcc' '-mtune=generic' '-march=x86-64' 247 | /usr/lib/gcc/x86_64-linux-gnu/4.8/collect2 --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTryCompileExec1719440193 /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. CMakeFiles/cmTryCompileExec1719440193.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o 248 | make[1]: Leaving directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 249 | 250 | 251 | Parsed CXX implicit link information from above output: 252 | link line regex: [^( *|.*[/\])(ld|([^/\]+-)?ld|collect2)[^/\]*( |$)] 253 | ignore line: [Change Dir: /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp] 254 | ignore line: [] 255 | ignore line: [Run Build Command:"/usr/bin/make" "cmTryCompileExec1719440193/fast"] 256 | ignore line: [/usr/bin/make -f CMakeFiles/cmTryCompileExec1719440193.dir/build.make CMakeFiles/cmTryCompileExec1719440193.dir/build] 257 | ignore line: [make[1]: Entering directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp'] 258 | ignore line: [/usr/bin/cmake -E cmake_progress_report /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp/CMakeFiles 1] 259 | ignore line: [Building CXX object CMakeFiles/cmTryCompileExec1719440193.dir/CMakeCXXCompilerABI.cpp.o] 260 | ignore line: [/usr/bin/c++ -o CMakeFiles/cmTryCompileExec1719440193.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.2/Modules/CMakeCXXCompilerABI.cpp] 261 | ignore line: [Linking CXX executable cmTryCompileExec1719440193] 262 | ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec1719440193.dir/link.txt --verbose=1] 263 | ignore line: [/usr/bin/c++ -v CMakeFiles/cmTryCompileExec1719440193.dir/CMakeCXXCompilerABI.cpp.o -o cmTryCompileExec1719440193 -rdynamic ] 264 | ignore line: [Using built-in specs.] 265 | ignore line: [COLLECT_GCC=/usr/bin/c++] 266 | ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper] 267 | ignore line: [Target: x86_64-linux-gnu] 268 | ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04.3' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] 269 | ignore line: [Thread model: posix] 270 | ignore line: [gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ] 271 | ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/] 272 | ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/] 273 | ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec1719440193' '-rdynamic' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] 274 | link line: [ /usr/lib/gcc/x86_64-linux-gnu/4.8/collect2 --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTryCompileExec1719440193 /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. CMakeFiles/cmTryCompileExec1719440193.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o] 275 | arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/collect2] ==> ignore 276 | arg [--sysroot=/] ==> ignore 277 | arg [--build-id] ==> ignore 278 | arg [--eh-frame-hdr] ==> ignore 279 | arg [-m] ==> ignore 280 | arg [elf_x86_64] ==> ignore 281 | arg [--hash-style=gnu] ==> ignore 282 | arg [--as-needed] ==> ignore 283 | arg [-export-dynamic] ==> ignore 284 | arg [-dynamic-linker] ==> ignore 285 | arg [/lib64/ld-linux-x86-64.so.2] ==> ignore 286 | arg [-zrelro] ==> ignore 287 | arg [-o] ==> ignore 288 | arg [cmTryCompileExec1719440193] ==> ignore 289 | arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o] ==> ignore 290 | arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o] ==> ignore 291 | arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o] ==> ignore 292 | arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8] 293 | arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu] 294 | arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib] 295 | arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] 296 | arg [-L/lib/../lib] ==> dir [/lib/../lib] 297 | arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] 298 | arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] 299 | arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..] 300 | arg [CMakeFiles/cmTryCompileExec1719440193.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore 301 | arg [-lstdc++] ==> lib [stdc++] 302 | arg [-lm] ==> lib [m] 303 | arg [-lgcc_s] ==> lib [gcc_s] 304 | arg [-lgcc] ==> lib [gcc] 305 | arg [-lc] ==> lib [c] 306 | arg [-lgcc_s] ==> lib [gcc_s] 307 | arg [-lgcc] ==> lib [gcc] 308 | arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/crtend.o] ==> ignore 309 | arg [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o] ==> ignore 310 | remove lib [gcc_s] 311 | remove lib [gcc] 312 | remove lib [gcc_s] 313 | remove lib [gcc] 314 | collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8] ==> [/usr/lib/gcc/x86_64-linux-gnu/4.8] 315 | collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] 316 | collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib] ==> [/usr/lib] 317 | collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] 318 | collapse library dir [/lib/../lib] ==> [/lib] 319 | collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] 320 | collapse library dir [/usr/lib/../lib] ==> [/usr/lib] 321 | collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..] ==> [/usr/lib] 322 | implicit libs: [stdc++;m;c] 323 | implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/4.8;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] 324 | implicit fwks: [] 325 | 326 | 327 | 328 | 329 | Detecting CXX [-std=c++1y] compiler features compiled with the following output: 330 | Change Dir: /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp 331 | 332 | Run Build Command:"/usr/bin/make" "cmTryCompileExec4206581051/fast" 333 | /usr/bin/make -f CMakeFiles/cmTryCompileExec4206581051.dir/build.make CMakeFiles/cmTryCompileExec4206581051.dir/build 334 | make[1]: Entering directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 335 | /usr/bin/cmake -E cmake_progress_report /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp/CMakeFiles 1 336 | Building CXX object CMakeFiles/cmTryCompileExec4206581051.dir/feature_tests.cxx.o 337 | /usr/bin/c++ -std=c++1y -o CMakeFiles/cmTryCompileExec4206581051.dir/feature_tests.cxx.o -c /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/feature_tests.cxx 338 | Linking CXX executable cmTryCompileExec4206581051 339 | /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec4206581051.dir/link.txt --verbose=1 340 | /usr/bin/c++ CMakeFiles/cmTryCompileExec4206581051.dir/feature_tests.cxx.o -o cmTryCompileExec4206581051 -rdynamic 341 | make[1]: Leaving directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 342 | 343 | 344 | Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers 345 | Feature record: CXX_FEATURE:1cxx_alias_templates 346 | Feature record: CXX_FEATURE:1cxx_alignas 347 | Feature record: CXX_FEATURE:1cxx_alignof 348 | Feature record: CXX_FEATURE:1cxx_attributes 349 | Feature record: CXX_FEATURE:0cxx_attribute_deprecated 350 | Feature record: CXX_FEATURE:1cxx_auto_type 351 | Feature record: CXX_FEATURE:0cxx_binary_literals 352 | Feature record: CXX_FEATURE:1cxx_constexpr 353 | Feature record: CXX_FEATURE:0cxx_contextual_conversions 354 | Feature record: CXX_FEATURE:1cxx_decltype 355 | Feature record: CXX_FEATURE:0cxx_decltype_auto 356 | Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types 357 | Feature record: CXX_FEATURE:1cxx_default_function_template_args 358 | Feature record: CXX_FEATURE:1cxx_defaulted_functions 359 | Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers 360 | Feature record: CXX_FEATURE:1cxx_delegating_constructors 361 | Feature record: CXX_FEATURE:1cxx_deleted_functions 362 | Feature record: CXX_FEATURE:0cxx_digit_separators 363 | Feature record: CXX_FEATURE:1cxx_enum_forward_declarations 364 | Feature record: CXX_FEATURE:1cxx_explicit_conversions 365 | Feature record: CXX_FEATURE:1cxx_extended_friend_declarations 366 | Feature record: CXX_FEATURE:1cxx_extern_templates 367 | Feature record: CXX_FEATURE:1cxx_final 368 | Feature record: CXX_FEATURE:1cxx_func_identifier 369 | Feature record: CXX_FEATURE:1cxx_generalized_initializers 370 | Feature record: CXX_FEATURE:0cxx_generic_lambdas 371 | Feature record: CXX_FEATURE:1cxx_inheriting_constructors 372 | Feature record: CXX_FEATURE:1cxx_inline_namespaces 373 | Feature record: CXX_FEATURE:1cxx_lambdas 374 | Feature record: CXX_FEATURE:0cxx_lambda_init_captures 375 | Feature record: CXX_FEATURE:1cxx_local_type_template_args 376 | Feature record: CXX_FEATURE:1cxx_long_long_type 377 | Feature record: CXX_FEATURE:1cxx_noexcept 378 | Feature record: CXX_FEATURE:1cxx_nonstatic_member_init 379 | Feature record: CXX_FEATURE:1cxx_nullptr 380 | Feature record: CXX_FEATURE:1cxx_override 381 | Feature record: CXX_FEATURE:1cxx_range_for 382 | Feature record: CXX_FEATURE:1cxx_raw_string_literals 383 | Feature record: CXX_FEATURE:1cxx_reference_qualified_functions 384 | Feature record: CXX_FEATURE:0cxx_relaxed_constexpr 385 | Feature record: CXX_FEATURE:0cxx_return_type_deduction 386 | Feature record: CXX_FEATURE:1cxx_right_angle_brackets 387 | Feature record: CXX_FEATURE:1cxx_rvalue_references 388 | Feature record: CXX_FEATURE:1cxx_sizeof_member 389 | Feature record: CXX_FEATURE:1cxx_static_assert 390 | Feature record: CXX_FEATURE:1cxx_strong_enums 391 | Feature record: CXX_FEATURE:1cxx_template_template_parameters 392 | Feature record: CXX_FEATURE:1cxx_thread_local 393 | Feature record: CXX_FEATURE:1cxx_trailing_return_types 394 | Feature record: CXX_FEATURE:1cxx_unicode_literals 395 | Feature record: CXX_FEATURE:1cxx_uniform_initialization 396 | Feature record: CXX_FEATURE:1cxx_unrestricted_unions 397 | Feature record: CXX_FEATURE:1cxx_user_literals 398 | Feature record: CXX_FEATURE:0cxx_variable_templates 399 | Feature record: CXX_FEATURE:1cxx_variadic_macros 400 | Feature record: CXX_FEATURE:1cxx_variadic_templates 401 | 402 | 403 | Detecting CXX [-std=c++11] compiler features compiled with the following output: 404 | Change Dir: /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp 405 | 406 | Run Build Command:"/usr/bin/make" "cmTryCompileExec1448809366/fast" 407 | /usr/bin/make -f CMakeFiles/cmTryCompileExec1448809366.dir/build.make CMakeFiles/cmTryCompileExec1448809366.dir/build 408 | make[1]: Entering directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 409 | /usr/bin/cmake -E cmake_progress_report /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp/CMakeFiles 1 410 | Building CXX object CMakeFiles/cmTryCompileExec1448809366.dir/feature_tests.cxx.o 411 | /usr/bin/c++ -std=c++11 -o CMakeFiles/cmTryCompileExec1448809366.dir/feature_tests.cxx.o -c /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/feature_tests.cxx 412 | Linking CXX executable cmTryCompileExec1448809366 413 | /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec1448809366.dir/link.txt --verbose=1 414 | /usr/bin/c++ CMakeFiles/cmTryCompileExec1448809366.dir/feature_tests.cxx.o -o cmTryCompileExec1448809366 -rdynamic 415 | make[1]: Leaving directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 416 | 417 | 418 | Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers 419 | Feature record: CXX_FEATURE:1cxx_alias_templates 420 | Feature record: CXX_FEATURE:1cxx_alignas 421 | Feature record: CXX_FEATURE:1cxx_alignof 422 | Feature record: CXX_FEATURE:1cxx_attributes 423 | Feature record: CXX_FEATURE:0cxx_attribute_deprecated 424 | Feature record: CXX_FEATURE:1cxx_auto_type 425 | Feature record: CXX_FEATURE:0cxx_binary_literals 426 | Feature record: CXX_FEATURE:1cxx_constexpr 427 | Feature record: CXX_FEATURE:0cxx_contextual_conversions 428 | Feature record: CXX_FEATURE:1cxx_decltype 429 | Feature record: CXX_FEATURE:0cxx_decltype_auto 430 | Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types 431 | Feature record: CXX_FEATURE:1cxx_default_function_template_args 432 | Feature record: CXX_FEATURE:1cxx_defaulted_functions 433 | Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers 434 | Feature record: CXX_FEATURE:1cxx_delegating_constructors 435 | Feature record: CXX_FEATURE:1cxx_deleted_functions 436 | Feature record: CXX_FEATURE:0cxx_digit_separators 437 | Feature record: CXX_FEATURE:1cxx_enum_forward_declarations 438 | Feature record: CXX_FEATURE:1cxx_explicit_conversions 439 | Feature record: CXX_FEATURE:1cxx_extended_friend_declarations 440 | Feature record: CXX_FEATURE:1cxx_extern_templates 441 | Feature record: CXX_FEATURE:1cxx_final 442 | Feature record: CXX_FEATURE:1cxx_func_identifier 443 | Feature record: CXX_FEATURE:1cxx_generalized_initializers 444 | Feature record: CXX_FEATURE:0cxx_generic_lambdas 445 | Feature record: CXX_FEATURE:1cxx_inheriting_constructors 446 | Feature record: CXX_FEATURE:1cxx_inline_namespaces 447 | Feature record: CXX_FEATURE:1cxx_lambdas 448 | Feature record: CXX_FEATURE:0cxx_lambda_init_captures 449 | Feature record: CXX_FEATURE:1cxx_local_type_template_args 450 | Feature record: CXX_FEATURE:1cxx_long_long_type 451 | Feature record: CXX_FEATURE:1cxx_noexcept 452 | Feature record: CXX_FEATURE:1cxx_nonstatic_member_init 453 | Feature record: CXX_FEATURE:1cxx_nullptr 454 | Feature record: CXX_FEATURE:1cxx_override 455 | Feature record: CXX_FEATURE:1cxx_range_for 456 | Feature record: CXX_FEATURE:1cxx_raw_string_literals 457 | Feature record: CXX_FEATURE:1cxx_reference_qualified_functions 458 | Feature record: CXX_FEATURE:0cxx_relaxed_constexpr 459 | Feature record: CXX_FEATURE:0cxx_return_type_deduction 460 | Feature record: CXX_FEATURE:1cxx_right_angle_brackets 461 | Feature record: CXX_FEATURE:1cxx_rvalue_references 462 | Feature record: CXX_FEATURE:1cxx_sizeof_member 463 | Feature record: CXX_FEATURE:1cxx_static_assert 464 | Feature record: CXX_FEATURE:1cxx_strong_enums 465 | Feature record: CXX_FEATURE:1cxx_template_template_parameters 466 | Feature record: CXX_FEATURE:1cxx_thread_local 467 | Feature record: CXX_FEATURE:1cxx_trailing_return_types 468 | Feature record: CXX_FEATURE:1cxx_unicode_literals 469 | Feature record: CXX_FEATURE:1cxx_uniform_initialization 470 | Feature record: CXX_FEATURE:1cxx_unrestricted_unions 471 | Feature record: CXX_FEATURE:1cxx_user_literals 472 | Feature record: CXX_FEATURE:0cxx_variable_templates 473 | Feature record: CXX_FEATURE:1cxx_variadic_macros 474 | Feature record: CXX_FEATURE:1cxx_variadic_templates 475 | 476 | 477 | Detecting CXX [-std=c++98] compiler features compiled with the following output: 478 | Change Dir: /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp 479 | 480 | Run Build Command:"/usr/bin/make" "cmTryCompileExec1113814336/fast" 481 | /usr/bin/make -f CMakeFiles/cmTryCompileExec1113814336.dir/build.make CMakeFiles/cmTryCompileExec1113814336.dir/build 482 | make[1]: Entering directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 483 | /usr/bin/cmake -E cmake_progress_report /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp/CMakeFiles 1 484 | Building CXX object CMakeFiles/cmTryCompileExec1113814336.dir/feature_tests.cxx.o 485 | /usr/bin/c++ -std=c++98 -o CMakeFiles/cmTryCompileExec1113814336.dir/feature_tests.cxx.o -c /home/christian/ethereum/lanai/interpreter/build/CMakeFiles/feature_tests.cxx 486 | Linking CXX executable cmTryCompileExec1113814336 487 | /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec1113814336.dir/link.txt --verbose=1 488 | /usr/bin/c++ CMakeFiles/cmTryCompileExec1113814336.dir/feature_tests.cxx.o -o cmTryCompileExec1113814336 -rdynamic 489 | make[1]: Leaving directory `/home/christian/ethereum/lanai/interpreter/build/CMakeFiles/CMakeTmp' 490 | 491 | 492 | Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers 493 | Feature record: CXX_FEATURE:0cxx_alias_templates 494 | Feature record: CXX_FEATURE:0cxx_alignas 495 | Feature record: CXX_FEATURE:0cxx_alignof 496 | Feature record: CXX_FEATURE:0cxx_attributes 497 | Feature record: CXX_FEATURE:0cxx_attribute_deprecated 498 | Feature record: CXX_FEATURE:0cxx_auto_type 499 | Feature record: CXX_FEATURE:0cxx_binary_literals 500 | Feature record: CXX_FEATURE:0cxx_constexpr 501 | Feature record: CXX_FEATURE:0cxx_contextual_conversions 502 | Feature record: CXX_FEATURE:0cxx_decltype 503 | Feature record: CXX_FEATURE:0cxx_decltype_auto 504 | Feature record: CXX_FEATURE:0cxx_decltype_incomplete_return_types 505 | Feature record: CXX_FEATURE:0cxx_default_function_template_args 506 | Feature record: CXX_FEATURE:0cxx_defaulted_functions 507 | Feature record: CXX_FEATURE:0cxx_defaulted_move_initializers 508 | Feature record: CXX_FEATURE:0cxx_delegating_constructors 509 | Feature record: CXX_FEATURE:0cxx_deleted_functions 510 | Feature record: CXX_FEATURE:0cxx_digit_separators 511 | Feature record: CXX_FEATURE:0cxx_enum_forward_declarations 512 | Feature record: CXX_FEATURE:0cxx_explicit_conversions 513 | Feature record: CXX_FEATURE:0cxx_extended_friend_declarations 514 | Feature record: CXX_FEATURE:0cxx_extern_templates 515 | Feature record: CXX_FEATURE:0cxx_final 516 | Feature record: CXX_FEATURE:0cxx_func_identifier 517 | Feature record: CXX_FEATURE:0cxx_generalized_initializers 518 | Feature record: CXX_FEATURE:0cxx_generic_lambdas 519 | Feature record: CXX_FEATURE:0cxx_inheriting_constructors 520 | Feature record: CXX_FEATURE:0cxx_inline_namespaces 521 | Feature record: CXX_FEATURE:0cxx_lambdas 522 | Feature record: CXX_FEATURE:0cxx_lambda_init_captures 523 | Feature record: CXX_FEATURE:0cxx_local_type_template_args 524 | Feature record: CXX_FEATURE:0cxx_long_long_type 525 | Feature record: CXX_FEATURE:0cxx_noexcept 526 | Feature record: CXX_FEATURE:0cxx_nonstatic_member_init 527 | Feature record: CXX_FEATURE:0cxx_nullptr 528 | Feature record: CXX_FEATURE:0cxx_override 529 | Feature record: CXX_FEATURE:0cxx_range_for 530 | Feature record: CXX_FEATURE:0cxx_raw_string_literals 531 | Feature record: CXX_FEATURE:0cxx_reference_qualified_functions 532 | Feature record: CXX_FEATURE:0cxx_relaxed_constexpr 533 | Feature record: CXX_FEATURE:0cxx_return_type_deduction 534 | Feature record: CXX_FEATURE:0cxx_right_angle_brackets 535 | Feature record: CXX_FEATURE:0cxx_rvalue_references 536 | Feature record: CXX_FEATURE:0cxx_sizeof_member 537 | Feature record: CXX_FEATURE:0cxx_static_assert 538 | Feature record: CXX_FEATURE:0cxx_strong_enums 539 | Feature record: CXX_FEATURE:1cxx_template_template_parameters 540 | Feature record: CXX_FEATURE:0cxx_thread_local 541 | Feature record: CXX_FEATURE:0cxx_trailing_return_types 542 | Feature record: CXX_FEATURE:0cxx_unicode_literals 543 | Feature record: CXX_FEATURE:0cxx_uniform_initialization 544 | Feature record: CXX_FEATURE:0cxx_unrestricted_unions 545 | Feature record: CXX_FEATURE:0cxx_user_literals 546 | Feature record: CXX_FEATURE:0cxx_variable_templates 547 | Feature record: CXX_FEATURE:0cxx_variadic_macros 548 | Feature record: CXX_FEATURE:0cxx_variadic_templates 549 | --------------------------------------------------------------------------------