Hi there,

On macOS Sierra (v10.12) and iOS 10, the function clock_gettime has been 
introduced in the Darwin kernel. When building libcurl on macOS 10.12 with 
Xcode 8 and iOS10 SDK, the configure script will return yes for "monotonic 
clock_gettime" (around Line 20434 of configure).

However, when using libcurl in an application on an earlier version of iOS, 
this will cause a run time crash due to a missing symbol for clock_gettime.

No crash occurs on an iPhone 6 running iOS10, but on an iPad running iOS9.3.5, 
a crash occurs due to a missing symbol for clock_gettime.

OS: macOS Sierra (v10.12). Darwin kernel version 16.0.0
Libcurl version build: v7.49.1
Building libcurl for iOS 9.0 with Xcode 8 GM seed.

Configure output with Xcode 8 (on macOS 10.12)
==========
configure:20433: checking for monotonic clock_gettime
configure:20466: 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
 -c -isysroot 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/
 -miphoneos-version-min=9.0 -arch armv7 -mthumb -DNDEBUG -isystem 
/Volumes/local/JenkinsSlave/trunk/dependencies/openssl/include 
-Qunused-arguments -Os  conftest.c >&5
configure:20466: $? = 0
configure:20468: result: yes
==========

Configure output with Xcode 7 (on OSX 10.11)
==========
configure:20466: 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
 -c -isysroot 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/
 -miphoneos-version-min=9.0 -arch armv7 -mthumb -isystem 
/Volumes/local/JenkinsSlave/trunk/dependencies/openssl/include 
-Qunused-arguments -Os  conftest.c >&5
conftest.c:72:15: warning: implicit declaration of function 'clock_gettime' is 
invalid in C99 [-Wimplicit-function-declaration]
        (void)clock_gettime(CLOCK_MONOTONIC, &ts);
              ^
conftest.c:72:29: error: use of undeclared identifier 'CLOCK_MONOTONIC'
        (void)clock_gettime(CLOCK_MONOTONIC, &ts);
                            ^
1 warning and 1 error generated.
configure:20466: $? = 1
=========

I changed "curl_func_clock_gettime" to "no" in configure as a quick workaround 
and the libcurl binary didn't cause any issues in either iOS9 or iOS10.

Although not tested yet, I believe the same issue would occur when building 
libcurl on macOS 10.12 and using that binary on OSX 10.11 or lower.

Best,
Peter
-------------------------------------------------------------------
List admin: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:  https://curl.haxx.se/mail/etiquette.html

Reply via email to