< prev index next >

make/autoconf/flags-ldflags.m4

Print this page
8205457: gcc and clang should use the same ld flags
Reviewed-by: dholmes, erikj


  46 
  47   # Setup the build toolchain
  48 
  49   # When building a buildjdk, it's always only the server variant
  50   BUILD_JVM_VARIANT_PATH=server
  51 
  52   FLAGS_SETUP_LDFLAGS_CPU_DEP([BUILD], [OPENJDK_BUILD_])
  53 
  54   LDFLAGS_TESTLIB="$LDFLAGS_JDKLIB"
  55   LDFLAGS_TESTEXE="$LDFLAGS_JDKEXE ${TARGET_LDFLAGS_JDK_LIBPATH}"
  56   AC_SUBST(LDFLAGS_TESTLIB)
  57   AC_SUBST(LDFLAGS_TESTEXE)
  58 ])
  59 
  60 ################################################################################
  61 
  62 # CPU independent LDFLAGS setup, used for both target and build toolchain.
  63 AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
  64 [
  65   # Setup basic LDFLAGS
  66   if test "x$TOOLCHAIN_TYPE" = xgcc; then
  67     # If this is a --hash-style=gnu system, use --hash-style=both, why?
  68     # We have previously set HAS_GNU_HASH if this is the case
  69     if test -n "$HAS_GNU_HASH"; then
  70       BASIC_LDFLAGS="-Wl,--hash-style=both"
  71       LIBJSIG_HASHSTYLE_LDFLAGS="-Wl,--hash-style=both"
  72     fi
  73 
  74     # Add -z defs, to forbid undefined symbols in object files.
  75     BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,-z,defs"
  76 
  77     BASIC_LDFLAGS_JVM_ONLY="-Wl,-z,noexecstack -Wl,-O1 -Wl,-z,relro"
  78 
  79     BASIC_LDFLAGS_JDK_LIB_ONLY="-Wl,-z,noexecstack"
  80     LIBJSIG_NOEXECSTACK_LDFLAGS="-Wl,-z,noexecstack"
  81 
  82   elif test "x$TOOLCHAIN_TYPE" = xclang; then
  83     BASIC_LDFLAGS_JVM_ONLY="-mno-omit-leaf-frame-pointer -mstack-alignment=16 \
  84         -fPIC"
  85 
  86   elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
  87     BASIC_LDFLAGS="-Wl,-z,defs"
  88     BASIC_LDFLAGS_ONLYCXX="-norunpath"
  89     BASIC_LDFLAGS_ONLYCXX_JDK_ONLY="-xnolib"
  90 
  91     BASIC_LDFLAGS_JDK_ONLY="-ztext"
  92     BASIC_LDFLAGS_JVM_ONLY="-library=%none -mt -z noversion"
  93 
  94   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
  95     BASIC_LDFLAGS="-b64 -brtl -bnolibpath -bexpall -bernotok -btextpsize:64K \
  96         -bdatapsize:64K -bstackpsize:64K"
  97     # libjvm.so has gotten too large for normal TOC size; compile with qpic=large and link with bigtoc
  98     BASIC_LDFLAGS_JVM_ONLY="-Wl,-lC_r -bbigtoc"
  99 
 100   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 101     BASIC_LDFLAGS="-nologo -opt:ref"
 102     BASIC_LDFLAGS_JDK_ONLY="-incremental:no"
 103     BASIC_LDFLAGS_JVM_ONLY="-opt:icf,8 -subsystem:windows"
 104   fi




  46 
  47   # Setup the build toolchain
  48 
  49   # When building a buildjdk, it's always only the server variant
  50   BUILD_JVM_VARIANT_PATH=server
  51 
  52   FLAGS_SETUP_LDFLAGS_CPU_DEP([BUILD], [OPENJDK_BUILD_])
  53 
  54   LDFLAGS_TESTLIB="$LDFLAGS_JDKLIB"
  55   LDFLAGS_TESTEXE="$LDFLAGS_JDKEXE ${TARGET_LDFLAGS_JDK_LIBPATH}"
  56   AC_SUBST(LDFLAGS_TESTLIB)
  57   AC_SUBST(LDFLAGS_TESTEXE)
  58 ])
  59 
  60 ################################################################################
  61 
  62 # CPU independent LDFLAGS setup, used for both target and build toolchain.
  63 AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
  64 [
  65   # Setup basic LDFLAGS
  66   if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
  67     # If this is a --hash-style=gnu system, use --hash-style=both, why?
  68     # We have previously set HAS_GNU_HASH if this is the case
  69     if test -n "$HAS_GNU_HASH"; then
  70       BASIC_LDFLAGS="-Wl,--hash-style=both"
  71       LIBJSIG_HASHSTYLE_LDFLAGS="-Wl,--hash-style=both"
  72     fi
  73 
  74     # Add -z defs, to forbid undefined symbols in object files.
  75     BASIC_LDFLAGS="$BASIC_LDFLAGS -Wl,-z,defs"
  76 
  77     BASIC_LDFLAGS_JVM_ONLY="-Wl,-z,noexecstack -Wl,-O1 -Wl,-z,relro"
  78 
  79     BASIC_LDFLAGS_JDK_LIB_ONLY="-Wl,-z,noexecstack"
  80     LIBJSIG_NOEXECSTACK_LDFLAGS="-Wl,-z,noexecstack"




  81 
  82   elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
  83     BASIC_LDFLAGS="-Wl,-z,defs"
  84     BASIC_LDFLAGS_ONLYCXX="-norunpath"
  85     BASIC_LDFLAGS_ONLYCXX_JDK_ONLY="-xnolib"
  86 
  87     BASIC_LDFLAGS_JDK_ONLY="-ztext"
  88     BASIC_LDFLAGS_JVM_ONLY="-library=%none -mt -z noversion"
  89 
  90   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
  91     BASIC_LDFLAGS="-b64 -brtl -bnolibpath -bexpall -bernotok -btextpsize:64K \
  92         -bdatapsize:64K -bstackpsize:64K"
  93     # libjvm.so has gotten too large for normal TOC size; compile with qpic=large and link with bigtoc
  94     BASIC_LDFLAGS_JVM_ONLY="-Wl,-lC_r -bbigtoc"
  95 
  96   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
  97     BASIC_LDFLAGS="-nologo -opt:ref"
  98     BASIC_LDFLAGS_JDK_ONLY="-incremental:no"
  99     BASIC_LDFLAGS_JVM_ONLY="-opt:icf,8 -subsystem:windows"
 100   fi


< prev index next >