x86-64: Support symbol table and kasan global variables cross-border detection
1. Add kasan compilation options 2. Modify the link process to support symbol tables and kasan global variables cross-border detection Signed-off-by: wangmingrong1 <wangmingrong1@xiaomi.com>
This commit is contained in:
parent
1518f8bdb8
commit
6cd43777c3
2 changed files with 48 additions and 2 deletions
|
|
@ -113,11 +113,41 @@ libarch$(LIBEXT): $(OBJS)
|
|||
board/libboard$(LIBEXT):
|
||||
$(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)"
|
||||
|
||||
nuttx$(EXEEXT): $(HEAD_OBJ) board/libboard$(LIBEXT) $(ARCHSCRIPT)
|
||||
@echo "LD: nuttx$(EXEEXT)"
|
||||
# When multiple linking, these two additional linking objects will be included
|
||||
|
||||
ifeq ($(CONFIG_MM_KASAN_GLOBAL),y)
|
||||
EXTRA_LIBS += kasan_globals$(OBJEXT)
|
||||
endif
|
||||
ifeq ($(CONFIG_ALLSYMS),y)
|
||||
EXTRA_LIBS += allsyms$(OBJEXT)
|
||||
endif
|
||||
|
||||
define LINK_ALLSYMS_KASAN
|
||||
$(if $(CONFIG_ALLSYMS),
|
||||
$(Q) $(TOPDIR)/tools/mkallsyms.py $(NUTTX) allsyms.tmp --orderbyname $(CONFIG_SYMTAB_ORDEREDBYNAME)
|
||||
$(Q) $(call COMPILE, allsyms.tmp, allsyms$(OBJEXT), -x c)
|
||||
$(Q) $(call DELFILE, allsyms.tmp))
|
||||
$(if $(CONFIG_MM_KASAN_GLOBAL),
|
||||
$(Q) $(TOPDIR)/tools/kasan_global.py -e $(NUTTX) -o kasan_globals.tmp -a $(CONFIG_MM_KASAN_GLOBAL_ALIGN)
|
||||
$(Q) $(call COMPILE, kasan_globals.tmp, kasan_globals$(OBJEXT) -fno-sanitize=kernel-address, -x c)
|
||||
$(Q) $(call DELFILE, kasan_globals.tmp))
|
||||
$(Q) $(LD) --entry=__start $(LDFLAGS) $(LIBPATHS) $(EXTRA_LIBPATHS) \
|
||||
-o $(NUTTX) $(HEAD_OBJ) $(EXTRA_OBJS) \
|
||||
$(LDSTARTGROUP) $(LDLIBS) $(EXTRA_LIBS) $(LDENDGROUP)
|
||||
endef
|
||||
|
||||
nuttx$(EXEEXT): $(HEAD_OBJ) board/libboard$(LIBEXT) $(ARCHSCRIPT)
|
||||
@echo "LD: nuttx$(EXEEXT)"
|
||||
ifeq ($(CONFIG_ALLSYMS)$(CONFIG_MM_KASAN_GLOBAL),)
|
||||
$(Q) $(LD) --entry=__start $(LDFLAGS) $(LIBPATHS) $(EXTRA_LIBPATHS) \
|
||||
-o $(NUTTX) $(HEAD_OBJ) $(EXTRA_OBJS) \
|
||||
$(LDSTARTGROUP) $(LDLIBS) $(EXTRA_LIBS) $(LDENDGROUP)
|
||||
else
|
||||
$(Q) $(call LINK_ALLSYMS_KASAN)
|
||||
$(Q) $(call LINK_ALLSYMS_KASAN)
|
||||
$(Q) $(call LINK_ALLSYMS_KASAN)
|
||||
$(Q) $(call LINK_ALLSYMS_KASAN)
|
||||
endif
|
||||
ifneq ($(CONFIG_WINDOWS_NATIVE),y)
|
||||
$(Q) $(NM) $(NUTTX) | \
|
||||
grep -v '\(compiled\)\|\(\$(OBJEXT)$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
|
||||
|
|
|
|||
|
|
@ -53,6 +53,22 @@ NM = $(CROSSDEV)nm
|
|||
OBJCOPY = $(CROSSDEV)objcopy
|
||||
OBJDUMP = $(CROSSDEV)objdump
|
||||
|
||||
ifeq ($(CONFIG_MM_KASAN_ALL),y)
|
||||
ARCHOPTIMIZATION += -fsanitize=kernel-address
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_MM_KASAN_GLOBAL),y)
|
||||
ARCHOPTIMIZATION += --param asan-globals=1
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_MM_KASAN_DISABLE_READS_CHECK),y)
|
||||
ARCHOPTIMIZATION += --param asan-instrument-reads=0
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_MM_KASAN_DISABLE_WRITES_CHECK),y)
|
||||
ARCHOPTIMIZATION += --param asan-instrument-writes=0
|
||||
endif
|
||||
|
||||
CFLAGS := $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
|
||||
CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
|
||||
AFLAGS := $(CFLAGS) -D__ASSEMBLY__
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue