RFR: JDK-8200738 Use --hash-style=gnu for gcc
Magnus Ihse Bursie
magnus.ihse.bursie at oracle.com
Mon Jun 15 09:08:39 UTC 2020
On 2020-06-15 07:46, David Holmes wrote:
> Hi Magnus,
>
> On 13/06/2020 1:42 am, Magnus Ihse Bursie wrote:
>> When support for gnu hash tables were added to the gcc toolchains,
>> the OpenJDK build system added a hack to change --hash-style=gnu to
>> --hash-style=both unconditionally, citing compatibility concerns.
>
> Exactly how are these "hash styles" used? What difference does it make
> what style is used? Who raised the compatibility concerns?
It's how the hash table for the dynamic linker is implemented. "sysv" is
the original, old-style hash table, which has several deficits. [1] The
modern gnu-style hash table has been existing in the dynamic linker for
ages. The compatibility concerns were likely raised due to Solaris, or
that this was a new thing back in the days. I have not heard about who
originally claimed there was an issue, but when I wanted to remove it
years ago when we created the new build system, someone said like "eh, I
dunno, I think someone said it needed to be there but he's no longer
with the company, but I'd leave it in place if I were you", or something
along those lines.
/Magnus
[1] https://www.akkadia.org/drepper/dsohowto.pdf
>
> Thanks,
> David
>
>> --hash-style=gnu has a very slight performance advantage over
>> --hash-style=both (very small static footprint reductions, tiny
>> startup cost differences). Both --hash-style=gnu and
>> --hash-style=both have a small to potentially large performance
>> advantage over --hash-style=sysv
>>
>> We should only use --hash-style=gnu. It's been the default in
>> Ubuntu's build of gcc since gcc 4.4[1], and likely similar in other
>> distros.
>>
>> I also removed LIBJSIG_NOEXECSTACK_LDFLAGS which is no longer used.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8200738
>> WebRev:
>> http://cr.openjdk.java.net/~ihse/JDK-8200738-use-hash-style-gnu/webrev.01
>>
>> /Magnus
>>
>> [1] https://launchpad.net/ubuntu/maverick/+source/gcc-4.4/+changelog
>>
More information about the build-dev
mailing list