760 lines
24 KiB
Plaintext
760 lines
24 KiB
Plaintext
# $NetBSD: HACKS,v 1.82 2006/07/31 17:10:57 christos 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 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 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 specific knowledge of colours in curses code
|
|
cdate Sun Apr 6 11:05:24 BST 2003
|
|
who jdc
|
|
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 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 GCC2 isn't C99
|
|
cdate 5 December 2003
|
|
who mrg
|
|
file gnu/dist/binutils/ld/ldlex.c: r1.2
|
|
descr
|
|
ldlex.c is generated from ldlex.l and we get macro redefinition
|
|
errors from it if __STDC_VERSION__ is not C99 compliant. This
|
|
hack forces NetBSD 1.6 and later systems to also include <stdint.h>
|
|
to get the relevant definitions. This hack should be backed out
|
|
when all platforms have switched away from GCC2.
|
|
kcah
|
|
|
|
hack gcc-strict-aliasing
|
|
cdate 6 August 2004
|
|
who junyoung
|
|
pr 26516
|
|
file src/usr.sbin/racoon/racoon/Makefile : 1.21
|
|
descr
|
|
GCC issues a warning "dereferencing type-punned pointer will break
|
|
strict-aliasing rules" when compiling
|
|
crypto/dist/kame/racoon/crypto/openssl.c with -O[23s]. Note that this
|
|
is due to use of type casting in a non-standard way in the code and
|
|
not a compiler bug. Once a new release of KAME with a proper fix
|
|
applied is imported this should be backed out.
|
|
kcah
|
|
|
|
hack gcc 3.3.3 wrong uninitialised variable
|
|
mdate 12 May 2006
|
|
who he
|
|
file usr.bin/msgc/msg_sys.def : 1.33-1.34
|
|
file distrib/utils/sysinst/aout2elf.c : 1.11
|
|
descr
|
|
Gcc 3.3.3 gets some -Wuninitialized warnings wrong. This is
|
|
just one of many in the tree, marked with
|
|
/* XXX -Wuninitialized [arch] */
|
|
in the source.
|
|
kcah
|
|
|
|
hack gcc4 wrong uninitialized variable
|
|
mdate 10 May 2006
|
|
who mrg
|
|
file bin/ksh/eval.c : 1.6
|
|
file bin/sh/histedit.c : 1.39
|
|
file bin/sh/parser.c : 1.60
|
|
file bin/systrace/systrace.c : 1.33
|
|
file crypto/dist/heimdal/kdc/524.c : 1.10
|
|
file crypto/dist/ssh/sftp.c : 1.20
|
|
file crypto/dist/ssh/ssh-keysign.c : 1.11
|
|
file dist/ipf/lib/hostname.c : 1.2
|
|
file dist/ipf/tools/ipmon.c : 1.8
|
|
file dist/ntp/ntpd/ntp_request.c : 1.4
|
|
file dist/ntp/ntpd/refclock_shm.c : 1.4
|
|
file dist/ntp/sntp/timing.c : 1.3
|
|
file dist/pppd/pppstats/pppstats.c : 1.3
|
|
file dist/smbfs/lib/smb/rap.c : 1.6
|
|
file dist/tcpdump/print-zephyr.c : 1.5
|
|
file distrib/utils/sysinst/aout2elf.c : 1.12
|
|
file gnu/libexec/uucp/uucico/uucico.c : 1.6
|
|
file lib/libc/citrus/citrus_csmapper.c : 1.6
|
|
file lib/libc/citrus/citrus_pivot_factory.c : 1.5
|
|
file lib/libc/inet/inet_cidr_ntop.c : 1.3
|
|
file lib/libc/inet/inet_ntop.c : 1.3
|
|
file lib/libc/stdio/vfwprintf.c : 1.8
|
|
file libexec/ld.elf_so/arch/m68k/mdreloc.c : 1.20
|
|
file libexec/ld.elf_so/arch/powerpc/ppc_reloc.c : 1.40
|
|
file libexec/ld.elf_so/arch/sh3/mdreloc.c : 1.22
|
|
file libexec/ld.elf_so/arch/sparc/mdreloc.c : 1.39
|
|
file libexec/ld.elf_so/arch/sparc64/mdreloc.c : 1.39
|
|
file libexec/ld.elf_so/arch/vax/mdreloc.c : 1.21
|
|
file libexec/ld.elf_so/arch/x86_64/mdreloc.c : 1.27
|
|
file sbin/fsck_ext2fs/dir.c : 1.19
|
|
file sbin/routed/rtquery/rtquery.c : 1.18
|
|
file sys/arch/amd64/amd64/pmap.c : 1.26
|
|
file sys/arch/i386/pci/piixpcib.c : 1.4
|
|
file sys/arch/m68k/m68k/pmap_motorola.c : 1.4
|
|
file sys/crypto/cast128/cast128.c : 1.9
|
|
file sys/ddb/db_command.c : 1.86
|
|
file sys/dev/cardbus/cardbus_map.c : 1.21
|
|
file sys/dev/fss.c : 1.25
|
|
file sys/dev/ic/igsfb.c : 1.39
|
|
file sys/dev/ic/mb86950.c : 1.5
|
|
file sys/dev/ic/midway.c : 1.71
|
|
file sys/dev/kttcp.c : 1.18
|
|
file sys/dev/rasops/rasops_bitops.h : 1.9
|
|
file sys/dev/pci/cmpci.c : 1.31
|
|
file sys/dev/pci/machfb.c : 1.45
|
|
file sys/dev/usb/ohci.c : 1.174
|
|
file sys/dev/usb/uhci.c : 1.196
|
|
file sys/dev/rasops/rasops_bitops.h : 1.9
|
|
file sys/dist/ipf/netinet/ip_nat.c : 1.10
|
|
file sys/dist/ipf/netinet/ip_rpcb_pxy.c : 1.8
|
|
file sys/dist/pf/net/pf.c : 1.22
|
|
file sys/fs/udf/udf_vnops.c : 1.4
|
|
file sys/kern/kern_sig.c : 1.219
|
|
file sys/kern/tty.c : 1.181
|
|
file sys/net/bpf.c : 1.116
|
|
file sys/net/zlib.c : 1.26
|
|
file sys/netccitt/if_x25subr.c : 1.37
|
|
file sys/netinet/in.c : 1.107
|
|
file sys/netsmb/smb_smb.c : 1.27
|
|
file sys/netsmb/smb_trantcp.c : 1.22
|
|
file sys/nfs/nfs_serv.c : 1.108
|
|
file sys/nfs/nfs_socket.c : 1.129
|
|
file sys/nfs/nfs_syscalls.c : 1.91
|
|
file sys/ufs/lfs/lfs_vfsops.c : 1.207 [also (char *)]
|
|
file usr.bin/ftp/ftp.c : 1.140
|
|
file usr.bin/find/function.c : 1.54
|
|
file usr.bin/mail/tty.c : 1.20
|
|
file usr.bin/nl/nl.c : 1.7
|
|
file usr.bin/systat/keyboard.c : 1.23
|
|
file usr.bin/usbhidctl/usbhid.c : 1.29
|
|
file usr.bin/vi/cl/cl_read.c : 1.5
|
|
file usr.bin/vi/ex/ex_cscope.c : 1.12
|
|
file usr.bin/vi/ex/ex_tag.c : 1.19
|
|
file usr.bin/vi/vi/v_txt.c : 1.15
|
|
file usr.sbin/altq/altqstat/qdisc_rio.c : 1.4
|
|
file usr.sbin/cron/do_command.c : 1.19
|
|
file usr.sbin/timed/timed/slave.c : 1.15
|
|
descr
|
|
GCC 4.1 gets many uninitialised variable warnings wrong. We should
|
|
really audit all the old hacks like this when older compilers are
|
|
removed from the tree, as many are probably no longer required.
|
|
The problem is that it does not recognize initialization via function
|
|
call pointer. I.e.
|
|
int p;
|
|
foo(&p);
|
|
does not mark p as initialized.
|
|
kcah
|
|
|
|
hack gcc4 pointer sign and strict aliasing problems
|
|
mdate 10 May 2006
|
|
who mrg
|
|
file bin/ed/Makefile : 1.33
|
|
file bin/systrace/Makefile : 1.12
|
|
file distrib/utils/sysinst/Makefile.inc : 1.44
|
|
file games/bcd/Makefile : 1.5
|
|
file games/dab/Makefile : 1.5
|
|
file games/larn/Makefile : 1.17
|
|
file games/pom/Makefile : 1.5
|
|
file lib/libasn1/Makefile : 1.26
|
|
file lib/libcrypt/Makefile : 1.17
|
|
file lib/libgssapi/Makefile : 1.16
|
|
file lib/libhdb/Makefile : 1.20
|
|
file lib/libkadm5clnt/Makefile : 1.21
|
|
file lib/libkadm5srv/Makefile : 1.25
|
|
file lib/libkrb5/Makefile : 1.35
|
|
file lib/libssh/Makefile : 1.6
|
|
file lib/libtelnet/Makefile : 1.26
|
|
file libexec/getty/Makefile : 1.14
|
|
file libexec/kadmind/Makefile : 1.19
|
|
file libexec/kpasswdd/Makefile : 1.14
|
|
file sbin/atactl/Makefile : 1.3
|
|
file sbin/cgdconfig/Makefile : 1.7
|
|
file sbin/clri/Makefile : 1.13
|
|
file sbin/dkctl/Makefile : 1.4
|
|
file sbin/dump/Makefile : 1.33
|
|
file sbin/fdisk/Makefile : 1.35
|
|
file sbin/fsck_ext2fs/Makefile : 1.11
|
|
file sbin/fsck_ffs/Makefile : 1.29
|
|
file sbin/fsdb/Makefile : 1.18
|
|
file sbin/mount_smbfs/Makefile : 1.4
|
|
file sbin/newfs/Makefile : 1.30
|
|
file sbin/newfs_sysvbfs/Makefile : 1.2
|
|
file sbin/restore/Makefile : 1.23
|
|
file sbin/veriexecctl/Makefile : 1.11
|
|
file sys/lib/libsa/Makefile : 1.59
|
|
file sys/arch/evbarm/adi_brh/brh_machdep.c : 1.24
|
|
file usr.bin/awk/Makefile : 1.9
|
|
file usr.bin/crontab/Makefile : 1.24
|
|
file usr.bin/ctags/Makefile : 1.8
|
|
file usr.bin/gzip/Makefile : 1.10
|
|
file usr.bin/ssh/sftp/Makefile : 1.10
|
|
file usr.bin/ssh/ssh/Makefile : 1.25
|
|
file usr.bin/vi/build/Makefile : 1.26
|
|
file usr.bin/telnet/Makefile : 1.40
|
|
file usr.bin/tn3270/tn3270/Makefile : 1.36
|
|
file usr.bin/tr/Makefile : 1.4
|
|
file usr.sbin/amd/amd/Makefile : 1.27
|
|
file usr.sbin/amd/amq/Makefile : 1.14
|
|
file usr.sbin/amd/libamu/Makefile : 1.20
|
|
file usr.sbin/amd/pawd/Makefile : 1.5
|
|
file usr.sbin/bind/Makefile.inc : 1.22
|
|
file usr.sbin/bind/libdns/Makefile : 1.3
|
|
file usr.sbin/bind/named/Makefile : 1.17
|
|
file usr.sbin/bootp/bootptest/Makefile : 1.2
|
|
file usr.sbin/chrtbl/Makefile : 1.6
|
|
file usr.sbin/cron/Makefile : 1.12
|
|
file usr.sbin/dhcp/Makefile.inc : 1.20
|
|
file usr.sbin/dumplfs/Makefile : 1.11
|
|
file usr.sbin/hprop/Makefile : 1.13
|
|
file usr.sbin/installboot/Makefile : 1.35
|
|
file usr.sbin/ipf/ipftest/Makefile : 1.32
|
|
file usr.sbin/isdn/isdnd/Makefile : 1.6
|
|
file usr.sbin/isdn/isdnmonitor/Makefile : 1.3
|
|
file usr.sbin/isdn/isdntel/Makefile : 1.2
|
|
file usr.sbin/isdn/isdntrace/Makefile : 126
|
|
file usr.sbin/mopd/common/Makefile : 1.10
|
|
file usr.sbin/mopd/mopd/Makefile : 1.9
|
|
file usr.sbin/mopd/mopprobe/Makefile : 1.7
|
|
file usr.sbin/makefs/Makefile : 1.17
|
|
file usr.sbin/mscdlabel/Makefile : 1.5
|
|
file usr.sbin/pkg_install/add/Makefile : 1.7
|
|
file usr.sbin/pkg_install/create/Makefile : 1.5
|
|
file usr.sbin/pkg_install/lib/Makefile : 1.28
|
|
file usr.sbin/ntp/ntpd/Makefile : 1.10/1.11
|
|
file usr.sbin/ntp/ntptime/Makefile : 1.4/1.5
|
|
file usr.sbin/pppd/Makefile.inc : 1.3
|
|
file usr.sbin/pppd/pppd/Makefile : 1.38
|
|
file usr.sbin/rarpd/Makefile : 1.10
|
|
file usr.sbin/rbootd/Makefile : 1.10
|
|
file usr.sbin/rpc.pcnfsd/Makefile : 1.17
|
|
file usr.sbin/rtadvd/Makefile : 1.9
|
|
file usr.sbin/tcpdump/Makefile : 1.42
|
|
file usr.sbin/wiconfig/Makefile : 1.3
|
|
descr
|
|
GCC 4.1 warns on pointer sign comparision/assignments and lots of
|
|
code does not conform. For now we use -Wno-pointer-sign and
|
|
-fno-strict-aliasing.
|
|
kcah
|
|
|
|
port vax
|
|
|
|
hack gcc4/vax compiler crash
|
|
cdate Fri Jun 30 22:39:12 PDT 2006
|
|
who mrg
|
|
file bin/csh/Makefile : 1.27
|
|
file lib/i18n_module/UTF7/Makefile : 1.2
|
|
descr
|
|
GCC4 on vax crashes. -O0 stops it happening so far...
|
|
kcah
|
|
|
|
hack gcc 2.95/vax doesn't like abort being used as function pointer
|
|
cdate Tue Dec 13 05:54:50 GMT 2005
|
|
who jmc
|
|
file lib/libc/rpc/svc_vc.c 1.15
|
|
descr
|
|
Provide a local definition for abort which doesn't include
|
|
the noreturn attribute which trips up gcc 2.95 on vax.
|
|
kcah
|
|
|
|
hack gcc 2.95/vax doesn't have stdbool.h and gettext needs it
|
|
cdate Mon May 9 12:16:22 CDT 2005
|
|
who jmc
|
|
file gnu/usr.bin/gettext/Makefile.inc.prog 1.5
|
|
gnu/usr.bin/gettext/libgrep/Makefile 1.3
|
|
gnu/usr.bin/gettext/libnlspr/Makefile 1.5
|
|
gnu/usr.bin/gettext/libnlsut/Makefile 1.3
|
|
descr
|
|
The latest gettext assumes a C99 environment or at least
|
|
configure checks to work around this. As we don't use configure
|
|
provide a stdbool.h for vax builds locally in directories from
|
|
the template provided by the gettext code.
|
|
kcah
|
|
|
|
hack gcc 2.95/vax can't handle __used__
|
|
cdate Fri May 6 14:30:53 CDT 2005
|
|
who jmc
|
|
file src/lib/libc/gmon/mcount.c 1.17
|
|
src/usr.bin/config/main.c 1.11
|
|
descr
|
|
Recent changes to mark this as __used__ to prevent optimization
|
|
away on sparc64 don't work on 2.95 vax. Ifdef'd back in the
|
|
old __unused__ if on vax.
|
|
kcah
|
|
|
|
hack gcc 2.95/vax cannot handle __builtin_ffs()
|
|
cdate Fri Aug 23 21:31:15 CEST 2002
|
|
who ragge
|
|
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-vax-libbz2
|
|
mdate 27 Jun 2002
|
|
who thorpej
|
|
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 gawk
|
|
mdate 8 Nov 2003
|
|
who ragge
|
|
file gnu/usr.bin/gawk/Makefile
|
|
descr
|
|
gawk is mis-compiled with optimization with GCC 2.95.3
|
|
on VAX. -O0 works around this problem.
|
|
kcah
|
|
|
|
hack vax Toolchain bug
|
|
cdate 28 Mar 2003
|
|
who he
|
|
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 vax gcc 2.95.3 -Wuninitialized workarounds
|
|
cdate 6 Nov 2003
|
|
who he
|
|
file sys/dev/bi/if_ni.c : 1.22
|
|
file sys/arch/vax/vax/ctu.c : 1.20
|
|
descr
|
|
Workaround for gcc 2.95.3 failing to detect that certain
|
|
variables will be initialized; so that this code compiles
|
|
with -Wuninitialized. Should be reviewed and possibly
|
|
reverted when gcc 3.3.2 is ready for vax.
|
|
kcah
|
|
|
|
hack vax gcc 2.95.3 structure initialization
|
|
cdat 13 May 2004
|
|
who cl
|
|
file sys/miscfs/kernfs/kernfs_vnops.c : 1.104
|
|
descr
|
|
Workaround for gcc 2.95.3 failing to initialize structures
|
|
and/or unions inside structures using nested designators.
|
|
Should be reverted when gcc >=3.3.3 is ready for vax.
|
|
kcah
|
|
|
|
hack vax gcc 2.95.3 needs -I. to build nslexer.c
|
|
cdat 6 Jun 2004
|
|
who mhitch
|
|
file lib/libc/arch/vax/Makefile.inc : 1.6
|
|
descr
|
|
It appears necessary to add -I. to CPPFLAGS when building
|
|
nslesxer.c. This may be caused by gcc 2.95.3 being used.
|
|
Should be reverted when a newer gcc is ready for vax.
|
|
kcah
|
|
|
|
hack vax gcc 2.95.3 doesn't understand "-std=c99"
|
|
cdat 5 April 2005
|
|
who tron
|
|
file src/share/mk/bsd.sys.mk
|
|
descr
|
|
We cannot use "-std=c99" for compiler warning level 4 and above
|
|
because gcc 2.95.3 doesn't support that option.
|
|
kcah
|
|
|
|
hack declare boolean_t in two IPF user-mode programs
|
|
cdate Tue Mar 7 19:19:20 CET 2006
|
|
who he
|
|
file dist/ipf/ipsend/iptests.c : 1.8
|
|
dist/ipf/ipsend/sock.c : 1.7
|
|
descr
|
|
The IPF user-mode programs ipsend and iptest first
|
|
include <sys/types.h> without _KERNEL defined, and
|
|
later include <sys/file.h> with _KERNEL defined.
|
|
This causes a build failure when building for vax,
|
|
since <sys/device.h> ends up being included without
|
|
bollean_t being defined by <sys/types.h>.
|
|
Build failure and further details documented in
|
|
PR#32907.
|
|
kcah
|
|
|
|
port sparc64
|
|
|
|
hack binutil-2.11-sparc64-pltrela
|
|
mdate 14 Aug 2001
|
|
who eeh
|
|
file libexec/ld.elf_so/arch/sparc64/mdreloc.c
|
|
descr
|
|
The first four 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
|
|
|
|
|
|
port arm
|
|
|
|
hack gcc-unsigned-compare
|
|
cdate 09 Mar 2002
|
|
mdate 18 Mar 2002
|
|
who bjh21
|
|
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 gcc 3.3.2/arm sys/kern/uipc_socket.c
|
|
cdate Tue Oct 28 18:02:16 GMT 2003
|
|
who skrll
|
|
pr 23044
|
|
file sys/arch/arm/conf/Makefile.arm : 1.19
|
|
descr
|
|
Performing a build.sh tools on a CATS with NFS mounted
|
|
obj and src directories results in "panic: receive 1"
|
|
The hack is to compile sys/kern/uipc_socket.c with
|
|
-fno-strict-aliasing
|
|
kcah
|
|
|
|
|
|
port pc532
|
|
|
|
hack egcs-pc532-ip6_mroute
|
|
cdate 09 Jul 2002
|
|
who simonb
|
|
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 gcc-pc532-duffs_device
|
|
cdate Mon Oct 27 07:23:05 UTC 2003
|
|
who simonb
|
|
file sys/arch/pc532/conf/Makefile.pc532 : 1.71
|
|
file sys/arch/pc532/conf/files.pc532 : 1.52
|
|
pr GCC PR optimization/5230
|
|
descr
|
|
gcc incorrectly gives an "unreachable code at beginning of
|
|
switch statement" for a Duff's device construct in
|
|
arch/pc532/dev/ncr.c. There is no way to disable just this
|
|
warning, so -Wno-error is turned on for this file.
|
|
kcah
|
|
|
|
hack gcc332-cppmacro-ice
|
|
cdate Sun Dec 7 12:48:33 UTC 2003
|
|
who simonb
|
|
file gnu/usr.bin/gcc3/libcpp/Makefile : 1.2
|
|
descr
|
|
gcc 3.3.2 gets an ICE when compiling cppmacro.c with -O2.
|
|
The hack is to use -O1 for this file. Fixed in gcc
|
|
-current mainline, unable to work out where the fix is
|
|
right now.
|
|
kcah
|
|
|
|
|
|
port sh3
|
|
|
|
hack gcc4-sh3-bz2
|
|
mdate 20 May 2006
|
|
who mrg
|
|
file lib/libbz2/Makefile : 1.10
|
|
descr
|
|
The in-tree GCC 4.1-based compiler generated too-far
|
|
pc-relative addresses. Hack is to build with -O0.
|
|
kcah
|
|
|
|
|
|
port sh5
|
|
|
|
hack SuperH SH5 Toolchain Bugs
|
|
cdate 11 Jul 2002
|
|
who scw
|
|
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 SuperH SH5 Toolchain Bugs
|
|
cdate 17 May 2003
|
|
who scw
|
|
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 gcc 3.3.2 on sh5 - ICE compiling reload1.c at -O2
|
|
cdate Sun Dec 7 19:44:05 GMT 2003
|
|
who scw
|
|
file gnu/usr.bin/gcc3/backend/Makefile : 1.13
|
|
descr
|
|
Gcc3 for sh5 gets an ICE compiling reload1.c at -O2.
|
|
Drop to -O1 for now when building for sh5.
|
|
kcah
|
|
|
|
hack gcc 3.3.2 on sh5 - ICE compiling elf32.c/elf64.c at -O2
|
|
cdate Sun Dec 7 21:10:46 GMT 2003
|
|
who scw
|
|
file gnu/lib/libbfd/Makefile : 1.39
|
|
descr
|
|
Gcc3 for sh5 gets an ICE compiling libbfd's elf32.c
|
|
and elf64.c at -O2.
|
|
Drop to -O1 for now when building for sh5.
|
|
kcah
|
|
|
|
|
|
hack gcc 3.3.2 on sh5 - fatal warning compiling function.c
|
|
cdate Sun Dec 7 19:44:05 GMT 2003
|
|
who scw
|
|
file gnu/usr.bin/gcc3/backend/Makefile : 1.13
|
|
descr
|
|
Gcc3 for sh5 issues a warning:
|
|
.../gnu/dist/gcc/gcc/function.c:4742: warning: `and' of
|
|
mutually exclusive equal-tests is always 0.
|
|
This causes the build to fail because of -Werror.
|
|
Work-around by defining NOGCCERROR when building for sh5.
|
|
kcah
|
|
|
|
hack gcc 3.3.3 on sh5 - ICE compiling rbtdb.c and rbtdb64.c
|
|
cdate Thu Nov 11 00:35:33 UTC 2004
|
|
who he
|
|
file usr.sbin/bind/libdns/Makefile/1.2
|
|
descr
|
|
Gcc3 for sh5 gets an ICE compiling these files at -O2.
|
|
Drop to -O1 for now when building for sh5.
|
|
kcah
|
|
|
|
hack gcc 3.3.3 nb3 on sh5 - ICE compiling bsd-comp.c
|
|
cdate Thu May 25 23:05:20 UTC 2005
|
|
who he
|
|
file sys/lkm/net/bsdcomp/Makefile : 1.3
|
|
descr
|
|
Gcc3 for sh5 gets an ICE compiling this at -O2,
|
|
"could not split insn". Drop to -O1 for sh5.
|
|
kcah
|
|
|
|
hack gcc 3.3.3 nb3 on sh5 - ICE compiling strtod.c
|
|
cdate Tue Jan 31 10:51:52 GMT 2006
|
|
who scw
|
|
file lib/libc/gdtoa/Makefile.inc : 1.2
|
|
descr
|
|
Gcc3 for sh5 gets an ICE compiling this at -O2,
|
|
"could not split insn". Drop to -O1 for sh5.
|
|
kcah
|
|
|
|
port sun2
|
|
|
|
hack gcc 3.3.2/mdsetimage
|
|
cdate Tue Oct 28 18:43:05 EST 2003
|
|
who fredette
|
|
file gnu/usr.sbin/mdsetimage/Makefile : 1.15
|
|
descr
|
|
mdsetimage.c causes cc1 to barf for as-yet unknown reasons.
|
|
this hack uses -O0 to avoid the problem.
|
|
kcah
|
|
|
|
hack gcc 3.3.2/installboot/ffs.c
|
|
cdate Tue Oct 28 18:43:05 EST 2003
|
|
who fredette
|
|
file usr.sbin/installboot/Makefile : 1.26
|
|
descr
|
|
ffs.c causes cc1 to barf for as-yet unknown reasons. this
|
|
hack uses -O0 to avoid the problem.
|
|
kcah
|
|
|
|
hack gcc 4.1.1/fsck_ffs/pass1.c
|
|
cdate Fri Jun 23 10:30:25 PDT 2006
|
|
who mrg
|
|
file sbin/fsck_ffs/Makefile : 1.30
|
|
file sbin/fsdb/Makefile : 1.19
|
|
file sbin/dump_lfs/Makefile : 1.9
|
|
file usr.sbin/ndbootd/Makefile : 1.2
|
|
descr
|
|
pass1.c causes cc1 to barf for as-yet unknown reasons. this
|
|
hack uses -O0 to avoid the problem. (these all seem to be the
|
|
same problem.)
|
|
kcah
|
|
|
|
|
|
port m68000
|
|
|
|
hack gcc 3.3.2/gcc/ra-colorize.c
|
|
cdate Wed Nov 5 11:03:13 EST 2003
|
|
who mrg
|
|
file gnu/usr.bin/gcc3/backend/Makefile : 1.11
|
|
descr
|
|
ra-colorize.c causes a whole spew of unreferenced .L* local
|
|
symbols. using -O0 (or even -O2 reportedly) avoids the problem.
|
|
Note this has been fixed in 3.3.3 at least on m68k,
|
|
but it hasn't been confirmed on sun2/m68000.
|
|
(it's too slow even on emulator and unlikely to build
|
|
toolchains on sun2 with its maximum 4MB RAM)
|
|
kcah
|
|
|
|
port sparc64
|
|
|
|
hack disable optimzations for uvm_bio.c on 32 bit kernels
|
|
cdate Sun Mar 21 14:14:04 MET 2004
|
|
who martin
|
|
file sys/arch/sparc64/conf/Makefile.sparc64 : 1.53-1.54
|
|
file sys/arch/sparc64/conf/files.sparc64 : 1.93
|
|
descr
|
|
The sparc compiler miscompiles uvm_bio.c when using
|
|
any optimization. This results in ubc_release panics.
|
|
kcah
|
|
|
|
port macppc
|
|
|
|
hack remove inline from rotate_{left,right}
|
|
cdate Tue Feb 22 13:43:25 EST 2005
|
|
who christos
|
|
file src/dist/bind/lib/dns/rbt.c
|
|
descr
|
|
The macppc gcc-3.3 compiler miscompiles rbt.c when these
|
|
functions are inlined. The error is:
|
|
.* named[368]: rbt.c:1584: INSIST(child != (void *)0) >failed
|
|
.* named[368]: exiting (due to assertion failure)
|
|
This is reportedly fixed in gcc-3.4
|
|
kcah
|
|
|
|
port hppa
|
|
|
|
hack hppa-gcc-3.3.3/grep/dfa.c
|
|
cdate Sun Aug 8 08:34:32 PDT 2004
|
|
who chs
|
|
file gnu/usr.bin/grep/grep/Makefile : 1.4
|
|
descr
|
|
gcc 3.3.3 generates bad code for dfa.c with -O2,
|
|
reduce optimization to -O1 to avoid the bug.
|
|
kcah
|
|
|
|
hack hppa boot-from-disk memory corruption
|
|
cdate Wed May 18 06:56:07 PDT 2005
|
|
who chs
|
|
file src/sys/dev/scsipi/scsipiconf.h : 1.98
|
|
descr
|
|
There is some bug with DMA on hppa that corrupts scsipi_xfer
|
|
structures, but it only shows up when booting from disk.
|
|
For now, we'll add some padding to scsipi_xfer so that
|
|
the corrupted memory is not otherwise used.
|
|
kcah
|
|
|
|
port mips
|
|
|
|
hack mips-shared-linker-load-address
|
|
cdate Fri Oct 7 08:33:10 UTC 2005
|
|
who simonb
|
|
file src/sys/kern/exec_elf32.c : 1.107
|
|
descr
|
|
With COMPAT_16 or previous enabled (which enables
|
|
ELF_INTERP_NON_RELOCATABLE) a recent ld.elf_so will
|
|
load and run at address 0. The check to fix this in
|
|
rev 1.107 only checks the first psection of the ELF
|
|
executable, which may not be loadable. A more correct
|
|
fix is to check the first loadable psection instead of
|
|
just the first psection.
|
|
kcah
|
|
|
|
port i386
|
|
|
|
hack minus-Os-broken-machdep-c
|
|
cdate Mon Jul 31 13:09:01 EDT 2006
|
|
who christos
|
|
file src/sys/arch/machdep.c : 1.576
|
|
descr
|
|
gcc-4 miscompiles this file with -Os and the resulting
|
|
kernel resets as reported in PR33918
|
|
kcah
|