Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 724692

Summary: dev-util/strace-5.6 with sys-libs/musl-1.2.0: xlat/v4l2_ioctl_cmds.h:43:1: error: static assertion failed: "VIDIOC_QUERYBUF != _IOWR(\'V\', 9, struct_v4l2_buffer)"
Product: Gentoo Linux Reporter: Andrew Savchenko <bircoph>
Component: Current packagesAssignee: Gentoo musl team <musl>
Status: CONFIRMED ---    
Severity: normal CC: base-system
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Package list:
Runtime testing required: ---
Attachments: build.log
emerge --info

Description Andrew Savchenko gentoo-dev 2020-05-23 12:56:25 UTC
Created attachment 641060 [details]


strace-5.6 fails to build with musl as follows, earlier versions like 5.5. build fine.

This problem is known upstream, see the Url field above.

Please note that using <strace-5.6 doesn't really fix the issue, but just masks it: this problem is present in all strace versions using recent musl, but only 5.6 has the static test to spot it.

As a temporary workaround I suggest to mask >=strace-5.6 on musl.

As a proper solution I ask the musl team to look for the upstream issue 133: it is important to fix it properly since strace is critically important debugging tool. Maybe some fix on musl side is required.

x86_64-gentoo-linux-musl-gcc -DHAVE_CONFIG_H   -I./linux/x86_64 -I./linux/x86_64 -I./linux -I./linux -I. -I.     -DIN_MPERS -DMPERS_IS_mx32 -I./mpers-mx32  -Wall -Wempty-body -Wformat-security -Wignored-qualifiers -Wimplicit-fallthrough=5 -Winit-self -Wlogical-op -Wmissing-parameter-type -Wnested-externs -Wold-style-declaration -Wold-style-definition -Woverride-init -Wsign-compare -Wtype-limits -Wwrite-strings  -march=native -O3 -ftree-loop-im -fweb -frename-registers -fomit-frame-pointer -mfpmath=both -pipe -frecord-gcc-switches -c -o libmpers_mx32_a-v4l2.o `test -f 'v4l2.c' || echo './'`v4l2.c
In file included from static_assert.h:11,
                 from v4l2.c:13:
xlat/v4l2_ioctl_cmds.h:43:1: error: static assertion failed: "VIDIOC_QUERYBUF != _IOWR(\'V\',   9, struct_v4l2_buffer)"
   43 | static_assert((VIDIOC_QUERYBUF) == (_IOWR('V',   9, struct_v4l2_buffer)), "VIDIOC_QUERYBUF != _IOWR('V',   9, struct_v4l2_buffer)");
      | ^~~~~~~~~~~~~
xlat/v4l2_ioctl_cmds.h:64:1: error: static assertion failed: "VIDIOC_QBUF != _IOWR(\'V\',  15, struct_v4l2_buffer)"
   64 | static_assert((VIDIOC_QBUF) == (_IOWR('V',  15, struct_v4l2_buffer)), "VIDIOC_QBUF != _IOWR('V',  15, struct_v4l2_buffer)");
      | ^~~~~~~~~~~~~
xlat/v4l2_ioctl_cmds.h:71:1: error: static assertion failed: "VIDIOC_DQBUF != _IOWR(\'V\',  17, struct_v4l2_buffer)"
   71 | static_assert((VIDIOC_DQBUF) == (_IOWR('V',  17, struct_v4l2_buffer)), "VIDIOC_DQBUF != _IOWR('V',  17, struct_v4l2_buffer)");
      | ^~~~~~~~~~~~~
v4l2.c: In function ‘print_v4l2_ext_control’:
v4l2.c:906:11: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘int32_t’ {aka ‘const int’} [-Wformat=]
  906 |   tprintf(", value=%d, value64=%" PRId64, p->value, p->value64);
      |           ^~~~~~~~~~~~~~~~~~~~~~~                   ~~~~~~~~~~
      |                                                      |
      |                                                      int32_t {aka const int}
In file included from defs.h:21,
                 from v4l2.c:11:
/usr/include/inttypes.h:36:25: note: format string is defined here
   36 | #define PRId64 __PRI64 "d"
make[2]: *** [Makefile:4051: libmpers_mx32_a-v4l2.o] Error 1
Comment 1 Andrew Savchenko gentoo-dev 2020-05-23 12:57:12 UTC
Created attachment 641062 [details]
Comment 2 Andrew Savchenko gentoo-dev 2020-05-23 12:57:59 UTC
Created attachment 641064 [details]
emerge --info