On 4/18/21 3:43 AM, Christophe Leroy wrote: > > > Le 18/04/2021 à 02:02, Randy Dunlap a écrit : >> HI-- >> >> I no longer see this build error. > > Fixed by https://github.com/torvalds/linux/commit/acdad8fb4a1574323db88f98a38b630691574e16 > >> However: >> >> On 2/27/21 2:24 AM, kernel test robot wrote: >>> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master >>> head:   3fb6d0e00efc958d01c2f109c8453033a2d96796 >>> commit: 259149cf7c3c6195e6199e045ca988c31d081cab powerpc/32s: Only build hash code when CONFIG_PPC_BOOK3S_604 is selected >>> date:   4 weeks ago >>> config: powerpc64-randconfig-r013-20210227 (attached as .config) >> >> ktr/lkp, this is a PPC32 .config file that is attached, not PPC64. >> >> Also: >> >>> compiler: powerpc-linux-gcc (GCC) 9.3.0 > > ... > >> >> I do see this build error: >> >> powerpc-linux-ld: arch/powerpc/boot/wrapper.a(decompress.o): in function `partial_decompress': >> decompress.c:(.text+0x1f0): undefined reference to `__decompress' >> >> when either >> CONFIG_KERNEL_LZO=y >> or >> CONFIG_KERNEL_LZMA=y >> >> but the build succeeds when either >> CONFIG_KERNEL_GZIP=y >> or >> CONFIG_KERNEL_XZ=y >> >> I guess that is due to arch/powerpc/boot/decompress.c doing this: >> >> #ifdef CONFIG_KERNEL_GZIP >> #    include "decompress_inflate.c" >> #endif >> >> #ifdef CONFIG_KERNEL_XZ >> #    include "xz_config.h" >> #    include "../../../lib/decompress_unxz.c" >> #endif >> >> >> It would be nice to require one of KERNEL_GZIP or KERNEL_XZ >> to be set/enabled (maybe unless a uImage is being built?). > > > Can you test by https://patchwork.ozlabs.org/project/linuxppc-dev/patch/a74fce4dfc9fa32da6ce3470bbedcecf795de1ec.1591189069.git.christophe.leroy@csgroup.eu/ ? Hi Christophe, I get build errors for both LZO and LZMA: for CONFIG_KERNEL_LZO=y: In file included from ../lib/decompress_unlzo.c:26: ../include/linux/lzo.h:24:48: error: unknown type name 'size_t' 24 | int lzo1x_1_compress(const unsigned char *src, size_t src_len, | ^~~~~~ ../include/linux/lzo.h:1:1: note: 'size_t' is defined in header ''; did you forget to '#include '? +++ |+#include 1 | /* SPDX-License-Identifier: GPL-2.0 */ ../include/linux/lzo.h:25:28: error: unknown type name 'size_t' 25 | unsigned char *dst, size_t *dst_len, void *wrkmem); | ^~~~~~ ../include/linux/lzo.h:25:28: note: 'size_t' is defined in header ''; did you forget to '#include '? ../include/linux/lzo.h:28:51: error: unknown type name 'size_t' 28 | int lzorle1x_1_compress(const unsigned char *src, size_t src_len, | ^~~~~~ ../include/linux/lzo.h:28:51: note: 'size_t' is defined in header ''; did you forget to '#include '? ../include/linux/lzo.h:29:28: error: unknown type name 'size_t' 29 | unsigned char *dst, size_t *dst_len, void *wrkmem); | ^~~~~~ ../include/linux/lzo.h:29:28: note: 'size_t' is defined in header ''; did you forget to '#include '? ../include/linux/lzo.h:32:53: error: unknown type name 'size_t' 32 | int lzo1x_decompress_safe(const unsigned char *src, size_t src_len, | ^~~~~~ ../include/linux/lzo.h:32:53: note: 'size_t' is defined in header ''; did you forget to '#include '? ../include/linux/lzo.h:33:26: error: unknown type name 'size_t' 33 | unsigned char *dst, size_t *dst_len); | ^~~~~~ ../include/linux/lzo.h:33:26: note: 'size_t' is defined in header ''; did you forget to '#include '? CC drivers/char/tpm/tpm2-space.o CC [M] drivers/regulator/da9121-regulator.o AR drivers/iommu/built-in.a ../lib/decompress_unlzo.c: In function 'unlzo': ../lib/decompress_unlzo.c:237:8: error: implicit declaration of function 'lzo1x_decompress_safe' [-Werror=implicit-function-declaration] 237 | r = lzo1x_decompress_safe((u8 *) in_buf, src_len, | ^~~~~~~~~~~~~~~~~~~~~ In file included from ../arch/powerpc/boot/ops.h:15, from ../arch/powerpc/boot/decompress.c:12: ../arch/powerpc/boot/types.h:50:15: error: expected identifier before numeric constant 50 | #define false 0 | ^ ../include/linux/stddef.h:11:2: note: in expansion of macro 'false' 11 | false = 0, | ^~~~~ In file included from ../include/linux/kasan-checks.h:5, from ../include/asm-generic/rwonce.h:26, from ./arch/powerpc/include/generated/asm/rwonce.h:1, from ../include/linux/compiler.h:248, from ../arch/powerpc/boot/../../../lib/decompress_unlzo.c:32, from ../arch/powerpc/boot/decompress.c:43: ../include/linux/types.h:30:17: error: conflicting types for 'bool' 30 | typedef _Bool bool; | ^~~~ In file included from ../arch/powerpc/boot/ops.h:15, from ../arch/powerpc/boot/decompress.c:12: ../arch/powerpc/boot/types.h:43:13: note: previous declaration of 'bool' was here 43 | typedef int bool; | ^~~~ In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1, from ../include/linux/compiler.h:248, from ../arch/powerpc/boot/../../../lib/decompress_unlzo.c:32, from ../arch/powerpc/boot/decompress.c:43: ../include/asm-generic/rwonce.h:64:31: error: expected ';' before 'unsigned' 64 | static __no_sanitize_or_inline | ^ | ; 65 | unsigned long __read_once_word_nocheck(const void *addr) | ~~~~~~~~ ../include/asm-generic/rwonce.h:82:28: error: expected ';' before 'unsigned' 82 | static __no_kasan_or_inline | ^ | ; 83 | unsigned long read_word_at_a_time(const void *addr) | ~~~~~~~~ In file included from ../arch/powerpc/boot/decompress.c:43: ../arch/powerpc/boot/../../../lib/decompress_unlzo.c: In function 'parse_header': ../arch/powerpc/boot/../../../lib/decompress_unlzo.c:48:5: warning: variable 'level' set but not used [-Wunused-but-set-variable] 48 | u8 level = 0; | ^~~~~ and for CONFIG_KERNEL_LZMA=y: (this looks odd to me since it says "unlzo", but I repeated it after a 'make clean' and got the same errors.) In file included from ../lib/decompress_unlzo.c:26: ../include/linux/lzo.h:24:48: error: unknown type name 'size_t' 24 | int lzo1x_1_compress(const unsigned char *src, size_t src_len, | ^~~~~~ ../include/linux/lzo.h:1:1: note: 'size_t' is defined in header ''; did you forget to '#include '? +++ |+#include 1 | /* SPDX-License-Identifier: GPL-2.0 */ ../include/linux/lzo.h:25:28: error: unknown type name 'size_t' 25 | unsigned char *dst, size_t *dst_len, void *wrkmem); | ^~~~~~ ../include/linux/lzo.h:25:28: note: 'size_t' is defined in header ''; did you forget to '#include '? ../include/linux/lzo.h:28:51: error: unknown type name 'size_t' 28 | int lzorle1x_1_compress(const unsigned char *src, size_t src_len, | ^~~~~~ ../include/linux/lzo.h:28:51: note: 'size_t' is defined in header ''; did you forget to '#include '? ../include/linux/lzo.h:29:28: error: unknown type name 'size_t' 29 | unsigned char *dst, size_t *dst_len, void *wrkmem); | ^~~~~~ ../include/linux/lzo.h:29:28: note: 'size_t' is defined in header ''; did you forget to '#include '? ../include/linux/lzo.h:32:53: error: unknown type name 'size_t' 32 | int lzo1x_decompress_safe(const unsigned char *src, size_t src_len, | ^~~~~~ ../include/linux/lzo.h:32:53: note: 'size_t' is defined in header ''; did you forget to '#include '? ../include/linux/lzo.h:33:26: error: unknown type name 'size_t' 33 | unsigned char *dst, size_t *dst_len); | ^~~~~~ ../include/linux/lzo.h:33:26: note: 'size_t' is defined in header ''; did you forget to '#include '? ../lib/decompress_unlzo.c: In function 'unlzo': ../lib/decompress_unlzo.c:237:8: error: implicit declaration of function 'lzo1x_decompress_safe' [-Werror=implicit-function-declaration] 237 | r = lzo1x_decompress_safe((u8 *) in_buf, src_len, | ^~~~~~~~~~~~~~~~~~~~~ -- ~Randy