mirror of
https://github.com/ziglang/zig.git
synced 2025-12-12 17:23:09 +00:00
Prior to this change we would assume the ABI for Apple targets to be GNU which could result in subtle errors in LLVM emitting calls to non-existent system libc provided functions such as `_sincosf` which is a GNU extension and as such is not provided by macOS for example. This would result in linker errors where the linker would not be able to find the said symbol in `libSystem.tbd`. With this change, we now correctly identify macOS (and other Apple platforms) as having ABI `unknown` which translates to unspecified in LLVM under-the-hood: ``` // main.ll target triple = "aarch64-unknown-macos-unknown" ``` Note however that we never suffix the target OS with target version such as `macos11` or `macos12` which means we fail to instruct LLVM of potential optimisations provided by the OS such as the availability of function `___sincosf_stret`. I suggest we investigate that in a follow-up commit.
75 lines
1.9 KiB
C
Vendored
75 lines
1.9 KiB
C
Vendored
/*
|
|
* Copyright (c) 2008-2013 Apple Inc. All rights reserved.
|
|
*
|
|
* @APPLE_APACHE_LICENSE_HEADER_START@
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
* @APPLE_APACHE_LICENSE_HEADER_END@
|
|
*/
|
|
|
|
#ifndef __DISPATCH_PUBLIC__
|
|
#define __DISPATCH_PUBLIC__
|
|
|
|
#ifdef __APPLE__
|
|
#include <Availability.h>
|
|
#include <os/availability.h>
|
|
#include <TargetConditionals.h>
|
|
#include <os/base.h>
|
|
#elif defined(_WIN32)
|
|
#include <os/generic_win_base.h>
|
|
#elif defined(__unix__)
|
|
#include <os/generic_unix_base.h>
|
|
#endif
|
|
|
|
#include <sys/types.h>
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
#include <stdarg.h>
|
|
#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
|
|
#include <unistd.h>
|
|
#endif
|
|
#include <fcntl.h>
|
|
|
|
#if (defined(__linux__) || defined(__FreeBSD__)) && defined(__has_feature)
|
|
#if __has_feature(modules)
|
|
#if !defined(__arm__)
|
|
#include <stdio.h> // for off_t (to match Glibc.modulemap)
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#define DISPATCH_API_VERSION 20181008
|
|
|
|
#ifndef __DISPATCH_INDIRECT__
|
|
#define __DISPATCH_INDIRECT__
|
|
#endif
|
|
|
|
#include <os/object.h>
|
|
#include <dispatch/base.h>
|
|
#include <dispatch/time.h>
|
|
#include <dispatch/object.h>
|
|
#include <dispatch/queue.h>
|
|
#include <dispatch/block.h>
|
|
#include <dispatch/source.h>
|
|
#include <dispatch/group.h>
|
|
#include <dispatch/semaphore.h>
|
|
#include <dispatch/once.h>
|
|
#include <dispatch/data.h>
|
|
#include <dispatch/io.h>
|
|
#include <dispatch/workloop.h>
|
|
|
|
#undef __DISPATCH_INDIRECT__
|
|
|
|
#endif |