strace for m68k bpf_prog_info mismatch

Baruch Siach baruch at tkos.co.il
Fri May 3 04:05:58 UTC 2019


Hi Dmitry, Geert,

strace 5.0 fails to build for m86k/5208 with the Buildroot generated
toolchain:

In file included from bpf_attr_check.c:6:0:
static_assert.h:20:25: error: static assertion failed: "bpf_prog_info_struct.nr_jited_ksyms offset mismatch"
 #  define static_assert _Static_assert
                         ^
bpf_attr_check.c:913:2: note: in expansion of macro ‘static_assert’
  static_assert(offsetof(struct bpf_prog_info_struct, nr_jited_ksyms) == offsetof(struct bpf_prog_info, nr_jited_ksyms),
  ^~~~~~~~~~~~~

The direct cause is a difference in the hole after the gpl_compatible
field. Here is pahole output for the kernel struct (from v4.19):

struct bpf_prog_info {
	...
	__u32                      ifindex;              /*    80     4 */
	__u32                      gpl_compatible:1;     /*    84: 0  4 */

	/* XXX 15 bits hole, try to pack */
	/* Bitfield combined with next fields */

	__u64                      netns_dev;            /*    86     8 */

And this is for the strace struct:

struct bpf_prog_info_struct {
	...
	uint32_t                   ifindex;              /*    80     4 */
	uint32_t                   gpl_compatible:1;     /*    84: 0  4 */

	/* XXX 31 bits hole, try to pack */

	uint64_t                   netns_dev;            /*    88     8 */

How should this be fixed?

Thanks,
baruch

--
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -


More information about the Strace-devel mailing list