# Zero call-used registers at function return to increase program # security by either mitigating Return-Oriented Programming (ROP) # attacks or preventing information leakage through registers. # This depends upon support from the compiler for a given architecture. # # Variables that can be used: # # WITH_ZEROREGS Enable for all ports. # WITH_ZEROREGS_PORTS Enable for specified category/port-name # ZEROREGS_TYPE See # https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-zero_005fcall_005fused_005fregs-function-attribute # for options # Default: used # .if !defined(_ZEROREGS_MK_INCLUDED) _ZEROREGS_MK_INCLUDED= yes ZEROREGS_Include_MAINTAINER= [email protected] ZEROREGS_TYPE?= used #. if !defined(ZEROREGS_UNSAFE) && !empty(${ARCH:Mriscv*}) && \ # !empty(${ARCH:Mpower*}) && !empty(${ARCH:Marmv7*}) CFLAGS+= -fzero-call-used-regs=${ZEROREGS_TYPE} CXXFLAGS+= -fzero-call-used-regs=${ZEROREGS_TYPE} #. endif .endif