code review round 0 for Full Debug Symbols on MacOS X hotspot (7165611)

Vadim Pakhnushev vadim.pakhnushev at oracle.com
Mon Sep 30 16:38:20 UTC 2013


On 30.09.2013 20:14, Daniel D. Daugherty wrote:
> On 9/30/13 10:04 AM, Vadim Pakhnushev wrote:
>> Ah, this error is not relevant to your changes at all, this happens 
>> without them,
>
> That would have been good to know up front. You had me looking all
> over the place trying to figure out how I broke this... :-)
>
>
>> Staffan's make error caught my eye.
>
> Staffan was checking out the changes on MacOS X... and I think his
> failure is happening because of the 'missing' closed changes...
>
>
>> So your point is if these files are missing, the make won't run link 
>> again so they are rebuilt, correct?
>
> My point is that make should rerun whatever rule is necessary to
> generate those targets because they are on the target list.
>
> Now you have me curious. In your case, is this a clean build or an
> incremental build?

This happens in clean build as well as incremental.
What I think is happening is that windows targets list doesn't include 
.map and .pdb files.
Now, if I delete .pdb files from build/.../jdk/bin folder, they are 
somehow copied from the build/jdk/objs/... folder.
But they are not rebuilded if deleted from objs folder, exactly because 
there are no targets for them.
So my fix is just a simple workaround, although the same problems can be 
seen with zipped dbg files as well.
That is, if you delete debug files from the objs folder, the build will 
fail.

Thanks,
Vadim

