958 lines
30 KiB
Plaintext
958 lines
30 KiB
Plaintext
# $NetBSD: HACKS,v 1.175 2016/10/20 07:33:28 he 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-5.3 optimizes memset+malloc -> calloc inside calloc
|
|
mdate 4 May 2016
|
|
who christos
|
|
file external/gpl2/lib/libmalloc/lib/Makefile 1.3 -> 1.5
|
|
descr
|
|
resulting in infinite recursion; we prevent this with
|
|
-fno-builtin-malloc
|
|
kcah
|
|
|
|
hack turn off tree-vrp for parts of ufs_lookup.c
|
|
mdate 28 April 2016
|
|
who mrg christos
|
|
file src/sys/ufs/ufs/ufs_lookup.c : 1.144
|
|
pr 51094
|
|
descr
|
|
with -ftree-vrp enabled in ufs_lookup.c sometimes bad dir
|
|
panicks are see.
|
|
hcah
|
|
|
|
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 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 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/msgc/msg_sys.def : 1.33-1.34
|
|
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 distrib/utils/sysinst/Makefile.inc : 1.44
|
|
file distrib/utils/x_dhclient/Makefile : 1.15
|
|
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/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/tcpdump/Makefile : 1.42
|
|
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
|
|
|
|
hack disable ctf for gcc-4.8 build
|
|
mdate April 3 2014
|
|
who christos
|
|
file external/gpl3/gcc/usr.bin/Makefile.frontend : 1.4
|
|
file external/gpl3/gcc/usr.bin/Makefile.backend : 1.5
|
|
descr
|
|
nbctfconvert -g -L VERSION -g fold-const.o
|
|
ERROR: fold-const.c: failed to get mapping for tid 79154 \
|
|
((null)) <13532>
|
|
kcak
|
|
|
|
hack emacs aborting on exit (libgcc issue)
|
|
mdate 7 November 2011
|
|
who christos
|
|
file external/gpl3/gcc/dist/gcc/unwind-dw2-fde.c : 1.2
|
|
descr
|
|
GCC 4.5.3 now calls __unregister_frame_info_bases() on unloading/exit
|
|
to do just that. If the symbol requested is not found, then it aborts.
|
|
emacs 23.3 triggers this assertion. For now disable aborting, and
|
|
silently ignore.
|
|
kcah
|
|
|
|
hack cross-building hack on Darwin
|
|
mdate 20 July 2008
|
|
who agc
|
|
file src/distrib/common/Makefile.mdset : 1.33
|
|
descr
|
|
Darwin has problems with getopt() when used in mdsetimage -v,
|
|
due to the difference between BSD and libiberty() getopt
|
|
implementations, more fully described in
|
|
http://mail-index.netbsd.org/current-users/2008/06/27/msg003242.html
|
|
and the subsequent thread. For just now, we just have an ugly
|
|
workaround not to call mdsetimage with the -v argument on Darwin
|
|
kcah
|
|
|
|
hack avoid rebuilding asn1 libraries
|
|
mdate 03 August 2008
|
|
who veego
|
|
file src/crypto/dist/heimdal/lib/asn1/gen.c : 1.10
|
|
file src/lib/libasn1/Makefile : 1.32
|
|
file src/lib/libhdb/Makefile : 1.23
|
|
file src/lib/libgssapi/Makefile : 1.20
|
|
file src/lib/libhx509/Makefile : 1.3
|
|
pr 9702 39185
|
|
descr
|
|
asn1_compile does not check if generated header files do not have to
|
|
be rebuild.
|
|
Generate .hx files and copy it in the Makefiles if they changed.
|
|
kcah
|
|
|
|
hack avoid gcc4 -O1 bug in loop optimize
|
|
cdate 29 November 2008
|
|
who tsutsui
|
|
file src/sbin/ifconfig/Makefile : 1.39
|
|
pr 40036 40066
|
|
descr
|
|
gcc -O1 seems to generate wrong code in loop optimize so that
|
|
ifconfig lo0 inet6 doesn't return error even if a kernel
|
|
doesn't have IPv6 support. (see the above PRs for details)
|
|
For workaround, specify -fno-loop-optimize on m68000,
|
|
which uses -O1 by default.
|
|
kcah
|
|
|
|
hack MKPIE ldscript for /usr.sbin/crash
|
|
cdate 22 April 2010
|
|
who christos
|
|
file src/usr.sbin/crash/Makefile : 1.5
|
|
file src/usr.sbin/crash/ldscript.crash : 1.1
|
|
pr N/A
|
|
descr
|
|
fixed in binutils-2.20.1. Linking with MKPIE=yes causes overlapping
|
|
sections
|
|
kcah
|
|
|
|
hack Disable fortification for /usr/bin/makeinfo
|
|
cdata 24 Mar 2014
|
|
who tron
|
|
file src/gnu/usr.bin/texinfo/makeinfo/Makefile : 1.8
|
|
pr N/A
|
|
descr
|
|
If "makeinfo" is compiled with "-D_FORTIFY_SOURCE=2" using GCC 4.8.3
|
|
it fails to process certain texinfo files, e.g. "cl.texi"
|
|
included in the Emacs 24.3 distribution.
|
|
kcah
|
|
|
|
hack Disable Stack Smash Protection for /usr/X11R7/bin/xauth
|
|
cdata 05 Apr 2014
|
|
who tron
|
|
file src/external/mit/xorg/bin/xauth/Makefile : 1.4
|
|
pr N/A
|
|
descr
|
|
If "xauth" is compile with "USE_SSP" set to "yes" it fails
|
|
mysteriously with an error message like this:
|
|
|
|
/usr/X11R7/bin/xauth: file /foo/bar/.Xauthority does not exist
|
|
/usr/X11R7/bin/xauth: unable to link authority file /foo/bar/.Xauthority, use /foo/bar/.Xauthority
|
|
|
|
The compiler seems to get confused about the two filename variables
|
|
used in the link(2) system call.
|
|
kcah
|
|
|
|
hack g++ 5.x barfs on volatile in constexpr initializers
|
|
cdata 27 Aug 2015
|
|
who pooka
|
|
file src/lib/libpthread/pthread_types.h : 1.17
|
|
pr lib/49989
|
|
descr
|
|
Trying to use e.g. pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER
|
|
in C++ results in:
|
|
error: temporary of non-literal type '__pthread_mutex_st'
|
|
in a constant expression
|
|
constexpr mutex() _NOEXCEPT : __m_(PTHREAD_MUTEX_INITIALIZER) {}
|
|
[...]
|
|
include/pthread_types.h:101:8: note: '__pthread_mutex_st' is
|
|
not literal because:
|
|
struct __pthread_mutex_st {
|
|
^
|
|
include/pthread_types.h:103:17: note: non-static data
|
|
member '__pthread_mutex_st::ptm_errorcheck' has volatile type
|
|
pthread_spin_t ptm_errorcheck;
|
|
kcah
|
|
|
|
hack libm cabs{,f,l} and g++
|
|
cdata 11 Jan 2016
|
|
who christos
|
|
pr lib/50646
|
|
file src/external/gpl3/gcc.old/dist/libstdc++-v3/include/std/complex : 1.2
|
|
file src/external/gpl3/gcc/dist/libstdc++-v3/include/std/complex : 1.2
|
|
descr
|
|
Our cabs and cabsf have a different argument format on some architectures
|
|
and for that we have created in libm/compat_cabs{,f}.c. The standard
|
|
versions in libc are __c99_cabs{,f,l} and there are __RENAME()'s in
|
|
<complex.h>. G++ uses __builtin_cabs{,f,l} to implement those and they
|
|
translate by default to cabs{,f,l} which gets defined to cabs{,f} (the
|
|
wrong function) and an undefined cabsl. I've changed <complex> to use
|
|
the __c99_cabs{,f,l} directly. Using the __builtin_cabs{,f,l} in gcc is
|
|
still broken.
|
|
kcah
|
|
|
|
port vax
|
|
|
|
hack gcc4/vax ICE
|
|
cdate
|
|
who tsutsui
|
|
file sys/arch/vax/conf/Makefile.vax
|
|
descr
|
|
GCC4 on vax gets ICE on compiling sys/ddb/db_command.c.
|
|
-fno-tree-ter prevents it so add it to COPTS.
|
|
kcah
|
|
|
|
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 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
|
|
|
|
hack pcc 0.9.9 large string literals
|
|
cdat 8 July 2008
|
|
who gmcgarry
|
|
file sys/conf/param.c : 1.58
|
|
descr
|
|
Workaround for pcc 0.9.9 not handling large string literals
|
|
which causes kernels with 'options INCLUDE_CONFIG_FILE' to
|
|
fail compilation.
|
|
There is a proposal on the pcc mailing list to stuff config
|
|
file in ELF section.
|
|
kcah
|
|
|
|
hack xorg warnings
|
|
cdat 30 July 2008, 3 June, 2013
|
|
who mrg
|
|
file external/mit/xorg/lib/libSM/Makefile : 1.2
|
|
external/mit/xorg/lib/libX11/Makefile.libx11 : 1.10
|
|
external/mit/xorg/lib/libXext/Makefile : 1.2
|
|
external/mit/xorg/lib/libXfont/Makefile : 1.2
|
|
descr
|
|
Disable several warnings or use -Wno-error across Xorg sources
|
|
while we get them working
|
|
kcah
|
|
|
|
hack 32 bit time leftovers
|
|
cdat 11 January 2009
|
|
who christos
|
|
file lib/libc/time/localtime.c : 1.41
|
|
lib/libc/time/zic.c : 1.23
|
|
descr
|
|
The timezone compiled files still contain 32 bit time_t
|
|
quantities. I did not want to version the files because
|
|
the ``parser'' is too ugly for words. What needs to be
|
|
done, is to rewrite the parser from scratch also to avoid
|
|
potential core-dumps from parsing invalid files.
|
|
kcah
|
|
|
|
hack 32 bit time leftovers
|
|
cdat 11 January 2009
|
|
who christos
|
|
file various
|
|
descr
|
|
Many filesystem on-disk formats have 32 bit times.
|
|
kcah
|
|
|
|
hack gcc 4.5 fsdb miscompile
|
|
date Sat Nov 9 11:03:02 EST 2013
|
|
who christos
|
|
file src/sbin/fsdb/Makefile : 1.36 (and earlier)
|
|
descr
|
|
src/sbin/fsdb/fsdb.c: In function 'findblk':
|
|
src/sbin/fsdb/fsdb.c:610:1: error: unrecognizable insn:
|
|
(insn 941 940 942 134 src/sbin/fsdb/fsdb.c:589 (set (reg:SI 604)
|
|
(subreg:SI (mem/s/j:DI (plus:SI (mult:SI (reg:SI 602)
|
|
(const_int 8 [0x8]))
|
|
(reg/f:SI 601)) [0 curinode.99_378->dp2.di_ib S8 A32]) 4)) \
|
|
-1 (nil))
|
|
src/sbin/fsdb/fsdb.c:610:1: internal compiler error: in \
|
|
extract_insn, at recog.c:2103
|
|
kcah
|
|
|
|
hack gcc 4.8 gcc miscompiles
|
|
date Sat Nov 9 16:35:18 EST 2013
|
|
who christos
|
|
file distrib/utils/x_ping/Makefile
|
|
file distrib/vax/miniroot/Makefile.inc
|
|
file distrib/vax/ramdisk/Makefile
|
|
file external/gpl3/gdb/lib/libdecnumber/Makefile
|
|
file sbin/fsdb/Makefile
|
|
file sbin/newfs_ext2fs/Makefile
|
|
file sbin/ping/Makefile
|
|
file usr.sbin/lmcconfig/Makefile
|
|
file usr.sbin/mtrace/Makefile
|
|
descr
|
|
external/gpl3/gcc/dist/gcc/expmed.c:2781:1:
|
|
internal compiler error: in change_address_1, at emit-rtl.c:2019
|
|
external/gpl3/gcc/dist/gcc/recog.c:770:1:
|
|
internal compiler error: in change_address_1, at emit-rtl.c:2019
|
|
external/gpl3/gcc/dist/libdecnumber/decNumber.c:7214:3:
|
|
internal compiler error: in change_address_1, at emit-rtl.c:2019
|
|
sbin/ping/ping.c:679:1:
|
|
internal compiler error: in change_address_1, at emit-rtl.c:2019
|
|
sbin/newfs_ext2fs/mke2fs.c:681:1:
|
|
internal compiler error: in reload_combine_note_use,
|
|
at postreload.c:1561
|
|
external/gpl3/gdb/dist/libdecnumber/decNumber.c:7214:3:
|
|
internal compiler error: in change_address_1, at emit-rtl.c:2019
|
|
usr.sbin/lmcconfig/lmcconfig.c:939:3:
|
|
internal compiler error: in reload_combine_note_use,
|
|
at postreload.c:1561
|
|
usr.sbin/mtrace/mtrace.c:1655:1:
|
|
internal compiler error: in change_address_1, at emit-rtl.c:2019
|
|
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/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-4.5 arm CNAME hostname lookup failure on
|
|
certain DNS environment (probably -ftree-ter problem)
|
|
cdate Sat Dec 24 04:59:00 UTC 2011
|
|
mdate
|
|
who tsutsui
|
|
file lib/libc/net/Makefile.inc 1.79
|
|
descr Hostname lookup against CNAMEs by some commands fails
|
|
on certain DNS environments if lib/libc/net/gethnamaddr.c
|
|
(ping(8) etc) and lib/libc/net/getaddrinfo.c (ftp(1) etc)
|
|
are compiled with -O2, even though nslookup(1) against
|
|
the same CNAME returns proper hostname.
|
|
They works properly if compiled with -O2 -fno-tree-ter.
|
|
Also -O2 fails but -O2 -fno-tree-ter works on the following
|
|
test case in gcc bugzilla:
|
|
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48863#c4
|
|
kcah
|
|
|
|
hack gcc-4.5 arm without -fno-tree-vrp generate broken code
|
|
cdate Wed Nov 14 13:02:02 JST 2012
|
|
who msaitoh
|
|
file lib/libc/softfloat/Makefile.inc
|
|
pr 46953
|
|
regress src/tests/lib/libm/t_cbrt
|
|
regress src/tests/lib/libm/t_ceil
|
|
regress src/tests/lib/libm/t_exp
|
|
regress src/tests/lib/libm/t_log
|
|
regress src/tests/lib/libm/t_scalbn
|
|
regress src/tests/lib/libm/t_sinh
|
|
regress src/tests/lib/libm/t_sqrt
|
|
descr Gcc has a bug in tree optimization. For adddf3,
|
|
-INF + -INF returns 0 without -fno-tree-vrp.
|
|
Debugging with -fdump-tree-all shows that
|
|
softfloat.c.021t.cleanup_cfg is ok but softfloat.c.023t.ssa
|
|
is broken.
|
|
kcah
|
|
|
|
port sh3
|
|
|
|
hack gcc4-sh3-bz2
|
|
cdate Sun May 21 03:34:57 UTC 2006
|
|
mdate Fri May 16 13:13:00 UTC 2008
|
|
who mrg, tsutsui
|
|
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
|
|
-fno-loop-optimize.
|
|
kcah
|
|
|
|
port sh3eb
|
|
hack gcc4.8.1
|
|
cdate Thu Nov 7 16:31:23 EST 2013
|
|
who christos
|
|
file src/sys/rump/net/lib/libnetbt/Makefile : 1.2
|
|
desrc
|
|
for profiling
|
|
compile l2cap_signal.c with -O0 to avoid:
|
|
./netbt/l2cap_signal.c:36:
|
|
/p/netbsd/cvsroot/src/sys/rump/net/lib/libnetbt/../../../../\
|
|
netbt/l2cap_signal.c: In function 'l2cap_recv_signal':
|
|
./sh3/byte_swap.h:20:2: error: 'asm' operand requires \
|
|
impossible reload
|
|
__asm volatile ("swap.b %1,%0" : "=r"(rval) : "r"(x));
|
|
kcah
|
|
|
|
port sh3el
|
|
hack gcc4.8.1
|
|
cdate Fri Nov 8 19:27:01 EST 2013
|
|
who christos
|
|
file src/external/bsd/libevent/lib/libevent/Makefile : 1.2
|
|
desrc
|
|
for profiling
|
|
compile evdns.c with -O0 to avoid:
|
|
./sh3/byte_swap.h:20:2: error: 'asm' operand requires \
|
|
impossible reload
|
|
__asm volatile ("swap.b %1,%0" : "=r"(rval) : "r"(x));
|
|
kcah
|
|
|
|
hack gcc4.8.1
|
|
cdate Fri Nov 8 19:34:48 EST 2013
|
|
who christos
|
|
file src/usr.sbin/racoon/Makefile : 1.27
|
|
desrc
|
|
for profiling
|
|
compile ipsec_doi.c with -O0 to avoid:
|
|
./sh3/byte_swap.h:20:2: error: 'asm' operand requires \
|
|
impossible reload
|
|
__asm volatile ("swap.b %1,%0" : "=r"(rval) : "r"(x));
|
|
kcah
|
|
|
|
port m68000
|
|
|
|
hack gcc4-m68000
|
|
cdate Fri Feb 8 10:29:37 PST 2008
|
|
mdate Sun May 4 15:37:19 UTC 2008
|
|
who mrg, tsutsui
|
|
file rescue/Makefile : 1.21
|
|
file sbin/dump_lfs/Makefile : 1.9
|
|
file sbin/fsck_ffs/Makefile : 1.35
|
|
file sbin/fsdb/Makefile : 1.22
|
|
file share/mk/sys.mk : 1.96
|
|
file usr.sbin/ndbootd/Makefile : 1.5
|
|
descr
|
|
Several internal compiler errors with gcc -O1
|
|
around 64bit integer arithmetic.
|
|
This hack uses -O1 and adds some -fno-tree-foo options
|
|
to avoid the problem.
|
|
This might be related with GCC Bugzilla Bug 32424.
|
|
kcah
|
|
|
|
port m68k,sh3,vax
|
|
|
|
hack gcc-4.8.1
|
|
cdate Wed Nov 6 20:41:35 EST 2013
|
|
who christos
|
|
file src/external/gpl3/gcc/libstdc++-v3/Makefile : 1.6
|
|
descr
|
|
compile hashtable_c++0x.cc with -O2 instead of -Os to
|
|
produce missing instantiation of std::lower_bound expansion
|
|
for unsigned long.
|
|
kcah
|
|
|
|
port sparc
|
|
|
|
hack avoid NULL pointer derefs in savefpstate IPIs and GCC 4.5.3
|
|
cdate Sun Aug 14 19:26:48 PDT 2011
|
|
who mrg
|
|
file sys/arch/sparc64/sparc/cpu.c : 1.234
|
|
file sys/arch/sparc64/sparc/cpuvar.h : 1.90
|
|
file sys/arch/sparc64/sparc/genassym.cf : 1.67
|
|
file sys/arch/sparc64/sparc/locore.s : 1.265
|
|
descr
|
|
Something is wrong with GCC 4.5.3 and the savefpstate IPI.
|
|
Post newlock2 there was a bug where a lock was reduced from
|
|
IPL_SCHED to IPL_VM (?) and occasionally savefpstate IPI
|
|
would crash due to NULL IPI. This was fixed by re-using the
|
|
right IPL value. However, GCC 4.5.3 build kernels have the
|
|
same problems. For now, the hack is re-instated.
|
|
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
|
|
|
|
hack mips-duplicate-ras-end-label
|
|
cdate Sat Sep 2 23:29:42 2006
|
|
who martin
|
|
file src/regress/sys/kern/ras/ras3/Makefile : 1.3
|
|
descr
|
|
Add -fno-reorder-blocks to CFLAGS to avoid duplicate
|
|
labels by duplicated __asm output from RAS_END()
|
|
macro.
|
|
kcah
|
|
|
|
hack mips-mcount-assembler-warning
|
|
cdate Tue Jul 29 14:16:52 UTC 2008
|
|
who lukem
|
|
file src/lib/libc/gmon/Makefile.inc : 1.8
|
|
descr
|
|
Workaround for PR port-mips/39192.
|
|
common/lib/libc/gmon/mcount.c generates a (fatal)
|
|
assembler warning on MIPS:
|
|
Warning: No .cprestore pseudo-op used in PIC code
|
|
Add COPTS.count.c+=-Wa,--no-warn to avoid -Wa,--fatal-warnings
|
|
kcah
|
|
|
|
port i386
|
|
|
|
hack use volatile intermediate variable to enforce rounding
|
|
cdate Tue Aug 1 22:15:55 MEST 2006
|
|
who drochner
|
|
file src/lib/libm/src/lrintf.c : 1.4
|
|
file src/lib/libm/src/s_rintf.c : 1.8
|
|
descr
|
|
gcc-4 does subsequent operations on "float" values within
|
|
the i387 FPU without rounding the intermediate results
|
|
kcah
|
|
|
|
port x86
|
|
hack turn off optimization for biosdisk_ll.c because otherwise
|
|
we are pass the wrong arguments to biosdisk_read().
|
|
$ cd /usr/src/sys/arch/i386/floppies/bootflopp-com
|
|
$ qemu-system-i386 -nographic -fda boot-com1.fs -boot a
|
|
who christos
|
|
file src/sys/arch/i386/stand/lib/Makefile : 1.38
|
|
descr
|
|
Turning on DISK_DEBUG shows the problem. We should find
|
|
out which option is causing this.
|
|
hcah
|
|
|
|
port powerpc
|
|
|
|
hack avoid using __builtin_return_address(0) because it fails in
|
|
Xorg's module loader
|
|
cdate Sat Sep 27 03:52:05 UTC 2008
|
|
who macallan
|
|
file src/libexec/ld.elf_so/rtld.c : 1.121
|
|
descr
|
|
workaround for PR port-macppc/37812
|
|
kcah
|
|
|
|
hack define TARGET_SECURE_PLT and HAVE_AS_TLS because when
|
|
building the native compiler via build.sh those don't defined
|
|
properly.
|
|
cdate Sat Mar 12 08:00:00 UTC 2011
|
|
who matt
|
|
file src/gnu/dist/gcc4/gcc/config/rs6000/netbsd.h
|
|
descr
|
|
see above
|
|
kcah
|
|
|
|
port powerpc64
|
|
|
|
hack include _errno.c in libposix so that __errno resolves. It
|
|
should resolve from libc's errno, but somehow it does not.
|
|
Linker bug?
|
|
cdate Thu Oct 27 13:19:47 EDT 2011
|
|
who christos
|
|
file src/lib/libposix/Makefile: 1.15
|
|
file src/lib/librt/Makefile: 1.14
|
|
descr
|
|
workaround for:
|
|
libposix_pic.a(cerror.pico)(.text+0x14): unresolvable \
|
|
R_PPC64_REL24 relocation against symbol `.__errno'
|
|
kcah
|
|
|
|
hack rename data() function in mdocml to avoid redefined error.
|
|
Compiler/Assembler bug?
|
|
cdate Sat Oct 29 11:16:01 EDT 2011
|
|
who christos
|
|
file src/external/bsd/mdocml/tbl_data.c: 1.2
|
|
descr
|
|
workaround for:
|
|
{standard input}: Assembler messages:
|
|
{standard input}:105: Error: symbol `.data' is already \
|
|
defined
|
|
kcah
|
|
|
|
port emips
|
|
|
|
hack Add nop between ctc1 and mtc0 to avoid assembler internal
|
|
error
|
|
cdate Sat Oct 29 16:57:34 EDT 2011
|
|
who christos
|
|
file src/sys/arch/mips/mips/mips_fpu.c: 1.7
|
|
descr
|
|
workaround for:
|
|
{standard input}: Assembler messages:
|
|
{standard input}:730: Internal error!
|
|
Assertion failure in append_insn at /usr/src/external/gpl3/\
|
|
binutils/dist/gas/config/tc-mips.c line 2910.
|
|
kcah
|
|
|
|
port ia64
|
|
|
|
hack libc hesiod.c file does not compile with -O2 (internal
|
|
compiler error in gcc 4.5.3)
|
|
cdate Thu Dec 27 08:05:43 CET 2012
|
|
who martin
|
|
file src/lib/libc/net/Makefile.inc: 1.82
|
|
descr
|
|
workaround for:
|
|
{standard input}: Assembler messages:
|
|
{standard input}:1507: Warning: Use of 'mov' may violate WAW dependency 'GR%, % in 1 - 127' (impliedf), specific resource number is 15
|
|
{standard input}:1506: Warning: This is the location of the conflicting usage
|
|
{standard input}: Error: 2 warnings, treating warnings as errors
|
|
kcah
|
|
|
|
hack libelf libelf_extended.c compiler error in gcc 4.5.3
|
|
cdate Thu Dec 27 09:05:51 CET 2012
|
|
who martin
|
|
file src/external/bsd/libelf/lib/Makefile: 1.3
|
|
descr
|
|
workaround for:
|
|
{standard input}: Assembler messages:
|
|
{standard input}:87: Warning: Use of 'adds' may violate RAW dependency 'GR%, % in 1 - 127' (impliedf), specific resource number is 33
|
|
{standard input}:87: Warning: Only the first path encountering the conflict is reported
|
|
{standard input}:85: Warning: This is the location of the conflicting usage
|
|
kcah
|
|
|
|
hack compiler error with gcc 4.5.x
|
|
cdate Thu Dec 27 15:15:25 CET 2012
|
|
who martin
|
|
file src/crypto/external/bsd/netpgp/lib/verify/Makefile: 1.5
|
|
descr
|
|
workaround for:
|
|
{standard input}: Assembler messages:
|
|
{standard input}:22979: Warning: Use of 'mov' may violate WAW dependency 'GR%, % in 1 - 127' (impliedf), specific resource number is 8
|
|
{standard input}:22978: Warning: This is the location of the conflicting usage
|
|
kcah
|
|
|
|
hack libgcc unwind dummy function
|
|
cdate Fri Apr 17 14:31:03 CEST 2015
|
|
who martin
|
|
file src/external/gpl3/gcc/dist/libgcc/config/ia64/unwind-ia64.c: 1.4
|
|
descr
|
|
Add an empty _Unwind_FindTableEntry() implementation.
|
|
In the end we will use our libc stuff, and this should
|
|
go away again.
|
|
kcah
|
|
|
|
port x68k
|
|
|
|
hack compiler error with gcc 4.5.x
|
|
cdate Fri May 24 13:23:01 EDT 2013
|
|
who christos
|
|
file src/external/gpl3/gcc/usr.bin/bakend/Makefile: 1.17
|
|
xsrc/external/mit/xorg/lib/libGLU/Makefile: 1.11
|
|
descr
|
|
workaround for:
|
|
internal compiler error: in cselib_record_set, at cselib.c:1999
|
|
kcah
|
|
|
|
hack fallback to /usr/bin/clang-cpp in rpcgen
|
|
cdate Wed Jun 5 15:49:27 CEST 2013
|
|
who joerg
|
|
file src/usr.bin/rpcgen/rpc_main.c
|
|
descr
|
|
It is undecided which compiler owns /usr/bin/cpp and whether it should
|
|
exist in a MKGCC=no world. To allow rpcgen to work out-of-the-box,
|
|
if either gcc or clang is installed, use /usr/bin/clang-cpp as fallback.
|
|
This applies only if RPCGEN_CPP is not set and /usr/bin/cpp is not executable.
|
|
kcah
|
|
|
|
port hppa
|
|
|
|
hack compiler error with gcc 4.5.x
|
|
cdate Tue Jul 23 07:42:28 BST 2013
|
|
who skrll
|
|
file src/sys/lib/libkern/Makefile.libkern: 1.26
|
|
descr
|
|
workaround for unanalysed codegen bug affecting md5c.c.
|
|
kcah
|
|
|
|
hack gdb vs _rtld_debug_state problem
|
|
cdate Thu Mar 5 09:49:53 UTC 2015
|
|
who skrll
|
|
file src/libexec/ld.elf_so/rtld.c: 1.175
|
|
descr
|
|
workaround for problem where gdb misses the breakpoint on
|
|
_rtld_debug_state when the function is only the
|
|
bv,n %r0(%rp) instruction - the nullify seems to
|
|
confuse something
|
|
kcah
|
|
|
|
port mips64*
|
|
hack compiler crashes on mips64* with optimization enabled
|
|
cdate Tue May 13 18:46:48 UTC 2014
|
|
who macallan
|
|
file src/external/lgpl3/gmp/lib/libgmp/arch/mips64eb/Makefile.inc: 1.6
|
|
src/external/lgpl3/gmp/lib/libgmp/arch/mips64eb/config.h: 1.5
|
|
src/external/lgpl3/gmp/lib/libgmp/arch/mips64el/Makefile.inc: 1.6
|
|
src/external/lgpl3/gmp/lib/libgmp/arch/mips64el/config.h: 1.5
|
|
descr workaround for n32 gcc doing unaligned 64bit accesses when optimizing
|
|
pr 48696
|
|
kcah
|
|
|
|
port vax
|
|
hack compile boot with -O1
|
|
cdate Sat May 24 09:40:58 CEST 2014
|
|
who martin
|
|
file src/sys/arch/vax/boot/boot/Makefile: 1.41
|
|
descr /boot does not work when compiled with -O2 and gcc 4.8
|
|
kcah
|
|
|
|
port arm
|
|
hack avoid using labels in a 12-bit constant.
|
|
who matt
|
|
file crypto/external/bsd/openssl/lib/libcrypto/arch/arm/aes-armv4.S: 1.2
|
|
descr workaround for clang misassembling an instruction
|
|
kcah
|