From 557e7f19f7bf5fedbad147cf2a2906b63d3f1faf Mon Sep 17 00:00:00 2001 From: Conghui Chen Date: Thu, 5 Dec 2019 20:19:34 +0000 Subject: [PATCH] Makefile: add gcc flags to prevent some optimization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add the below flags, they are needed in -O2: -fno-delete-null-pointer-checks: * tells the compiler NOT to assume that null pointer deference does not exist. * Without this flag, below case cannot be detected: a pointer might point to nullsometime during run-time and if there is no validation for that pointer, it will cause the program to crash. Since we don’t receive an error message saying that a pointer is pointing to null, we will have a hard time trying to find the problem. -fwrapv: * tells the compiler that signed overflow always wraps. * Without this flag, x + 10 > x will always be true for signed x. With the flag, x + 10 > x is not always be true, as the overflow is defined for x, and it could wrap. Tracked-On: #4194 Signed-off-by: Conghui Chen Reviewed-by: Yonghua Huang --- devicemodel/Makefile | 1 + misc/acrn-manager/Makefile | 1 + misc/efi-stub/Makefile | 1 + misc/life_mngr/Makefile | 1 + 4 files changed, 4 insertions(+) diff --git a/devicemodel/Makefile b/devicemodel/Makefile index f29341436..7213642ad 100644 --- a/devicemodel/Makefile +++ b/devicemodel/Makefile @@ -19,6 +19,7 @@ CFLAGS += -Wall -ffunction-sections CFLAGS += -Werror CFLAGS += -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 CFLAGS += -Wformat -Wformat-security -fno-strict-aliasing +CFLAGS += -fno-delete-null-pointer-checks -fwrapv CFLAGS += -fpie CFLAGS += -Wno-stringop-truncation -Wno-address-of-packed-member diff --git a/misc/acrn-manager/Makefile b/misc/acrn-manager/Makefile index acf7e0cfc..b97c6ac40 100644 --- a/misc/acrn-manager/Makefile +++ b/misc/acrn-manager/Makefile @@ -11,6 +11,7 @@ MANAGER_CFLAGS += -Wall -ffunction-sections MANAGER_CFLAGS += -Werror MANAGER_CFLAGS += -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 MANAGER_CFLAGS += -Wformat -Wformat-security -fno-strict-aliasing +MANAGER_CFLAGS += -fno-delete-null-pointer-checks -fwrapv MANAGER_CFLAGS += -fpie -fpic #FIXME: remove me. work-around for system() calls, which will be removed MANAGER_CFLAGS += -Wno-format-truncation -Wno-unused-result diff --git a/misc/efi-stub/Makefile b/misc/efi-stub/Makefile index 9d7da2a87..678056e22 100644 --- a/misc/efi-stub/Makefile +++ b/misc/efi-stub/Makefile @@ -74,6 +74,7 @@ CFLAGS=-I. -I.. -I$(INCDIR)/efi -I$(INCDIR)/efi/$(ARCH) \ CFLAGS += -mno-mmx -mno-sse -mno-sse2 -mno-80387 -mno-fp-ret-in-387 +CFLAGS += -fno-delete-null-pointer-checks -fwrapv ifeq ($(ARCH),ia32) ifeq ($(HOST),x86_64) CFLAGS += -m32 diff --git a/misc/life_mngr/Makefile b/misc/life_mngr/Makefile index 5e54e6ef7..725f257ea 100644 --- a/misc/life_mngr/Makefile +++ b/misc/life_mngr/Makefile @@ -10,6 +10,7 @@ LIFEMNGR_CFLAGS += -Wall -ffunction-sections LIFEMNGR_CFLAGS += -Werror LIFEMNGR_CFLAGS += -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 LIFEMNGR_CFLAGS += -Wformat -Wformat-security -fno-strict-aliasing +LIFEMNGR_CFLAGS += -fno-delete-null-pointer-checks -fwrapv LIFEMNGR_CFLAGS += -fpie -fpic LIFEMNGR_CFLAGS += $(CFLAGS)