commit c8af00c66e8b6f62e4dd6ac4d86a3de03e9ea354 (tree) parent 5aeffab693a878679674f9a2f8bb2e6825da705d Author: Andrew Kelley <andrew@ziglang.org> Date: Wed, 15 Dec 2021 19:25:26 -0700 glibc: fix inconsistency of powerpc ABI mapping See the commit message of 5b6d26e97bb97d79782f3c77b02a997e361a1497 for an explanation. This is the same thing but for powerpc instead of mips. Diffstat:
85 files changed, 20 insertions(+), 34 deletions(-)
diff --git a/lib/libc/include/generic-glibc/features.h b/lib/libc/include/generic-glibc/features.h @@ -477,7 +477,7 @@ /* Major and minor version number of the GNU C library package. Use these macros to test for features in specific releases. */ #define __GLIBC__ 2 -/* Zig patch: we pass `-D__GLIBC_MINOR__=XX` depending on the target. */ +#define __GLIBC_MINOR__ 34 #define __GLIBC_PREREQ(maj, min) \ ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min)) @@ -512,4 +512,4 @@ #include <gnu/stubs.h> -#endif /* features.h */ +#endif /* features.h */ +\ No newline at end of file diff --git a/lib/libc/include/generic-glibc/gnu/lib-names-ilp32.h b/lib/libc/include/generic-glibc/gnu/lib-names-ilp32.h @@ -1,30 +0,0 @@ -/* This file is automatically generated. */ -#ifndef __GNU_LIB_NAMES_H -# error "Never use <gnu/lib-names-ilp32.h> directly; include <gnu/lib-names.h> instead." -#endif - -#define LD_LINUX_RISCV32_ILP32_SO "ld-linux-riscv32-ilp32.so.1" -#define LD_SO "ld-linux-riscv32-ilp32.so.1" -#define LIBANL_SO "libanl.so.1" -#define LIBBROKENLOCALE_SO "libBrokenLocale.so.1" -#define LIBCRYPT_SO "libcrypt.so.1" -#define LIBC_MALLOC_DEBUG_SO "libc_malloc_debug.so.0" -#define LIBC_SO "libc.so.6" -#define LIBDL_SO "libdl.so.2" -#define LIBGCC_S_SO "libgcc_s.so.1" -#define LIBMVEC_SO "libmvec.so.1" -#define LIBM_SO "libm.so.6" -#define LIBNSL_SO "libnsl.so.1" -#define LIBNSS_COMPAT_SO "libnss_compat.so.2" -#define LIBNSS_DB_SO "libnss_db.so.2" -#define LIBNSS_DNS_SO "libnss_dns.so.2" -#define LIBNSS_FILES_SO "libnss_files.so.2" -#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2" -#define LIBNSS_LDAP_SO "libnss_ldap.so.2" -#define LIBNSS_TEST1_SO "libnss_test1.so.2" -#define LIBNSS_TEST2_SO "libnss_test2.so.2" -#define LIBPTHREAD_SO "libpthread.so.0" -#define LIBRESOLV_SO "libresolv.so.2" -#define LIBRT_SO "librt.so.1" -#define LIBTHREAD_DB_SO "libthread_db.so.1" -#define LIBUTIL_SO "libutil.so.1" diff --git a/lib/libc/include/powerpc-linux-gnu/bits/endianness.h b/lib/libc/include/powerpc-linux-gnueabi/bits/endianness.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/environments.h b/lib/libc/include/powerpc-linux-gnueabi/bits/environments.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/fcntl.h b/lib/libc/include/powerpc-linux-gnueabi/bits/fcntl.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/fenv.h b/lib/libc/include/powerpc-linux-gnueabi/bits/fenv.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/floatn.h b/lib/libc/include/powerpc-linux-gnueabi/bits/floatn.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/fp-fast.h b/lib/libc/include/powerpc-linux-gnueabi/bits/fp-fast.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/hwcap.h b/lib/libc/include/powerpc-linux-gnueabi/bits/hwcap.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/ioctl-types.h b/lib/libc/include/powerpc-linux-gnueabi/bits/ioctl-types.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/ipc-perm.h b/lib/libc/include/powerpc-linux-gnueabi/bits/ipc-perm.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/iscanonical.h b/lib/libc/include/powerpc-linux-gnueabi/bits/iscanonical.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/link.h b/lib/libc/include/powerpc-linux-gnueabi/bits/link.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/long-double.h b/lib/libc/include/powerpc-linux-gnueabi/bits/long-double.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/mman.h b/lib/libc/include/powerpc-linux-gnueabi/bits/mman.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/procfs.h b/lib/libc/include/powerpc-linux-gnueabi/bits/procfs.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/pthread_stack_min.h b/lib/libc/include/powerpc-linux-gnueabi/bits/pthread_stack_min.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/setjmp.h b/lib/libc/include/powerpc-linux-gnueabi/bits/setjmp.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/sigstack.h b/lib/libc/include/powerpc-linux-gnueabi/bits/sigstack.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/socket-constants.h b/lib/libc/include/powerpc-linux-gnueabi/bits/socket-constants.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/struct_mutex.h b/lib/libc/include/powerpc-linux-gnueabi/bits/struct_mutex.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/struct_rwlock.h b/lib/libc/include/powerpc-linux-gnueabi/bits/struct_rwlock.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/struct_stat.h b/lib/libc/include/powerpc-linux-gnueabi/bits/struct_stat.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/termios-baud.h b/lib/libc/include/powerpc-linux-gnueabi/bits/termios-baud.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/termios-c_cc.h b/lib/libc/include/powerpc-linux-gnueabi/bits/termios-c_cc.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/termios-c_cflag.h b/lib/libc/include/powerpc-linux-gnueabi/bits/termios-c_cflag.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/termios-c_iflag.h b/lib/libc/include/powerpc-linux-gnueabi/bits/termios-c_iflag.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/termios-c_lflag.h b/lib/libc/include/powerpc-linux-gnueabi/bits/termios-c_lflag.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/termios-c_oflag.h b/lib/libc/include/powerpc-linux-gnueabi/bits/termios-c_oflag.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/termios-misc.h b/lib/libc/include/powerpc-linux-gnueabi/bits/termios-misc.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/types/struct_msqid_ds.h b/lib/libc/include/powerpc-linux-gnueabi/bits/types/struct_msqid_ds.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/types/struct_semid_ds.h b/lib/libc/include/powerpc-linux-gnueabi/bits/types/struct_semid_ds.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/types/struct_shmid_ds.h b/lib/libc/include/powerpc-linux-gnueabi/bits/types/struct_shmid_ds.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/wordsize.h b/lib/libc/include/powerpc-linux-gnueabi/bits/wordsize.h diff --git a/lib/libc/include/powerpc-linux-gnu/fpu_control.h b/lib/libc/include/powerpc-linux-gnueabi/fpu_control.h diff --git a/lib/libc/include/powerpc-linux-gnu/gnu/lib-names-32.h b/lib/libc/include/powerpc-linux-gnueabi/gnu/lib-names-32.h diff --git a/lib/libc/include/powerpc-linux-gnu/gnu/lib-names.h b/lib/libc/include/powerpc-linux-gnueabi/gnu/lib-names.h diff --git a/lib/libc/include/powerpc-linux-gnu/gnu/stubs.h b/lib/libc/include/powerpc-linux-gnueabi/gnu/stubs.h diff --git a/lib/libc/include/powerpc-linux-gnu/ieee754.h b/lib/libc/include/powerpc-linux-gnueabi/ieee754.h diff --git a/lib/libc/include/powerpc-linux-gnu/sys/ptrace.h b/lib/libc/include/powerpc-linux-gnueabi/sys/ptrace.h diff --git a/lib/libc/include/powerpc-linux-gnu/sys/ucontext.h b/lib/libc/include/powerpc-linux-gnueabi/sys/ucontext.h diff --git a/lib/libc/include/powerpc-linux-gnu/sys/user.h b/lib/libc/include/powerpc-linux-gnueabi/sys/user.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/endianness.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/endianness.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/environments.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/environments.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/fcntl.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/fcntl.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/fenv.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/fenv.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/floatn.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/floatn.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/fp-fast.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/fp-fast.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/hwcap.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/hwcap.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/ioctl-types.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/ioctl-types.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/ipc-perm.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/ipc-perm.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/iscanonical.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/iscanonical.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/link.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/link.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/long-double.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/long-double.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/mman.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/mman.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/procfs.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/procfs.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/pthread_stack_min.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/pthread_stack_min.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/setjmp.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/setjmp.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/sigstack.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/sigstack.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/socket-constants.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/socket-constants.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/struct_mutex.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/struct_mutex.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/struct_rwlock.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/struct_rwlock.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/struct_stat.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/struct_stat.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/termios-baud.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/termios-baud.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/termios-c_cc.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/termios-c_cc.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/termios-c_cflag.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/termios-c_cflag.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/termios-c_iflag.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/termios-c_iflag.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/termios-c_lflag.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/termios-c_lflag.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/termios-c_oflag.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/termios-c_oflag.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/termios-misc.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/termios-misc.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/types/struct_msqid_ds.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/types/struct_msqid_ds.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/types/struct_semid_ds.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/types/struct_semid_ds.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/types/struct_shmid_ds.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/types/struct_shmid_ds.h diff --git a/lib/libc/include/powerpc-linux-gnu/bits/wordsize.h b/lib/libc/include/powerpc-linux-gnueabihf/bits/wordsize.h diff --git a/lib/libc/include/powerpc-linux-gnu/fpu_control.h b/lib/libc/include/powerpc-linux-gnueabihf/fpu_control.h diff --git a/lib/libc/include/powerpc-linux-gnu/gnu/lib-names-32.h b/lib/libc/include/powerpc-linux-gnueabihf/gnu/lib-names-32.h diff --git a/lib/libc/include/powerpc-linux-gnu/gnu/lib-names.h b/lib/libc/include/powerpc-linux-gnueabihf/gnu/lib-names.h diff --git a/lib/libc/include/powerpc-linux-gnu/gnu/stubs.h b/lib/libc/include/powerpc-linux-gnueabihf/gnu/stubs.h diff --git a/lib/libc/include/powerpc-linux-gnu/ieee754.h b/lib/libc/include/powerpc-linux-gnueabihf/ieee754.h diff --git a/lib/libc/include/powerpc-linux-gnu/sys/ptrace.h b/lib/libc/include/powerpc-linux-gnueabihf/sys/ptrace.h diff --git a/lib/libc/include/powerpc-linux-gnu/sys/ucontext.h b/lib/libc/include/powerpc-linux-gnueabihf/sys/ucontext.h diff --git a/lib/libc/include/powerpc-linux-gnu/sys/user.h b/lib/libc/include/powerpc-linux-gnueabihf/sys/user.h diff --git a/src/target.zig b/src/target.zig @@ -54,7 +54,8 @@ pub const available_libcs = [_]ArchOsAbi{ .{ .arch = .powerpc64le, .os = .linux, .abi = .musl }, .{ .arch = .powerpc64, .os = .linux, .abi = .gnu }, .{ .arch = .powerpc64, .os = .linux, .abi = .musl }, - .{ .arch = .powerpc, .os = .linux, .abi = .gnu }, + .{ .arch = .powerpc, .os = .linux, .abi = .gnueabi }, + .{ .arch = .powerpc, .os = .linux, .abi = .gnueabihf }, .{ .arch = .powerpc, .os = .linux, .abi = .musl }, .{ .arch = .riscv64, .os = .linux, .abi = .gnu }, .{ .arch = .riscv64, .os = .linux, .abi = .musl }, diff --git a/test/tests.zig b/test/tests.zig @@ -236,6 +236,15 @@ const test_targets = blk: { }, .link_libc = true, }, + // https://github.com/ziglang/zig/issues/2256 + //TestTarget{ + // .target = .{ + // .cpu_arch = .powerpc, + // .os_tag = .linux, + // .abi = .gnueabihf, + // }, + // .link_libc = true, + //}, TestTarget{ .target = .{ diff --git a/tools/process_headers.zig b/tools/process_headers.zig @@ -152,7 +152,12 @@ const glibc_targets = [_]LibCTarget{ LibCTarget{ .name = "powerpc-linux-gnu", .arch = MultiArch{ .specific = Arch.powerpc }, - .abi = MultiAbi{ .specific = Abi.gnu }, + .abi = MultiAbi{ .specific = Abi.gnueabihf }, + }, + LibCTarget{ + .name = "powerpc-linux-gnu-soft", + .arch = MultiArch{ .specific = Arch.powerpc }, + .abi = MultiAbi{ .specific = Abi.gnueabi }, }, LibCTarget{ .name = "riscv64-linux-gnu-rv64imac-lp64",