-
Notifications
You must be signed in to change notification settings - Fork 102
Linux kernel is incompatible with busybox diff. Help? #326
Comments
The diff errors are "harmless" (they don't cause build error or any known issues). The error you are seeing is actually unrelated. The error you are seeing is related to libelf and is mentioned in the installation guide here: https://kisslinux.org/install#024 |
The diff calls come from You can reproduce the errors with the following snippet: cd tools/objtool
SRCARCH=x86 ./sync-check.sh |
The calls themselves: diff tools/include/linux/objtool.h include/linux/objtool.h > /dev/null
diff tools/arch/x86/include/asm/inat_types.h arch/x86/include/asm/inat_types.h > /dev/null
diff tools/arch/x86/include/asm/orc_types.h arch/x86/include/asm/orc_types.h > /dev/null
diff tools/arch/x86/include/asm/emulate_prefix.h arch/x86/include/asm/emulate_prefix.h > /dev/null
diff tools/arch/x86/lib/x86-opcode-map.txt arch/x86/lib/x86-opcode-map.txt > /dev/null
diff tools/arch/x86/tools/gen-insn-attr-x86.awk arch/x86/tools/gen-insn-attr-x86.awk > /dev/null
diff tools/include/linux/static_call_types.h include/linux/static_call_types.h > /dev/null
# Problematic calls below.
diff -I '^#include ["<]\(asm/\)*inat_types.h[">]' tools/arch/x86/include/asm/inat.h arch/x86/include/asm/inat.h > /dev/null
diff -I '^#include ["<]\(asm/\)*inat.h[">]' tools/arch/x86/include/asm/insn.h arch/x86/include/asm/insn.h > /dev/null
diff -I '^#include ["<]\(../include/\)*asm/insn.h[">]' tools/arch/x86/lib/inat.c arch/x86/lib/inat.c > /dev/null
diff -I '^#include ["<]\(../include/\)*asm/in\(at\|sn\).h[">]' -I '^#include ["<]\(../include/\)*asm/emulate_prefix.h[">]' tools/arch/x86/lib/insn.c arch/x86/lib/insn.c > /dev/null |
The
|
In fact... older versions of the kernel hid the errors (when using busybox diff, etc is used):
Again, the diff errors are "harmless". They can be fixed with a patch that filters both files (using the same regex) before passing them to Thanks for opening this issue. |
log:
` DESCEND objtool
CALL scripts/atomic/check-atomics.sh
CALL scripts/checksyscalls.sh
diff: unrecognized option: I
BusyBox v1.34.0 (2021-09-01 16:43:49 UTC) multi-call binary.
Usage: diff [-abBdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2
Compare files line by line and output the differences between them.
This implementation supports unified diffs only.
Warning: Kernel ABI header at 'tools/arch/x86/include/asm/inat.h' differs from latest version at 'arch/x86/include/asm/inat.h'
diff -u tools/arch/x86/include/asm/inat.h arch/x86/include/asm/inat.h
diff: unrecognized option: I
BusyBox v1.34.0 (2021-09-01 16:43:49 UTC) multi-call binary.
Usage: diff [-abBdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2
Compare files line by line and output the differences between them.
This implementation supports unified diffs only.
Warning: Kernel ABI header at 'tools/arch/x86/include/asm/insn.h' differs from latest version at 'arch/x86/include/asm/insn.h'
diff -u tools/arch/x86/include/asm/insn.h arch/x86/include/asm/insn.h
diff: unrecognized option: I
BusyBox v1.34.0 (2021-09-01 16:43:49 UTC) multi-call binary.
Usage: diff [-abBdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2
Compare files line by line and output the differences between them.
This implementation supports unified diffs only.
Warning: Kernel ABI header at 'tools/arch/x86/lib/inat.c' differs from latest version at 'arch/x86/lib/inat.c'
diff -u tools/arch/x86/lib/inat.c arch/x86/lib/inat.c
diff: unrecognized option: I
BusyBox v1.34.0 (2021-09-01 16:43:49 UTC) multi-call binary.
Usage: diff [-abBdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2
Compare files line by line and output the differences between them.
This implementation supports unified diffs only.
Warning: Kernel ABI header at 'tools/arch/x86/lib/insn.c' differs from latest version at 'arch/x86/lib/insn.c'
diff -u tools/arch/x86/lib/insn.c arch/x86/lib/insn.c
CC /root/linux-5.14/tools/objtool/arch/x86/decode.o
In file included from /usr/include/linux/byteorder/little_endian.h:13,
from /usr/include/asm/byteorder.h:5,
from /root/linux-5.14/tools/arch/x86/include/asm/insn.h:10,
from arch/x86/decode.c:10:
/usr/include/linux/swab.h:136:23: error: expected ';' before 'unsigned'
136 | static __always_inline unsigned long __swab(const unsigned long y)
| ^~~~~~~~~
| ;
/usr/include/linux/swab.h:171:8: error: unknown type name '__always_inline'
171 | static __always_inline __u16 __swab16p(const __u16 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/swab.h:171:30: error: expected '=', ',', ';', 'asm' or 'attribute' before '__swab16p'
171 | static __always_inline __u16 __swab16p(const __u16 *p)
| ^~~~~~~~~
/usr/include/linux/swab.h:184:8: error: unknown type name '__always_inline'
184 | static __always_inline __u32 __swab32p(const __u32 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/swab.h:184:30: error: expected '=', ',', ';', 'asm' or 'attribute' before '__swab32p'
184 | static __always_inline __u32 __swab32p(const __u32 *p)
| ^~~~~~~~~
/usr/include/linux/swab.h:197:8: error: unknown type name '__always_inline'
197 | static __always_inline __u64 __swab64p(const __u64 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/swab.h:197:30: error: expected '=', ',', ';', 'asm' or 'attribute' before '__swab64p'
197 | static __always_inline __u64 __swab64p(const __u64 *p)
| ^~~~~~~~~
/usr/include/linux/swab.h:252:23: error: expected ';' before 'void'
252 | static __always_inline void __swab32s(__u32 *p)
| ^~~~~
| ;
/usr/include/linux/swab.h:265:23: error: expected ';' before 'void'
265 | static __always_inline void __swab64s(__u64 *p)
| ^~~~~
| ;
In file included from /usr/include/asm/byteorder.h:5,
from /root/linux-5.14/tools/arch/x86/include/asm/insn.h:10,
from arch/x86/decode.c:10:
/usr/include/linux/byteorder/little_endian.h:44:8: error: unknown type name '__always_inline'
44 | static __always_inline __le64 __cpu_to_le64p(const __u64 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:44:31: error: expected '=', ',', ';', 'asm' or 'attribute' before '__cpu_to_le64p'
44 | static __always_inline __le64 __cpu_to_le64p(const __u64 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:48:8: error: unknown type name '__always_inline'
48 | static __always_inline __u64 __le64_to_cpup(const __le64 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:48:30: error: expected '=', ',', ';', 'asm' or 'attribute' before '__le64_to_cpup'
48 | static __always_inline __u64 __le64_to_cpup(const __le64 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:52:8: error: unknown type name '__always_inline'
52 | static __always_inline __le32 __cpu_to_le32p(const __u32 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:52:31: error: expected '=', ',', ';', 'asm' or 'attribute' before '__cpu_to_le32p'
52 | static __always_inline __le32 __cpu_to_le32p(const __u32 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:56:8: error: unknown type name '__always_inline'
56 | static __always_inline __u32 __le32_to_cpup(const __le32 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:56:30: error: expected '=', ',', ';', 'asm' or 'attribute' before '__le32_to_cpup'
56 | static __always_inline __u32 __le32_to_cpup(const __le32 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:60:8: error: unknown type name '__always_inline'
60 | static __always_inline __le16 __cpu_to_le16p(const __u16 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:60:31: error: expected '=', ',', ';', 'asm' or 'attribute' before '__cpu_to_le16p'
60 | static __always_inline __le16 __cpu_to_le16p(const __u16 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:64:8: error: unknown type name '__always_inline'
64 | static __always_inline __u16 __le16_to_cpup(const __le16 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:64:30: error: expected '=', ',', ';', 'asm' or 'attribute' before '__le16_to_cpup'
64 | static __always_inline __u16 __le16_to_cpup(const __le16 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:68:8: error: unknown type name '__always_inline'
68 | static __always_inline __be64 __cpu_to_be64p(const __u64 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:68:31: error: expected '=', ',', ';', 'asm' or 'attribute' before '__cpu_to_be64p'
68 | static __always_inline __be64 __cpu_to_be64p(const __u64 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:72:8: error: unknown type name '__always_inline'
72 | static __always_inline __u64 __be64_to_cpup(const __be64 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:72:30: error: expected '=', ',', ';', 'asm' or 'attribute' before '__be64_to_cpup'
72 | static __always_inline __u64 __be64_to_cpup(const __be64 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:76:8: error: unknown type name '__always_inline'
76 | static __always_inline __be32 __cpu_to_be32p(const __u32 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:76:31: error: expected '=', ',', ';', 'asm' or 'attribute' before '__cpu_to_be32p'
76 | static __always_inline __be32 __cpu_to_be32p(const __u32 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:80:8: error: unknown type name '__always_inline'
80 | static __always_inline __u32 __be32_to_cpup(const __be32 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:80:30: error: expected '=', ',', ';', 'asm' or 'attribute' before '__be32_to_cpup'
80 | static __always_inline __u32 __be32_to_cpup(const __be32 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:84:8: error: unknown type name '__always_inline'
84 | static __always_inline __be16 __cpu_to_be16p(const __u16 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:84:31: error: expected '=', ',', ';', 'asm' or 'attribute' before '__cpu_to_be16p'
84 | static __always_inline __be16 __cpu_to_be16p(const __u16 *p)
| ^~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:88:8: error: unknown type name '__always_inline'
88 | static __always_inline __u16 __be16_to_cpup(const __be16 *p)
| ^~~~~~~~~~~~~~~
/usr/include/linux/byteorder/little_endian.h:88:30: error: expected '=', ',', ';', 'asm' or 'attribute' before '__be16_to_cpup'
88 | static __always_inline __u16 __be16_to_cpup(const __be16 *p)
| ^~~~~~~~~~~~~~
make[4]: *** [/root/linux-5.14/tools/build/Makefile.build:97: /root/linux-5.14/tools/objtool/arch/x86/decode.o] Error 1
make[3]: *** [/root/linux-5.14/tools/build/Makefile.build:139: arch/x86] Error 2
make[2]: *** [Makefile:56: /root/linux-5.14/tools/objtool/objtool-in.o] Error 2
make[1]: *** [Makefile:69: objtool] Error 2
make: *** [Makefile:1364: tools/objtool] Error 2
`
The text was updated successfully, but these errors were encountered: