This appears to break the gcc DRMDEBUG build
$ make atombios_dp.o CC=gcc COMPILER_VERSION=gcc4
gcc -g -Werror -Wall -Wimplicit-function-declaration -Wno-uninitialized
-Wno-pointer-sign -Wno-address-of-packed-member -Wno-constant-conversion
-Wframe-larger-than=2047 -mcmodel=kernel -mno-red-zone -mno-sse2 -mno-sse
-mno-3dnow -mno-mmx -msoft-float -fno-omit-frame-pointer -ffreestanding
-fno-pie -msave-args -O2 -pipe -nostdinc -I/usr/src/sys
-I/usr/src/sys/arch/amd64/compile/GENERIC.MP/obj -I/usr/src/sys/arch -DDDB
-DDIAGNOSTIC -DKTRACE -DACCOUNTING -DKMEMSTATS -DPTRACE -DPOOL_DEBUG -DCRYPTO
-DSYSVMSG -DSYSVSEM -DSYSVSHM -DUVM_SWAP_ENCRYPT -DFFS -DFFS2 -DFFS_SOFTUPDATES
-DUFS_DIRHASH -DQUOTA -DEXT2FS -DMFS -DNFSCLIENT -DNFSSERVER -DCD9660 -DUDF
-DMSDOSFS -DFIFO -DFUSE -DSOCKET_SPLICE -DTCP_ECN -DTCP_SIGNATURE -DINET6
-DIPSEC -DPPP_BSDCOMP -DPPP_DEFLATE -DPIPEX -DMROUTING -DMPLS -DBOOT_CONFIG
-DUSER_PCICONF -DAPERTURE -DMTRR -DNTFS -DHIBERNATE -DDRMDEBUG -DPCIVERBOSE
-DUSBVERBOSE -DWSDISPLAY_COMPAT_USL -DWSDISPLAY_COMPAT_RAWKBD
-DWSDISPLAY_DEFAULTSCREENS="6" -DX86EMU -DONEWIREVERBOSE -DMULTIPROCESSOR
-DMAXUSERS=80 -D_KERNEL -MD -MP -c
/usr/src/sys/dev/pci/drm/radeon/atombios_dp.c
cc1: warnings being treated as errors
/usr/src/sys/dev/pci/drm/radeon/atombios_dp.c: In function
'radeon_dp_probe_oui':
/usr/src/sys/dev/pci/drm/radeon/atombios_dp.c:376: warning: unknown conversion
type character 'h' in format
/usr/src/sys/dev/pci/drm/radeon/atombios_dp.c:376: warning: unknown conversion
type character 'h' in format
/usr/src/sys/dev/pci/drm/radeon/atombios_dp.c:376: warning: unknown conversion
type character 'h' in format
/usr/src/sys/dev/pci/drm/radeon/atombios_dp.c:376: warning: too many arguments
for format
/usr/src/sys/dev/pci/drm/radeon/atombios_dp.c:380: warning: unknown conversion
type character 'h' in format
/usr/src/sys/dev/pci/drm/radeon/atombios_dp.c:380: warning: unknown conversion
type character 'h' in format
/usr/src/sys/dev/pci/drm/radeon/atombios_dp.c:380: warning: unknown conversion
type character 'h' in format
/usr/src/sys/dev/pci/drm/radeon/atombios_dp.c:380: warning: too many arguments
for format
$ make intel_dp.o CC=gcc COMPILER_VERSION=gcc4
gcc -g -Werror -Wall -Wimplicit-function-declaration -Wno-uninitialized
-Wno-pointer-sign -Wno-address-of-packed-member -Wno-constant-conversion
-Wframe-larger-than=2047 -mcmodel=kernel -mno-red-zone -mno-sse2 -mno-sse
-mno-3dnow -mno-mmx -msoft-float -fno-omit-frame-pointer -ffreestanding
-fno-pie -msave-args -O2 -pipe -nostdinc -I/usr/src/sys
-I/usr/src/sys/arch/amd64/compile/GENERIC.MP/obj -I/usr/src/sys/arch -DDDB
-DDIAGNOSTIC -DKTRACE -DACCOUNTING -DKMEMSTATS -DPTRACE -DPOOL_DEBUG -DCRYPTO
-DSYSVMSG -DSYSVSEM -DSYSVSHM -DUVM_SWAP_ENCRYPT -DFFS -DFFS2 -DFFS_SOFTUPDATES
-DUFS_DIRHASH -DQUOTA -DEXT2FS -DMFS -DNFSCLIENT -DNFSSERVER -DCD9660 -DUDF
-DMSDOSFS -DFIFO -DFUSE -DSOCKET_SPLICE -DTCP_ECN -DTCP_SIGNATURE -DINET6
-DIPSEC -DPPP_BSDCOMP -DPPP_DEFLATE -DPIPEX -DMROUTING -DMPLS -DBOOT_CONFIG
-DUSER_PCICONF -DAPERTURE -DMTRR -DNTFS -DHIBERNATE -DDRMDEBUG -DPCIVERBOSE
-DUSBVERBOSE -DWSDISPLAY_COMPAT_USL -DWSDISPLAY_COMPAT_RAWKBD
-DWSDISPLAY_DEFAULTSCREENS="6" -DX86EMU -DONEWIREVERBOSE -DMULTIPROCESSOR
-DMAXUSERS=80 -D_KERNEL -MD -MP -c /usr/src/sys/dev/pci/drm/i915/intel_dp.c
cc1: warnings being treated as errors
/usr/src/sys/dev/pci/drm/i915/intel_dp.c: In function
'intel_dp_source_supports_hbr2':
/usr/src/sys/dev/pci/drm/i915/intel_dp.c:1202: warning: comparison is always
true due to limited range of data type
/usr/src/sys/dev/pci/drm/i915/intel_dp.c: In function 'intel_dp_probe_oui':
/usr/src/sys/dev/pci/drm/i915/intel_dp.c:4059: warning: unknown conversion type
character 'h' in format
/usr/src/sys/dev/pci/drm/i915/intel_dp.c:4059: warning: unknown conversion type
character 'h' in format
/usr/src/sys/dev/pci/drm/i915/intel_dp.c:4059: warning: unknown conversion type
character 'h' in format
/usr/src/sys/dev/pci/drm/i915/intel_dp.c:4059: warning: too many arguments for
format
/usr/src/sys/dev/pci/drm/i915/intel_dp.c:4063: warning: unknown conversion type
character 'h' in format
/usr/src/sys/dev/pci/drm/i915/intel_dp.c:4063: warning: unknown conversion type
character 'h' in format
/usr/src/sys/dev/pci/drm/i915/intel_dp.c:4063: warning: unknown conversion type
character 'h' in format
/usr/src/sys/dev/pci/drm/i915/intel_dp.c:4063: warning: too many arguments for
format
/usr/src/sys/dev/pci/drm/i915/intel_dp.c: In function 'intel_dp_init_connector':
/usr/src/sys/dev/pci/drm/i915/intel_dp.c:6059: warning: comparison is always
true due to limited range of data type
kprintf_length_specs in src/gnu/gcc/gcc/c-format.c has
{ "h", FMT_LEN_h, STD_C89, NULL, 0, 0 },
not
{ "h", FMT_LEN_h, STD_C89, "hh", FMT_LEN_hh, STD_C99 },
like printf_length_specs does.
printf(9) documents %hh as
"Argument of char type. This format specifier is accepted by the
kernel but will be handled as %h."
It also documents %j as not being supported and sf@ added that to gcc4
kprintf and subr_prf.c's kprintf() in 2013 (though not libsa printf).
On Thu, Dec 21, 2017 at 01:01:31PM +0200, Paul Irofti wrote:
> If no one objects, I will commit this tomorrow.
>
> On Tue, Dec 19, 2017 at 11:14:19PM +0200, Paul Irofti wrote:
> > Hi,
> >
> > I am currently trying to fix dual-monitor support for Intel HD Graphics 520.
> > The following fixes the build when DRM_DEBUG is enabled. OK?
> >
> > Paul
> >
> >
> > Index: dev/pci/drm/i915/intel_dp.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/pci/drm/i915/intel_dp.c,v
> > retrieving revision 1.29
> > diff -u -p -u -p -r1.29 intel_dp.c
> > --- dev/pci/drm/i915/intel_dp.c 30 Sep 2017 07:36:56 -0000 1.29
> > +++ dev/pci/drm/i915/intel_dp.c 19 Dec 2017 21:10:42 -0000
> > @@ -4056,11 +4056,11 @@ intel_dp_probe_oui(struct intel_dp *inte
> > return;
> >
> > if (intel_dp_dpcd_read_wake(&intel_dp->aux, DP_SINK_OUI, buf, 3) == 3)
> > - DRM_DEBUG_KMS("Sink OUI: %02hx%02hx%02hx\n",
> > + DRM_DEBUG_KMS("Sink OUI: %02hhx%02hhx%02hhx\n",
> > buf[0], buf[1], buf[2]);
> >
> > if (intel_dp_dpcd_read_wake(&intel_dp->aux, DP_BRANCH_OUI, buf, 3) == 3)
> > - DRM_DEBUG_KMS("Branch OUI: %02hx%02hx%02hx\n",
> > + DRM_DEBUG_KMS("Branch OUI: %02hhx%02hhx%02hhx\n",
> > buf[0], buf[1], buf[2]);
> > }
> >
> > Index: dev/pci/drm/radeon/atombios_dp.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/pci/drm/radeon/atombios_dp.c,v
> > retrieving revision 1.7
> > diff -u -p -u -p -r1.7 atombios_dp.c
> > --- dev/pci/drm/radeon/atombios_dp.c 1 Jul 2017 16:14:10 -0000
> > 1.7
> > +++ dev/pci/drm/radeon/atombios_dp.c 19 Dec 2017 21:10:42 -0000
> > @@ -373,11 +373,11 @@ static void radeon_dp_probe_oui(struct r
> > return;
> >
> > if (drm_dp_dpcd_read(&radeon_connector->ddc_bus->aux, DP_SINK_OUI, buf,
> > 3) == 3)
> > - DRM_DEBUG_KMS("Sink OUI: %02hx%02hx%02hx\n",
> > + DRM_DEBUG_KMS("Sink OUI: %02hhx%02hhx%02hhx\n",
> > buf[0], buf[1], buf[2]);
> >
> > if (drm_dp_dpcd_read(&radeon_connector->ddc_bus->aux, DP_BRANCH_OUI,
> > buf, 3) == 3)
> > - DRM_DEBUG_KMS("Branch OUI: %02hx%02hx%02hx\n",
> > + DRM_DEBUG_KMS("Branch OUI: %02hhx%02hhx%02hhx\n",
> > buf[0], buf[1], buf[2]);
> > }
> >
>