RFR(M): 8187045: [linux] Not all libraries in the VM are linked with -z,noexecstack

David Holmes david.holmes at oracle.com
Tue Sep 26 03:28:34 UTC 2017

Hi Goetz,

I'll sponsor this for you.


On 22/09/2017 11:00 PM, Lindenmaier, Goetz wrote:
> Hi,
> I updated my webrev to the directory structure:
> http://cr.openjdk.java.net/~goetz/wr17/8187045-execstackLink/webrev.02/
> I also ran it through our tests again.
> Could someone please sponsor this change?
> Thanks,
>    Goetz.
>> -----Original Message-----
>> From: Lindenmaier, Goetz
>> Sent: Dienstag, 5. September 2017 10:05
>> To: David Holmes <david.holmes at oracle.com>; hotspot-runtime-
>> dev at openjdk.java.net; build-dev <build-dev at openjdk.java.net>
>> Subject: RE: RFR(M): 8187045: [linux] Not all libraries in the VM are linked
>> with -z,noexecstack
>> Hi David,
>> thanks for looking at my change!
>>> Hi Goetz,
>>> On 1/09/2017 11:05 PM, Lindenmaier, Goetz wrote:
>>>> Hi,
>>>> I found that not all libraries are linked with -z,noexecstack.
>>>> This lead to errors with our linuxppc64 build.  The linker omitted
>>>> the flag altogether, which is interpreted as a lib with execstack.
>>>> This change contains a small test that scans all libraries in the tested VM
>>>> to have the noexecstack flag set. It utilizes the elf parser in the VM for
>> this.
>>>> Further -z,noexecstack is now passed to all libraries.
>>>> Please review this change. I please need a sponsor.
>>>> http://cr.openjdk.java.net/~goetz/wr17/8187045-
>>> execstackLink/webrev.01/
>>> So IIUC presently we only set noexecstack for gcc on linux when building
>>> libjvm - via the JVM_LDFLAGS settings.
>> Yes.
>>> With this change we also set it for building JDK libraries via the
>>> LDFLAGS_JDKLIB setting. But this seems to be unconditional, not limited
>>> to gcc and linux ??
>> LDFLAGS_NO_EXEC_STACK="-Wl,-z,noexecstack" is only assigned on linux,
>> on other platforms its empty.
>>> In addition we want to build libjsig with noexecstack, and we do that by
>>> exposing LDFLAGS_NO_EXEC_STACK in spec.gmk, and using it in
>>> CompileLibjsig.gmk. I don't have an issue with the use of noexecstack
>>> but I think it could just have been hard-wired for linux just as the
>>> bulk of the flags set in that file are. Granted you copied what is done
>>> for LDFLAGS_HASH_STYLE - but in that case I'm assuming it is important
>>> that the same hash style be used throughout. Anyway minor stylistic nit
>>> which may be moot soon as once we have the consolidated repo I think
>>> libjsig could be handled the same as others libs?
>> I had hoped to find a location where flags that should be used in all linking
>> steps are assembled.  Noexecstack should really be set in any lib we build.
>> But I didn't find that, so I implemented it as with the HASH_STYLE. I don't
>> really like it this way because if a new lib is added it might be forgotten
>> to add the noexecstack.
>> But I assume after the repo consolidation the build will be reshaped,
>> so now is not the right time to seek for optimal setups.
>> Best regards,
>>    Goetz.
>>>   >
>>> http://cr.openjdk.java.net/~goetz/wr17/8187045-
>> execstackLink/webrev.01-
>>> hs/
>>> Test changes look okay to me.
>>> Thanks,
>>> David
>>>> Best regards,
>>>>     Goetz.

More information about the hotspot-runtime-dev mailing list