Bug#558492: kbd_1.15.1-1(ia64/unstable): FTBFS: compile errors
A message that is not in the archive (sent off-list or not yet received): [email protected]
Hi Alexey!
kbd fails to build on several architectures supported by Debian GNU/Linux, namely Alpha, ARM, PA-RISC, IA-64, MIPS and SPARC. This is the relevant part from the original bug report:
Quoted 11 lines · On Sun, Nov 29, 2009 at 04:53:49AM -0700, [email protected] wrote:
There was an error while trying to autobuild your package:
Quoted 9 lines
[…]
gcc -DHAVE_CONFIG_H -I. -I.. -DDATADIR=\"/usr/share\" -DLOCALEDIR=\"/usr/share/locale\" -Wall -Wextra -Wmissing-noreturn -Wdisabled-optimization -Wcast-align -Wshadow -Wmissing-format-attribute -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Werror -funit-at-a-time -Os -g -MT psffontop.o -MD -MP -MF .deps/psffontop.Tpo -c -o psffontop.opsffontop.c
cc1: warnings being treated as errorspsffontop.c: In function 'readpsffont':
psffontop.c:253: error: cast increases required alignment of target type make[1]: *** [psffontop.o] Error 1
make[1]: Leaving directory `/build/buildd/kbd-1.15.1/src'
make: *** [build-stamp] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2
(If you wish, you can find the full build logs for all architectures at
<https://buildd.debian.org/build.cgi?pkg=kbd>.)
As far as I can tell, the affected archs align data structures just like the member with the highest alignment. The cast from (char *) to (struct psf2_header *) fails as inputbuf is byte-aligned while the struct’s alignment matches that of int (likely word-aligned).
I guess the most “correct” fix is a memcpy() of the input buffer to the correctly aligned address of psfhdr. Simply allowing unaligned access, as forced by “(struct psf_header2 *) (void *) &inputbuf[0]”, might also work, but I don’t know enough about the situation to say this with certainty.
I’d be glad about suggestions from your part :-)
Cheers,
Signature · 1 line
Michael Schutte <[email protected]>
Quoted 5 lines · Michael Schutte
Hi Alexey!
kbd fails to build on several architectures supported by Debian GNU/Linux, namely Alpha, ARM, PA-RISC, IA-64, MIPS and SPARC. This is the relevant part from the original bug report:
Thanks for the report.
Quoted 5 lines
(If you wish, you can find the full build logs for all architectures at
<https://buildd.debian.org/build.cgi?pkg=kbd>.)I guess the most “correct” fix is a
memcpy()of the input buffer to the correctly aligned address of psfhdr.
Yes. I think this is the most correct way.
This should fix the problem. But I checked the only cross-compilation for ARM.
Can you confirm fix for other archs?
Signature · 1 line
Rgrds, legion
tag 558492 pending
thanks
Quoted 7 lines · Alexey Gladkov
Quoted 2 lines · Michael Schutte
I guess the most “correct” fix is a
memcpy()of the input buffer to the correctly aligned address of psfhdr.Yes. I think this is the most correct way.
Great. I’m applying this for the next Debian revision as well.
Quoted 4 lines
This should fix the problem. But I checked the only cross-compilation for ARM.
Can you confirm fix for other archs?
I just tried a native build on an ARM machine; everything seems fine. Debian’s autobuilders will soon provide feedback regarding the other architectures :-)
Cheers,
Signature · 1 line
Michael Schutte <[email protected]>
Quoted 3 lines · Michael Schutte
I just tried a native build on an ARM machine; everything seems fine. Debian’s autobuilders will soon provide feedback regarding the other architectures :-)
For the record, all succeeded.
Signature · 1 line
Michael Schutte <[email protected]>