https://bugs.exim.org/show_bug.cgi?id=2769

            Bug ID: 2769
           Summary: r1315: apple_update_wx_flags() calls unavailable API
                    when compiling to deploy on older macOS
           Product: PCRE
           Version: 10.37 (PCRE2)
          Hardware: x86-64
                OS: All
            Status: NEW
          Severity: bug
          Priority: medium
         Component: Code
          Assignee: philip.ha...@gmail.com
          Reporter: sie...@barebones.com
                CC: pcre-dev@exim.org

I'm building r1315 as a "universal" library (x86_64 + arm64) for deployment on
macOS 10.14 and later.

During build, I get the following compiler warnings:

```
In file included from /Users/siegel/svn/pcre2/src/pcre2_jit_compile.c:79:
In file included from /Users/siegel/svn/pcre2/src/sljit/sljitLir.c:271:
/Users/siegel/svn/pcre2/src/sljit/sljitExecAllocator.c:152:2: warning:
'pthread_jit_write_protect_np' is only available on macOS 11.0 or newer
      [-Wunguarded-availability-new]
        pthread_jit_write_protect_np(enable_exec);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/usr/include/pthread.h:561:6:
note: 
      'pthread_jit_write_protect_np' has been marked as being introduced in
macOS 11.0 here, but the deployment target is macOS 10.14.0
void pthread_jit_write_protect_np(int enabled);
     ^
/Users/siegel/svn/pcre2/src/sljit/sljitExecAllocator.c:152:2: note: enclose
'pthread_jit_write_protect_np' in a __builtin_available check to
      silence this warning
        pthread_jit_write_protect_np(enable_exec);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
```

I haven't tried yet, but I suspect that the JIT compiler will crash when run on
any version of macOS prior to 11.0.

The solution is as described in the warning; you can use a formulation like
this:

```
static SLJIT_INLINE void apple_update_wx_flags(sljit_s32 enable_exec)
{
    if (__builtin_available(macOS 11.0, *)) {
        pthread_jit_write_protect_np(enable_exec);
    }
}
```

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-- 
## List details at https://lists.exim.org/mailman/listinfo/pcre-dev 

Reply via email to