RFR(xs): 8171408: [aix] TOC overflow when linking the gtest libjvm.so

Thomas Stüfe thomas.stuefe at gmail.com
Tue Dec 20 08:30:00 UTC 2016


Hi guys,

updated webrev:
http://cr.openjdk.java.net/~stuefe/webrevs/8171408-aix-TOC-overflow-when-linking-the-gtest-libjvm/webrev.01/webrev/

Only change is that I removed the offending filter-out expression. This
means that gtest modules are compiled with both -qpic followed by
-qpic=large, but the latter should take precedence, so it is ok. Also keeps
the makefile simple.

Kind Regards, Thomas

On Tue, Dec 20, 2016 at 9:21 AM, Thomas Stüfe <thomas.stuefe at gmail.com>
wrote:

> Hi Erik,
>
> On Tue, Dec 20, 2016 at 9:17 AM, Erik Joelsson <erik.joelsson at oracle.com>
> wrote:
>
>> Hello,
>>
>> I understand why you want to filter out the -qpic flag from the general
>> JVM_CFLAGS, but that kind of logic is brittle so we try to avoid it unless
>> absolutely necessary. I prefer to just rely on the tools treating command
>> line options as the last one takes precedence. I assume the AIX compiler
>> behaves that way too and that a -qpic=large will override a -qpic earlier
>> on the command line. We have consciously designed SetupNativeCompilation to
>> add all the *FLAGS in the order of most specific flags last for this reason.
>>
>>
> You are right, and Volker just complained about the same thing :) I'll
> post an updated ref where I just rely on qpic=large following qpic. I was
> not happy with that filter-out expression either.
>
> ..Thomas
>
>
>> So, could you try removing the filtering and see if it still works?
>>
>> /Erik
>>
>>
>>
>> On 2016-12-18 13:50, Thomas Stüfe wrote:
>>
>>> Hi all,
>>>
>>> please take a look at this small fix. In short, on AIX when linking the
>>> gtest version of libjvm.so, the TOC overflows.
>>>
>>> So the gtest libjvm.so must be linked with -bbigtoc, in contrast to the
>>> regular libjvm.so, which has no problems and can keep using a small TOC.
>>>
>>> Also, I compile all gtest objects with -qpic=large. Note that this only
>>> affects the gtest objects. The regular objects - which the gtest
>>> libjvm.so
>>> shares with the regular libjvm.so - I left at -qpic[=small]. This means
>>> we
>>> pay a bit of a performance overhead in the gtest libjvm.so but leave the
>>> regular libjvm.so at its optimal linker settings.
>>>
>>> Issue:
>>> https://bugs.openjdk.java.net/browse/JDK-8171408
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~stuefe/webrevs/8171408-aix-TOC-o
>>> verflow-when-linking-the-gtest-libjvm/webrev.00/
>>>
>>> (Hope the webrev link works, the webserver is still down).
>>>
>>> Kind Regards, Thomas
>>>
>>
>>
>


More information about the hotspot-dev mailing list