On 3/10/2013 1:32 AM, Daniel D. Daugherty wrote:
David,
Thanks for the thorough review (as always)!
It will take me a while to process all the comments, but another
reply will be forthcoming.
Don't bother with the minimal VM build attempt, you won't even get
started. The files don't exist for BSD.
David
Dan
On 10/1/13 8:52 PM, David Holmes wrote:
Hi Dan,
Overall thumbs up. A couple of minor issues that need fixing. A few
meta-comments (I hate seeing all this stuff duplicated again and again.
David
-----
- common/autoconf/hotspot-spec.gmk.in
Seems a good simplification.
----
- common/autoconf/jdk-options.m4
No comment.
---
- common/makefiles/NativeCompilation.gmk
So JDK .diz support is phase 2? :)
The Windows changes here seem okay given that on windows a .debuginfo
file should never be in the target list.
---
- hotspot/make/Makefile
+ $(EXPORT_CLIENT_DIR)/%.dSYM: $(MINIMAL1_BUILD_DIR)/%.dSYM
EXPORT_CLIENT_DIR should be EXPORT_MINIMAL_DIR.
For fun you can try building minimal on OSX, but I don't know how far
you will get:
--with-jvm-variants=client,server,minimal1
I'll point out obvious issues with minimal VM support anyway.
---
- hotspot/make/bsd/Makefile
No comment.
- hotspot/make/bsd/makefiles/buildtree.make
No comment.
- make/bsd/makefiles/defs.make
Note that the whole jdk6_or_earlier logic is defunct as this will
never be used for jdk6 or earlier. But best to clean all that up at
the one time.
Sadly I never found a satisfactory solution to the multiplicity and
verbosity of the FDS messages, so OSX builds will now be afflicted by
them too.
328 else
329 EXPORT_LIST += $(EXPORT_MINIMAL_DIR)/libjvm.debuginfo
330 endif
This pre-existing minimal VM code needs to be modified to reference
the dSYM directory on OSX as per the client/server cases.
---
- hotspot/make/bsd/makefiles/dtrace.make
Note related to your changes but I don't think any of the "64"
directory stuff has any meaning outside of Solaris.
102 dsymutil $@
I think dsymutil should be assigned to a variable in the platform
defs.make as with other tools.
Would be nice if objcopy/dsymutil could be hidden behind a single
SYM_TOOL variables as well so there wasn't so much duplication of the
process. You could have a single set of instructions to invoke
SYM_TOOL, STRIP and ZIP (strip would be skipped of course because
STRIP_POLICY would never be set on osx). Just wishful thinking ...
---
- hotspot/make/bsd/makefiles/gcc.make
+ FASTDEBUG_CFLAGS += $(DEBUG_CFLAGS/$(BUILDARCH))
should be
+ FASTDEBUG_CFLAGS += $(FASTDEBUG_CFLAGS/$(BUILDARCH))
Don't we need the USE_CLANG variations here as for linux?
---
- hotspot/make/bsd/makefiles/jsig.make
- hotspot/make/bsd/makefiles/saproc.make
Similar comments to dtrace.make
---
- make/bsd/makefiles/universal.gmk
I did not understand the additional logic here:
63 # Copy built non-universal binaries in place
64 $(UNIVERSAL_COPY_LIST):
65 BUILT_COPY_FILES="`find
$(EXPORT_JRE_LIB_DIR)/{i386,amd64}/$(subst $(EXPORT_JRE_LIB_DIR)/,,$@)
2>/dev/null`"; \
66 if [ -n "$${BUILT_COPY_FILES}" ]; then \
67 for i in $${BUILT_COPY_FILES}; do \
68 if [ -f $${i} ]; then \
69 $(MKDIR) -p $(shell dirname $@); \
70 $(CP) -R $${i} $@; \
71 fi; \
72 if [ -d $${i} ]; then \
73 $(MKDIR) -p $@; \
74 fi; \
75 done; \
76 fi
until I realized that foo.dSYM is a directory not a file! Even so
don't you want to copy the contents of the directory across ?
BTW: UNIVERSAL_COPY_LIST doesn't handle minimal VM.
---
- make/bsd/makefiles/vm.make
Similar comments to dtrace.make ref dsymutil.
---
- hotspot/make/defs.make
No comment.
---
- jdk/make/common/Defs-macosx.gmk
No comment
- jdk/makefiles/Tools.gmk
Not sure about this one. Logically is seems correct but up to now this
has been defined for everything without it seeming to cause a problem.
So why do we need to change it and what impact will it have?
David
-----
On 21/09/2013 1:36 PM, Daniel D. Daugherty wrote:
Greetings,
I have the initial support for Full Debug Symbols (FDS) on MacOS X done
and ready for review:
7165611 implement Full Debug Symbols on MacOS X hotspot
https://bugs.openjdk.java.net/browse/JDK-7165611
Here is the JDK8/HSX-25 webrev URL:
OpenJDK:
http://cr.openjdk.java.net/~dcubed/fds_revamp/7165611-webrev/0-jdk8/
Internal:
http://javaweb.us.oracle.com/~ddaugher/fds_revamp/7165611-webrev/0-jdk8/
This webrev includes changes for the follow repos:
jdk8
jdk8/hotspot
jdk8/jdk
jdk8/jdk/make/closed
Once these changes are approved, I'm planning to push them to
RT_Baseline. From there, they can follow the normal path to
Main_Baseline and eventually JDK8.
This work enables FDS on MacOS X for the 'hotspot' repo; the changes in
the other repos are necessary to support importing the .diz files from
the MacOS X 'hotspot' build into the forest build. I also fixed a few
FDS related errors in the magic incantations for the new build. This is
mostly a port from Linux -> MacOS X/BSD with the dtrace changes ported
from Solaris. In other words, this is Frankenstein's monster...
Thanks to Staffan Larsen for providing an initial set of changes
which I morphed into what you see here.
Testing:
- JPRT HSX build and test on all platforms; verification of .diz
files in the MacOS X JPRT bundles
- JPRT JDK8 forest build and test on all platforms; verification of
.diz files in the MacOS X JPRT bundles
Note: In previous FDS changesets, I also did a standalone 'jdk'
repo build and test, but that no longer seems to work.
As always, comments, questions and suggestions are welcome.
Dan