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.

David

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