changeset 9927:a421cf366d06

8233410: Better Build Scripting Summary: Also includes a more complete backport of JDK-8199552 (relro) Reviewed-by: mbalao
author andrew
date Sun, 12 Apr 2020 04:40:12 +0100
parents 2c1da2208c2b
children ce46c9dcfd63
files make/com/sun/java/pack/Makefile make/common/Defs-linux.gmk make/common/Defs-solaris.gmk make/common/Program.gmk make/java/jexec/Makefile
diffstat 5 files changed, 36 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/make/com/sun/java/pack/Makefile	Wed Apr 08 01:25:28 2020 +0100
+++ b/make/com/sun/java/pack/Makefile	Sun Apr 12 04:40:12 2020 +0100
@@ -79,6 +79,12 @@
   LDDFLAGS += $(ZLIB_LIBS)
   OTHER_CXXFLAGS += $(ZLIB_CFLAGS) -DSYSTEM_ZLIB
  endif
+# Add -fPIE in place of -fPIC for building executables
+ ifeq ($(CC_VERSION), gcc)
+  LDDFLAGS += -pie
+  CFLAGS := $(subst -fPIC,-fPIE,$(CFLAGS))
+  CXXFLAGS := $(subst -fPIC,-fPIE,$(CXXFLAGS))
+ endif # CC_VERSION gcc
 else
   OTHER_CXXFLAGS += -DNO_ZLIB -DUNPACK_JNI
   OTHER_LDLIBS += $(JVMLIB)
--- a/make/common/Defs-linux.gmk	Wed Apr 08 01:25:28 2020 +0100
+++ b/make/common/Defs-linux.gmk	Sun Apr 12 04:40:12 2020 +0100
@@ -260,6 +260,12 @@
  CFLAGS_COMMON += -pipe
 endif
 
+# Add buffer overflow protection, if available
+_HAS_STACK_PROTECTOR:=$(shell $(CC) -dumpspecs | $(GREP) -- 'fstack-protector')
+ifneq ($(_HAS_STACK_PROTECTOR),)
+  CFLAGS_COMMON += -fstack-protector
+endif
+
 # Linux 64bit machines use Dwarf2, which can be HUGE, have fastdebug use -g1
 DEBUG_FLAG = -g
 ifeq ($(FASTDEBUG), true)
@@ -357,6 +363,9 @@
 LDFLAGS_DEFS_OPTION  = -Xlinker -z -Xlinker defs
 LDFLAGS_COMMON  += $(LDFLAGS_DEFS_OPTION)
 
+LDFLAGS_RELRO_OPTION = -Xlinker -z -Xlinker relro
+LDFLAGS_COMMON  += $(LDFLAGS_RELRO_OPTION)
+
 #
 # -L paths for finding and -ljava
 #
--- a/make/common/Defs-solaris.gmk	Wed Apr 08 01:25:28 2020 +0100
+++ b/make/common/Defs-solaris.gmk	Sun Apr 12 04:40:12 2020 +0100
@@ -442,6 +442,8 @@
 #
 ifeq ($(CC_VERSION),gcc)
 LD_MAPFILE_FLAG = -Xlinker -M -Xlinker
+LDFLAGS_RELRO_OPTION = -Xlinker -z -Xlinker relro
+LDFLAGS_COMMON  += $(LDFLAGS_RELRO_OPTION)
 else
 LD_MAPFILE_FLAG = -M
 endif
@@ -531,6 +533,11 @@
   #   (See Rules.gmk) May need to wait for gcc 5?
   AUTOMATIC_PCH_OPTION = 
 
+  # Add buffer overflow protection, if available
+  _HAS_STACK_PROTECTOR:=$(shell $(CC) -dumpspecs | $(GREP) -- 'fstack-protector')
+  ifneq ($(_HAS_STACK_PROTECTOR),)
+    CFLAGS_COMMON += -fstack-protector
+  endif
 else
   
   # Highest could be -xO5, but indications are that -xO5 should be reserved
--- a/make/common/Program.gmk	Wed Apr 08 01:25:28 2020 +0100
+++ b/make/common/Program.gmk	Sun Apr 12 04:40:12 2020 +0100
@@ -131,6 +131,13 @@
   OTHER_LDLIBS += jli.lib
 endif # PLATFORM
 
+# Add -fPIE in place of -fPIC for building executables
+ifeq ($(CC_VERSION), gcc)
+  LDFLAGS += -pie
+  CFLAGS := $(subst -fPIC,-fPIE,$(CFLAGS))
+  CXXFLAGS := $(subst -fPIC,-fPIE,$(CXXFLAGS))
+endif # CC_VERSION gcc
+
 #
 # Launcher specific files.
 #
--- a/make/java/jexec/Makefile	Wed Apr 08 01:25:28 2020 +0100
+++ b/make/java/jexec/Makefile	Sun Apr 12 04:40:12 2020 +0100
@@ -61,6 +61,13 @@
   OTHER_INCLUDES += -I$(SHARE_SRC)/bin
 endif # PLATFORM
 
+# Add -fPIE in place of -fPIC for building executables
+ifeq ($(CC_VERSION), gcc)
+  LDFLAGS += -pie
+  CFLAGS := $(subst -fPIC,-fPIE,$(CFLAGS))
+  CXXFLAGS := $(subst -fPIC,-fPIE,$(CXXFLAGS))
+endif # CC_VERSION gcc
+
 build: $(LIB_LOCATION)/$(PROGRAM)
 
 $(LIB_LOCATION)/$(PROGRAM):: $(FILES_o)