Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Feb 2014 20:32:09 -0800 (PST)
From:      Don Lewis <truckman@FreeBSD.org>
To:        antoine@FreeBSD.org
Cc:        java@FreeBSD.org
Subject:   Re: Openjdk6 and clang 3.4
Message-ID:  <201402260432.s1Q4W9GF080388@gw.catspoiler.org>
In-Reply-To: <CAALwa8kn80Xhd2f2K496H6OU7Z3TsNmx=84SQ4enP3xVUvXA4A@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 26 Feb, Antoine Brodin wrote:
> Hi,
> 
> I am not sure if you are already aware of this or not.
> Clang 3.4 has been imported in head 10 days ago.  This new version
> errors on unknown flags.
> Openjdk6 no longer builds with clang 3.4 because of this (-fcheck-new
> unknown by clang):
> 
> gmake[7]: Entering directory
> `/wrkdirs/usr/ports/java/openjdk6/work/build/bsd-amd64/hotspot/outputdir/bsd_amd64_compiler2/product'
> Compiling /wrkdirs/usr/ports/java/openjdk6/work/hotspot/src/share/vm/adlc/adlparse.cpp
> rm -f ../generated/adfiles/adlparse.o
> c++ -D_ALLBSD_SOURCE -D_GNU_SOURCE -DAMD64
> -I/wrkdirs/usr/ports/java/openjdk6/work/hotspot/src/share/vm/prims
> -I/wrkdirs/usr/ports/java/openjdk6/work/hotspot/src/share/vm
> -I/wrkdirs/usr/ports/java/openjdk6/work/hotspot/src/share/vm/precompiled
> -I/wrkdirs/usr/ports/java/openjdk6/work/hotspot/src/cpu/x86/vm
> -I/wrkdirs/usr/ports/java/openjdk6/work/hotspot/src/os_cpu/bsd_x86/vm
> -I/wrkdirs/usr/ports/java/openjdk6/work/hotspot/src/os/bsd/vm
> -I/wrkdirs/usr/ports/java/openjdk6/work/hotspot/src/os/posix/vm
> -I/wrkdirs/usr/ports/java/openjdk6/work/hotspot/src/share/vm/adlc
> -I../generated -DASSERT -O2 -pipe -fno-strict-aliasing
> -DTARGET_OS_FAMILY_bsd -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_64
> -DTARGET_OS_ARCH_bsd_x86 -DTARGET_OS_ARCH_MODEL_bsd_x86_64
> -DTARGET_COMPILER_gcc -DCOMPILER2 -DCOMPILER1  -fno-rtti
> -fno-exceptions -pthread -fcheck-new -m64 -pipe -DTARGET_OS_FAMILY_bsd
> -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_64 -DTARGET_OS_ARCH_bsd_x86
> -DTARGET_OS_ARCH_MODEL_bsd_x86_64 -DTARGET_COMPILER_gcc -DCOMPILER2
> -DCOMPILER1  -fno-rtti -fno-exceptions -pthread -fcheck-new -m64 -pipe
>  -g -c -o ../generated/adfiles/adlparse.o
> /wrkdirs/usr/ports/java/openjdk6/work/hotspot/src/share/vm/adlc/adlparse.cpp
> c++: error: unknown argument: '-fcheck-new'
> c++: error: unknown argument: '-fcheck-new'
> gmake[7]: *** [../generated/adfiles/adlparse.o] Error 1


I patched hotspot/make/bsd/makefiles/gcc.make to remove this compiler
flag.  That got me further, but still no joy:

gmake[8]: Entering directory `/usr/ports/java/openjdk6/work/build/bsd-i586/hotspot/outputdir/bsd_i486_compiler2/product'
echo Generating precompiled header precompiled.hpp.gch
Generating precompiled header precompiled.hpp.gch
mkdir -p .
c++ -D_ALLBSD_SOURCE -D_GNU_SOURCE -DIA32 -DPRODUCT -I. -I/usr/ports/java/openjdk6/work/hotspot/src/share/vm/prims -I/usr/ports/java/openjdk6/work/hotspot/src/share/vm -I/usr/ports/java/openjdk6/work/hotspot/src/share/vm/precompiled -I/usr/ports/java/openjdk6/work/hotspot/src/cpu/x86/vm -I/usr/ports/java/openjdk6/work/hotspot/src/os_cpu/bsd_x86/vm -I/usr/ports/java/openjdk6/work/hotspot/src/os/bsd/vm -I/usr/ports/java/openjdk6/work/hotspot/src/os/posix/vm -I../generated -DHOTSPOT_RELEASE_VERSION="\"23.25-b01\"" -DHOTSPOT_BUILD_TARGET="\"product\"" -DHOTSPOT_BUILD_USER="\"dl\"" -DHOTSPOT_LIB_ARCH=\"i386\" -DHOTSPOT_VM_DISTRO="\"OpenJDK\"" -O2 -pipe -march=athlon64 -DLIBICONV_PLUG -fno-strict-aliasing -DTARGET_OS_FAMILY_bsd -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_32 -DTARGET_OS_ARCH_bsd_x86 -DTARGET_OS_ARCH_MODEL_bsd_x86_32 -DTARGET_COMPILER_gcc -DCOMPILER2 -DCOMPILER1  -fno-rtti -fno-exceptions -pthread -m32 -march=i586 -pipe -DTARGET_OS_FAMILY_bsd -DTARGET_ARCH_x86 -DTARGE!
 T_ARCH_MODEL_x86_32 -DTARGET_OS_ARCH_bsd_x86 -DTARGET_OS_ARCH_MODEL_bsd_x86_32 -DTARGET_COMPILER_gcc -DCOMPILER2 -DCOMPILER1 -fPIC -fno-rtti -fno-exceptions -pthread -m32 -march=i586 -pipe -O3 -fno-strict-aliasing -DVM_LITTLE_ENDIAN -DINCLUDE_TRACE -w -Wpointer-arith -Wconversion -Wsign-compare    -c -MMD -MP -MF ../generated/dependencies/precompiled.hpp.gch.d -x c++-header /usr/ports/java/openjdk6/work/hotspot/src/share/vm/precompiled/precompiled.hpp -o precompiled.hpp.gch 
