| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- From a7ae4ed0a3951c45d4a59ee575951b64ae4a23fb Mon Sep 17 00:00:00 2001
- From: Felix Fietkau <[email protected]>
- Date: Tue, 7 May 2024 12:22:15 +0200
- Subject: [PATCH] kernel: fix tools build breakage on macos with x86
- Signed-off-by: Felix Fietkau <[email protected]>
- ---
- --- a/tools/scripts/Makefile.include
- +++ b/tools/scripts/Makefile.include
- @@ -72,8 +72,6 @@ $(call allow-override,CXX,$(CROSS_COMPIL
- $(call allow-override,STRIP,$(CROSS_COMPILE)strip)
- endif
-
- -CC_NO_CLANG := $(shell $(CC) -dM -E -x c /dev/null | grep -Fq "__clang__"; echo $$?)
- -
- ifneq ($(LLVM),)
- HOSTAR ?= $(LLVM_PREFIX)llvm-ar$(LLVM_SUFFIX)
- HOSTCC ?= $(LLVM_PREFIX)clang$(LLVM_SUFFIX)
- @@ -84,6 +82,9 @@ HOSTCC ?= gcc
- HOSTLD ?= ld
- endif
-
- +CC_NO_CLANG := $(shell $(CC) -dM -E -x c /dev/null | grep -Fq "__clang__"; echo $$?)
- +HOSTCC_NO_CLANG := $(shell $(HOSTCC) -dM -E -x c /dev/null | grep -Fq "__clang__"; echo $$?)
- +
- # Some tools require Clang, LLC and/or LLVM utils
- CLANG ?= clang
- LLC ?= llc
- @@ -92,8 +93,9 @@ LLVM_OBJCOPY ?= llvm-objcopy
- LLVM_STRIP ?= llvm-strip
-
- ifeq ($(CC_NO_CLANG), 1)
- -EXTRA_WARNINGS += -Wstrict-aliasing=3
- -
- + ifeq ($(HOSTCC_NO_CLANG), 1)
- + EXTRA_WARNINGS += -Wstrict-aliasing=3
- + endif
- else ifneq ($(CROSS_COMPILE),)
- # Allow userspace to override CLANG_CROSS_FLAGS to specify their own
- # sysroots and flags or to avoid the GCC call in pure Clang builds.
- --- a/tools/include/linux/types.h
- +++ b/tools/include/linux/types.h
- @@ -10,8 +10,12 @@
- #define __SANE_USERSPACE_TYPES__ /* For PPC64, to get LL64 types */
- #endif
-
- +#ifndef __linux__
- +#include <tools/linux_types.h>
- +#else
- #include <asm/types.h>
- #include <asm/posix_types.h>
- +#endif
-
- struct page;
- struct kmem_cache;
- @@ -56,6 +60,7 @@ typedef __s8 s8;
- #define __user
- #endif
- #define __must_check
- +#undef __cold
- #define __cold
-
- typedef __u16 __bitwise __le16;
- --- a/tools/objtool/include/objtool/objtool.h
- +++ b/tools/objtool/include/objtool/objtool.h
- @@ -12,6 +12,7 @@
-
- #include <objtool/elf.h>
-
- +#undef __weak
- #define __weak __attribute__((weak))
-
- struct pv_state {
- --- a/tools/include/asm-generic/bitops/fls.h
- +++ b/tools/include/asm-generic/bitops/fls.h
- @@ -2,6 +2,8 @@
- #ifndef _ASM_GENERIC_BITOPS_FLS_H_
- #define _ASM_GENERIC_BITOPS_FLS_H_
-
- +#include <string.h>
- +
- /**
- * fls - find last (most-significant) bit set
- * @x: the word to search
- @@ -10,6 +12,7 @@
- * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
- */
-
- +#define fls __linux_fls
- static __always_inline int fls(unsigned int x)
- {
- int r = 32;
- --- a/tools/lib/string.c
- +++ b/tools/lib/string.c
- @@ -96,6 +96,7 @@ int strtobool(const char *s, bool *res)
- * If libc has strlcpy() then that version will override this
- * implementation:
- */
- +#ifndef __APPLE__
- #ifdef __clang__
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wignored-attributes"
- @@ -114,6 +115,7 @@ size_t __weak strlcpy(char *dest, const
- #ifdef __clang__
- #pragma clang diagnostic pop
- #endif
- +#endif
-
- /**
- * skip_spaces - Removes leading whitespace from @str.
- --- a/tools/arch/x86/include/asm/insn.h
- +++ b/tools/arch/x86/include/asm/insn.h
- @@ -7,7 +7,7 @@
- * Copyright (C) IBM Corporation, 2009
- */
-
- -#include <asm/byteorder.h>
- +#include <linux/kernel.h>
- /* insn_attr_t is defined in inat.h */
- #include "inat.h" /* __ignore_sync_check__ */
-
- --- a/tools/arch/x86/include/asm/orc_types.h
- +++ b/tools/arch/x86/include/asm/orc_types.h
- @@ -46,7 +46,6 @@
- #define ORC_TYPE_REGS_PARTIAL 4
-
- #ifndef __ASSEMBLY__
- -#include <asm/byteorder.h>
-
- /*
- * This struct is more or less a vastly simplified version of the DWARF Call
- @@ -59,12 +58,12 @@
- struct orc_entry {
- s16 sp_offset;
- s16 bp_offset;
- -#if defined(__LITTLE_ENDIAN_BITFIELD)
- +#if __BYTE_ORDER == __LITTLE_ENDIAN
- unsigned sp_reg:4;
- unsigned bp_reg:4;
- unsigned type:3;
- unsigned signal:1;
- -#elif defined(__BIG_ENDIAN_BITFIELD)
- +#elif __BYTE_ORDER == __BIG_ENDIAN
- unsigned bp_reg:4;
- unsigned sp_reg:4;
- unsigned unused:4;
- --- a/tools/include/linux/rbtree.h
- +++ b/tools/include/linux/rbtree.h
- @@ -18,7 +18,6 @@
- #define __TOOLS_LINUX_PERF_RBTREE_H
-
- #include <linux/kernel.h>
- -#include <linux/stddef.h>
-
- struct rb_node {
- unsigned long __rb_parent_color;
- --- a/tools/include/tools/be_byteshift.h
- +++ b/tools/include/tools/be_byteshift.h
- @@ -2,6 +2,10 @@
- #ifndef _TOOLS_BE_BYTESHIFT_H
- #define _TOOLS_BE_BYTESHIFT_H
-
- +#ifndef __linux__
- +#include "linux_types.h"
- +#endif
- +
- #include <stdint.h>
-
- static inline uint16_t __get_unaligned_be16(const uint8_t *p)
- --- a/tools/include/tools/le_byteshift.h
- +++ b/tools/include/tools/le_byteshift.h
- @@ -2,6 +2,10 @@
- #ifndef _TOOLS_LE_BYTESHIFT_H
- #define _TOOLS_LE_BYTESHIFT_H
-
- +#ifndef __linux__
- +#include "linux_types.h"
- +#endif
- +
- #include <stdint.h>
-
- static inline uint16_t __get_unaligned_le16(const uint8_t *p)
- --- /dev/null
- +++ b/tools/include/tools/linux_types.h
- @@ -0,0 +1,18 @@
- +#ifndef __LINUX_TYPES_H
- +#define __LINUX_TYPES_H
- +
- +#include <stdint.h>
- +
- +typedef int8_t __s8;
- +typedef uint8_t __u8;
- +
- +typedef int16_t __s16;
- +typedef uint16_t __u16;
- +
- +typedef int32_t __s32;
- +typedef uint32_t __u32;
- +
- +typedef int64_t __s64;
- +typedef uint64_t __u64;
- +
- +#endif
- --- a/tools/objtool/Makefile
- +++ b/tools/objtool/Makefile
- @@ -39,6 +39,8 @@ OBJTOOL_LDFLAGS := $(LIBELF_LIBS) $(LIBS
- elfshdr := $(shell echo '$(pound)include <libelf.h>' | $(HOSTCC) $(OBJTOOL_CFLAGS) -x c -E - | grep elf_getshdr)
- OBJTOOL_CFLAGS += $(if $(elfshdr),,-DLIBELF_USE_DEPRECATED)
-
- +OBJTOOL_CFLAGS += $(HOST_EXTRACFLAGS)
- +
- # Always want host compilation.
- HOST_OVERRIDES := CC="$(HOSTCC)" LD="$(HOSTLD)" AR="$(HOSTAR)"
-
- --- a/tools/objtool/orc_dump.c
- +++ b/tools/objtool/orc_dump.c
- @@ -4,10 +4,10 @@
- */
-
- #include <unistd.h>
- -#include <asm/orc_types.h>
- #include <objtool/objtool.h>
- #include <objtool/warn.h>
- #include <objtool/endianness.h>
- +#include <asm/orc_types.h>
-
- static const char *reg_name(unsigned int reg)
- {
- --- a/tools/objtool/orc_gen.c
- +++ b/tools/objtool/orc_gen.c
- @@ -7,11 +7,11 @@
- #include <string.h>
-
- #include <linux/objtool_types.h>
- -#include <asm/orc_types.h>
-
- #include <objtool/check.h>
- #include <objtool/warn.h>
- #include <objtool/endianness.h>
- +#include <asm/orc_types.h>
-
- static int init_orc_entry(struct orc_entry *orc, struct cfi_state *cfi,
- struct instruction *insn)
- --- a/tools/arch/x86/lib/insn.c
- +++ b/tools/arch/x86/lib/insn.c
- @@ -15,7 +15,11 @@
- #include "../include/asm/insn.h" /* __ignore_sync_check__ */
- #include "../include/asm-generic/unaligned.h" /* __ignore_sync_check__ */
-
- +#ifdef __KERNEL__
- #include <linux/errno.h>
- +#else
- +#include <errno.h>
- +#endif
- #include <linux/kconfig.h>
-
- #include "../include/asm/emulate_prefix.h" /* __ignore_sync_check__ */
|