summaryrefslogtreecommitdiffstats
path: root/usr/dummy-include
diff options
context:
space:
mode:
authorMiguel Ojeda <ojeda@kernel.org>2026-08-16 15:32:33 +0200
committerMiguel Ojeda <ojeda@kernel.org>2026-08-23 21:27:17 +0200
commit5febf432df1cfa5b25d99b54c32103fafbdd0eb9 (patch)
tree93a1ed1d337bc53adf1e572c2586d347703b286e /usr/dummy-include
downloadlinux-stable-5febf432df1cfa5b25d99b54c32103fafbdd0eb9.tar.gz
linux-stable-5febf432df1cfa5b25d99b54c32103fafbdd0eb9.zip
kbuild: rust: keep Rust objects out of Clang LTO with inline helpersgrafted
Under `CONFIG_LTO_CLANG` + `CONFIG_RUST_INLINE_HELPERS`, one may hit `objtool` errors such as: vmlinux.o: error: objtool: _R..._3Gsp4boot+0xd6a: can't find jump dest instruction at .text._R..._3Gsp4boot+0x1dfd The reason is that in such builds, the Clang invocation that compiles the combined Rust plus helpers bitcode emits LLVM bitcode (again) -- the final code generation happens in the linker's LTO step, which the `-mllvm` trap options passed to Clang do not reach. This, in turn, means that unreachable traps are missing, and the impossible paths do not merely fallthrough to the next symbol, but past the end of their own section, since LTO builds place each function in its own section. Thus filter `CC_FLAGS_LTO` out of the Clang invocation, so that it always emits machine code directly, with the traps in place. Assisted-by: LLM Cc: Gary Guo <gary@garyguo.net> Cc: Boqun Feng <boqun@kernel.org> Cc: Alice Ryhl <aliceryhl@google.com> Cc: Matthew Maurer <mmaurer@google.com> Cc: Josh Poimboeuf <jpoimboe@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: stable@vger.kernel.org Fixes: 3a2486cc1da5 ("kbuild: rust: provide an option to inline C helpers into Rust") Acked-by: Gary Guo <gary@garyguo.net> Link: https://patch.msgid.link/20260816133233.197500-2-ojeda@kernel.org Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Diffstat (limited to 'usr/dummy-include')
-rw-r--r--usr/dummy-include/endian.h0
-rw-r--r--usr/dummy-include/limits.h8
-rw-r--r--usr/dummy-include/netinet/if_ether.h0
-rw-r--r--usr/dummy-include/netinet/in.h0
-rw-r--r--usr/dummy-include/stddef.h13
-rw-r--r--usr/dummy-include/stdint.h17
-rw-r--r--usr/dummy-include/string.h12
-rw-r--r--usr/dummy-include/sys/ioctl.h0
-rw-r--r--usr/dummy-include/sys/socket.h12
-rw-r--r--usr/dummy-include/sys/time.h3
-rw-r--r--usr/dummy-include/sys/types.h0
-rw-r--r--usr/dummy-include/time.h0
-rw-r--r--usr/dummy-include/unistd.h0
13 files changed, 65 insertions, 0 deletions
diff --git a/usr/dummy-include/endian.h b/usr/dummy-include/endian.h
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/usr/dummy-include/endian.h
diff --git a/usr/dummy-include/limits.h b/usr/dummy-include/limits.h
new file mode 100644
index 000000000..49b17c10c
--- /dev/null
+++ b/usr/dummy-include/limits.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef _DUMMY_LIMITS_H
+#define _DUMMY_LIMITS_H
+
+#define INT_MAX ((int)(~0U >> 1))
+#define INT_MIN (-INT_MAX - 1)
+
+#endif /* _DUMMY_LIMITS_H */
diff --git a/usr/dummy-include/netinet/if_ether.h b/usr/dummy-include/netinet/if_ether.h
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/usr/dummy-include/netinet/if_ether.h
diff --git a/usr/dummy-include/netinet/in.h b/usr/dummy-include/netinet/in.h
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/usr/dummy-include/netinet/in.h
diff --git a/usr/dummy-include/stddef.h b/usr/dummy-include/stddef.h
new file mode 100644
index 000000000..525489daf
--- /dev/null
+++ b/usr/dummy-include/stddef.h
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef _DUMMY_STDDEF_H
+#define _DUMMY_STDDEF_H
+
+#define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER)
+
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+
+#endif /* _DUMMY_STDDEF_H */
diff --git a/usr/dummy-include/stdint.h b/usr/dummy-include/stdint.h
new file mode 100644
index 000000000..93b1962fd
--- /dev/null
+++ b/usr/dummy-include/stdint.h
@@ -0,0 +1,17 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef _DUMMY_STDINT_H
+#define _DUMMY_STDINT_H
+
+#include <linux/types.h>
+
+typedef __u64 uint64_t;
+typedef __u32 uint32_t;
+typedef __u16 uint16_t;
+typedef __u8 uint8_t;
+
+typedef __s64 int64_t;
+typedef __s32 int32_t;
+typedef __s16 int16_t;
+typedef __s8 int8_t;
+
+#endif /* _DUMMY_STDINT_H */
diff --git a/usr/dummy-include/string.h b/usr/dummy-include/string.h
new file mode 100644
index 000000000..e059808d3
--- /dev/null
+++ b/usr/dummy-include/string.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef _DUMMY_STRING_H
+#define _DUMMY_STRING_H
+
+#include <stddef.h>
+
+#define memset(_s, _c, _n) __builtin_memset(_s, _c, _n)
+#define memcpy(_dest, _src, _n) __builtin_memcpy(_dest, _src, _n)
+
+#define strlen(_s) __builtin_strlen(_s)
+
+#endif /* _DUMMY_STRING_H */
diff --git a/usr/dummy-include/sys/ioctl.h b/usr/dummy-include/sys/ioctl.h
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/usr/dummy-include/sys/ioctl.h
diff --git a/usr/dummy-include/sys/socket.h b/usr/dummy-include/sys/socket.h
new file mode 100644
index 000000000..748751f9e
--- /dev/null
+++ b/usr/dummy-include/sys/socket.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef _DUMMY_SYS_SOCKET_H
+#define _DUMMY_SYS_SOCKET_H
+
+#include <linux/socket.h>
+
+struct sockaddr {
+ __kernel_sa_family_t sa_family; /* address family, AF_xxx */
+ char sa_data[14]; /* 14 bytes of protocol address */
+};
+
+#endif /* _DUMMY_SYS_SOCKET_H */
diff --git a/usr/dummy-include/sys/time.h b/usr/dummy-include/sys/time.h
new file mode 100644
index 000000000..9817b8afb
--- /dev/null
+++ b/usr/dummy-include/sys/time.h
@@ -0,0 +1,3 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <linux/time.h>
diff --git a/usr/dummy-include/sys/types.h b/usr/dummy-include/sys/types.h
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/usr/dummy-include/sys/types.h
diff --git a/usr/dummy-include/time.h b/usr/dummy-include/time.h
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/usr/dummy-include/time.h
diff --git a/usr/dummy-include/unistd.h b/usr/dummy-include/unistd.h
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/usr/dummy-include/unistd.h