You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When building objtool against a sysroot that contains a stripped down
version of the UAPI headers, the following error happens:
In file included from arch/x86/decode.c:10:
In file included from .../tools/arch/x86/include/asm/insn.h:10:
In file included from <sysroot>/include/asm/byteorder.h:9:
In file included from <sysroot>/include/linux/byteorder/little_endian.h:15:
In file included from <sysroot>/include/linux/stddef.h:9:
In file included from .../tools/include/linux/compiler_types.h:36:
.../tools/include/linux/compiler-gcc.h:3:2: error: "Please don't include <linux/compiler-gcc.h> directly, include <linux/compiler.h> instead."
3 | #error "Please don't include <linux/compiler-gcc.h> directly, include <linux/compiler.h> instead."
| ^
1 error generated.
As hinted by the error, this is because <sysroot>/include/linux/stddef.h
(a stripped-down version of uapi/include/linux/stddef.h) includes
linux/compiler_types.h directly. However, this gets resolved to
tools/include/linux/compiler_types.h, which is not expected to be
included directly.
To resolve this, I added tools/include/uapi to the include paths when
building objtool. With this trick, linux/stddef.h is resolved to
tools/include/uapi/linux/stddef.h, which doesn't include
linux/compiler_types.h.
Signed-off-by: HONG Yifan <[email protected]>
Signed-off-by: Josh Poimboeuf <[email protected]>
0 commit comments