Details
-
Bug
-
Resolution: Fixed
-
P4
-
8
-
None
-
b89
Description
Email from Andrew on build-dev list:
With the new build system, the availability of debugging information in the
JDK build is a complete mess, controlled by different flags from those that
control the HotSpot build.
Even when debugging is asked for, it is only turned on for a small number of
libraries on GNU/Linux. On Windows, this is overridden with no real explanation:
in 7197849: Update new build-infra makefiles.
>From jdk/makefiles/CompileNativeLibraries.gmk:
# Use this variable to set DEBUG_SYMBOLS true on windows for all libraries, but
# not on other platforms.
ifeq ($(OPENJDK_TARGET_OS), windows)
WINDOWS_ONLY := true
endif
and then WINDOWS_ONLY is used as the value for DEBUG_SYMBOLS on most, but not all,
libraries (those that are Mac or GNU/Linux only are missed).
This webrev:
http://cr.openjdk.java.net/~andrew/build/debugging/webrev.01/
cleans up the situation, adding DEBUG_ALL_BINARIES in place of WINDOWS_ONLY and
adding it to all libraries that don't have DEBUG_SYMBOLS set to true. The previous
Windows conditional uses this new symbol in place of WINDOWS_ONLY and the following
is also added:
ifdef OPENJDK
DEBUG_ALL_BINARIES := true
endif
so non-OpenJDK builds will still get the same situation as before, while OpenJDK
builds will get the expected debugging information when it's asked for.
All that's now missing compared with a 7 image is debugging on program binaries which
I'll look at next.
With the new build system, the availability of debugging information in the
JDK build is a complete mess, controlled by different flags from those that
control the HotSpot build.
Even when debugging is asked for, it is only turned on for a small number of
libraries on GNU/Linux. On Windows, this is overridden with no real explanation:
in 7197849: Update new build-infra makefiles.
>From jdk/makefiles/CompileNativeLibraries.gmk:
# Use this variable to set DEBUG_SYMBOLS true on windows for all libraries, but
# not on other platforms.
ifeq ($(OPENJDK_TARGET_OS), windows)
WINDOWS_ONLY := true
endif
and then WINDOWS_ONLY is used as the value for DEBUG_SYMBOLS on most, but not all,
libraries (those that are Mac or GNU/Linux only are missed).
This webrev:
http://cr.openjdk.java.net/~andrew/build/debugging/webrev.01/
cleans up the situation, adding DEBUG_ALL_BINARIES in place of WINDOWS_ONLY and
adding it to all libraries that don't have DEBUG_SYMBOLS set to true. The previous
Windows conditional uses this new symbol in place of WINDOWS_ONLY and the following
is also added:
ifdef OPENJDK
DEBUG_ALL_BINARIES := true
endif
so non-OpenJDK builds will still get the same situation as before, while OpenJDK
builds will get the expected debugging information when it's asked for.
All that's now missing compared with a 7 image is debugging on program binaries which
I'll look at next.