Skip to content

Commit 50fec42

Browse files
committed
Limit macOS $INODE64 symbol names to x86 and x86_64
The new ARM-based platform doesn't need these as there's no legacy constraints. Tested via **demo.c** ```c int main() { fstat(0, NULL); fstatat(0, NULL, NULL, 0); lstat(NULL, NULL); stat(NULL, NULL); readdir(NULL); readdir_r(NULL, NULL, NULL); } ``` **Compilation** ```none % SDKROOT=/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk MACOSX_DEPLOYMENT_TARGET=11.5 cc -arch arm64 demo.c % nm a.out 0000000100008030 d __dyld_private 0000000100000000 T __mh_execute_header U _fstat U _fstatat U _lstat 0000000100003e64 T _main U _readdir U _readdir_r U _stat U dyld_stub_binder ``` This has also been experimentally compiled on a Developer Transition Kit.
1 parent 62ccff6 commit 50fec42

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

src/unix/mod.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -685,7 +685,7 @@ extern "C" {
685685
)]
686686
pub fn fchmod(fd: ::c_int, mode: mode_t) -> ::c_int;
687687

688-
#[cfg_attr(target_os = "macos", link_name = "fstat$INODE64")]
688+
#[cfg_attr(all(target_os = "macos", not(target_arch = "aarch64")), link_name = "fstat$INODE64")]
689689
#[cfg_attr(target_os = "netbsd", link_name = "__fstat50")]
690690
#[cfg_attr(
691691
all(target_os = "freebsd", any(freebsd11, freebsd10)),
@@ -695,7 +695,7 @@ extern "C" {
695695

696696
pub fn mkdir(path: *const c_char, mode: mode_t) -> ::c_int;
697697

698-
#[cfg_attr(target_os = "macos", link_name = "stat$INODE64")]
698+
#[cfg_attr(all(target_os = "macos", not(target_arch = "aarch64")), link_name = "stat$INODE64")]
699699
#[cfg_attr(target_os = "netbsd", link_name = "__stat50")]
700700
#[cfg_attr(
701701
all(target_os = "freebsd", any(freebsd11, freebsd10)),
@@ -738,7 +738,7 @@ extern "C" {
738738
#[cfg_attr(target_os = "netbsd", link_name = "__opendir30")]
739739
pub fn opendir(dirname: *const c_char) -> *mut ::DIR;
740740

741-
#[cfg_attr(target_os = "macos", link_name = "readdir$INODE64")]
741+
#[cfg_attr(all(target_os = "macos", not(target_arch = "aarch64")), link_name = "readdir$INODE64")]
742742
#[cfg_attr(target_os = "netbsd", link_name = "__readdir30")]
743743
#[cfg_attr(
744744
all(target_os = "freebsd", any(freebsd11, freebsd10)),
@@ -774,7 +774,7 @@ extern "C" {
774774
group: ::gid_t,
775775
flags: ::c_int,
776776
) -> ::c_int;
777-
#[cfg_attr(target_os = "macos", link_name = "fstatat$INODE64")]
777+
#[cfg_attr(all(target_os = "macos", not(target_arch = "aarch64")), link_name = "fstatat$INODE64")]
778778
#[cfg_attr(
779779
all(target_os = "freebsd", any(freebsd11, freebsd10)),
780780
link_name = "fstatat@FBSD_1.1"
@@ -1007,7 +1007,7 @@ extern "C" {
10071007
ifname: *mut ::c_char,
10081008
) -> *mut ::c_char;
10091009

1010-
#[cfg_attr(target_os = "macos", link_name = "lstat$INODE64")]
1010+
#[cfg_attr(all(target_os = "macos", not(target_arch = "aarch64")), link_name = "lstat$INODE64")]
10111011
#[cfg_attr(target_os = "netbsd", link_name = "__lstat50")]
10121012
#[cfg_attr(
10131013
all(target_os = "freebsd", any(freebsd11, freebsd10)),
@@ -1483,7 +1483,7 @@ cfg_if! {
14831483
link_name = "fdopendir$INODE64$UNIX2003")]
14841484
pub fn fdopendir(fd: ::c_int) -> *mut ::DIR;
14851485

1486-
#[cfg_attr(target_os = "macos", link_name = "readdir_r$INODE64")]
1486+
#[cfg_attr(all(target_os = "macos", not(target_arch = "aarch64")), link_name = "readdir_r$INODE64")]
14871487
#[cfg_attr(target_os = "netbsd", link_name = "__readdir_r30")]
14881488
#[cfg_attr(
14891489
all(target_os = "freebsd", any(freebsd11, freebsd10)),

0 commit comments

Comments
 (0)