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]);
> >  }
> >  
> 

Reply via email to