diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c6846793..c0f1f0948 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,7 @@ cmake_minimum_required (VERSION 2.8.12) project (Jerry CXX C ASM) -# Require g++ of version >= 4.8.0 +# Require g++ of version >= 4.7.0 if(NOT CMAKE_COMPILER_IS_GNUCXX) message(FATAL_ERROR "g++ compiler is required") else() @@ -23,8 +23,8 @@ project (Jerry CXX C ASM) OUTPUT_VARIABLE GNU_CXX_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) - if(${GNU_CXX_VERSION} VERSION_LESS 4.8.0) - message(FATAL_ERROR "g++ compiler version 4.8.0 or higher required") + if(${GNU_CXX_VERSION} VERSION_LESS 4.7.0) + message(FATAL_ERROR "g++ compiler version 4.7.0 or higher required") endif() endif() @@ -177,7 +177,7 @@ project (Jerry CXX C ASM) set(COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -g -gdwarf-4") # Warnings - set(COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Wall -Wextra -Wpedantic -Wlogical-op") + set(COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Wall -Wextra -pedantic -Wlogical-op") set(COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Wformat-nonliteral -Winit-self -Wno-stack-protector") set(COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Wconversion -Wsign-conversion -Wformat-security") set(COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Wmissing-declarations -Wno-attributes") @@ -250,6 +250,19 @@ project (Jerry CXX C ASM) OUTPUT_STRIP_TRAILING_WHITESPACE) set_property(TARGET ${PREFIX_IMPORTED_LIB}libgcc PROPERTY IMPORTED_LOCATION ${IMPORTED_LIBGCC_LOCATION}) + # libgcc_eh + add_library(${PREFIX_IMPORTED_LIB}libgcc_eh STATIC IMPORTED) + execute_process(COMMAND ${CMAKE_C_COMPILER} ${FLAGS_COMMON_ARCH} -print-file-name=libgcc_eh.a + OUTPUT_VARIABLE IMPORTED_LIBGCC_EH_LOCATION + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(EXISTS "${IMPORTED_LIBGCC_EH_LOCATION}") + set_property(TARGET ${PREFIX_IMPORTED_LIB}libgcc_eh + PROPERTY IMPORTED_LOCATION ${IMPORTED_LIBGCC_EH_LOCATION}) + else() + # If libgcc_eh not found, reference libgcc instead + set_property(TARGET ${PREFIX_IMPORTED_LIB}libgcc_eh + PROPERTY IMPORTED_LOCATION ${IMPORTED_LIBGCC_LOCATION}) + endif() # Platform-specific configuration set(MODIFIERS_LISTS ${MODIFIERS_LISTS_${PLATFORM_EXT}}) @@ -307,7 +320,8 @@ project (Jerry CXX C ASM) target_compile_definitions(${TARGET_NAME} PRIVATE ${DEFINES_JERRY}) target_include_directories(${TARGET_NAME} PRIVATE ${INCLUDE_CORE_INTERFACE}) target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${INCLUDE_LIBC_INTERFACE}) - target_link_libraries(${TARGET_NAME} ${PLUGINS_TARGET_NAME} ${CORE_TARGET_NAME} ${LIBC_TARGET_NAME} ${PREFIX_IMPORTED_LIB}libgcc) + target_link_libraries(${TARGET_NAME} ${PLUGINS_TARGET_NAME} ${CORE_TARGET_NAME} ${LIBC_TARGET_NAME} + ${PREFIX_IMPORTED_LIB}libgcc ${PREFIX_IMPORTED_LIB}libgcc_eh) add_cppcheck_target(${TARGET_NAME}) @@ -387,7 +401,8 @@ project (Jerry CXX C ASM) set_property(TARGET ${TARGET_NAME} PROPERTY LINK_FLAGS "${COMPILE_FLAGS_JERRY} ${CXX_FLAGS_JERRY} ${FLAGS_COMMON_UNITTESTS} ${LINKER_FLAGS_COMMON}") target_include_directories(${TARGET_NAME} PRIVATE ${INCLUDE_CORE_INTERFACE}) - target_link_libraries(${TARGET_NAME} ${CORE_TARGET_NAME} ${PREFIX_IMPORTED_LIB}libc ${PREFIX_IMPORTED_LIB}libgcc) + target_link_libraries(${TARGET_NAME} ${CORE_TARGET_NAME} ${PREFIX_IMPORTED_LIB}libc + ${PREFIX_IMPORTED_LIB}libgcc ${PREFIX_IMPORTED_LIB}libgcc_eh) add_cppcheck_target(${TARGET_NAME}) diff --git a/jerry-core/jerry-extension.inc.h b/jerry-core/jerry-extension.inc.h index b34265b80..2ea5b6cce 100644 --- a/jerry-core/jerry-extension.inc.h +++ b/jerry-core/jerry-extension.inc.h @@ -39,10 +39,10 @@ enum static const jerry_extension_field_t jerry_extension_fields [JERRY_EXTENSION_FIELDS_NUMBER + 1] = { #define EXTENSION_FIELD(_field_name, _type, _value) \ - { # _field_name, JERRY_API_DATA_TYPE_ ## _type, _value }, + { # _field_name, JERRY_API_DATA_TYPE_ ## _type, { _value } }, # include EXTENSION_DESCRIPTION_HEADER #undef EXTENSION_FIELD -#define EMPTY_FIELD_ENTRY { NULL, JERRY_API_DATA_TYPE_UNDEFINED, NULL } +#define EMPTY_FIELD_ENTRY { NULL, JERRY_API_DATA_TYPE_UNDEFINED, { NULL } } EMPTY_FIELD_ENTRY #undef EMPTY_FIELD_ENTRY }; @@ -87,7 +87,7 @@ static const jerry_extension_field_t jerry_extension_fields [JERRY_EXTENSION_FIE /* Functions' arguments description */ #define EXTENSION_ARG(_arg_index, _type) [_arg_index] = { \ (JERRY_API_DATA_TYPE_ ## _type), \ - false /* just for initialization, should be overwritten upon call */ \ + { false } /* just for initialization, should be overwritten upon call */ \ } #define EXTENSION_FUNCTION(_function_name, _function_to_call, _ret_value_type, _args_number, ...) \ static jerry_api_value_t jerry_extension_function_ ## _function_name ## _args [_args_number] = { \ @@ -103,13 +103,13 @@ static jerry_extension_function_t jerry_extension_functions [JERRY_EXTENSION_FUN #define EXTENSION_FUNCTION(_function_name, _function_to_call, _ret_value_type, _args_number, ...) \ { \ # _function_name, jerry_extension_ ## _function_name ## _wrapper, \ - { JERRY_API_DATA_TYPE_ ## _ret_value_type, false }, \ + { JERRY_API_DATA_TYPE_ ## _ret_value_type, { false } }, \ jerry_extension_function_ ## _function_name ## _args, \ _args_number \ }, # include EXTENSION_DESCRIPTION_HEADER #undef EXTENSION_FUNCTION -#define EMPTY_FUNCTION_ENTRY { NULL, NULL, { JERRY_API_DATA_TYPE_VOID, false }, NULL, 0 } +#define EMPTY_FUNCTION_ENTRY { NULL, NULL, { JERRY_API_DATA_TYPE_VOID, { false } }, NULL, 0 } EMPTY_FUNCTION_ENTRY #undef EMPTY_FUNCTION_ENTRY }; diff --git a/jerry-core/mem/mem-pool.h b/jerry-core/mem/mem-pool.h index 64cdfbca0..c37bef11d 100644 --- a/jerry-core/mem/mem-pool.h +++ b/jerry-core/mem/mem-pool.h @@ -59,10 +59,10 @@ typedef uint8_t mem_pool_chunk_index_t; typedef struct __attribute__ ((aligned (MEM_ALIGNMENT))) mem_pool_state_t { /** Offset of first free chunk from the beginning of the pool (mem_pool_chunk_index_t) */ - unsigned int first_free_chunk : MEM_POOL_MAX_CHUNKS_NUMBER_LOG; + mem_pool_chunk_index_t first_free_chunk : MEM_POOL_MAX_CHUNKS_NUMBER_LOG; /** Number of free chunks (mem_pool_chunk_index_t) */ - unsigned int free_chunks_number : MEM_POOL_MAX_CHUNKS_NUMBER_LOG; + mem_pool_chunk_index_t free_chunks_number : MEM_POOL_MAX_CHUNKS_NUMBER_LOG; /** Pointer to the next pool with same chunk size */ mem_cpointer_t next_pool_cp : MEM_COMPRESSED_POINTER_WIDTH; diff --git a/jerry-core/parser/js/lexer.h b/jerry-core/parser/js/lexer.h index 40b3e4009..b9b0f5345 100644 --- a/jerry-core/parser/js/lexer.h +++ b/jerry-core/parser/js/lexer.h @@ -19,7 +19,7 @@ #include "literal.h" #define INVALID_VALUE 255 -#define INVALID_LITERAL UINT32_MAX +#define INVALID_LITERAL ((uint32_t) -1) /* Keywords. */ typedef enum __attr_packed___