Hello;

Finally getting back to this issue I have done some cleanup and adjusted the 
hotspot gcc.make files to use VARIANT rather than DEBUG_LEVEL. 

This version also add support for the "-fsanitize=undefined" undefined 
behaviour warnings feature  when it is available (Clang and GCC 4.9). The code 
to emit the option has been added for Clang but I haven't yet added test for 
the option's availability under Clang so currently it will be enabled only for 
GCC.

https://bugs.openjdk.java.net/browse/JDK-8032045
http://cr.openjdk.java.net/~mduigou/JDK-8032045/6/webrev/

Mike

On Mar 11 2014, at 05:47 , Magnus Ihse Bursie <magnus.ihse.bur...@oracle.com> 
wrote:

> On 2014-03-11 00:49, Mike Duigou wrote:
>> I have updated the patch to respond to Magnus's feedback and to accommodate 
>> intervening changes to the configure and hotspot make files.
>> 
>> https://bugs.openjdk.java.net/browse/JDK-8032045
>> http://cr.openjdk.java.net/~mduigou/JDK-8032045/3/webrev/
>> 
>> This version is, hopefully, almost ready to be pushed.
> 
> I have only glanced at the hotspot build changes and can't really say 
> anything about them. The hotspot team still owns these; I'm cc:ing them now.
> 
> The top-level build changes looks fine. Thank you Mike for cleaning things up!
> 
> /Magnus
> 
>> 
>> Mike
>> 
>> On Feb 20 2014, at 15:43 , Mike Duigou <mike.dui...@oracle.com> wrote:
>> 
>>> Hello all;
>>> 
>>> This issue is a followon to JDK-8030350 
>>> (https://bugs.openjdk.java.net/browse/JDK-8030350) which enhanced the 
>>> compiler warnings used for compiling native code. The proposed changes 
>>> principally impact the Linux platform.
>>> 
>>> While 8030350 was focused on compiler warnings which did not impact code 
>>> generation, this changeset will, for some configurations, change the native 
>>> code generated and likely change performance. These proposed option changes 
>>> prevent specific types of relocation table, stack and heap memory 
>>> corruption in native code. Preventing these types of memory corruption may 
>>> be useful for finding certain kinds of bugs though and do provide some 
>>> minimal additional protections against malicious attacks. They aren't, by 
>>> any means, a substitute for following appropriate secure coding guidelines.
>>> 
>>> The rationale behind the implementation is as follows. For release builds 
>>> during the initial phase of JDK 9 I would like to enable only compile time 
>>> checks. This ends up being similar to the warnings in JDK-8030350. These 
>>> options have no runtime impact on footprint or performance and very minimal 
>>> additional compile time cost while providing value. **Release builds are 
>>> not expected to see any performance or footprint change as a result of this 
>>> changeset**
>>> 
>>> For fast debug builds we can enable linker protections (relro) and static 
>>> compile time bounds checks (FORTIFY_SOURCE=1). FORTIFY_SOURCE=1 might be 
>>> moved to the production builds as well because it has no runtime cost or 
>>> executable size cost.
>>> 
>>> For slow debug builds we can enable full linker protection (at a potential 
>>> cost in startup time), runtime bounds checks and stack protection 
>>> (FORTIFY_SOURCE=2 -fprotect-stack-all). We will likely enable 
>>> -fprotect-stack-strong when available in GCC 4.9
>>> 
>>> The basis for enabling the additional protections in debug builds is that 
>>> it will help us find bugs in our native code and we aren't as concerned in 
>>> debug builds with footprint and performance. Since many developers already 
>>> do their personal builds in fastdebug or slowdebug mode for testing this 
>>> will provide good opportunity to shake out any problems with the options 
>>> while not impacting release builds. Should we find that any of the options 
>>> provide significant value for their cost we can move them to fastdebug or 
>>> release. If any of the options prove too costly they can be demoted or 
>>> removed entirely.
>>> 
>>> https://bugs.openjdk.java.net/browse/JDK-8032045
>>> http://cr.openjdk.java.net/~mduigou/JDK-8032045/2/webrev/
>>> 
>>> Additional to enabling the various compiler options I attempted to 
>>> rationalize some of the skew between the various 
>>> hotspot/make/{platform}/makefiles/gcc.make files while avoiding changing 
>>> existing behaviour. I have also introduced the new -Og "optimize for 
>>> debugging" option and there are now an explicit C{XX}_O_FLAG_DEBUG 
>>> definitions to complement the C{XX}_O_FLAG_{DEBUG|NORM|HI|HIGHEST|NONE} 
>>> optimization options.
>>> 
>>> Thanks,
>>> 
>>> Mike
> 

Reply via email to