Review Request: 8008451: Make mac builds on 10.8 work on 10.7

Kelly O'Hair kelly.ohair at oracle.com
Wed Feb 20 08:01:34 PST 2013


Looks good to me.

And thank you for doing the verification.

-kto

On Feb 20, 2013, at 6:52 AM, Erik Joelsson wrote:

> I was wrong, just setting the macros below did not generate 10.7 compatible bits when built on 10.8. Since I already pushed the old solution (except for hotspot), I created a new bug. Here is a new set of patches, combining -DMAC_OS_X_VERSION_MAX_ALLOWED=1070 and -mmacosx-version-min=10.7.0 and also setting the latter on the link command line. This combination both generates compatible binaries and treats newer API calls as errors, all verified.
> 
> Sine the two parameters take their argument in different formats, the handling of defaults is a bit more complicated. The variable being sent around and that you can override on the command line is now MACOSX_VERSION_MIN=10.7.0, matching the parameter to the compiler/linker.
> 
> It would be good if someone from hotspot could review the hotspot changes.
> 
> http://cr.openjdk.java.net/~erikj/8008451/webrev.hotspot.01/
> http://cr.openjdk.java.net/~erikj/8008451/webrev.root.01/
> http://cr.openjdk.java.net/~erikj/8008451/webrev.jdk.01/
> 
> /Erik
> 
> On 2013-02-15 10:49, Erik Joelsson wrote:
>> 
>> 
>> On 2013-02-15 09:43, Erik Joelsson wrote:
>>> 
>>> On 2013-02-14 18:04, David DeHaven wrote:
>>>>> Here are a series of patches that adds the following to all native compile lines on macosx:
>>>>> 
>>>>> -DMAC_OS_X_VERSION_MAX_ALLOWED=1070 -DMAC_OS_X_VERSION_MIN_REQUIRED=1070
>>>> I know I'm not a reviewer, but I have an opinion anyways :)
>>>> 
>>>> Using "-mmacosx-version-min=10.7" seems more appropriate for the latter, this is passed to the linker as well which I believe sets version information in the Mach-O headers (in the form of a load command) to prevent it from being loaded on older systems. The MIN_REQUIRED macro is set to a value that matches what's passed to the -mmacosx-version-min argument, so it doesn't need to be provided.
>>>> 
>>>> 
>>> The effect of the -mmacosx-version-min=10.7 when sent to the linker is to make any calls to newer APIs "softlinked". This means the library will still load fine on the older OS, but the application is responsible for only actually making the newer calls if they are available. This is a good feature if you knowingly want to support multiple versions of the OS and still use features in the newer OS when available. I do not believe we have the need for that and if we ever do, then these parameters will need to change.
>>> 
>> It's true -mmacosx-version-min= also sets the macro MAC_OS_X_VERSION_MIN_REQUIRED=, but I see no gain in changing just one of them to something else just because it works. The format of the parameter is also different (10.7 vs 1070) which would require us to add logic for converting between the two.
>> 
>> /Erik



More information about the hotspot-runtime-dev mailing list