RFR (M): 8036767 PPC64: Support for little endian execution model
David Holmes
david.holmes at oracle.com
Sat Mar 22 00:08:32 UTC 2014
On 22/03/2014 12:40 AM, Lindenmaier, Goetz wrote:
> Hi David,
>
> yes, it's the hotspot only build.
>
> But that's no good If I have to set something that can be
> easily derived from information already available!
>
> I at least would add another $(shell uname -m) test
> in the condition in the ppc64.make file.
It is your file but personally I think this is moving in the wrong
direction. We should move away from a build process where we perform
hotspot builds outside of a configure-based build setup (easily done,
just use target hotspot-only). Otherwise we continue to duplicate logic
in the configure files and then in the hotspot makefiles.
David
-----
> ifeq (,$(filter $(OPENJDK_TARGET_CPU_ENDIAN),big little))
> OPENJDK_TARGET_CPU_ENDIAN=big
> ifeq($(shell uname -m), ppc64le)
> OPENJDK_TARGET_CPU_ENDIAN =little
> endif
> endif
>
> Also, I don't see how defs.make deals with the outcome ppc64le of uname.
> Sasha, is there missing something from your change?
> If there needs to be a section
> # PPC64le
> ifeq ($(ARCH), ppc64le)
> ARCH_DATA_MODEL = 64
> MAKE_ARGS += LP64=1
> PLATFORM = linux-ppc64
> VM_PLATFORM = linux_ppc64
> HS_ARCH = ppc
> endif
> setting OPENJDK_TARGET_CPU_ENDIAN should be added there I think.
>
> Best regards,
> Goetz
>
> -----Original Message-----
> From: David Holmes [mailto:david.holmes at oracle.com]
> Sent: Friday, March 21, 2014 12:08 PM
> To: Lindenmaier, Goetz; 'Alexander Smundak'
> Cc: 'build-dev'; 'HotSpot Open Source Developers'
> Subject: Re: RFR (M): 8036767 PPC64: Support for little endian execution model
>
> On 21/03/2014 7:06 PM, Lindenmaier, Goetz wrote:
>> Hi Sasha,
>>
>> I tried to test your change (02), but it does not work.
>> On linux ppc be;) I get
>>
>> make[4]: Leaving directory `/net/usr.work/d045726/oJ/builds/8036767-comp-ld9502-dbg/linux_ppc64_compiler2/debug'
>> make[4]: Entering directory `/net/usr.work/d045726/oJ/builds/8036767-comp-ld9502-dbg/linux_ppc64_compiler2/debug'
>> /sapmnt/home1/d045726/oJ/8036767-hs-comp/make/linux/makefiles/ppc64.make:30: *** OPENJDK_TARGET_CPU_ENDIAN has not been passed to this makefile. Stop.
>>
>> which is just what you discussed with David.
>
> Was that a full configure build or a hotspot-only build? For
> hotspot-only you would need to set this explicitly.
>
> David
>
>
>> On Aix I get
>> "/sapmnt/home1/d045726/oJ/8036767-aix-hs-comp/src/cpu/ppc/vm/bytes_ppc.hpp", line 277.10: 1540-0836 (S) The #include file "bytes_linux_ppc.inline.hpp" is not found.
>>
>> I think we fixed this before, you need to add
>> #ifdef TARGET_OS_ARCH_linux_ppc
>> around the include.
>>
>> Also, you need to fix os_linux.cpp: remove
>> + #if defined(PPC64)
>> else other platforms will not build (linux x86_64):
>> /sapmnt/home/d045726/oJ/8036767-hs-comp/src/os/linux/vm/os_linux.cpp:1972: error: ‘PPC64_ELFDATA2XSB’ was not declared in this scope
>>
>> Thanks for undoing the change in make/linux/Makefile!
>>
>> Best regards,
>> Goetz.
>>
>>
>> -----Original Message-----
>> From: hotspot-dev [mailto:hotspot-dev-bounces at openjdk.java.net] On Behalf Of Alexander Smundak
>> Sent: Friday, March 21, 2014 7:15 AM
>> To: David Holmes
>> Cc: build-dev; HotSpot Open Source Developers
>> Subject: Re: RFR (M): 8036767 PPC64: Support for little endian execution model
>>
>> Revised the patch to use OPENJDK_TARGET_CPU_ENDIAN instead. The new
>> version is at:
>> http://cr.openjdk.java.net/~martin/asmundak/8036767/hotspot/webrev.02
>>
>> On Thu, Mar 20, 2014 at 8:57 PM, David Holmes <david.holmes at oracle.com> wrote:
>>> On 21/03/2014 1:42 PM, Alexander Smundak wrote:
>>>>
>>>> On Thu, Mar 20, 2014 at 7:39 PM, David Holmes <david.holmes at oracle.com>
>>>> wrote:
>>>>>
>>>>> The build changes look much cleaner to me - thanks.
>>>>
>>>> It's at the expense of platform directory being ppc64/ instead of the
>>>> conventional ppc64le/, and having rather ugly check in the ppc64.make
>>>> file.
>>>>
>>>>
>>>>> Why are you not using OPENJDK_TARGET_CPU_ENDIAN directly? Ah! Because it
>>>>> doesn't reach down into the <arch>.make files. ZERO_ENDIANNESS does but
>>>>> seems inappropriate if this is not Zero specific. (I'm also not seeing
>>>>> how
>>>>> ZERO_ENDIANNESS reaches down that far either ??).
>>>>
>>>> configure script writes hotspot-spec.gmk file to the top-level build
>>>> directory,
>>>> and it contains
>>>> ZERO_ENDIANNESS=$(OPENJDK_TARGET_CPU_ENDIAN)
>>>
>>>
>>> Yes but my query was how does ZERO_ENDIANNESS become visible in ppc64.make?
>>> The answer to which is that the generated flags.make file has an explicit
>>> include of hotspot-spec.gmk. In which case you don't need to use
>>> ZERO_ENDIANNESS you can just use $(OPENJDK_TARGET_CPU_ENDIAN) directly.
>>> (Which now begs the question as to why ZERO_ENDIANNESS even exists - perhaps
>>> it predates the integration with the new build.)
>>>
>>> David
>>> -----
>>>
>>>
>>>> The patch contains the fuse in ppc64.make, the build will fail unless
>>>> ZERO_ENDIANNESS is set.
>>>>
>>>>>> jdk: http://cr.openjdk.java.net/~martin/asmundak/8036767/jdk/webrev.01
>>>>>
>>>>>
>>>>>
>>>>> This change:
>>>>>
>>>>> - LDFLAGS_SUFFIX := $(ALSA_LIBS) -ljava -ljvm, \
>>>>> + LDFLAGS_SUFFIX := $(ALSA_LIBS) $(LIBDL) $(LIBM) -lpthread -ljava
>>>>> -ljvm, \
>>>>>
>>>>> seems unrelated to endianness. Why is it needed, and why is it being
>>>>> applied
>>>>> to all platforms?
>>>>
>>>> Sorry, this is not needed, it's the problem with the toolchain I am using.
>>>>
>>>> Please ignore this patch.
>>>>
>>>
More information about the build-dev
mailing list