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