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