In file included from /usr/ports/java/openjdk6/work/hotspot/src/share/vm/precompiled/precompiled.hpp:29:
In file included from /usr/ports/java/openjdk6/work/hotspot/src/share/vm/asm/assembler.hpp:29:
/usr/ports/java/openjdk6/work/hotspot/src/share/vm/code/relocInfo.hpp:374:27: error: 
      friend declaration specifying a default argument must be a definition
  inline friend relocInfo prefix_relocInfo(int datalen = 0);
                          ^
/usr/ports/java/openjdk6/work/hotspot/src/share/vm/code/relocInfo.hpp:469:18: error: 
      friend declaration specifying a default argument must be the only
      declaration
inline relocInfo prefix_relocInfo(int datalen) {
                 ^
/usr/ports/java/openjdk6/work/hotspot/src/share/vm/code/relocInfo.hpp:374:27: note: 
      previous declaration is here
  inline friend relocInfo prefix_relocInfo(int datalen = 0);
                          ^
/usr/ports/java/openjdk6/work/hotspot/src/share/vm/code/relocInfo.hpp:471:59: error: 
      'RAW_BITS' is a protected member of 'relocInfo'
  return relocInfo(relocInfo::data_prefix_tag, relocInfo::RAW_BITS, relo...
                                                          ^
/usr/ports/java/openjdk6/work/hotspot/src/share/vm/code/relocInfo.hpp:279:23: note: 
      declared protected here
  enum RawBitsToken { RAW_BITS };
                      ^
/usr/ports/java/openjdk6/work/hotspot/src/share/vm/code/relocInfo.hpp:471:10: error: 
      calling a protected constructor of class 'relocInfo'
  return relocInfo(relocInfo::data_prefix_tag, relocInfo::RAW_BITS, relo...
         ^
/usr/ports/java/openjdk6/work/hotspot/src/share/vm/code/relocInfo.hpp:280:3: note: 
      declared protected here
  relocInfo(relocType type, RawBitsToken ignore, int bits)
  ^
4 errors generated.
gmake[8]: *** [precompiled.hpp.gch] Error 1


Apparently this is some illegal C++ that neither gcc nor clang 3.3
complain about, but clang 3.4 flags.

At that point I picked up the USES_GMAKE and MAKE_ARGS changes from
openjdk7/Makefile and was able to build openjdk6.  The same problems are
still in openjdk7, but it builds because it doesn't try to use clang.

Index: Makefile
===================================================================
--- Makefile	(revision 345674)
+++ Makefile	(working copy)
@@ -64,6 +64,8 @@
 WRKSRC=		${WRKDIR}
 
 USE_XORG=	x11 xext xi xt xtst
+MAKE_ARGS=	CC=${CC} CXX=${CXX} HOST_CC=${CC}
+USE_GCC=	any
 
 # do not depend on devel/apache-ant to avoid circular dependency, but
 # use .tar.bz2 distfile to avoid duplicated downloads




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402260432.s1Q4W9GF080388>