249 lines
7.4 KiB
Plaintext
249 lines
7.4 KiB
Plaintext
# $NetBSD: HACKS,v 1.9 2003/09/19 16:41:58 martin Exp $
|
|
#
|
|
# This file is intended to document workarounds for currently unsolved
|
|
# (mostly) compiler bugs.
|
|
#
|
|
# Format:
|
|
# hack title
|
|
# cdate creation date
|
|
# mdate mod date
|
|
# who responsible developer
|
|
# port ...
|
|
# affected ports, space separated, if not "all"
|
|
# file affected file : revision : line from : line to
|
|
# affected files and revision and line numbers describing hack
|
|
# multiple lines if necessary.
|
|
# pr NNNN ...
|
|
# problem reports this hack works around, if known. Space
|
|
# separated.
|
|
# regress src/regress/directory/where/test/found
|
|
# regression test directories, if available.
|
|
# descr
|
|
# insert short informal description (multi-line). (Longer ones
|
|
# should be in the PR database. More formal descriptions might
|
|
# be in the regress tree. See above).
|
|
# kcah
|
|
# closing bracket.
|
|
#
|
|
# this is a comment.
|
|
|
|
hack gcc 2.95/vax cannot handle __builtin_ffs()
|
|
cdate Fri Aug 23 21:31:15 CEST 2002
|
|
who ragge
|
|
port vax
|
|
file sys/lib/libkern/libkern.h : 1.42
|
|
descr
|
|
__builtin_ffs() is ifdef'd away if __vax__. Matt Thomas has added
|
|
this feature to GCC 3 so it can be removed when switching.
|
|
kcah
|
|
|
|
hack gcc 2.95.3 -O2 bug
|
|
cdate Sun Jan 6 23:17:28 UTC 2002
|
|
who lukem
|
|
port alpha
|
|
file sbin/newfs/mkfs.c : (all?)
|
|
pr 15156
|
|
descr
|
|
newfs built with gcc -O2 dumps core part-way through.
|
|
using -O1 avoids the problem
|
|
kcah
|
|
|
|
hack binutil-2.11-sparc64-pltrela
|
|
mdate 14 Aug 2001
|
|
who eeh
|
|
port sparc64
|
|
file libexec/ld.elf_so/reloc.c: 1.41 : 597 : 619
|
|
descr
|
|
The first for PLT entries are reserved. There is some disagreement
|
|
whether they should have associated relocation entries. Both the
|
|
SPARC 32-bit and 64-bit ELF specifications say that they should have
|
|
relocation entries, but the 32-bit SPARC binutils do not generate
|
|
them, and now the 64-bit SPARC binutils have stopped generating them
|
|
too.
|
|
|
|
To provide binary compatibility, we will check the first entry, if it
|
|
is reserved it should not be of the type JMP_SLOT. If it is JMP_SLOT,
|
|
then the 4 reserved entries were not generated and our index is 4
|
|
entries too far, so we frob the rela pointer.
|
|
kcah
|
|
|
|
hack gcc-arm32-schedule
|
|
mdate 04 May 2000
|
|
who is
|
|
file lib/libc/stdlib/strtoull.c : 1.3 : 78 : 81
|
|
file lib/libc/stdlib/strtouq.c : 1.15 : 73 : 76
|
|
pr 9613
|
|
descr
|
|
strtoull() was returning a wrong result for small numbers with bit 31
|
|
set. This is a gcc/arm32 compiler bug in gcc < 2.95.2. Adding
|
|
(void)&acc; works around it.
|
|
kcah
|
|
|
|
hack netstat ieee1394 address printing.
|
|
mdate 14 Nov 2000
|
|
who matt
|
|
file lib/libc/net/getnameinfo.c : 1.32 : 497 : 503
|
|
descr
|
|
Because the current implementation of IP over IEEE1394, the
|
|
fw device address contains more than just the IEEE1394 EUI-64.
|
|
So when printing out IEEE1394 addresses, ignore the extra stuff.
|
|
kcah
|
|
|
|
hack xterm vs. libterm
|
|
mdate 01 Aug 2000
|
|
who jdc
|
|
file xsrc/xc/programs/xterm/main.c : 1.2 : 3609 : 3614
|
|
pr 10383
|
|
descr
|
|
In order to extend the termcap string over 1023 bytes, a ZZ entry was
|
|
introduced to point to a memory location containing the full entry.
|
|
Without this hack, xterm will export a termcap containing the ZZ
|
|
entry, which will then be ignored by libterm. As xterm modifies the
|
|
exported termcap, this would cause those modifications to be ignored.
|
|
kcah
|
|
|
|
hack gcc-sh3-sed
|
|
mdate 23 Apr 2002
|
|
who thorpej
|
|
file usr.bin/sed/Makefile : 1.9 : 9 : 13
|
|
descr
|
|
The in-tree GCC 2.95.3-based compiler ICEs when building
|
|
with optimization for SuperH. Hack is to biuld with -O0.
|
|
kcah
|
|
|
|
hack gcc-unsigned-compare
|
|
cdate 09 Mar 2002
|
|
mdate 18 Mar 2002
|
|
who bjh21
|
|
port arm
|
|
file dist/bind/lib/nameser/ns_parse.c : 1.3
|
|
file dist/dhcp/minires/ns_parse.c : 1.3
|
|
file dist/dhcp/omapip/result.c : 1.2
|
|
file dist/dhcp/server/failover.c : 1.3
|
|
file gnu/dist/gawk/eval.c : 1.4
|
|
file gnu/dist/toolchain/bfd/bfd.c : 1.2
|
|
file gnu/dist/toolchain/bfd/format.c : 1.2
|
|
file gnu/dist/toolchain/gdb/target.c : 1.2
|
|
file sys/kern/vfs_subr.c : 1.172
|
|
descr When checking that a potentially-unsigned enum is >= 0, assign it
|
|
to an int first. This is necessary to avoid "comparison is always
|
|
true" warnings with -fshort-enums. Casting to an int really should
|
|
be enough, but turns out not to be.
|
|
kcah
|
|
|
|
hack wi-at-big-endian-bus
|
|
cdate 15 Mar 2002
|
|
who martin
|
|
file dev/ic/wireg.h
|
|
descr Add an option to access the underlying bus in big endian byte order
|
|
to work around deficiencies in bus_space_{read,write}_* macros.
|
|
Those don't allow the implementation of a proper pcmcia bus space
|
|
tag.
|
|
kcah
|
|
|
|
hack gcc 2.95.3 -O2 (-fgcse) bug
|
|
cdate Sun May 5 18:36:04 UTC 2002
|
|
who tsutsui
|
|
port macppc
|
|
file sys/arch/macppc/dev/adb_direct.c: 1.24 : 1895 : 1896
|
|
pr 16678
|
|
descr
|
|
gcc-2.95.3 does generates wrong code on optimization
|
|
by gcc -O2 (-fgcse), and adb_read_date_time() returns
|
|
wrong value on cuda system.
|
|
A null asm statement has been added to avoid this for workaround.
|
|
kcah
|
|
|
|
hack gcc-vax-libbz2
|
|
mdate 27 Jun 2002
|
|
who thorpej
|
|
port vax
|
|
file lib/libbz2/Makefile
|
|
descr
|
|
libbz2 is mis-compiled with optimization with GCC 2.95.3
|
|
on VAX. -O0 works around this problem.
|
|
kcah
|
|
|
|
hack egcs-pc532-ip6_mroute
|
|
cdate 09 Jul 2002
|
|
who simonb
|
|
port pc532
|
|
file sys/arch/pc532/conf/Makefile.pc532 : 1.70
|
|
file sys/arch/pc532/conf/files.pc532 : 1.47
|
|
descr
|
|
egcs 1.1.2 gets an "internal error--insn does not satisfy its
|
|
constraints" error compiling ip6_mroute.c with -O2 or greater.
|
|
-O1 works around this problem.
|
|
kcah
|
|
|
|
hack SuperH SH5 Toolchain Bugs
|
|
cdate 11 Jul 2002
|
|
who scw
|
|
port sh5
|
|
file usr.sbin/ndbootd/ndbootd.c : 1.6
|
|
file usr.sbin/traceroute/traceroute.c : 1.48
|
|
descr
|
|
The SuperH SH5 toolchain (2.97-sh5-010522) gets an internal
|
|
compiler error when assigning a bit-wise inverted value
|
|
under some circumstances.
|
|
Work around it by splitting the statement into two.
|
|
kcah
|
|
|
|
hack vax Toolchain bug
|
|
cdate 28 Mar 2003
|
|
who he
|
|
port vax
|
|
file sys/arch/vax/vax/intvec.S : 1.5
|
|
descr
|
|
Workaround for PR toolchain/20924. The assembler apparently
|
|
tries to range-check byte offsets when it doesn't have
|
|
sufficient information to make that decision.
|
|
Workaround uses `brw' instead of `brb' instruction.
|
|
kcah
|
|
|
|
hack specific knowledge of colours in curses code
|
|
cdate Sun Apr 6 11:05:24 BST 2003
|
|
who jdc
|
|
port all
|
|
file lib/libcurses/color.c : r1.24
|
|
descr
|
|
Swap red/blue and yellow/cyan colours for COLOR_OTHER.
|
|
Fix is to enhance libtermcap to understand terminfo-style % sequences.
|
|
See also:
|
|
http://mail-index.NetBSD.org/tech-userlevel/2003/04/06/0000.html
|
|
kcah
|
|
|
|
hack SuperH SH5 Toolchain Bugs
|
|
cdate 17 May 2003
|
|
who scw
|
|
port sh5
|
|
file lib/libpthread/pthread_lock.c : 1.7
|
|
descr
|
|
The SuperH SH5 toolchain generates incorrect PIC code when faced
|
|
with a symbol which is declared extern, but has local scope due
|
|
to being defined within an asm() statement (without being declared
|
|
.globl in that statement). Work around it by adding the .globl.
|
|
kcah
|
|
|
|
hack Compensation for differing types of LINUX_USRSTACK and USRSTACK
|
|
cdate 21 Aug 2003
|
|
who he
|
|
file sys/miscfs/procfs/procfs_linux.c : 1.14
|
|
descr
|
|
Not all ports have LINUX_USRSTACK and/or USRSTACK defined as
|
|
literals/constants, but refer to variables of a type which is
|
|
not "unsigned long", causing compilation of procfs_linux.c to
|
|
fail with "makes integer from pointer without a cast". This
|
|
is observed on e.g. the sun3 port. Ideally the "types" for
|
|
symbols should be consistent across all ports.
|
|
kcah
|
|
|
|
hack i386 / sparc default debugging type in GCC 3.3.1
|
|
cdate 19 Sept 2003
|
|
who mrg
|
|
file gnu/dist/gcc/gcc/config/{i386,sparc}/netbsd-elf.h
|
|
descr
|
|
Until i386 & sparc* switch to GDB 5.3, the default debugging
|
|
format needs to be stabs not DWARF.
|
|
kcah
|