Problem generating C header file for Hotspot debugger PPC64ThreadContext class
Volker Simonis
volker.simonis at gmail.com
Fri Aug 8 14:59:06 UTC 2014
Hy Maynard,
sorry, but I think you edited the wrong Make file (that's why you saw
no effect - neither positive nor negative:)
The right Makefile is "hotspot/make/linux/makefiles/sa.make". If you
add your new Thread context class to the 'javah' rules at the end of
the file it should work.
I actually don't know why "hotspot/agent/src/os/linux/Makefile" is
still there. Maybe it can (or could) be used to build the sa-agent
standalone? Perhaps somebody from the serviceability list can tell if
this Make file couldn't (or even shouldn't) be removed to prevent
confusion.
Regards,
Volker
On Thu, Aug 7, 2014 at 3:43 PM, Maynard Johnson <maynardj at us.ibm.com> wrote:
> Hi, all,
> I've begun adding ppc64 support for the serviceability tools that take a java core file as input (jmap, jstack). See my original July 3 posting to ppc-aix-port-dev (subject "PowerPC: core file option not available with serviceability tools") for reference. I've created a number of new ppc64-specific Java classes within sun.jvm.hotspot.debugger.*, but am now running into a build issue that I've not been able to resolve. The build error is as follows:
>
> ---------------
> Compiling /home/mpj/jdk9-dev/hotspot/src/share/vm/runtime/vm_version.cpp
> Making SA debugger back-end...
> /home/mpj/jdk9-dev/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c:53:63: fatal error: sun_jvm_hotspot_debugger_ppc64_PPC64ThreadContext.h: No such file or directory
> #include "sun_jvm_hotspot_debugger_ppc64_PPC64ThreadContext.h"
> ^
> compilation terminated.
> ---------------
>
> The crux of the problem is that this missing header file is not being generated earlier in the build, when the other arch-specific ThreadContext headers (X86, AMD64, and SPARC) are built. These headers are generated into build/linux-ppc64-normal-server-release/hotspot/linux_ppc64_compiler2/generated.
>
> I had found hotspot/agent/src/os/linux/Makefile where there's a target defined to use 'javah' for generating header files from the *ThreadContext classes (the target is "$(ARCH)/LinuxDebuggerLocal.o:"). I added my PPC64ThreadContext class to that target, but that had no effect. In fact, hacking that Makefile to remove other arch-specific ThreadContext classes from that target had no effect either -- i.e., a 'make clean' and 'rm -rf build' followed by './configure' and 'make all' still manages to generate the header files for the three existing arch-specific ThreadContext classes. So my question is how do those header files get generated? What file do I need to edit to add PPC64ThreadContext into the mix?
>
> Thanks.
> -Maynard
>
More information about the serviceability-dev
mailing list