< prev index next >

make/autoconf/flags-ldflags.m4

Print this page
rev 59102 : imported patch build


  71 
  72     # Add -z,defs, to forbid undefined symbols in object files.
  73     # add -z,relro (mark relocations read only) for all libs
  74     # add -z,now ("full relro" - more of the Global Offset Table GOT is marked read only)
  75     BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,-z,defs -Wl,-z,relro -Wl,-z,now"
  76     # Linux : remove unused code+data in link step
  77     if test "x$ENABLE_LINKTIME_GC" = xtrue; then
  78       if test "x$OPENJDK_TARGET_CPU" = xs390x; then
  79         BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,--gc-sections -Wl,--print-gc-sections"
  80       else
  81         BASIC_LDFLAGS_JDK_ONLY="$BASIC_LDFLAGS_JDK_ONLY -Wl,--gc-sections"
  82       fi
  83     fi
  84 
  85     BASIC_LDFLAGS_JVM_ONLY="-Wl,-O1"
  86 
  87   elif test "x$TOOLCHAIN_TYPE" = xclang; then
  88     BASIC_LDFLAGS_JVM_ONLY="-mno-omit-leaf-frame-pointer -mstack-alignment=16 \
  89         -fPIC"
  90 
  91   elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
  92     BASIC_LDFLAGS="-Wl,-z,defs"
  93     BASIC_LDFLAGS_ONLYCXX="-norunpath"
  94     BASIC_LDFLAGS_ONLYCXX_JDK_ONLY="-xnolib"
  95 
  96     BASIC_LDFLAGS_JDK_ONLY="-ztext"
  97     BASIC_LDFLAGS_JVM_ONLY="-library=%none -mt -z noversion"
  98 
  99   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 100     BASIC_LDFLAGS="-b64 -brtl -bnorwexec -bnolibpath -bexpall -bernotok -btextpsize:64K \
 101         -bdatapsize:64K -bstackpsize:64K"
 102     # libjvm.so has gotten too large for normal TOC size; compile with qpic=large and link with bigtoc
 103     BASIC_LDFLAGS_JVM_ONLY="-Wl,-lC_r -bbigtoc"
 104 
 105   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 106     BASIC_LDFLAGS="-nologo -opt:ref"
 107     BASIC_LDFLAGS_JDK_ONLY="-incremental:no"
 108     BASIC_LDFLAGS_JVM_ONLY="-opt:icf,8 -subsystem:windows"
 109   fi
 110 
 111   if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
 112     if test -n "$HAS_NOEXECSTACK"; then
 113       BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,-z,noexecstack"
 114     fi
 115   fi
 116 
 117   # Setup OS-dependent LDFLAGS
 118   if test "x$TOOLCHAIN_TYPE" = xclang || test "x$TOOLCHAIN_TYPE" = xgcc; then


 125   fi
 126 
 127   # Setup debug level-dependent LDFLAGS
 128   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 129     if test "x$OPENJDK_TARGET_OS" = xlinux; then
 130       if test x$DEBUG_LEVEL = xrelease; then
 131         DEBUGLEVEL_LDFLAGS_JDK_ONLY="$DEBUGLEVEL_LDFLAGS_JDK_ONLY -Wl,-O1"
 132       fi
 133     fi
 134 
 135   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 136     # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
 137     # Hotspot now overflows its 64K TOC (currently only for debug),
 138     # so we build with '-qpic=large -bbigtoc'.
 139     if test "x$DEBUG_LEVEL" != xrelease; then
 140       DEBUGLEVEL_LDFLAGS_JVM_ONLY="$DEBUGLEVEL_LDFLAGS_JVM_ONLY -bbigtoc"
 141     fi
 142   fi
 143 
 144   # Setup warning flags
 145   if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
 146     LDFLAGS_WARNINGS_ARE_ERRORS="-Wl,-z,fatal-warnings"
 147   else
 148     LDFLAGS_WARNINGS_ARE_ERRORS=""
 149   fi
 150   AC_SUBST(LDFLAGS_WARNINGS_ARE_ERRORS)
 151 
 152   # Setup LDFLAGS for linking executables
 153   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 154     EXECUTABLE_LDFLAGS="$EXECUTABLE_LDFLAGS -Wl,--allow-shlib-undefined"
 155     # Enabling pie on 32 bit builds prevents the JVM from allocating a continuous
 156     # java heap.
 157     if test "x$OPENJDK_TARGET_CPU_BITS" != "x32"; then
 158       EXECUTABLE_LDFLAGS="$EXECUTABLE_LDFLAGS -pie"
 159     fi
 160   fi
 161 
 162   if test "x$ALLOW_ABSOLUTE_PATHS_IN_OUTPUT" = "xfalse"; then
 163     if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 164       BASIC_LDFLAGS="$BASIC_LDFLAGS -pdbaltpath:%_PDB%"
 165     fi
 166   fi
 167 
 168   # Export some intermediate variables for compatibility
 169   LDFLAGS_CXX_JDK="$BASIC_LDFLAGS_ONLYCXX $BASIC_LDFLAGS_ONLYCXX_JDK_ONLY $DEBUGLEVEL_LDFLAGS_JDK_ONLY"
 170   AC_SUBST(LDFLAGS_CXX_JDK)
 171   AC_SUBST(LIBJSIG_HASHSTYLE_LDFLAGS)
 172   AC_SUBST(LIBJSIG_NOEXECSTACK_LDFLAGS)
 173 ])
 174 
 175 ################################################################################
 176 # $1 - Either BUILD or TARGET to pick the correct OS/CPU variables to check
 177 #      conditionals against.
 178 # $2 - Optional prefix for each variable defined.
 179 AC_DEFUN([FLAGS_SETUP_LDFLAGS_CPU_DEP],
 180 [
 181   # Setup CPU-dependent basic LDFLAGS. These can differ between the target and
 182   # build toolchain.
 183   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 184     if test "x${OPENJDK_$1_CPU}" = xx86; then
 185       $1_CPU_LDFLAGS_JVM_ONLY="-march=i586"
 186     elif test "x$OPENJDK_$1_CPU" = xarm; then
 187       $1_CPU_LDFLAGS_JVM_ONLY="${$1_CPU_LDFLAGS_JVM_ONLY} -fsigned-char"
 188       $1_CPU_LDFLAGS="$ARM_ARCH_TYPE_FLAGS $ARM_FLOAT_TYPE_FLAGS"
 189     fi
 190 
 191   elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
 192     if test "x${OPENJDK_$1_CPU}" = "xsparcv9"; then
 193       $1_CPU_LDFLAGS_JVM_ONLY="-xarch=sparc"
 194     fi
 195 
 196   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 197     if test "x${OPENJDK_$1_CPU}" = "xx86"; then
 198       $1_CPU_LDFLAGS="-safeseh"
 199       # NOTE: Old build added -machine. Probably not needed.
 200       $1_CPU_LDFLAGS_JVM_ONLY="-machine:I386"
 201       $1_CPU_EXECUTABLE_LDFLAGS="-stack:327680"
 202     else
 203       $1_CPU_LDFLAGS_JVM_ONLY="-machine:AMD64"
 204       $1_CPU_EXECUTABLE_LDFLAGS="-stack:1048576"
 205     fi
 206   fi
 207 
 208   # JVM_VARIANT_PATH depends on if this is build or target...
 209   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 210     $1_LDFLAGS_JDK_LIBPATH="-libpath:${OUTPUTDIR}/support/modules_libs/java.base"
 211   else
 212     $1_LDFLAGS_JDK_LIBPATH="-L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base \
 213         -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/${$1_JVM_VARIANT_PATH}"


  71 
  72     # Add -z,defs, to forbid undefined symbols in object files.
  73     # add -z,relro (mark relocations read only) for all libs
  74     # add -z,now ("full relro" - more of the Global Offset Table GOT is marked read only)
  75     BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,-z,defs -Wl,-z,relro -Wl,-z,now"
  76     # Linux : remove unused code+data in link step
  77     if test "x$ENABLE_LINKTIME_GC" = xtrue; then
  78       if test "x$OPENJDK_TARGET_CPU" = xs390x; then
  79         BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,--gc-sections -Wl,--print-gc-sections"
  80       else
  81         BASIC_LDFLAGS_JDK_ONLY="$BASIC_LDFLAGS_JDK_ONLY -Wl,--gc-sections"
  82       fi
  83     fi
  84 
  85     BASIC_LDFLAGS_JVM_ONLY="-Wl,-O1"
  86 
  87   elif test "x$TOOLCHAIN_TYPE" = xclang; then
  88     BASIC_LDFLAGS_JVM_ONLY="-mno-omit-leaf-frame-pointer -mstack-alignment=16 \
  89         -fPIC"
  90 








  91   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
  92     BASIC_LDFLAGS="-b64 -brtl -bnorwexec -bnolibpath -bexpall -bernotok -btextpsize:64K \
  93         -bdatapsize:64K -bstackpsize:64K"
  94     # libjvm.so has gotten too large for normal TOC size; compile with qpic=large and link with bigtoc
  95     BASIC_LDFLAGS_JVM_ONLY="-Wl,-lC_r -bbigtoc"
  96 
  97   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
  98     BASIC_LDFLAGS="-nologo -opt:ref"
  99     BASIC_LDFLAGS_JDK_ONLY="-incremental:no"
 100     BASIC_LDFLAGS_JVM_ONLY="-opt:icf,8 -subsystem:windows"
 101   fi
 102 
 103   if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
 104     if test -n "$HAS_NOEXECSTACK"; then
 105       BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,-z,noexecstack"
 106     fi
 107   fi
 108 
 109   # Setup OS-dependent LDFLAGS
 110   if test "x$TOOLCHAIN_TYPE" = xclang || test "x$TOOLCHAIN_TYPE" = xgcc; then


 117   fi
 118 
 119   # Setup debug level-dependent LDFLAGS
 120   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 121     if test "x$OPENJDK_TARGET_OS" = xlinux; then
 122       if test x$DEBUG_LEVEL = xrelease; then
 123         DEBUGLEVEL_LDFLAGS_JDK_ONLY="$DEBUGLEVEL_LDFLAGS_JDK_ONLY -Wl,-O1"
 124       fi
 125     fi
 126 
 127   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 128     # We need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
 129     # Hotspot now overflows its 64K TOC (currently only for debug),
 130     # so we build with '-qpic=large -bbigtoc'.
 131     if test "x$DEBUG_LEVEL" != xrelease; then
 132       DEBUGLEVEL_LDFLAGS_JVM_ONLY="$DEBUGLEVEL_LDFLAGS_JVM_ONLY -bbigtoc"
 133     fi
 134   fi
 135 
 136   # Setup warning flags



 137   LDFLAGS_WARNINGS_ARE_ERRORS=""

 138   AC_SUBST(LDFLAGS_WARNINGS_ARE_ERRORS)
 139 
 140   # Setup LDFLAGS for linking executables
 141   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 142     EXECUTABLE_LDFLAGS="$EXECUTABLE_LDFLAGS -Wl,--allow-shlib-undefined"
 143     # Enabling pie on 32 bit builds prevents the JVM from allocating a continuous
 144     # java heap.
 145     if test "x$OPENJDK_TARGET_CPU_BITS" != "x32"; then
 146       EXECUTABLE_LDFLAGS="$EXECUTABLE_LDFLAGS -pie"
 147     fi
 148   fi
 149 
 150   if test "x$ALLOW_ABSOLUTE_PATHS_IN_OUTPUT" = "xfalse"; then
 151     if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 152       BASIC_LDFLAGS="$BASIC_LDFLAGS -pdbaltpath:%_PDB%"
 153     fi
 154   fi
 155 
 156   # Export some intermediate variables for compatibility
 157   LDFLAGS_CXX_JDK="$BASIC_LDFLAGS_ONLYCXX $BASIC_LDFLAGS_ONLYCXX_JDK_ONLY $DEBUGLEVEL_LDFLAGS_JDK_ONLY"
 158   AC_SUBST(LDFLAGS_CXX_JDK)
 159   AC_SUBST(LIBJSIG_HASHSTYLE_LDFLAGS)
 160   AC_SUBST(LIBJSIG_NOEXECSTACK_LDFLAGS)
 161 ])
 162 
 163 ################################################################################
 164 # $1 - Either BUILD or TARGET to pick the correct OS/CPU variables to check
 165 #      conditionals against.
 166 # $2 - Optional prefix for each variable defined.
 167 AC_DEFUN([FLAGS_SETUP_LDFLAGS_CPU_DEP],
 168 [
 169   # Setup CPU-dependent basic LDFLAGS. These can differ between the target and
 170   # build toolchain.
 171   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 172     if test "x${OPENJDK_$1_CPU}" = xx86; then
 173       $1_CPU_LDFLAGS_JVM_ONLY="-march=i586"
 174     elif test "x$OPENJDK_$1_CPU" = xarm; then
 175       $1_CPU_LDFLAGS_JVM_ONLY="${$1_CPU_LDFLAGS_JVM_ONLY} -fsigned-char"
 176       $1_CPU_LDFLAGS="$ARM_ARCH_TYPE_FLAGS $ARM_FLOAT_TYPE_FLAGS"





 177     fi
 178 
 179   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 180     if test "x${OPENJDK_$1_CPU}" = "xx86"; then
 181       $1_CPU_LDFLAGS="-safeseh"
 182       # NOTE: Old build added -machine. Probably not needed.
 183       $1_CPU_LDFLAGS_JVM_ONLY="-machine:I386"
 184       $1_CPU_EXECUTABLE_LDFLAGS="-stack:327680"
 185     else
 186       $1_CPU_LDFLAGS_JVM_ONLY="-machine:AMD64"
 187       $1_CPU_EXECUTABLE_LDFLAGS="-stack:1048576"
 188     fi
 189   fi
 190 
 191   # JVM_VARIANT_PATH depends on if this is build or target...
 192   if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 193     $1_LDFLAGS_JDK_LIBPATH="-libpath:${OUTPUTDIR}/support/modules_libs/java.base"
 194   else
 195     $1_LDFLAGS_JDK_LIBPATH="-L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base \
 196         -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/${$1_JVM_VARIANT_PATH}"
< prev index next >