Annotation of src/doc/HACKS, Revision 1.224
1.224 ! rin 1: # $NetBSD: HACKS,v 1.223 2021/07/15 08:02:47 rin Exp $
1.1 lukem 2: #
3: # This file is intended to document workarounds for currently unsolved
4: # (mostly) compiler bugs.
5: #
6: # Format:
7: # hack title
8: # cdate creation date
9: # mdate mod date
10: # who responsible developer
11: # port ...
12: # affected ports, space separated, if not "all"
13: # file affected file : revision : line from : line to
14: # affected files and revision and line numbers describing hack
15: # multiple lines if necessary.
16: # pr NNNN ...
17: # problem reports this hack works around, if known. Space
18: # separated.
19: # regress src/regress/directory/where/test/found
20: # regression test directories, if available.
21: # descr
22: # insert short informal description (multi-line). (Longer ones
23: # should be in the PR database. More formal descriptions might
24: # be in the regress tree. See above).
25: # kcah
26: # closing bracket.
27: #
28: # this is a comment.
29:
1.207 maxv 30: hack llvm needs no-unused-command-line-argument
31: mdate 10 May 2020
32: who maxv
33: file share/mk/bsd.lib.mk 1.380 -> 1.381
34: descr
35: To avoid LLVM warnings when compiling the kernel with special
36: CFLAGS such as KASAN on amd64 or ARMV83_PAC on aarch64, pass
37: -Wno-unused-command-line-argument.
38: kcah
39:
1.190 maya 40: hack static linking with libpthread
41: mdate 7 May 2019
42: who maya
1.209 christos 43: file src/lib/libpthread/Makefile 1.92 -> 1.94
1.190 maya 44: descr
45: To avoid some libc thread stub functions being picked up
46: in static builds, link pthread as one section.
47: kcah
48:
1.209 christos 49: hack disable optimization for gcc-9.3 in src/lib/libc/gdtoa/strtod.c
50: mdate 18 Sep 2020
51: who christos
52: file src/lib/libc/gdtoa/strtod.c 1.15 -> 1.16
53: descr
54: See PR/55668, the program there causes infinite loop
55: kcah
56:
1.166 christos 57: hack gcc-5.3 optimizes memset+malloc -> calloc inside calloc
58: mdate 4 May 2016
59: who christos
60: file external/gpl2/lib/libmalloc/lib/Makefile 1.3 -> 1.5
61: descr
62: resulting in infinite recursion; we prevent this with
63: -fno-builtin-malloc
64: kcah
65:
1.167 mrg 66: hack turn off tree-vrp for parts of ufs_lookup.c
67: mdate 28 April 2016
68: who mrg christos
69: file src/sys/ufs/ufs/ufs_lookup.c : 1.144
70: pr 51094
71: descr
72: with -ftree-vrp enabled in ufs_lookup.c sometimes bad dir
73: panicks are see.
74: hcah
75:
1.1 lukem 76: hack netstat ieee1394 address printing.
77: mdate 14 Nov 2000
78: who matt
79: file lib/libc/net/getnameinfo.c : 1.32 : 497 : 503
80: descr
81: Because the current implementation of IP over IEEE1394, the
82: fw device address contains more than just the IEEE1394 EUI-64.
83: So when printing out IEEE1394 addresses, ignore the extra stuff.
84: kcah
85:
86: hack xterm vs. libterm
87: mdate 01 Aug 2000
88: who jdc
89: file xsrc/xc/programs/xterm/main.c : 1.2 : 3609 : 3614
90: pr 10383
91: descr
92: In order to extend the termcap string over 1023 bytes, a ZZ entry was
93: introduced to point to a memory location containing the full entry.
94: Without this hack, xterm will export a termcap containing the ZZ
95: entry, which will then be ignored by libterm. As xterm modifies the
96: exported termcap, this would cause those modifications to be ignored.
97: kcah
98:
99: hack wi-at-big-endian-bus
100: cdate 15 Mar 2002
101: who martin
1.203 rin 102: file dev/ic/wireg.h : 1.20
1.1 lukem 103: descr Add an option to access the underlying bus in big endian byte order
104: to work around deficiencies in bus_space_{read,write}_* macros.
105: Those don't allow the implementation of a proper pcmcia bus space
106: tag.
107: kcah
108:
1.3 jdc 109: hack specific knowledge of colours in curses code
110: cdate Sun Apr 6 11:05:24 BST 2003
111: who jdc
112: file lib/libcurses/color.c : r1.24
113: descr
114: Swap red/blue and yellow/cyan colours for COLOR_OTHER.
115: Fix is to enhance libtermcap to understand terminfo-style % sequences.
116: See also:
1.5 salo 117: http://mail-index.NetBSD.org/tech-userlevel/2003/04/06/0000.html
1.4 scw 118: kcah
119:
1.7 he 120: hack Compensation for differing types of LINUX_USRSTACK and USRSTACK
121: cdate 21 Aug 2003
122: who he
123: file sys/miscfs/procfs/procfs_linux.c : 1.14
124: descr
125: Not all ports have LINUX_USRSTACK and/or USRSTACK defined as
126: literals/constants, but refer to variables of a type which is
127: not "unsigned long", causing compilation of procfs_linux.c to
128: fail with "makes integer from pointer without a cast". This
129: is observed on e.g. the sun3 port. Ideally the "types" for
130: symbols should be consistent across all ports.
1.25 mrg 131: kcah
132:
1.80 tsutsui 133: hack gcc4 wrong uninitialized variable
1.58 mrg 134: mdate 10 May 2006
135: who mrg
136: file bin/ksh/eval.c : 1.6
137: file bin/sh/histedit.c : 1.39
138: file bin/sh/parser.c : 1.60
139: file crypto/dist/heimdal/kdc/524.c : 1.10
140: file crypto/dist/ssh/sftp.c : 1.20
141: file crypto/dist/ssh/ssh-keysign.c : 1.11
142: file dist/ipf/lib/hostname.c : 1.2
143: file dist/ipf/tools/ipmon.c : 1.8
1.72 mrg 144: file dist/ntp/ntpd/ntp_request.c : 1.4
1.58 mrg 145: file dist/ntp/ntpd/refclock_shm.c : 1.4
146: file dist/ntp/sntp/timing.c : 1.3
147: file dist/pppd/pppstats/pppstats.c : 1.3
148: file dist/tcpdump/print-zephyr.c : 1.5
1.68 mrg 149: file distrib/utils/sysinst/aout2elf.c : 1.12
1.58 mrg 150: file gnu/libexec/uucp/uucico/uucico.c : 1.6
151: file lib/libc/citrus/citrus_csmapper.c : 1.6
152: file lib/libc/citrus/citrus_pivot_factory.c : 1.5
153: file lib/libc/inet/inet_cidr_ntop.c : 1.3
154: file lib/libc/inet/inet_ntop.c : 1.3
155: file lib/libc/stdio/vfwprintf.c : 1.8
1.69 mrg 156: file libexec/ld.elf_so/arch/m68k/mdreloc.c : 1.20
1.76 mrg 157: file libexec/ld.elf_so/arch/powerpc/ppc_reloc.c : 1.40
1.74 mrg 158: file libexec/ld.elf_so/arch/sh3/mdreloc.c : 1.22
1.69 mrg 159: file libexec/ld.elf_so/arch/sparc/mdreloc.c : 1.39
1.58 mrg 160: file libexec/ld.elf_so/arch/sparc64/mdreloc.c : 1.39
1.74 mrg 161: file libexec/ld.elf_so/arch/vax/mdreloc.c : 1.21
1.71 dan 162: file libexec/ld.elf_so/arch/x86_64/mdreloc.c : 1.27
1.58 mrg 163: file sbin/fsck_ext2fs/dir.c : 1.19
164: file sbin/routed/rtquery/rtquery.c : 1.18
1.73 dan 165: file sys/arch/amd64/amd64/pmap.c : 1.26
1.79 mrg 166: file sys/arch/i386/pci/piixpcib.c : 1.4
1.80 tsutsui 167: file sys/arch/m68k/m68k/pmap_motorola.c : 1.4
1.58 mrg 168: file sys/crypto/cast128/cast128.c : 1.9
169: file sys/ddb/db_command.c : 1.86
1.68 mrg 170: file sys/dev/cardbus/cardbus_map.c : 1.21
1.58 mrg 171: file sys/dev/fss.c : 1.25
1.69 mrg 172: file sys/dev/ic/igsfb.c : 1.39
1.68 mrg 173: file sys/dev/ic/mb86950.c : 1.5
1.58 mrg 174: file sys/dev/ic/midway.c : 1.71
1.68 mrg 175: file sys/dev/kttcp.c : 1.18
176: file sys/dev/rasops/rasops_bitops.h : 1.9
177: file sys/dev/pci/cmpci.c : 1.31
1.58 mrg 178: file sys/dev/pci/machfb.c : 1.45
1.68 mrg 179: file sys/dev/usb/ohci.c : 1.174
180: file sys/dev/usb/uhci.c : 1.196
181: file sys/dev/rasops/rasops_bitops.h : 1.9
1.58 mrg 182: file sys/dist/ipf/netinet/ip_nat.c : 1.10
183: file sys/dist/ipf/netinet/ip_rpcb_pxy.c : 1.8
184: file sys/dist/pf/net/pf.c : 1.22
1.59 mrg 185: file sys/fs/udf/udf_vnops.c : 1.4
1.58 mrg 186: file sys/kern/kern_sig.c : 1.219
187: file sys/kern/tty.c : 1.181
188: file sys/net/bpf.c : 1.116
189: file sys/net/zlib.c : 1.26
1.68 mrg 190: file sys/netccitt/if_x25subr.c : 1.37
1.58 mrg 191: file sys/netinet/in.c : 1.107
192: file sys/nfs/nfs_serv.c : 1.108
193: file sys/nfs/nfs_socket.c : 1.129
194: file sys/nfs/nfs_syscalls.c : 1.91
195: file sys/ufs/lfs/lfs_vfsops.c : 1.207 [also (char *)]
196: file usr.bin/ftp/ftp.c : 1.140
197: file usr.bin/find/function.c : 1.54
198: file usr.bin/mail/tty.c : 1.20
1.100 tsutsui 199: file usr.bin/msgc/msg_sys.def : 1.33-1.34
1.58 mrg 200: file usr.bin/nl/nl.c : 1.7
201: file usr.bin/systat/keyboard.c : 1.23
202: file usr.bin/usbhidctl/usbhid.c : 1.29
203: file usr.bin/vi/cl/cl_read.c : 1.5
204: file usr.bin/vi/ex/ex_cscope.c : 1.12
205: file usr.bin/vi/ex/ex_tag.c : 1.19
206: file usr.bin/vi/vi/v_txt.c : 1.15
207: file usr.sbin/altq/altqstat/qdisc_rio.c : 1.4
208: file usr.sbin/cron/do_command.c : 1.19
209: file usr.sbin/timed/timed/slave.c : 1.15
210: descr
211: GCC 4.1 gets many uninitialised variable warnings wrong. We should
212: really audit all the old hacks like this when older compilers are
213: removed from the tree, as many are probably no longer required.
1.65 christos 214: The problem is that it does not recognize initialization via function
215: call pointer. I.e.
216: int p;
217: foo(&p);
218: does not mark p as initialized.
1.58 mrg 219: kcah
220:
1.59 mrg 221: hack gcc4 pointer sign and strict aliasing problems
222: mdate 10 May 2006
223: who mrg
224: file bin/ed/Makefile : 1.33
1.68 mrg 225: file distrib/utils/sysinst/Makefile.inc : 1.44
1.91 martin 226: file distrib/utils/x_dhclient/Makefile : 1.15
1.60 mrg 227: file games/bcd/Makefile : 1.5
228: file games/dab/Makefile : 1.5
229: file games/larn/Makefile : 1.17
230: file games/pom/Makefile : 1.5
231: file lib/libasn1/Makefile : 1.26
232: file lib/libcrypt/Makefile : 1.17
233: file lib/libgssapi/Makefile : 1.16
234: file lib/libhdb/Makefile : 1.20
235: file lib/libkadm5clnt/Makefile : 1.21
236: file lib/libkadm5srv/Makefile : 1.25
237: file lib/libkrb5/Makefile : 1.35
238: file lib/libssh/Makefile : 1.6
239: file lib/libtelnet/Makefile : 1.26
240: file libexec/getty/Makefile : 1.14
241: file libexec/kadmind/Makefile : 1.19
242: file libexec/kpasswdd/Makefile : 1.14
243: file sbin/atactl/Makefile : 1.3
244: file sbin/cgdconfig/Makefile : 1.7
245: file sbin/clri/Makefile : 1.13
246: file sbin/dkctl/Makefile : 1.4
247: file sbin/dump/Makefile : 1.33
248: file sbin/fdisk/Makefile : 1.35
249: file sbin/fsck_ext2fs/Makefile : 1.11
250: file sbin/fsck_ffs/Makefile : 1.29
251: file sbin/fsdb/Makefile : 1.18
252: file sbin/newfs/Makefile : 1.30
253: file sbin/newfs_sysvbfs/Makefile : 1.2
254: file sbin/restore/Makefile : 1.23
255: file sbin/veriexecctl/Makefile : 1.11
1.64 mrg 256: file sys/lib/libsa/Makefile : 1.59
1.68 mrg 257: file sys/arch/evbarm/adi_brh/brh_machdep.c : 1.24
1.59 mrg 258: file usr.bin/awk/Makefile : 1.9
1.64 mrg 259: file usr.bin/crontab/Makefile : 1.24
1.60 mrg 260: file usr.bin/ctags/Makefile : 1.8
1.61 mrg 261: file usr.bin/gzip/Makefile : 1.10
1.60 mrg 262: file usr.bin/ssh/sftp/Makefile : 1.10
263: file usr.bin/ssh/ssh/Makefile : 1.25
1.59 mrg 264: file usr.bin/vi/build/Makefile : 1.26
1.60 mrg 265: file usr.bin/telnet/Makefile : 1.40
266: file usr.bin/tn3270/tn3270/Makefile : 1.36
267: file usr.bin/tr/Makefile : 1.4
1.59 mrg 268: file usr.sbin/amd/amd/Makefile : 1.27
269: file usr.sbin/amd/amq/Makefile : 1.14
270: file usr.sbin/amd/libamu/Makefile : 1.20
271: file usr.sbin/amd/pawd/Makefile : 1.5
272: file usr.sbin/bind/Makefile.inc : 1.22
1.60 mrg 273: file usr.sbin/bind/libdns/Makefile : 1.3
274: file usr.sbin/bind/named/Makefile : 1.17
275: file usr.sbin/bootp/bootptest/Makefile : 1.2
276: file usr.sbin/chrtbl/Makefile : 1.6
277: file usr.sbin/cron/Makefile : 1.12
1.59 mrg 278: file usr.sbin/dhcp/Makefile.inc : 1.20
1.60 mrg 279: file usr.sbin/hprop/Makefile : 1.13
280: file usr.sbin/installboot/Makefile : 1.35
1.59 mrg 281: file usr.sbin/ipf/ipftest/Makefile : 1.32
282: file usr.sbin/isdn/isdnd/Makefile : 1.6
283: file usr.sbin/isdn/isdnmonitor/Makefile : 1.3
284: file usr.sbin/isdn/isdntel/Makefile : 1.2
285: file usr.sbin/isdn/isdntrace/Makefile : 126
1.61 mrg 286: file usr.sbin/mopd/common/Makefile : 1.10
287: file usr.sbin/mopd/mopd/Makefile : 1.9
288: file usr.sbin/mopd/mopprobe/Makefile : 1.7
1.60 mrg 289: file usr.sbin/makefs/Makefile : 1.17
290: file usr.sbin/mscdlabel/Makefile : 1.5
291: file usr.sbin/pkg_install/add/Makefile : 1.7
292: file usr.sbin/pkg_install/create/Makefile : 1.5
293: file usr.sbin/pkg_install/lib/Makefile : 1.28
1.59 mrg 294: file usr.sbin/ntp/ntpd/Makefile : 1.10/1.11
295: file usr.sbin/ntp/ntptime/Makefile : 1.4/1.5
296: file usr.sbin/pppd/Makefile.inc : 1.3
297: file usr.sbin/pppd/pppd/Makefile : 1.38
1.60 mrg 298: file usr.sbin/rarpd/Makefile : 1.10
1.59 mrg 299: file usr.sbin/rbootd/Makefile : 1.10
1.60 mrg 300: file usr.sbin/rpc.pcnfsd/Makefile : 1.17
301: file usr.sbin/tcpdump/Makefile : 1.42
1.59 mrg 302: descr
1.215 wiz 303: GCC 4.1 warns on pointer sign comparison/assignments and lots of
1.59 mrg 304: code does not conform. For now we use -Wno-pointer-sign and
305: -fno-strict-aliasing.
306: kcah
307:
1.145 christos 308: hack disable ctf for gcc-4.8 build
309: mdate April 3 2014
1.146 wiz 310: who christos
1.145 christos 311: file external/gpl3/gcc/usr.bin/Makefile.frontend : 1.4
312: file external/gpl3/gcc/usr.bin/Makefile.backend : 1.5
313: descr
314: nbctfconvert -g -L VERSION -g fold-const.o
315: ERROR: fold-const.c: failed to get mapping for tid 79154 \
316: ((null)) <13532>
317: kcak
318:
1.121 christos 319: hack emacs aborting on exit (libgcc issue)
320: mdate 7 November 2011
321: who christos
322: file external/gpl3/gcc/dist/gcc/unwind-dw2-fde.c : 1.2
323: descr
324: GCC 4.5.3 now calls __unregister_frame_info_bases() on unloading/exit
325: to do just that. If the symbol requested is not found, then it aborts.
326: emacs 23.3 triggers this assertion. For now disable aborting, and
327: silently ignore.
328: kcah
329:
1.105 agc 330: hack cross-building hack on Darwin
331: mdate 20 July 2008
332: who agc
333: file src/distrib/common/Makefile.mdset : 1.33
334: descr
335: Darwin has problems with getopt() when used in mdsetimage -v,
336: due to the difference between BSD and libiberty() getopt
337: implementations, more fully described in
338: http://mail-index.netbsd.org/current-users/2008/06/27/msg003242.html
339: and the subsequent thread. For just now, we just have an ugly
340: workaround not to call mdsetimage with the -v argument on Darwin
341: kcah
342:
1.109 veego 343: hack avoid rebuilding asn1 libraries
344: mdate 03 August 2008
345: who veego
346: file src/crypto/dist/heimdal/lib/asn1/gen.c : 1.10
347: file src/lib/libasn1/Makefile : 1.32
348: file src/lib/libhdb/Makefile : 1.23
349: file src/lib/libgssapi/Makefile : 1.20
350: file src/lib/libhx509/Makefile : 1.3
351: pr 9702 39185
352: descr
353: asn1_compile does not check if generated header files do not have to
354: be rebuild.
355: Generate .hx files and copy it in the Makefiles if they changed.
356: kcah
357:
1.144 tron 358: hack Disable fortification for /usr/bin/makeinfo
359: cdata 24 Mar 2014
360: who tron
1.186 maya 361: file src/external/gpl2/texinfo/bin/makeinfo/Makefile : 1.1
1.144 tron 362: pr N/A
363: descr
364: If "makeinfo" is compiled with "-D_FORTIFY_SOURCE=2" using GCC 4.8.3
365: it fails to process certain texinfo files, e.g. "cl.texi"
366: included in the Emacs 24.3 distribution.
367: kcah
368:
1.147 tron 369: hack Disable Stack Smash Protection for /usr/X11R7/bin/xauth
370: cdata 05 Apr 2014
371: who tron
372: file src/external/mit/xorg/bin/xauth/Makefile : 1.4
373: pr N/A
374: descr
375: If "xauth" is compile with "USE_SSP" set to "yes" it fails
376: mysteriously with an error message like this:
377:
378: /usr/X11R7/bin/xauth: file /foo/bar/.Xauthority does not exist
379: /usr/X11R7/bin/xauth: unable to link authority file /foo/bar/.Xauthority, use /foo/bar/.Xauthority
380:
381: The compiler seems to get confused about the two filename variables
382: used in the link(2) system call.
383: kcah
384:
1.162 pooka 385: hack g++ 5.x barfs on volatile in constexpr initializers
386: cdata 27 Aug 2015
1.160 pooka 387: who pooka
1.162 pooka 388: file src/lib/libpthread/pthread_types.h : 1.17
1.160 pooka 389: pr lib/49989
390: descr
391: Trying to use e.g. pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER
392: in C++ results in:
393: error: temporary of non-literal type '__pthread_mutex_st'
394: in a constant expression
395: constexpr mutex() _NOEXCEPT : __m_(PTHREAD_MUTEX_INITIALIZER) {}
396: [...]
397: include/pthread_types.h:101:8: note: '__pthread_mutex_st' is
398: not literal because:
399: struct __pthread_mutex_st {
400: ^
401: include/pthread_types.h:103:17: note: non-static data
402: member '__pthread_mutex_st::ptm_errorcheck' has volatile type
403: pthread_spin_t ptm_errorcheck;
404: kcah
405:
1.163 christos 406: hack libm cabs{,f,l} and g++
407: cdata 11 Jan 2016
408: who christos
409: pr lib/50646
410: file src/external/gpl3/gcc.old/dist/libstdc++-v3/include/std/complex : 1.2
411: file src/external/gpl3/gcc/dist/libstdc++-v3/include/std/complex : 1.2
412: descr
413: Our cabs and cabsf have a different argument format on some architectures
414: and for that we have created in libm/compat_cabs{,f}.c. The standard
415: versions in libc are __c99_cabs{,f,l} and there are __RENAME()'s in
416: <complex.h>. G++ uses __builtin_cabs{,f,l} to implement those and they
417: translate by default to cabs{,f,l} which gets defined to cabs{,f} (the
418: wrong function) and an undefined cabsl. I've changed <complex> to use
419: the __c99_cabs{,f,l} directly. Using the __builtin_cabs{,f,l} in gcc is
420: still broken.
421: kcah
422:
1.21 mycroft 423: port vax
424:
1.102 tsutsui 425: hack gcc4/vax ICE
1.203 rin 426: cdate Sat Dec 22 08:17:57 2007 UTC
1.102 tsutsui 427: who tsutsui
1.203 rin 428: file sys/arch/vax/conf/Makefile.vax : 1.79
1.102 tsutsui 429: descr
430: GCC4 on vax gets ICE on compiling sys/ddb/db_command.c.
431: -fno-tree-ter prevents it so add it to COPTS.
432: kcah
433:
1.81 mrg 434: hack gcc4/vax compiler crash
435: cdate Fri Jun 30 22:39:12 PDT 2006
436: who mrg
437: file bin/csh/Makefile : 1.27
438: file lib/i18n_module/UTF7/Makefile : 1.2
439: descr
440: GCC4 on vax crashes. -O0 stops it happening so far...
441: kcah
442:
1.54 he 443: hack declare boolean_t in two IPF user-mode programs
444: cdate Tue Mar 7 19:19:20 CET 2006
445: who he
446: file dist/ipf/ipsend/iptests.c : 1.8
447: dist/ipf/ipsend/sock.c : 1.7
448: descr
449: The IPF user-mode programs ipsend and iptest first
450: include <sys/types.h> without _KERNEL defined, and
451: later include <sys/file.h> with _KERNEL defined.
452: This causes a build failure when building for vax,
453: since <sys/device.h> ends up being included without
454: bollean_t being defined by <sys/types.h>.
455: Build failure and further details documented in
456: PR#32907.
457: kcah
458:
1.104 gmcgarry 459: hack pcc 0.9.9 large string literals
460: cdat 8 July 2008
461: who gmcgarry
462: file sys/conf/param.c : 1.58
463: descr
464: Workaround for pcc 0.9.9 not handling large string literals
465: which causes kernels with 'options INCLUDE_CONFIG_FILE' to
466: fail compilation.
467: There is a proposal on the pcc mailing list to stuff config
468: file in ELF section.
469: kcah
470:
1.107 mrg 471: hack xorg warnings
1.129 christos 472: cdat 30 July 2008, 3 June, 2013
1.107 mrg 473: who mrg
1.108 mrg 474: file external/mit/xorg/lib/libSM/Makefile : 1.2
1.129 christos 475: external/mit/xorg/lib/libX11/Makefile.libx11 : 1.10
1.107 mrg 476: external/mit/xorg/lib/libXext/Makefile : 1.2
477: external/mit/xorg/lib/libXfont/Makefile : 1.2
478: descr
479: Disable several warnings or use -Wno-error across Xorg sources
480: while we get them working
481: kcah
482:
1.112 christos 483: hack 32 bit time leftovers
484: cdat 11 January 2009
485: who christos
486: file lib/libc/time/localtime.c : 1.41
487: lib/libc/time/zic.c : 1.23
488: descr
489: The timezone compiled files still contain 32 bit time_t
490: quantities. I did not want to version the files because
491: the ``parser'' is too ugly for words. What needs to be
492: done, is to rewrite the parser from scratch also to avoid
493: potential core-dumps from parsing invalid files.
494: kcah
495:
496: hack 32 bit time leftovers
497: cdat 11 January 2009
498: who christos
499: file various
500: descr
1.113 sketch 501: Many filesystem on-disk formats have 32 bit times.
1.112 christos 502: kcah
503:
1.141 christos 504: hack gcc 4.5 fsdb miscompile
1.140 christos 505: date Sat Nov 9 11:03:02 EST 2013
506: who christos
1.141 christos 507: file src/sbin/fsdb/Makefile : 1.36 (and earlier)
1.140 christos 508: descr
509: src/sbin/fsdb/fsdb.c: In function 'findblk':
510: src/sbin/fsdb/fsdb.c:610:1: error: unrecognizable insn:
511: (insn 941 940 942 134 src/sbin/fsdb/fsdb.c:589 (set (reg:SI 604)
512: (subreg:SI (mem/s/j:DI (plus:SI (mult:SI (reg:SI 602)
513: (const_int 8 [0x8]))
514: (reg/f:SI 601)) [0 curinode.99_378->dp2.di_ib S8 A32]) 4)) \
515: -1 (nil))
516: src/sbin/fsdb/fsdb.c:610:1: internal compiler error: in \
517: extract_insn, at recog.c:2103
518: kcah
519:
1.141 christos 520: hack gcc 4.8 gcc miscompiles
521: date Sat Nov 9 16:35:18 EST 2013
522: who christos
1.203 rin 523: file distrib/utils/x_ping/Makefile : 1.8
524: file distrib/vax/miniroot/Makefile.inc : ?
525: file distrib/vax/ramdisk/Makefile : ?
526: file external/gpl3/gdb/lib/libdecnumber/Makefile : 1.3
527: file sbin/fsdb/Makefile : 1.36
528: file sbin/newfs_ext2fs/Makefile : 1.6
529: file sbin/ping/Makefile : 1.17
530: file usr.sbin/mtrace/Makefile : 1.11
1.141 christos 531: descr
532: external/gpl3/gcc/dist/gcc/expmed.c:2781:1:
533: internal compiler error: in change_address_1, at emit-rtl.c:2019
534: external/gpl3/gcc/dist/gcc/recog.c:770:1:
535: internal compiler error: in change_address_1, at emit-rtl.c:2019
536: external/gpl3/gcc/dist/libdecnumber/decNumber.c:7214:3:
537: internal compiler error: in change_address_1, at emit-rtl.c:2019
538: sbin/ping/ping.c:679:1:
539: internal compiler error: in change_address_1, at emit-rtl.c:2019
540: sbin/newfs_ext2fs/mke2fs.c:681:1:
541: internal compiler error: in reload_combine_note_use,
542: at postreload.c:1561
543: external/gpl3/gdb/dist/libdecnumber/decNumber.c:7214:3:
544: internal compiler error: in change_address_1, at emit-rtl.c:2019
545: usr.sbin/mtrace/mtrace.c:1655:1:
546: internal compiler error: in change_address_1, at emit-rtl.c:2019
547: kcah
548:
1.178 rin 549: hack gcc 5.4 cc1 miscompile
550: date Tue Feb 14 07:19:57 JST 2017
551: who rin
552: pr port-vax/51967
553: file external/gpl3/gcc/usr.bin/backend/Makefile : 1.35
554: descr
555: cc1 aborts due to SIGILL when compiling the sample code attached
556: to the PR. As a workaround, compile dse.c with -O0.
557: kcah
558:
1.179 rin 559: hack libssh miscompile
1.182 rin 560: cdate Tue Feb 14 17:58:06 JST 2017
561: mdate Tue Feb 14 18:57:39 JST 2017
1.179 rin 562: who rin
563: file crypto/external/bsd/openssh/lib/Makefile : 1.20
564: descr
1.182 rin 565: poly1305.c and umac.c are miscompiled, which results in login
566: failure to/from external hosts via ssh.
1.179 rin 567: kcah
568:
1.180 rin 569: hack mandoc miscompile
570: date Tue Feb 14 18:03:05 JST 2017
571: who rin
572: file external/bsd/mdocml/lib/libmandoc/Makefile : 1.8
573: descr
574: mandoc(1) receives SIGILL in in_line_argn() from mdoc_macro.c.
575: kcah
576:
1.183 rin 577: hack libX11 miscompile
578: date Thu Feb 16 10:00:22 JST 2017
579: who rin
580: file src/external/mit/xorg/lib/libX11/Makefile.libx11 : 1.18
581: descr
582: lcWrap.c is miscompiled, which results in input failure via XIM.
1.184 rin 583: Besides, some clients, e.g., pkgsrc/x11/kterm, receive SIGSEGV.
1.183 rin 584: kcah
585:
1.21 mycroft 586: port arm
587:
588: hack gcc-unsigned-compare
589: cdate 09 Mar 2002
590: mdate 18 Mar 2002
591: who bjh21
592: file dist/bind/lib/nameser/ns_parse.c : 1.3
593: file dist/dhcp/minires/ns_parse.c : 1.3
594: file dist/dhcp/omapip/result.c : 1.2
595: file dist/dhcp/server/failover.c : 1.3
596: file gnu/dist/toolchain/bfd/bfd.c : 1.2
597: file gnu/dist/toolchain/bfd/format.c : 1.2
598: file gnu/dist/toolchain/gdb/target.c : 1.2
599: file sys/kern/vfs_subr.c : 1.172
600: descr When checking that a potentially-unsigned enum is >= 0, assign
601: it to an int first. This is necessary to avoid "comparison is
602: always true" warnings with -fshort-enums. Casting to an int
603: really should be enough, but turns out not to be.
604: kcah
605:
1.122 tsutsui 606: hack gcc-4.5 arm CNAME hostname lookup failure on
607: certain DNS environment (probably -ftree-ter problem)
608: cdate Sat Dec 24 04:59:00 UTC 2011
609: mdate
610: who tsutsui
611: file lib/libc/net/Makefile.inc 1.79
612: descr Hostname lookup against CNAMEs by some commands fails
613: on certain DNS environments if lib/libc/net/gethnamaddr.c
614: (ping(8) etc) and lib/libc/net/getaddrinfo.c (ftp(1) etc)
615: are compiled with -O2, even though nslookup(1) against
616: the same CNAME returns proper hostname.
617: They works properly if compiled with -O2 -fno-tree-ter.
618: Also -O2 fails but -O2 -fno-tree-ter works on the following
619: test case in gcc bugzilla:
620: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48863#c4
621: kcah
622:
1.21 mycroft 623: port sh3
624:
1.74 mrg 625: hack gcc4-sh3-bz2
1.103 tsutsui 626: cdate Sun May 21 03:34:57 UTC 2006
627: mdate Fri May 16 13:13:00 UTC 2008
628: who mrg, tsutsui
1.74 mrg 629: file lib/libbz2/Makefile : 1.10
630: descr
631: The in-tree GCC 4.1-based compiler generated too-far
1.103 tsutsui 632: pc-relative addresses. Hack is to build with
633: -fno-loop-optimize.
1.74 mrg 634: kcah
635:
1.96 mrg 636: port m68000
1.79 mrg 637:
1.96 mrg 638: hack gcc4-m68000
1.102 tsutsui 639: cdate Fri Feb 8 10:29:37 PST 2008
640: mdate Sun May 4 15:37:19 UTC 2008
1.99 tsutsui 641: who mrg, tsutsui
1.96 mrg 642: file rescue/Makefile : 1.21
1.99 tsutsui 643: file sbin/dump_lfs/Makefile : 1.9
1.101 tsutsui 644: file sbin/fsck_ffs/Makefile : 1.35
645: file sbin/fsdb/Makefile : 1.22
646: file share/mk/sys.mk : 1.96
1.99 tsutsui 647: file usr.sbin/ndbootd/Makefile : 1.5
1.95 mrg 648: descr
1.101 tsutsui 649: Several internal compiler errors with gcc -O1
650: around 64bit integer arithmetic.
1.99 tsutsui 651: This hack uses -O1 and adds some -fno-tree-foo options
652: to avoid the problem.
1.101 tsutsui 653: This might be related with GCC Bugzilla Bug 32424.
1.95 mrg 654: kcah
655:
1.141 christos 656: port m68k,sh3,vax
1.135 christos 657:
658: hack gcc-4.8.1
659: cdate Wed Nov 6 20:41:35 EST 2013
660: who christos
1.141 christos 661: file src/external/gpl3/gcc/libstdc++-v3/Makefile : 1.6
1.135 christos 662: descr
663: compile hashtable_c++0x.cc with -O2 instead of -Os to
664: produce missing instantiation of std::lower_bound expansion
665: for unsigned long.
666: kcah
1.22 mrg 667:
1.116 mrg 668: port sparc
669:
670: hack avoid NULL pointer derefs in savefpstate IPIs and GCC 4.5.3
671: cdate Sun Aug 14 19:26:48 PDT 2011
672: who mrg
673: file sys/arch/sparc64/sparc/cpu.c : 1.234
674: file sys/arch/sparc64/sparc/cpuvar.h : 1.90
675: file sys/arch/sparc64/sparc/genassym.cf : 1.67
676: file sys/arch/sparc64/sparc/locore.s : 1.265
677: descr
678: Something is wrong with GCC 4.5.3 and the savefpstate IPI.
679: Post newlock2 there was a bug where a lock was reduced from
680: IPL_SCHED to IPL_VM (?) and occasionally savefpstate IPI
681: would crash due to NULL IPI. This was fixed by re-using the
682: right IPL value. However, GCC 4.5.3 build kernels have the
683: same problems. For now, the hack is re-instated.
684: kcah
685:
686:
1.51 simonb 687: port mips
688:
689: hack mips-shared-linker-load-address
690: cdate Fri Oct 7 08:33:10 UTC 2005
691: who simonb
692: file src/sys/kern/exec_elf32.c : 1.107
693: descr
694: With COMPAT_16 or previous enabled (which enables
695: ELF_INTERP_NON_RELOCATABLE) a recent ld.elf_so will
696: load and run at address 0. The check to fix this in
697: rev 1.107 only checks the first psection of the ELF
698: executable, which may not be loadable. A more correct
699: fix is to check the first loadable psection instead of
700: just the first psection.
701: kcah
1.54 he 702:
1.85 martin 703: hack mips-duplicate-ras-end-label
704: cdate Sat Sep 2 23:29:42 2006
705: who martin
1.92 chs 706: file src/regress/sys/kern/ras/ras3/Makefile : 1.3
1.85 martin 707: descr
708: Add -fno-reorder-blocks to CFLAGS to avoid duplicate
709: labels by duplicated __asm output from RAS_END()
710: macro.
711: kcah
712:
1.106 lukem 713: hack mips-mcount-assembler-warning
714: cdate Tue Jul 29 14:16:52 UTC 2008
715: who lukem
716: file src/lib/libc/gmon/Makefile.inc : 1.8
717: descr
718: Workaround for PR port-mips/39192.
719: common/lib/libc/gmon/mcount.c generates a (fatal)
720: assembler warning on MIPS:
721: Warning: No .cprestore pseudo-op used in PIC code
722: Add COPTS.count.c+=-Wa,--no-warn to avoid -Wa,--fatal-warnings
723: kcah
724:
1.82 christos 725: port i386
726:
1.84 drochner 727: hack use volatile intermediate variable to enforce rounding
728: cdate Tue Aug 1 22:15:55 MEST 2006
729: who drochner
730: file src/lib/libm/src/lrintf.c : 1.4
731: file src/lib/libm/src/s_rintf.c : 1.8
732: descr
733: gcc-4 does subsequent operations on "float" values within
734: the i387 FPU without rounding the intermediate results
735: kcah
1.110 macallan 736:
1.148 christos 737: port x86
738: hack turn off optimization for biosdisk_ll.c because otherwise
739: we are pass the wrong arguments to biosdisk_read().
740: $ cd /usr/src/sys/arch/i386/floppies/bootflopp-com
741: $ qemu-system-i386 -nographic -fda boot-com1.fs -boot a
1.203 rin 742: cdate Mon Apr 7 21:09:55 2014 UTC
1.148 christos 743: who christos
744: file src/sys/arch/i386/stand/lib/Makefile : 1.38
745: descr
746: Turning on DISK_DEBUG shows the problem. We should find
747: out which option is causing this.
748: hcah
749:
1.110 macallan 750: port powerpc
751:
752: hack avoid using __builtin_return_address(0) because it fails in
753: Xorg's module loader
754: cdate Sat Sep 27 03:52:05 UTC 2008
755: who macallan
756: file src/libexec/ld.elf_so/rtld.c : 1.121
757: descr
758: workaround for PR port-macppc/37812
759: kcah
760:
1.115 matt 761: hack define TARGET_SECURE_PLT and HAVE_AS_TLS because when
762: building the native compiler via build.sh those don't defined
763: properly.
764: cdate Sat Mar 12 08:00:00 UTC 2011
765: who matt
1.203 rin 766: file src/gnu/dist/gcc4/gcc/config/rs6000/netbsd.h : 1.7
1.115 matt 767: descr
768: see above
769: kcah
1.117 christos 770:
771: port powerpc64
772:
773: hack include _errno.c in libposix so that __errno resolves. It
774: should resolve from libc's errno, but somehow it does not.
775: Linker bug?
776: cdate Thu Oct 27 13:19:47 EDT 2011
777: who christos
778: file src/lib/libposix/Makefile: 1.15
1.118 christos 779: file src/lib/librt/Makefile: 1.14
1.117 christos 780: descr
781: workaround for:
782: libposix_pic.a(cerror.pico)(.text+0x14): unresolvable \
783: R_PPC64_REL24 relocation against symbol `.__errno'
784: kcah
1.119 christos 785:
786: hack rename data() function in mdocml to avoid redefined error.
787: Compiler/Assembler bug?
788: cdate Sat Oct 29 11:16:01 EDT 2011
789: who christos
790: file src/external/bsd/mdocml/tbl_data.c: 1.2
791: descr
792: workaround for:
793: {standard input}: Assembler messages:
794: {standard input}:105: Error: symbol `.data' is already \
795: defined
796: kcah
1.120 christos 797:
798: port emips
799:
800: hack Add nop between ctc1 and mtc0 to avoid assembler internal
801: error
802: cdate Sat Oct 29 16:57:34 EDT 2011
803: who christos
804: file src/sys/arch/mips/mips/mips_fpu.c: 1.7
805: descr
806: workaround for:
807: {standard input}: Assembler messages:
808: {standard input}:730: Internal error!
809: Assertion failure in append_insn at /usr/src/external/gpl3/\
810: binutils/dist/gas/config/tc-mips.c line 2910.
811: kcah
1.125 martin 812:
813: port ia64
814:
1.157 martin 815: hack libgcc unwind dummy function
816: cdate Fri Apr 17 14:31:03 CEST 2015
817: who martin
818: file src/external/gpl3/gcc/dist/libgcc/config/ia64/unwind-ia64.c: 1.4
819: descr
820: Add an empty _Unwind_FindTableEntry() implementation.
821: In the end we will use our libc stuff, and this should
822: go away again.
823: kcah
824:
1.128 christos 825: port x68k
1.127 martin 826:
1.128 christos 827: hack compiler error with gcc 4.5.x
828: cdate Fri May 24 13:23:01 EDT 2013
829: who christos
830: file src/external/gpl3/gcc/usr.bin/bakend/Makefile: 1.17
831: xsrc/external/mit/xorg/lib/libGLU/Makefile: 1.11
832: descr
833: workaround for:
834: internal compiler error: in cselib_record_set, at cselib.c:1999
835: kcah
1.130 joerg 836:
837: hack fallback to /usr/bin/clang-cpp in rpcgen
838: cdate Wed Jun 5 15:49:27 CEST 2013
839: who joerg
1.203 rin 840: file src/usr.bin/rpcgen/rpc_main.c : 1.35
1.130 joerg 841: descr
1.136 joerg 842: It is undecided which compiler owns /usr/bin/cpp and whether it should
1.130 joerg 843: exist in a MKGCC=no world. To allow rpcgen to work out-of-the-box,
844: if either gcc or clang is installed, use /usr/bin/clang-cpp as fallback.
845: This applies only if RPCGEN_CPP is not set and /usr/bin/cpp is not executable.
846: kcah
1.131 skrll 847:
1.155 skrll 848: port hppa
1.131 skrll 849:
850: hack compiler error with gcc 4.5.x
851: cdate Tue Jul 23 07:42:28 BST 2013
852: who skrll
1.133 skrll 853: file src/sys/lib/libkern/Makefile.libkern: 1.26
854: descr
855: workaround for unanalysed codegen bug affecting md5c.c.
856: kcah
1.149 macallan 857:
1.155 skrll 858: hack gdb vs _rtld_debug_state problem
859: cdate Thu Mar 5 09:49:53 UTC 2015
860: who skrll
861: file src/libexec/ld.elf_so/rtld.c: 1.175
862: descr
863: workaround for problem where gdb misses the breakpoint on
864: _rtld_debug_state when the function is only the
865: bv,n %r0(%rp) instruction - the nullify seems to
866: confuse something
867: kcah
868:
1.149 macallan 869: port mips64*
870: hack compiler crashes on mips64* with optimization enabled
871: cdate Tue May 13 18:46:48 UTC 2014
872: who macallan
873: file src/external/lgpl3/gmp/lib/libgmp/arch/mips64eb/Makefile.inc: 1.6
874: src/external/lgpl3/gmp/lib/libgmp/arch/mips64eb/config.h: 1.5
875: src/external/lgpl3/gmp/lib/libgmp/arch/mips64el/Makefile.inc: 1.6
876: src/external/lgpl3/gmp/lib/libgmp/arch/mips64el/config.h: 1.5
877: descr workaround for n32 gcc doing unaligned 64bit accesses when optimizing
878: pr 48696
879: kcah
1.150 martin 880:
881: port vax
882: hack compile boot with -O1
883: cdate Sat May 24 09:40:58 CEST 2014
884: who martin
885: file src/sys/arch/vax/boot/boot/Makefile: 1.41
886: descr /boot does not work when compiled with -O2 and gcc 4.8
887: kcah
888:
1.191 christos 889: port vax
890: hack compile nir.c in gallium with -O1
891: cdate Mon Oct 28 14:39:35 EDT 2019
892: who christos
893: file /cvsroot/src/external/mit/xorg/lib/gallium/Makefile 1.36
894: descr gallium does not compile.
895: kcah
896:
1.193 christos 897: port sh3
898: hack compile parse.c in battlestar with -Wno-restrict
899: cdate Mon Oct 28 14:39:35 EDT 2019
900: who christos
901: file /cvsroot/src/games/battlestar/Makefile 1.11
902: descr fails to compile, confused by char words[][];
903: strcpy(words[n - 1], words[n + 1]);
904: kcah
905:
1.194 christos 906: port sh3
907: hack compile ddns.c in dhcpcd with no-stringop-overflow
908: cdate Tue Oct 29 20:25:59 EDT 2019
909: who christos
910: file /cvsroot/src/external/mpl/dhcp/bin/server/Makefile 1.2
911: descr fails to compile, confused by builtin_object_size in strcat(p, ".in..")
912: kcah
913:
1.156 matt 914: port arm
915: hack avoid using labels in a 12-bit constant.
1.203 rin 916: cdate Mon Mar 30 05:26:47 2015 UTC
1.156 matt 917: who matt
918: file crypto/external/bsd/openssl/lib/libcrypto/arch/arm/aes-armv4.S: 1.2
919: descr workaround for clang misassembling an instruction
920: kcah
1.177 christos 921:
922: port sparc64
923: hack during profiling with -m32 (and ASLR) labels are not generated
924: consistently
1.203 rin 925: cdate Sat Feb 11 04:56:37 2017 UTC
1.177 christos 926: who christos
927: file /cvsroot/src/crypto/external/bsd/heimdal/lib/libasn1/Makefile: 1.4
928: desc asn1_krb5_asn1.po does not produce the same results during successive
929: compilation runs; it is bimodal. Turning optimization to -O0 fixes
930: the issue
931: kcah
1.187 scole 932:
933: port ia64
934: hack ski emulator crashes
1.203 rin 935: cdate Sat Apr 8 18:10:43 2017 UTC
1.187 scole 936: who scole
937: file /cvsroot/src/sys/external/bsd/acpica/dist/tables/tbxfload.c: 1.6
938: desc
939: ski emulator crashes during acpi detection. Added a check for
940: uninitialized index. Submitted a request for change with upstream
941: mailing list, but never got a response
942: kcah
1.189 christos 943:
944: port vax
945: hack compile rtld.c with -O0
946: cdate Wed Apr 3 17:38:38 EDT 2019
947: who christos
948: file src/libexec/ld.elf_so/Makefile: 1.141
949: descr Disable optimization for rtld.c on the vax with gcc-7. Crashes on the
950: second pass loop with elm == 0xffffffff
951: kcah
1.195 rin 952:
1.197 christos 953: port powerpc
1.199 christos 954: hack compile tc.c, logerr.c, ubsan.c with -O0 for clang
1.197 christos 955: cdate Wed Jan 29 17:40:19 EST 2020
956: who christos
957: file src/external/bsd/atf/lib/libatf-c/Makefile: 1.22
1.198 christos 958: file src/external/bsd/dhcpcd/sbin/dhcpcd/Makefile: 1.49
1.199 christos 959: file src/tests/lib/libc/misc/Makefile: 1.5
960:
961: descr Disable optimization on tc.c, logerr.c, ubsan.c crashes:
1.197 christos 962: lib/libLLVMCodeGen/../../llvm/../../external/apache2/llvm/lib/..\
963: /dist/llvm/include/llvm/CodeGen/MachineFrameInfo.h", line 495, \
964: function "__int64_t llvm::MachineFrameInfo::getObjectOffset(int) const"
965: kcah
1.202 rin 966:
1.208 rin 967: port m68k
1.211 rin 968: hack compile aes_ccm_tag() with -O0 for GCC8 and GCC9
1.208 rin 969: cdate Mon Aug 10 06:27:29 UTC 2020
1.211 rin 970: mdate Mon Oct 5 22:00:00 JST 2020
1.208 rin 971: who rin
972: file src/sys/crypto/aes/aes_ccm.c: 1.5
1.211 rin 973: descr GCC 9.4 and 8.3 miscompile aes_ccm_tag() for m68k with optimization
974: level -O[12], which results in failure in aes_ccm_selftest().
975: For 9.4, -O0 and -O1 work but -O2 fails for amiga (A1200, 68060) and
976: mac68k (Quadra 840AV, 68040). Whereas -O0 and -O2 work but -O1 fails
977: for sun3 (TME, 68020 emulator) and sun2 (TME, 68010 emulator).
1.208 rin 978: kcah
1.217 christos 979:
1.219 martin 980: port sh3
981:
982: hack gcc9-sh3-lint
983: cdate Tue Jun 22 14:59:52 CEST 2021
1.221 hgutch 984: mdate Mon Jul 5 12:34:57 CEST 2021
985: who hgutch
986: file external/gpl3/gcc/dist/gcc/config/sh/sh.md 1.2
987: external/gpl3/gcc.old/dist/gcc/config/sh/sh.md 1.11
988: descr
989: The in-tree gcc 9/gcc 10 crashes with an internal
990: invalid opcode exception when using any kind of
991: optimization on lex.c in usr.bin/xlint/lint . This
992: was introduced apparently unintendedly in gcc when
993: addressing a different issue. Rather than disabling
994: optimization for lex.c, instead revert the change to
995: gcc. The bug report upstream has been updated to
996: reflect the exact breakage.
997:
1.220 rillig 998: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101177
1.219 martin 999: kcah
1.223 rin 1000:
1001: port sh3
1002: hack compile lint1/initdecl() with -O0 for sh3 (port-sh3/56311)
1003: cdate Thu Jul 15 07:58:05 UTC 2021
1.224 ! rin 1004: mdate Fri Jul 16 10:00:00 UTC 2021
1.223 rin 1005: who rin
1006: file src/usr.bin/xlint/lint1/decl.c: 1.200
1.224 ! rin 1007: descr GCC 9 and 10 miscompile initdecl() due to mischoice of register,
! 1008: as described in the PR. Compiling this function with -O0 works
! 1009: around the problem.
! 1010: The problem has been reported to upstream as GCC Bug 101469:
! 1011: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101469
1.223 rin 1012: kcah
CVSweb <webmaster@jp.NetBSD.org>