• Bug#1105744: FTCBFS riscv64: tools: bpf: asm/fense.h: no such file or d

    From Jing Luo@1:229/2 to All on Wed May 14 10:10:01 2025
    XPost: linux.debian.bugs.dist
    From: [email protected]

    Source: linux
    Version: 6.12.27-1
    Severity: normal

    Hi,

    linux's tools fail to cross sbuild from source when
    using "--host=riscv64" on an amd64 machine:

    /usr/bin/make -C /build/reproducible-path/linux-6.12.27/tools/lib/subcmd/ OUTPUT=/build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/ \
    DESTDIR=/build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/ AR="riscv64-linux-gnu-ar" CC="riscv64-linux-gnu-gcc" LD="riscv64-linux-gnu-ld" ARCH="x86" CROSS_COMPILE="" EXTRA_CFLAGS="-g -O2 -
    Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/linux-6.12.27=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -Wdate-time -D_FORTIFY_SOURCE=2 -I/build/reproducible-path/linux-6.12.27/tools/bpf/resolve_
    btfids -I/build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids -I/build/reproducible-path/linux-6.12.27/scripts/include -isystem /build/reproducible-path/linux-6.12.27/debian/build/build-tools/include" prefix= subdir= \
    /build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/libsubcmd.a install_headers
    make[5]: Entering directory '/build/reproducible-path/linux-6.12.27/tools/lib/subcmd'

    [...]

    riscv64-linux-gnu-gcc -Wp,-MD,/build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/.subcmd-config.o.d -Wp,-MT,/build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/
    libsubcmd/subcmd-config.o -ggdb3 -Wall -Wextra -std=gnu99 -fPIC -O3 -Werror -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -I/build/reproducible-path/linux-6.12.27/tools/include/ -Wbad-function-cast -Wdeclaration-after-statement -Wformat-
    security -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat -Wno-
    type-limits -Wstrict-aliasing=3 -Wshadow -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/linux-6.12.27=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -Wdate-time -D_FORTIFY_SOURCE=2 -I/build/
    reproducible-path/linux-6.12.27/tools/bpf/resolve_btfids -I/build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids -I/build/reproducible-path/linux-6.12.27/scripts/include -isystem /build/reproducible-path/linux-6.12.27/
    debian/build/build-tools/include -D"BUILD_STR(s)=#s" -c -o /build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/subcmd-config.o subcmd-config.c
    In file included from /build/reproducible-path/linux-6.12.27/tools/include/asm/barrier.h:12,
    from ringbuf.c:16: /build/reproducible-path/linux-6.12.27/tools/include/asm/../../arch/riscv/include/asm/barrier.h:13:10: fatal error: asm/fence.h: No such file or directory
    13 | #include <asm/fence.h>
    | ^~~~~~~~~~~~~
    compilation terminated.
    In file included from /build/reproducible-path/linux-6.12.27/tools/include/asm/barrier.h:12,
    from /build/reproducible-path/linux-6.12.27/tools/include/linux/ring_buffer.h:4,
    from libbpf.c:37: /build/reproducible-path/linux-6.12.27/tools/include/asm/../../arch/riscv/include/asm/barrier.h:13:10: fatal error: asm/fence.h: No such file or directory
    13 | #include <asm/fence.h>
    | ^~~~~~~~~~~~~
    compilation terminated.
    make[6]: *** [/build/reproducible-path/linux-6.12.27/tools/build/Makefile.build:105: /build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libbpf/staticobjs/ringbuf.o] Error 1
    make[6]: *** Waiting for unfinished jobs....
    make[6]: *** [/build/reproducible-path/linux-6.12.27/tools/build/Makefile.build:105: /build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libbpf/staticobjs/libbpf.o] Error 1
    riscv64-linux-gnu-ld -r -o /build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/libsubcmd-in.o /build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/exec-cmd.o
    /build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/help.o /build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/pager.o /build/reproducible-path/linux-6.12.27/
    debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/parse-options.o /build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/run-command.o /build/reproducible-path/linux-6.12.27/debian/build/build-tools/
    tools/bpf/resolve_btfids/libsubcmd/sigchain.o /build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/subcmd-config.o
    rm -f /build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/libsubcmd.a && riscv64-linux-gnu-ar rcs /build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/libsubcmd.
    a /build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/libsubcmd-in.o
    make[5]: Leaving directory '/build/reproducible-path/linux-6.12.27/tools/lib/subcmd'
    make[5]: *** [Makefile:165: /build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libbpf/staticobjs/libbpf-in.o] Error 2
    make[5]: Leaving directory '/build/reproducible-path/linux-6.12.27/tools/lib/bpf'
    make[4]: *** [Makefile:63: /build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids//libbpf/libbpf.a] Error 2
    make[4]: Leaving directory '/build/reproducible-path/linux-6.12.27/tools/bpf/resolve_btfids'

    [continued in next message]

    --- SoupGate-Win32 v1.05
    * Origin: you cannot sedate... all the things you hate (1:229/2)
  • From Bastian Blank@1:229/2 to Jing Luo on Sun Jun 1 15:20:01 2025
    XPost: linux.debian.bugs.dist
    From: [email protected]

    On Wed, May 14, 2025 at 07:59:06AM +0000, Jing Luo wrote:
    riscv64-linux-gnu-gcc -Wp,-MD,/build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/.subcmd-config.o.d -Wp,-MT,/build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/
    libsubcmd/subcmd-config.o -ggdb3 -Wall -Wextra -std=gnu99 -fPIC -O3 -Werror -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -I/build/reproducible-path/linux-6.12.27/tools/include/ -Wbad-function-cast -Wdeclaration-after-statement -Wformat-
    security -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat -Wno-
    type-limits -Wstrict-aliasing=3 -Wshadow -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/linux-6.12.27=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -Wdate-time -D_FORTIFY_SOURCE=2 -I/build/
    reproducible-path/linux-6.12.27/tools/bpf/resolve_btfids -I/build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids -I/build/reproducible-path/linux-6.12.27/scripts/include -isystem /build/reproducible-path/linux-6.12.27/
    debian/build/build-tools/include -D"BUILD_STR(s)=#s" -c -o /build/reproducible-path/linux-6.12.27/debian/build/build-tools/tools/bpf/resolve_btfids/libsubcmd/subcmd-config.o subcmd-config.c
    In file included from /build/reproducible-path/linux-6.12.27/tools/include/asm/barrier.h:12,
    from ringbuf.c:16: /build/reproducible-path/linux-6.12.27/tools/include/asm/../../arch/riscv/include/asm/barrier.h:13:10: fatal error: asm/fence.h: No such file or directory
    13 | #include <asm/fence.h>
    | ^~~~~~~~~~~~~
    compilation terminated.
    In file included from /build/reproducible-path/linux-6.12.27/tools/include/asm/barrier.h:12,
    from /build/reproducible-path/linux-6.12.27/tools/include/linux/ring_buffer.h:4,
    from libbpf.c:37: /build/reproducible-path/linux-6.12.27/tools/include/asm/../../arch/riscv/include/asm/barrier.h:13:10: fatal error: asm/fence.h: No such file or directory
    13 | #include <asm/fence.h>
    | ^~~~~~~~~~~~~
    compilation terminated.

    I digged a bit. And I don't understand it a hundred percent, especially not why different compilers behave differently. I now assume it got something to do with the mix of <> and "" includes.

    So a fix would be:

    --- a/tools/arch/riscv/include/asm/barrier.h
    +++ b/tools/arch/riscv/include/asm/barrier.h
    @@ -10,7 +10,7 @@
    #ifndef _TOOLS_LINUX_ASM_RISCV_BARRIER_H
    #define _TOOLS_LINUX_ASM_RISCV_BARRIER_H

    -#include <asm/fence.h>
    +#include "fence.h"
    #include <linux/compiler.h>

    /* These barriers need to enforce ordering on both devices and memory. */

    Bastian

    --
    Killing is stupid; useless!
    -- McCoy, "A Private Little War", stardate 4211.8

    --- SoupGate-Win32 v1.05
    * Origin: you cannot sedate... all the things you hate (1:229/2)