mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 06:57:57 +00:00
0cb3e86557
On x86, the build failed while trying to compile tools/lib/string.c because of a clash with the system provided implementation for strlcpy Add ifdefs to prevent the conflict. Signed-off-by: Felix Fietkau <nbd@nbd.name>
361 lines
8.8 KiB
Diff
361 lines
8.8 KiB
Diff
From 48232d3d931c95953ce2ddfe7da7bb164aef6a73 Mon Sep 17 00:00:00 2001
|
|
From: Felix Fietkau <nbd@nbd.name>
|
|
Date: Fri, 7 Jul 2017 17:03:16 +0200
|
|
Subject: fix portability of some includes files in tools/ used on the host
|
|
|
|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
---
|
|
tools/include/tools/be_byteshift.h | 4 ++++
|
|
tools/include/tools/le_byteshift.h | 4 ++++
|
|
tools/include/tools/linux_types.h | 22 ++++++++++++++++++++++
|
|
3 files changed, 30 insertions(+)
|
|
create mode 100644 tools/include/tools/linux_types.h
|
|
|
|
--- 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/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;
|
|
@@ -51,7 +55,9 @@ typedef __s8 s8;
|
|
#define __force
|
|
#define __user
|
|
#define __must_check
|
|
+#ifndef __cold
|
|
#define __cold
|
|
+#endif
|
|
|
|
typedef __u16 __bitwise __le16;
|
|
typedef __u16 __bitwise __be16;
|
|
--- a/tools/perf/pmu-events/jevents.py
|
|
+++ b/tools/perf/pmu-events/jevents.py
|
|
@@ -684,6 +684,7 @@ def main() -> None:
|
|
#include "util/header.h"
|
|
#include "util/pmu.h"
|
|
#include <string.h>
|
|
+#include <strings.h>
|
|
#include <stddef.h>
|
|
|
|
struct compact_pmu_event {
|
|
--- a/tools/arch/x86/include/asm/insn.h
|
|
+++ b/tools/arch/x86/include/asm/insn.h
|
|
@@ -7,8 +7,8 @@
|
|
* Copyright (C) IBM Corporation, 2009
|
|
*/
|
|
|
|
-#include <asm/byteorder.h>
|
|
/* insn_attr_t is defined in inat.h */
|
|
+#include <linux/kernel.h>
|
|
#include "inat.h" /* __ignore_sync_check__ */
|
|
|
|
#if defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN)
|
|
--- a/tools/arch/x86/include/asm/orc_types.h
|
|
+++ b/tools/arch/x86/include/asm/orc_types.h
|
|
@@ -40,7 +40,6 @@
|
|
#define ORC_REG_MAX 15
|
|
|
|
#ifndef __ASSEMBLY__
|
|
-#include <asm/byteorder.h>
|
|
|
|
/*
|
|
* This struct is more or less a vastly simplified version of the DWARF Call
|
|
@@ -53,12 +52,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:2;
|
|
unsigned end:1;
|
|
-#elif defined(__BIG_ENDIAN_BITFIELD)
|
|
+#elif __BYTE_ORDER == __BIG_ENDIAN
|
|
unsigned bp_reg:4;
|
|
unsigned sp_reg:4;
|
|
unsigned unused:5;
|
|
--- 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__ */
|
|
--- 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,7 +12,7 @@
|
|
* Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
|
|
*/
|
|
|
|
-static __always_inline int fls(unsigned int x)
|
|
+static __always_inline int __generic_fls(unsigned int x)
|
|
{
|
|
int r = 32;
|
|
|
|
@@ -38,5 +40,6 @@ static __always_inline int fls(unsigned
|
|
}
|
|
return r;
|
|
}
|
|
+#define fls __generic_fls
|
|
|
|
#endif /* _ASM_GENERIC_BITOPS_FLS_H_ */
|
|
--- a/tools/include/asm-generic/bitsperlong.h
|
|
+++ b/tools/include/asm-generic/bitsperlong.h
|
|
@@ -4,11 +4,13 @@
|
|
|
|
#include <uapi/asm-generic/bitsperlong.h>
|
|
|
|
+#ifndef BITS_PER_LONG
|
|
#ifdef __SIZEOF_LONG__
|
|
#define BITS_PER_LONG (__CHAR_BIT__ * __SIZEOF_LONG__)
|
|
#else
|
|
#define BITS_PER_LONG __WORDSIZE
|
|
#endif
|
|
+#endif
|
|
|
|
#if BITS_PER_LONG != __BITS_PER_LONG
|
|
#error Inconsistent word size. Check asm/bitsperlong.h
|
|
--- 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/objtool/Makefile
|
|
+++ b/tools/objtool/Makefile
|
|
@@ -4,7 +4,7 @@ include ../scripts/Makefile.arch
|
|
|
|
# always use the host compiler
|
|
AR = $(HOSTAR)
|
|
-CC = $(HOSTCC)
|
|
+CC = $(HOSTCC) $(HOST_EXTRACFLAGS)
|
|
LD = $(HOSTLD)
|
|
|
|
ifeq ($(srctree),)
|
|
@@ -43,6 +43,7 @@ BUILD_ORC := n
|
|
|
|
ifeq ($(SRCARCH),x86)
|
|
BUILD_ORC := y
|
|
+ CFLAGS += -DBUILD_ORC
|
|
endif
|
|
|
|
export BUILD_ORC
|
|
--- a/tools/objtool/check.c
|
|
+++ b/tools/objtool/check.c
|
|
@@ -1164,11 +1164,12 @@ static int add_ignore_alternatives(struc
|
|
return 0;
|
|
}
|
|
|
|
+#ifndef BUILD_ORC
|
|
/*
|
|
* Symbols that replace INSN_CALL_DYNAMIC, every (tail) call to such a symbol
|
|
* will be added to the .retpoline_sites section.
|
|
*/
|
|
-__weak bool arch_is_retpoline(struct symbol *sym)
|
|
+bool arch_is_retpoline(struct symbol *sym)
|
|
{
|
|
return false;
|
|
}
|
|
@@ -1177,7 +1178,7 @@ __weak bool arch_is_retpoline(struct sym
|
|
* Symbols that replace INSN_RETURN, every (tail) call to such a symbol
|
|
* will be added to the .return_sites section.
|
|
*/
|
|
-__weak bool arch_is_rethunk(struct symbol *sym)
|
|
+bool arch_is_rethunk(struct symbol *sym)
|
|
{
|
|
return false;
|
|
}
|
|
@@ -1186,10 +1187,11 @@ __weak bool arch_is_rethunk(struct symbo
|
|
* Symbols that are embedded inside other instructions, because sometimes crazy
|
|
* code exists. These are mostly ignored for validation purposes.
|
|
*/
|
|
-__weak bool arch_is_embedded_insn(struct symbol *sym)
|
|
+bool arch_is_embedded_insn(struct symbol *sym)
|
|
{
|
|
return false;
|
|
}
|
|
+#endif
|
|
|
|
#define NEGATIVE_RELOC ((void *)-1L)
|
|
|
|
--- a/tools/objtool/include/objtool/objtool.h
|
|
+++ b/tools/objtool/include/objtool/objtool.h
|
|
@@ -12,7 +12,9 @@
|
|
|
|
#include <objtool/elf.h>
|
|
|
|
+#ifndef __weak
|
|
#define __weak __attribute__((weak))
|
|
+#endif
|
|
|
|
struct pv_state {
|
|
bool clean;
|
|
--- a/tools/objtool/orc_dump.c
|
|
+++ b/tools/objtool/orc_dump.c
|
|
@@ -5,10 +5,10 @@
|
|
|
|
#include <unistd.h>
|
|
#include <linux/objtool.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.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/objtool/special.c
|
|
+++ b/tools/objtool/special.c
|
|
@@ -54,9 +54,11 @@ struct special_entry entries[] = {
|
|
{},
|
|
};
|
|
|
|
-void __weak arch_handle_alternative(unsigned short feature, struct special_alt *alt)
|
|
+#ifndef BUILD_ORC
|
|
+void arch_handle_alternative(unsigned short feature, struct special_alt *alt)
|
|
{
|
|
}
|
|
+#endif
|
|
|
|
static void reloc_to_sec_off(struct reloc *reloc, struct section **sec,
|
|
unsigned long *off)
|
|
--- a/tools/objtool/weak.c
|
|
+++ b/tools/objtool/weak.c
|
|
@@ -15,12 +15,14 @@
|
|
return ENOSYS; \
|
|
})
|
|
|
|
-int __weak orc_dump(const char *_objname)
|
|
+#ifndef BUILD_ORC
|
|
+int orc_dump(const char *_objname)
|
|
{
|
|
UNSUPPORTED("ORC");
|
|
}
|
|
|
|
-int __weak orc_create(struct objtool_file *file)
|
|
+int orc_create(struct objtool_file *file)
|
|
{
|
|
UNSUPPORTED("ORC");
|
|
}
|
|
+#endif
|
|
--- a/tools/scripts/Makefile.include
|
|
+++ b/tools/scripts/Makefile.include
|
|
@@ -92,7 +92,7 @@ LLVM_OBJCOPY ?= llvm-objcopy
|
|
LLVM_STRIP ?= llvm-strip
|
|
|
|
ifeq ($(CC_NO_CLANG), 1)
|
|
-EXTRA_WARNINGS += -Wstrict-aliasing=3
|
|
+# EXTRA_WARNINGS += -Wstrict-aliasing=3
|
|
|
|
else ifneq ($(CROSS_COMPILE),)
|
|
# Allow userspace to override CLANG_CROSS_FLAGS to specify their own
|
|
--- a/tools/lib/string.c
|
|
+++ b/tools/lib/string.c
|
|
@@ -100,6 +100,7 @@ int strtobool(const char *s, bool *res)
|
|
#pragma clang diagnostic push
|
|
#pragma clang diagnostic ignored "-Wignored-attributes"
|
|
#endif
|
|
+#ifndef __APPLE__
|
|
size_t __weak strlcpy(char *dest, const char *src, size_t size)
|
|
{
|
|
size_t ret = strlen(src);
|
|
@@ -111,6 +112,7 @@ size_t __weak strlcpy(char *dest, const
|
|
}
|
|
return ret;
|
|
}
|
|
+#endif
|
|
#ifdef __clang__
|
|
#pragma clang diagnostic pop
|
|
#endif
|