The code outputs the dc then calls the device specific externalize routines to fill in the dc_data area. The old code assumed that dc_data started one byte from the end of the dc, but with the compiler optimizing alignment and padding, this isn't always the case. Do an explicit &(dc.dc_data) - &dc. This fixes lsdev -c which must have been broken for some time.
Description
freebsd kernel with SKQ
Languages
C
63.3%
C++
23.3%
Roff
5.1%
Shell
2.9%
Makefile
1.5%
Other
3.4%