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