# SPDX-License-Identifier: Apache-2.0 # Enable debug support in mdb # Dwarf version 2 can be recognized by mdb # The default dwarf version in gdb is not recognized by mdb zephyr_cc_option(-g3 -gdwarf-2) # Without this (poorly named) option, compiler may generate undefined # references to abort(). # See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63691 zephyr_cc_option(-fno-delete-null-pointer-checks) zephyr_cc_option_ifdef(CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS -munaligned-access) if(NOT COMPILER STREQUAL arcmwdt) if(CONFIG_THREAD_LOCAL_STORAGE) # Instruct compiler to use proper register as cached thread pointer for thread local storage. # For ARCv2 the default register is usually not specified - so we need to specify it # For ARCv3 the register is fixed to r30, so we don't need to specify it zephyr_compile_options_ifdef(CONFIG_ISA_ARCV2 -mtp-regno=26) else() # If thread local storage isn't used - we can safely schedule thread pointer register zephyr_compile_options_ifdef(CONFIG_ISA_ARCV2 -mtp-regno=none) endif() endif() add_subdirectory(core) if(COMPILER STREQUAL arcmwdt) add_subdirectory(arcmwdt) if(CONFIG_64BIT) zephyr_compile_options(-Ml) # Instruct MWDT assembler not to warn when we load only lower half (32bit) of symbol # instead of full 64bit address in ASM code. It is valid as we don't support Zephyr # linkage to high addresses for 64bit ARC platforms. zephyr_compile_options(-Wa,-offwarn=168) endif() endif() if(CONFIG_ISA_ARCV3 AND CONFIG_64BIT) set_property(GLOBAL PROPERTY PROPERTY_OUTPUT_FORMAT elf64-littlearc64) elseif(CONFIG_ISA_ARCV3 AND NOT CONFIG_64BIT) set_property(GLOBAL PROPERTY PROPERTY_OUTPUT_FORMAT elf32-littlearc64) else() set_property(GLOBAL PROPERTY PROPERTY_OUTPUT_FORMAT elf32-littlearc) endif()