RFR: JDK-8329257: AIX: Switch HOTSPOT_TOOLCHAIN_TYPE from xlc to gcc
Joachim Kern
jkern at openjdk.org
Tue Apr 2 10:28:59 UTC 2024
On Fri, 29 Mar 2024 07:21:43 GMT, Thomas Stuefe <stuefe at openjdk.org> wrote:
>> As of [JDK-8325880](https://bugs.openjdk.org/browse/JDK-8325880), building the JDK requires version 17 of IBM Open XL C/C++ (xlc). This is in effect clang by another name, and it uses the clang toolchain in the JDK build. Thus the old xlc toolchain was removed by [JDK-8327701](https://bugs.openjdk.org/browse/JDK-8327701).
>> Now we also switch the HOTSPOT_TOOLCHAIN_TYPE from xlc to gcc, removing the last xlc rudiment.
>> This means merging the AIX specific content of utilities/globalDefinitions_xlc.hpp and utilities/compilerWarnings_xlc.hpp into the corresponding gcc files on the on side and removing the defined(TARGET_COMPILER_xlc) blocks in the code, because the defined(TARGET_COMPILER_gcc) blocks work out of the box for the new AIX compiler.
>> The rest of the changes are needed because of using utilities/compilerWarnings_gcc.hpp the compiler is much more nagging about ill formatted printf
>
> src/hotspot/os/aix/os_aix.cpp line 314:
>
>> 312: ErrnoPreserver ep;
>> 313: log_trace(os, map)("disclaim failed: " RANGEFMT " errno=(%s)",
>> 314: RANGEFMTARGS(p, (long)maxDisclaimSize),
>
> Wait, why are these casts needed? maxDisclaimSize is size_t, RANGEFMT uses SIZE_FORMAT. That should work without cast.
Hi Thomas, `maxDisclaimSize` is of type `unsigned int`; therefore I get the following warning:
os/aix/os_aix.cpp:314:42: error: format specifies type 'unsigned long' but the argument has type 'unsigned int' [-Werror,-Wformat]
RANGEFMTARGS(p, maxDisclaimSize),
^~~~~~~~~~~~~~~
Should I keep the casts, or change the type of `maxDisclaimSize, numFullDisclaimsNeeded, lastDisclaimSize` to `const unsigned long`?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/18536#discussion_r1547578012
More information about the build-dev
mailing list