On Thu, Dec 21, 2017 at 10:54:50PM +1100, Jonathan Gray wrote:
> 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).
%t rather.