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