Hi Mikael, Adding in build-dev for input.
On Tue, 2015-04-28 at 10:55 +0200, Mikael Gerdin wrote: > Severin, > > On 2015-04-27 16:33, Severin Gehwolf wrote: > > Hi, > > > > I've noticed that a fastdebug build of recent hs-rt compiles objects > > with -O3 *and* -O0. Is this a bug or a feature? If it's a feature, > > what's the rationale? > > This does not appear to be the case when I build on my machine. > I also don't get "-fstack-protector-all --param ssp-buffer-size=1" > Those appear to be set in DEBUG_CFLAGS in gcc.make. > The first line of fastdebug.make uses an interesting hack to set > FASTDEBUG_CFLAGS to DEBUG_CFLAGS unless FASTDEBUG_CFLAGS is already set. > FASTDEBUG_CFLAGS is only set in gcc.make if ENABLE_FULL_DEBUG_SYMBOLS is 0. > So I tried with: > hs-rt-open/hotspot$ make -C make/ > ALT_BOOTDIR=/usr/lib/jvm/jdk-8-oracle-x64 HOTSPOT_BUILD_JOBS=24 > ARCH_DATA_MODEL=64 ENABLE_FULL_DEBUG_SYMBOLS=0 fastdebug > > And that reproduces your problem. This is most certainly a bug in the > build system. OK, thanks. Any suggestions as to how to fix this? FWIW, I don't see this problem for JDK 8 fastdebug builds. Example: /usr/bin/g++ -DLINUX -D_GNU_SOURCE -DAMD64 -DASSERT -DCHECK_UNHANDLED_OOPS -I. -I/home/sgehwolf/Documents/openjdk/upstream-sources/openjdk8u-dev/hotspot/src/share/vm/prims -I/home/sgehwolf/Documents/openjdk/upstream-sources/openjdk8u-dev/hotspot/src/share/vm -I/home/sgehwolf/Documents/openjdk/upstream-sources/openjdk8u-dev/hotspot/src/share/vm/precompiled -I/home/sgehwolf/Documents/openjdk/upstream-sources/openjdk8u-dev/hotspot/src/cpu/x86/vm -I/home/sgehwolf/Documents/openjdk/upstream-sources/openjdk8u-dev/hotspot/src/os_cpu/linux_x86/vm -I/home/sgehwolf/Documents/openjdk/upstream-sources/openjdk8u-dev/hotspot/src/os/linux/vm -I/home/sgehwolf/Documents/openjdk/upstream-sources/openjdk8u-dev/hotspot/src/os/posix/vm -I../generated -DHOTSPOT_RELEASE_VERSION="\"25.60-b12\"" -DHOTSPOT_BUILD_TARGET="\"fastdebug\"" -DHOTSPOT_BUILD_USER="\"sgehwolf\"" -DHOTSPOT_LIB_ARCH=\"amd64\" -DHOTSPOT_VM_DISTRO="\"OpenJDK\"" -DTARGET_OS_FAMILY_linux -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_64 -DTARGET_OS_ARCH_linux_x86 -DTARGET_OS_ARCH_MODEL_linux_x86_64 -DTARGET_COMPILER_gcc -DCOMPILER2 -DCOMPILER1 -fPIC -fno-rtti -fno-exceptions -D_REENTRANT -fcheck-new -fvisibility=hidden -m64 -pipe -fno-strict-aliasing -g -fno-omit-frame-pointer -O3 -DVM_LITTLE_ENDIAN -D_LP64=1 -Werror -Wpointer-arith -Wsign-compare -Wundef -Wunused-function -Wunused-value -DDTRACE_ENABLED -c -MMD -MP -MF ../generated/dependencies/asParNewGeneration.o.d -fpch-deps -o asParNewGeneration.o /home/sgehwolf/Documents/openjdk/upstream-sources/openjdk8u-dev/hotspot/src/share/vm/gc_implementation/parNew/asParNewGeneration.cpp My make invocation does indeed have ENABLE_FULL_DEBUG_SYMBOLS=0. The full make command line is (the comment says it all, but may be outdated since it's a recurring issue for us distro people): # In order to get correct debug symbols in libjvm.so we need # DEBUG_BINARIES=true ENABLE_FULL_DEBUG_SYMBOLS=0 POST_STRIP_CMD="" make \ SCTP_WERROR= \ DEBUG_BINARIES=true \ ENABLE_FULL_DEBUG_SYMBOLS=0 \ POST_STRIP_CMD="" \ DISABLE_INTREE_EC=true \ LOG=debug images The rationale for DEBUG_BINARIES=true ENABLE_FULL_DEBUG_SYMBOLS=0 POST_STRIP_CMD="" is here (short version: we want full debug symbols in object files and leave the stripping to rpm): http://mail.openjdk.java.net/pipermail/build-dev/2014-March/012039.html Thread started here: http://mail.openjdk.java.net/pipermail/build-dev/2014-February/012019.html A somewhat related bug I've filed about this a while ago: https://bugs.openjdk.java.net/browse/JDK-8073461 If we could fix this proper, then we wouldn't have to use those non-standard make variables... Cheers, Severin > The hotspot makefiles are horrible. > > /Mikael > > > > > > I'm not sure what GCC does with that, but it appears it just uses -O0 > > (last seen option?). > > > > Example: > > /usr/bin/g++ -DLINUX -D_GNU_SOURCE -DAMD64 -DASSERT -DCHECK_UNHANDLED_OOPS > > -I. > > -I/home/sgehwolf/Documents/openjdk/upstream-sources/openjdk9-hs-rt/hotspot/src/share/vm/prims > > > > -I/home/sgehwolf/Documents/openjdk/upstream-sources/openjdk9-hs-rt/hotspot/src/share/vm > > > > -I/home/sgehwolf/Documents/openjdk/upstream-sources/openjdk9-hs-rt/hotspot/src/share/vm/precompiled > > > > -I/home/sgehwolf/Documents/openjdk/upstream-sources/openjdk9-hs-rt/hotspot/src/cpu/x86/vm > > > > -I/home/sgehwolf/Documents/openjdk/upstream-sources/openjdk9-hs-rt/hotspot/src/os_cpu/linux_x86/vm > > > > -I/home/sgehwolf/Documents/openjdk/upstream-sources/openjdk9-hs-rt/hotspot/src/os/linux/vm > > > > -I/home/sgehwolf/Documents/openjdk/upstream-sources/openjdk9-hs-rt/hotspot/src/os/posix/vm > > -I../generated -DHOTSPOT_BUILD_USER="\"sgehwolf\"" > > -DHOTSPOT_LIB_ARCH=\"amd64\" -DHOTSPOT_VM_DISTRO="\"OpenJDK\"" > > -DTARGET_OS_FAMILY_linux -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_64 > > -DTARGET_OS_ARCH_linux_x86 -DTARGET_OS_ARCH_MODEL_linux_x86_64 -DTARGE! > T_COMPILER > _gcc -DCOMPILER2 -DCOMPILER1 -fPIC -fno-rtti -fno-exceptions -D_REENTRANT > -fcheck-new -fvisibility=hidden -m64 -pipe -fno-strict-aliasing -g > -fno-omit-frame-pointer -O3 -O0 -fstack-protector-all --param > ssp-buffer-size=1 -DVM_LITTLE_ENDIAN -D_LP64=1 -Werror -Wpointer-arith > -Wsign-compare -Wundef -Wunused-function -Wunused-value -Wformat=2 > -Wreturn-type -Woverloaded-virtual -Wtype-limits -DDTRACE_ENABLED -c -MMD > -MP -MF ../generated/dependencies/virtualMemoryTracker.o.d -fpch-deps -o > virtualMemoryTracker.o > /home/sgehwolf/Documents/openjdk/upstream-sources/openjdk9-hs-rt/hotspot/src/share/vm/services/virtualMemoryTracker.cpp > > Compiling > > /home/sgehwolf/Documents/openjdk/upstream-sources/openjdk9-hs-rt/hotspot/src/share/vm/runtime/virtualspace.cpp > > > > Cheers, > > Severin > >