>
> Dan
>
>
>
>>
>> Thanks,
>> Vadim
>>
>> On 30.09.2013 19:44, Daniel D. Daugherty wrote:
>>> That's the correct name. If you drop them from the targets list, then
>>> the make subsystem won't detect that those expected targets aren't
>>> being built... In any case, I'm curious why this is failing on Windows
>>> since I didn't (intentionally) change Windows code here.
>>>
>>> These OpenJDK changes along with the closed changes were run through
>>> JPRT before I went on vacation and I didn't see any failures on any
>>> platform. I'll check out the JPRT job if it is still around.
>>>
>>> I suspect that you're having problems because the closed changes aren't
>>> there, but I'm not sure. I still need to send out the closed side code
>>> review request...
>>>
>>> Dan
>>>
>>>
>>>
>>> On 9/30/13 9:37 AM, Vadim Pakhnushev wrote:
>>>> No, I don't. I'm just excluding them from the targets list (not 
>>>> sure what's the correct name for that).
>>>> Actual files are created using these lines:
>>>>             ifeq ($(ENABLE_DEBUG_SYMBOLS), true)
>>>>                 ifeq ($(OPENJDK_TARGET_OS), windows)
>>>> $1_EXTRA_LDFLAGS+="-pdb:$$($1_OBJECT_DIR)/$$($1_LIBRARY).pdb" \
>>>> "-map:$$($1_OBJECT_DIR)/$$($1_LIBRARY).map"
>>>>                 endif
>>>>
>>>> Thanks,
>>>> Vadim
>>>>
>>>> On 30.09.2013 19:25, Daniel D. Daugherty wrote:
>>>>> On 9/30/13 8:12 AM, Vadim Pakhnushev wrote:
>>>>>> BTW, I have the same issue on windows:
>>>>>> make[2]: *** No rule to make target 
>>>>>> `/cygdrive/c/Vadim/jdk8_2d/build/windows-x86-normal-server-release/jdk/bin/verify.map', 
>>>>>> needed by `all'.  Stop.
>>>>>>
>>>>>> I think it can be fixed by this:
>>>>>>
>>>>>> diff -r d4762f463fe0 common/makefiles/NativeCompilation.gmk
>>>>>> --- a/common/makefiles/NativeCompilation.gmk    Thu Sep 19 
>>>>>> 09:36:42 2013 -0700
>>>>>> +++ b/common/makefiles/NativeCompilation.gmk    Mon Sep 30 
>>>>>> 18:08:57 2013 +0400
>>>>>> @@ -473,10 +473,7 @@
>>>>>>                  && $(ZIP) -q $$@ 
>>>>>> $$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
>>>>>>                      endif
>>>>>>                  else
>>>>>> -                    ifeq ($(OPENJDK_TARGET_OS), windows)
>>>>>> -                        $1 += 
>>>>>> $$($1_OUTPUT_DIR)/$$($1_LIBRARY).map \
>>>>>> -                  $$($1_OUTPUT_DIR)/$$($1_LIBRARY).pdb
>>>>>> -                    else
>>>>>> +                    ifneq ($(OPENJDK_TARGET_OS), windows)
>>>>>>                          $1 += 
>>>>>> $$($1_OUTPUT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo
>>>>>>                      endif
>>>>>>                  endif
>>>>>>
>>>>>>
>>>>>> Does that look ok?
>>>>>
>>>>> No, that's not right. You are dropping support for .map and .pdb
>>>>> files with the above change.
>>>>>
>>>>> Dan
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> Thanks,
>>>>>> Vadim
>>>>>>
>>>>>> On 30.09.2013 17:44, Daniel D. Daugherty wrote:
>>>>>>> On 9/30/13 7:13 AM, Staffan Larsen wrote:
>>>>>>>> First: thanks for doing this work - it will make debugging on 
>>>>>>>> os x so much easier!
>>>>>>>
>>>>>>> That's the plan...
>>>>>>>
>>>>>>>
>>>>>>>> I'm not done with the review, but here are a couple of comments 
>>>>>>>> so far.
>>>>>>>>
>>>>>>>> I tried running with:
>>>>>>>>
>>>>>>>> $ sh ./configure --with-debug-level=slowdebug 
>>>>>>>> --disable-zip-debug-info
>>>>>>>> $ make
>>>>>>>>
>>>>>>>> which results in:
>>>>>>>>
>>>>>>>> ## Starting hotspot
>>>>>>>> ...
>>>>>>>> make[5]: *** No rule to make target 
>>>>>>>> `/Users/staffan/mercurial/hotspot-rt-jdk/build/macosx-x86_64-normal-server-slowdebug/hotspot/dist/jre/lib/amd64/libjsig.dylib.dSYM', 
>>>>>>>> needed by `generic_export'.  Stop.
>>>>>>>> make[4]: *** [export_debug] Error 2
>>>>>>>> make[3]: *** [all_debug_universal] Error 2
>>>>>>>> make[2]: *** [universal_debug] Error 2
>>>>>>>> ...
>>>>>>>
>>>>>>> I'm presuming that you're trying with a forest that includes
>>>>>>> closed repos. If so, then you'll need the jdk/make/closed change
>>>>>>> in order for the build to work.
>>>>>>>
>>>>>>>
>>>>>>>> Another comment: There are some makefile logic for BSD, 
>>>>>>>> non-darwin platforms. Have you had a chance to test this logic? 
>>>>>>>> (hotspot/make/bsd/makefiles/vm.make)
>>>>>>>
>>>>>>> No, I don't have access to a BSD (non-darwin) platform. However, 
>>>>>>> I'll
>>>>>>> be pinging Dmitri Samersoff to ask a few questions...
>>>>>>>
>>>>>>>
>>>>>>>> Nit: hotspot/make/bsd/makefiles/vm.make: L345, L356: wrong 
>>>>>>>> indentation.
>>>>>>>
>>>>>>> These are make cmd lines:
>>>>>>>
>>>>>>>  344   else
>>>>>>>  345         $(QUIETLY) $(OBJCOPY) --only-keep-debug $@ 
>>>>>>> $(LIBJVM_DEBUGINFO)
>>>>>>>  346         $(QUIETLY) $(OBJCOPY) 
>>>>>>> --add-gnu-debuglink=$(LIBJVM_DEBUGINFO) $@
>>>>>>>  347     ifeq ($(STRIP_POLICY),all_strip)
>>>>>>>
>>>>>>> so they have to be indented by a tab. Very ugly, but necessary.
>>>>>>>
>>>>>>> Dan
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> /Staffan
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On 21 sep 2013, at 05:36, Daniel D. Daugherty 
>>>>>>>> <daniel.daugherty at oracle.com> 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
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>




More information about the build-dev mailing list