From 19628e3e0c5d24341cacf60b126070195c77216a Mon Sep 17 00:00:00 2001 From: Justin King Date: Fri, 13 Jan 2023 04:07:42 +0000 Subject: [PATCH] 8300068: UBSan CFLAGS/LDFLAGS not passed when building ADLC Reviewed-by: ihse --- make/autoconf/jdk-options.m4 | 14 ++++++++++---- make/autoconf/spec.gmk.in | 2 ++ make/hotspot/gensrc/GensrcAdlc.gmk | 5 +++++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/make/autoconf/jdk-options.m4 b/make/autoconf/jdk-options.m4 index 64f1bf09010..06749ebe761 100644 --- a/make/autoconf/jdk-options.m4 +++ b/make/autoconf/jdk-options.m4 @@ -451,6 +451,10 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_ADDRESS_SANITIZER], # AC_DEFUN_ONCE([JDKOPT_SETUP_UNDEFINED_BEHAVIOR_SANITIZER], [ + # GCC reports lots of likely false positives for stringop-truncation and format-overflow. + # Silence them for now. + UBSAN_CFLAGS="-fsanitize=undefined -fsanitize=float-divide-by-zero -Wno-stringop-truncation -Wno-format-overflow -fno-omit-frame-pointer -DUNDEFINED_BEHAVIOR_SANITIZER" + UBSAN_LDFLAGS="-fsanitize=undefined -fsanitize=float-divide-by-zero" UTIL_ARG_ENABLE(NAME: ubsan, DEFAULT: false, RESULT: UBSAN_ENABLED, DESC: [enable UndefinedBehaviorSanitizer], CHECK_AVAILABLE: [ @@ -464,10 +468,6 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_UNDEFINED_BEHAVIOR_SANITIZER], fi ], IF_ENABLED: [ - # GCC reports lots of likely false positives for stringop-truncation and format-overflow. - # Silence them for now. - UBSAN_CFLAGS="-fsanitize=undefined -fsanitize=float-divide-by-zero -Wno-stringop-truncation -Wno-format-overflow -fno-omit-frame-pointer -DUNDEFINED_BEHAVIOR_SANITIZER" - UBSAN_LDFLAGS="-fsanitize=undefined -fsanitize=float-divide-by-zero" JVM_CFLAGS="$JVM_CFLAGS $UBSAN_CFLAGS" JVM_LDFLAGS="$JVM_LDFLAGS $UBSAN_LDFLAGS" CFLAGS_JDKLIB="$CFLAGS_JDKLIB $UBSAN_CFLAGS" @@ -477,6 +477,12 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_UNDEFINED_BEHAVIOR_SANITIZER], LDFLAGS_JDKLIB="$LDFLAGS_JDKLIB $UBSAN_LDFLAGS" LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE $UBSAN_LDFLAGS" ]) + if test "x$UBSAN_ENABLED" = xfalse; then + UBSAN_CFLAGS="" + UBSAN_LDFLAGS="" + fi + AC_SUBST(UBSAN_CFLAGS) + AC_SUBST(UBSAN_LDFLAGS) AC_SUBST(UBSAN_ENABLED) ]) diff --git a/make/autoconf/spec.gmk.in b/make/autoconf/spec.gmk.in index 1daed61c983..84ff5955eb1 100644 --- a/make/autoconf/spec.gmk.in +++ b/make/autoconf/spec.gmk.in @@ -457,6 +457,8 @@ endif # UndefinedBehaviorSanitizer UBSAN_ENABLED:=@UBSAN_ENABLED@ +UBSAN_CFLAGS:=@UBSAN_CFLAGS@ +UBSAN_LDFLAGS:=@UBSAN_LDFLAGS@ # Necessary additional compiler flags to compile X11 X_CFLAGS:=@X_CFLAGS@ diff --git a/make/hotspot/gensrc/GensrcAdlc.gmk b/make/hotspot/gensrc/GensrcAdlc.gmk index 21fd041e3a4..5c8989e3efd 100644 --- a/make/hotspot/gensrc/GensrcAdlc.gmk +++ b/make/hotspot/gensrc/GensrcAdlc.gmk @@ -59,6 +59,11 @@ ifeq ($(call check-jvm-feature, compiler2), true) # Add file macro mappings ADLC_CFLAGS += $(FILE_MACRO_CFLAGS) + ifeq ($(UBSAN_ENABLED), true) + ADLC_CFLAGS += $(UBSAN_CFLAGS) + ADLC_LDFLAGS += $(UBSAN_LDFLAGS) + endif + $(eval $(call SetupNativeCompilation, BUILD_ADLC, \ NAME := adlc, \ TYPE := EXECUTABLE, \