Annotation of src/doc/HACKS, Revision 1.82
1.82 ! christos 1: # $NetBSD: HACKS,v 1.81 2006/07/01 06:00:41 mrg 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:
87: hack GCC2 isn't C99
88: cdate 5 December 2003
89: who mrg
90: file gnu/dist/binutils/ld/ldlex.c: r1.2
91: descr
92: ldlex.c is generated from ldlex.l and we get macro redefinition
93: errors from it if __STDC_VERSION__ is not C99 compliant. This
94: hack forces NetBSD 1.6 and later systems to also include <stdint.h>
95: to get the relevant definitions. This hack should be backed out
96: when all platforms have switched away from GCC2.
1.11 lukem 97: kcah
98:
1.37 junyoung 99: hack gcc-strict-aliasing
100: cdate 6 August 2004
101: who junyoung
102: pr 26516
103: file src/usr.sbin/racoon/racoon/Makefile : 1.21
104: descr
105: GCC issues a warning "dereferencing type-punned pointer will break
106: strict-aliasing rules" when compiling
107: crypto/dist/kame/racoon/crypto/openssl.c with -O[23s]. Note that this
1.38 junyoung 108: is due to use of type casting in a non-standard way in the code and
109: not a compiler bug. Once a new release of KAME with a proper fix
110: applied is imported this should be backed out.
1.37 junyoung 111: kcah
112:
1.62 he 113: hack gcc 3.3.3 wrong uninitialised variable
114: mdate 12 May 2006
115: who he
116: file usr.bin/msgc/msg_sys.def : 1.33-1.34
1.63 he 117: file distrib/utils/sysinst/aout2elf.c : 1.11
1.62 he 118: descr
119: Gcc 3.3.3 gets some -Wuninitialized warnings wrong. This is
120: just one of many in the tree, marked with
121: /* XXX -Wuninitialized [arch] */
122: in the source.
123: kcah
124:
1.80 tsutsui 125: hack gcc4 wrong uninitialized variable
1.58 mrg 126: mdate 10 May 2006
127: who mrg
128: file bin/ksh/eval.c : 1.6
129: file bin/sh/histedit.c : 1.39
130: file bin/sh/parser.c : 1.60
131: file bin/systrace/systrace.c : 1.33
132: file crypto/dist/heimdal/kdc/524.c : 1.10
133: file crypto/dist/ssh/sftp.c : 1.20
134: file crypto/dist/ssh/ssh-keysign.c : 1.11
135: file dist/ipf/lib/hostname.c : 1.2
136: file dist/ipf/tools/ipmon.c : 1.8
1.72 mrg 137: file dist/ntp/ntpd/ntp_request.c : 1.4
1.58 mrg 138: file dist/ntp/ntpd/refclock_shm.c : 1.4
139: file dist/ntp/sntp/timing.c : 1.3
140: file dist/pppd/pppstats/pppstats.c : 1.3
141: file dist/smbfs/lib/smb/rap.c : 1.6
142: file dist/tcpdump/print-zephyr.c : 1.5
1.68 mrg 143: file distrib/utils/sysinst/aout2elf.c : 1.12
1.58 mrg 144: file gnu/libexec/uucp/uucico/uucico.c : 1.6
145: file lib/libc/citrus/citrus_csmapper.c : 1.6
146: file lib/libc/citrus/citrus_pivot_factory.c : 1.5
147: file lib/libc/inet/inet_cidr_ntop.c : 1.3
148: file lib/libc/inet/inet_ntop.c : 1.3
149: file lib/libc/stdio/vfwprintf.c : 1.8
1.69 mrg 150: file libexec/ld.elf_so/arch/m68k/mdreloc.c : 1.20
1.76 mrg 151: file libexec/ld.elf_so/arch/powerpc/ppc_reloc.c : 1.40
1.74 mrg 152: file libexec/ld.elf_so/arch/sh3/mdreloc.c : 1.22
1.69 mrg 153: file libexec/ld.elf_so/arch/sparc/mdreloc.c : 1.39
1.58 mrg 154: file libexec/ld.elf_so/arch/sparc64/mdreloc.c : 1.39
1.74 mrg 155: file libexec/ld.elf_so/arch/vax/mdreloc.c : 1.21
1.71 dan 156: file libexec/ld.elf_so/arch/x86_64/mdreloc.c : 1.27
1.58 mrg 157: file sbin/fsck_ext2fs/dir.c : 1.19
158: file sbin/routed/rtquery/rtquery.c : 1.18
1.73 dan 159: file sys/arch/amd64/amd64/pmap.c : 1.26
1.79 mrg 160: file sys/arch/i386/pci/piixpcib.c : 1.4
1.80 tsutsui 161: file sys/arch/m68k/m68k/pmap_motorola.c : 1.4
1.58 mrg 162: file sys/crypto/cast128/cast128.c : 1.9
163: file sys/ddb/db_command.c : 1.86
1.68 mrg 164: file sys/dev/cardbus/cardbus_map.c : 1.21
1.58 mrg 165: file sys/dev/fss.c : 1.25
1.69 mrg 166: file sys/dev/ic/igsfb.c : 1.39
1.68 mrg 167: file sys/dev/ic/mb86950.c : 1.5
1.58 mrg 168: file sys/dev/ic/midway.c : 1.71
1.68 mrg 169: file sys/dev/kttcp.c : 1.18
170: file sys/dev/rasops/rasops_bitops.h : 1.9
171: file sys/dev/pci/cmpci.c : 1.31
1.58 mrg 172: file sys/dev/pci/machfb.c : 1.45
1.68 mrg 173: file sys/dev/usb/ohci.c : 1.174
174: file sys/dev/usb/uhci.c : 1.196
175: file sys/dev/rasops/rasops_bitops.h : 1.9
1.58 mrg 176: file sys/dist/ipf/netinet/ip_nat.c : 1.10
177: file sys/dist/ipf/netinet/ip_rpcb_pxy.c : 1.8
178: file sys/dist/pf/net/pf.c : 1.22
1.59 mrg 179: file sys/fs/udf/udf_vnops.c : 1.4
1.58 mrg 180: file sys/kern/kern_sig.c : 1.219
181: file sys/kern/tty.c : 1.181
182: file sys/net/bpf.c : 1.116
183: file sys/net/zlib.c : 1.26
1.68 mrg 184: file sys/netccitt/if_x25subr.c : 1.37
1.58 mrg 185: file sys/netinet/in.c : 1.107
186: file sys/netsmb/smb_smb.c : 1.27
187: file sys/netsmb/smb_trantcp.c : 1.22
188: file sys/nfs/nfs_serv.c : 1.108
189: file sys/nfs/nfs_socket.c : 1.129
190: file sys/nfs/nfs_syscalls.c : 1.91
191: file sys/ufs/lfs/lfs_vfsops.c : 1.207 [also (char *)]
192: file usr.bin/ftp/ftp.c : 1.140
193: file usr.bin/find/function.c : 1.54
194: file usr.bin/mail/tty.c : 1.20
195: file usr.bin/nl/nl.c : 1.7
196: file usr.bin/systat/keyboard.c : 1.23
197: file usr.bin/usbhidctl/usbhid.c : 1.29
198: file usr.bin/vi/cl/cl_read.c : 1.5
199: file usr.bin/vi/ex/ex_cscope.c : 1.12
200: file usr.bin/vi/ex/ex_tag.c : 1.19
201: file usr.bin/vi/vi/v_txt.c : 1.15
202: file usr.sbin/altq/altqstat/qdisc_rio.c : 1.4
203: file usr.sbin/cron/do_command.c : 1.19
204: file usr.sbin/timed/timed/slave.c : 1.15
205: descr
206: GCC 4.1 gets many uninitialised variable warnings wrong. We should
207: really audit all the old hacks like this when older compilers are
208: removed from the tree, as many are probably no longer required.
1.65 christos 209: The problem is that it does not recognize initialization via function
210: call pointer. I.e.
211: int p;
212: foo(&p);
213: does not mark p as initialized.
1.58 mrg 214: kcah
215:
1.59 mrg 216: hack gcc4 pointer sign and strict aliasing problems
217: mdate 10 May 2006
218: who mrg
219: file bin/ed/Makefile : 1.33
1.60 mrg 220: file bin/systrace/Makefile : 1.12
1.68 mrg 221: file distrib/utils/sysinst/Makefile.inc : 1.44
1.60 mrg 222: file games/bcd/Makefile : 1.5
223: file games/dab/Makefile : 1.5
224: file games/larn/Makefile : 1.17
225: file games/pom/Makefile : 1.5
226: file lib/libasn1/Makefile : 1.26
227: file lib/libcrypt/Makefile : 1.17
228: file lib/libgssapi/Makefile : 1.16
229: file lib/libhdb/Makefile : 1.20
230: file lib/libkadm5clnt/Makefile : 1.21
231: file lib/libkadm5srv/Makefile : 1.25
232: file lib/libkrb5/Makefile : 1.35
233: file lib/libssh/Makefile : 1.6
234: file lib/libtelnet/Makefile : 1.26
235: file libexec/getty/Makefile : 1.14
236: file libexec/kadmind/Makefile : 1.19
237: file libexec/kpasswdd/Makefile : 1.14
238: file sbin/atactl/Makefile : 1.3
239: file sbin/cgdconfig/Makefile : 1.7
240: file sbin/clri/Makefile : 1.13
241: file sbin/dkctl/Makefile : 1.4
242: file sbin/dump/Makefile : 1.33
243: file sbin/fdisk/Makefile : 1.35
244: file sbin/fsck_ext2fs/Makefile : 1.11
245: file sbin/fsck_ffs/Makefile : 1.29
246: file sbin/fsdb/Makefile : 1.18
247: file sbin/mount_smbfs/Makefile : 1.4
248: file sbin/newfs/Makefile : 1.30
249: file sbin/newfs_sysvbfs/Makefile : 1.2
250: file sbin/restore/Makefile : 1.23
251: file sbin/veriexecctl/Makefile : 1.11
1.64 mrg 252: file sys/lib/libsa/Makefile : 1.59
1.68 mrg 253: file sys/arch/evbarm/adi_brh/brh_machdep.c : 1.24
1.59 mrg 254: file usr.bin/awk/Makefile : 1.9
1.64 mrg 255: file usr.bin/crontab/Makefile : 1.24
1.60 mrg 256: file usr.bin/ctags/Makefile : 1.8
1.61 mrg 257: file usr.bin/gzip/Makefile : 1.10
1.60 mrg 258: file usr.bin/ssh/sftp/Makefile : 1.10
259: file usr.bin/ssh/ssh/Makefile : 1.25
1.59 mrg 260: file usr.bin/vi/build/Makefile : 1.26
1.60 mrg 261: file usr.bin/telnet/Makefile : 1.40
262: file usr.bin/tn3270/tn3270/Makefile : 1.36
263: file usr.bin/tr/Makefile : 1.4
1.59 mrg 264: file usr.sbin/amd/amd/Makefile : 1.27
265: file usr.sbin/amd/amq/Makefile : 1.14
266: file usr.sbin/amd/libamu/Makefile : 1.20
267: file usr.sbin/amd/pawd/Makefile : 1.5
268: file usr.sbin/bind/Makefile.inc : 1.22
1.60 mrg 269: file usr.sbin/bind/libdns/Makefile : 1.3
270: file usr.sbin/bind/named/Makefile : 1.17
271: file usr.sbin/bootp/bootptest/Makefile : 1.2
272: file usr.sbin/chrtbl/Makefile : 1.6
273: file usr.sbin/cron/Makefile : 1.12
1.59 mrg 274: file usr.sbin/dhcp/Makefile.inc : 1.20
275: file usr.sbin/dumplfs/Makefile : 1.11
1.60 mrg 276: file usr.sbin/hprop/Makefile : 1.13
277: file usr.sbin/installboot/Makefile : 1.35
1.59 mrg 278: file usr.sbin/ipf/ipftest/Makefile : 1.32
279: file usr.sbin/isdn/isdnd/Makefile : 1.6
280: file usr.sbin/isdn/isdnmonitor/Makefile : 1.3
281: file usr.sbin/isdn/isdntel/Makefile : 1.2
282: file usr.sbin/isdn/isdntrace/Makefile : 126
1.61 mrg 283: file usr.sbin/mopd/common/Makefile : 1.10
284: file usr.sbin/mopd/mopd/Makefile : 1.9
285: file usr.sbin/mopd/mopprobe/Makefile : 1.7
1.60 mrg 286: file usr.sbin/makefs/Makefile : 1.17
287: file usr.sbin/mscdlabel/Makefile : 1.5
288: file usr.sbin/pkg_install/add/Makefile : 1.7
289: file usr.sbin/pkg_install/create/Makefile : 1.5
290: file usr.sbin/pkg_install/lib/Makefile : 1.28
1.59 mrg 291: file usr.sbin/ntp/ntpd/Makefile : 1.10/1.11
292: file usr.sbin/ntp/ntptime/Makefile : 1.4/1.5
293: file usr.sbin/pppd/Makefile.inc : 1.3
294: file usr.sbin/pppd/pppd/Makefile : 1.38
1.60 mrg 295: file usr.sbin/rarpd/Makefile : 1.10
1.59 mrg 296: file usr.sbin/rbootd/Makefile : 1.10
1.60 mrg 297: file usr.sbin/rpc.pcnfsd/Makefile : 1.17
1.59 mrg 298: file usr.sbin/rtadvd/Makefile : 1.9
1.60 mrg 299: file usr.sbin/tcpdump/Makefile : 1.42
1.59 mrg 300: file usr.sbin/wiconfig/Makefile : 1.3
301: descr
302: GCC 4.1 warns on pointer sign comparision/assignments and lots of
303: code does not conform. For now we use -Wno-pointer-sign and
304: -fno-strict-aliasing.
305: kcah
306:
1.21 mycroft 307: port vax
308:
1.81 mrg 309: hack gcc4/vax compiler crash
310: cdate Fri Jun 30 22:39:12 PDT 2006
311: who mrg
312: file bin/csh/Makefile : 1.27
313: file lib/i18n_module/UTF7/Makefile : 1.2
314: descr
315: GCC4 on vax crashes. -O0 stops it happening so far...
316: kcah
317:
1.52 jmc 318: hack gcc 2.95/vax doesn't like abort being used as function pointer
319: cdate Tue Dec 13 05:54:50 GMT 2005
320: who jmc
321: file lib/libc/rpc/svc_vc.c 1.15
322: descr
323: Provide a local definition for abort which doesn't include
324: the noreturn attribute which trips up gcc 2.95 on vax.
1.81 mrg 325: kcah
1.52 jmc 326:
1.45 jmc 327: hack gcc 2.95/vax doesn't have stdbool.h and gettext needs it
328: cdate Mon May 9 12:16:22 CDT 2005
329: who jmc
330: file gnu/usr.bin/gettext/Makefile.inc.prog 1.5
331: gnu/usr.bin/gettext/libgrep/Makefile 1.3
332: gnu/usr.bin/gettext/libnlspr/Makefile 1.5
333: gnu/usr.bin/gettext/libnlsut/Makefile 1.3
334: descr
335: The latest gettext assumes a C99 environment or at least
336: configure checks to work around this. As we don't use configure
337: provide a stdbool.h for vax builds locally in directories from
338: the template provided by the gettext code.
1.81 mrg 339: kcah
1.45 jmc 340:
1.75 christos 341: hack gcc 2.95/vax can't handle __used__
1.44 jmc 342: cdate Fri May 6 14:30:53 CDT 2005
343: who jmc
344: file src/lib/libc/gmon/mcount.c 1.17
1.75 christos 345: src/usr.bin/config/main.c 1.11
1.44 jmc 346: descr
347: Recent changes to mark this as __used__ to prevent optimization
348: away on sparc64 don't work on 2.95 vax. Ifdef'd back in the
349: old __unused__ if on vax.
1.81 mrg 350: kcah
1.44 jmc 351:
1.21 mycroft 352: hack gcc 2.95/vax cannot handle __builtin_ffs()
353: cdate Fri Aug 23 21:31:15 CEST 2002
354: who ragge
355: file sys/lib/libkern/libkern.h : 1.42
356: descr
357: __builtin_ffs() is ifdef'd away if __vax__. Matt Thomas has
358: added this feature to GCC 3 so it can be removed when switching.
1.81 mrg 359: kcah
1.21 mycroft 360:
361: hack gcc-vax-libbz2
362: mdate 27 Jun 2002
363: who thorpej
364: file lib/libbz2/Makefile
365: descr
366: libbz2 is mis-compiled with optimization with GCC 2.95.3
1.24 ragge 367: on VAX. -O0 works around this problem.
368: kcah
369:
370: hack gawk
371: mdate 8 Nov 2003
372: who ragge
373: file gnu/usr.bin/gawk/Makefile
374: descr
375: gawk is mis-compiled with optimization with GCC 2.95.3
1.21 mycroft 376: on VAX. -O0 works around this problem.
377: kcah
378:
379: hack vax Toolchain bug
380: cdate 28 Mar 2003
381: who he
382: file sys/arch/vax/vax/intvec.S : 1.5
383: descr
384: Workaround for PR toolchain/20924. The assembler apparently
385: tries to range-check byte offsets when it doesn't have
386: sufficient information to make that decision.
387: Workaround uses `brw' instead of `brb' instruction.
1.23 he 388: kcah
389:
390: hack vax gcc 2.95.3 -Wuninitialized workarounds
391: cdate 6 Nov 2003
392: who he
393: file sys/dev/bi/if_ni.c : 1.22
394: file sys/arch/vax/vax/ctu.c : 1.20
395: descr
396: Workaround for gcc 2.95.3 failing to detect that certain
397: variables will be initialized; so that this code compiles
398: with -Wuninitialized. Should be reviewed and possibly
399: reverted when gcc 3.3.2 is ready for vax.
1.21 mycroft 400: kcah
401:
1.34 cl 402: hack vax gcc 2.95.3 structure initialization
403: cdat 13 May 2004
404: who cl
405: file sys/miscfs/kernfs/kernfs_vnops.c : 1.104
406: descr
407: Workaround for gcc 2.95.3 failing to initialize structures
408: and/or unions inside structures using nested designators.
409: Should be reverted when gcc >=3.3.3 is ready for vax.
410: kcah
1.21 mycroft 411:
1.35 he 412: hack vax gcc 2.95.3 needs -I. to build nslexer.c
413: cdat 6 Jun 2004
1.36 he 414: who mhitch
415: file lib/libc/arch/vax/Makefile.inc : 1.6
1.35 he 416: descr
417: It appears necessary to add -I. to CPPFLAGS when building
418: nslesxer.c. This may be caused by gcc 2.95.3 being used.
419: Should be reverted when a newer gcc is ready for vax.
420: kcah
421:
1.43 tron 422: hack vax gcc 2.95.3 doesn't understand "-std=c99"
423: cdat 5 April 2005
424: who tron
425: file src/share/mk/bsd.sys.mk
426: descr
427: We cannot use "-std=c99" for compiler warning level 4 and above
428: because gcc 2.95.3 doesn't support that option.
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.21 mycroft 447: port sparc64
448:
449: hack binutil-2.11-sparc64-pltrela
450: mdate 14 Aug 2001
451: who eeh
452: file libexec/ld.elf_so/arch/sparc64/mdreloc.c
453: descr
1.39 skrll 454: The first four PLT entries are reserved. There is some
1.21 mycroft 455: disagreement whether they should have associated relocation
456: entries. Both the SPARC 32-bit and 64-bit ELF specifications
457: say that they should have relocation entries, but the 32-bit
458: SPARC binutils do not generate them, and now the 64-bit SPARC
459: binutils have stopped generating them too.
460:
461: To provide binary compatibility, we will check the first entry,
462: if it is reserved it should not be of the type JMP_SLOT. If it
463: is JMP_SLOT, then the 4 reserved entries were not generated and
464: our index is 4 entries too far, so we frob the rela pointer.
465: kcah
466:
467:
468: port arm
469:
470: hack gcc-unsigned-compare
471: cdate 09 Mar 2002
472: mdate 18 Mar 2002
473: who bjh21
474: file dist/bind/lib/nameser/ns_parse.c : 1.3
475: file dist/dhcp/minires/ns_parse.c : 1.3
476: file dist/dhcp/omapip/result.c : 1.2
477: file dist/dhcp/server/failover.c : 1.3
478: file gnu/dist/gawk/eval.c : 1.4
479: file gnu/dist/toolchain/bfd/bfd.c : 1.2
480: file gnu/dist/toolchain/bfd/format.c : 1.2
481: file gnu/dist/toolchain/gdb/target.c : 1.2
482: file sys/kern/vfs_subr.c : 1.172
483: descr When checking that a potentially-unsigned enum is >= 0, assign
484: it to an int first. This is necessary to avoid "comparison is
485: always true" warnings with -fshort-enums. Casting to an int
486: really should be enough, but turns out not to be.
487: kcah
488:
489: hack gcc 3.3.2/arm sys/kern/uipc_socket.c
490: cdate Tue Oct 28 18:02:16 GMT 2003
491: who skrll
1.41 bjh21 492: pr 23044
493: file sys/arch/arm/conf/Makefile.arm : 1.19
1.21 mycroft 494: descr
495: Performing a build.sh tools on a CATS with NFS mounted
496: obj and src directories results in "panic: receive 1"
497: The hack is to compile sys/kern/uipc_socket.c with
498: -fno-strict-aliasing
499: kcah
500:
501:
1.13 simonb 502: port pc532
1.16 cl 503:
1.21 mycroft 504: hack egcs-pc532-ip6_mroute
505: cdate 09 Jul 2002
506: who simonb
507: file sys/arch/pc532/conf/Makefile.pc532 : 1.70
508: file sys/arch/pc532/conf/files.pc532 : 1.47
509: descr
510: egcs 1.1.2 gets an "internal error--insn does not satisfy its
511: constraints" error compiling ip6_mroute.c with -O2 or greater.
512: -O1 works around this problem.
513: kcah
514:
515: hack gcc-pc532-duffs_device
516: cdate Mon Oct 27 07:23:05 UTC 2003
517: who simonb
518: file sys/arch/pc532/conf/Makefile.pc532 : 1.71
519: file sys/arch/pc532/conf/files.pc532 : 1.52
520: pr GCC PR optimization/5230
521: descr
522: gcc incorrectly gives an "unreachable code at beginning of
523: switch statement" for a Duff's device construct in
524: arch/pc532/dev/ncr.c. There is no way to disable just this
525: warning, so -Wno-error is turned on for this file.
526: kcah
527:
1.26 simonb 528: hack gcc332-cppmacro-ice
529: cdate Sun Dec 7 12:48:33 UTC 2003
530: who simonb
531: file gnu/usr.bin/gcc3/libcpp/Makefile : 1.2
532: descr
533: gcc 3.3.2 gets an ICE when compiling cppmacro.c with -O2.
534: The hack is to use -O1 for this file. Fixed in gcc
535: -current mainline, unable to work out where the fix is
536: right now.
537: kcah
538:
1.21 mycroft 539:
540: port sh3
541:
1.74 mrg 542: hack gcc4-sh3-bz2
543: mdate 20 May 2006
544: who mrg
545: file lib/libbz2/Makefile : 1.10
546: descr
547: The in-tree GCC 4.1-based compiler generated too-far
548: pc-relative addresses. Hack is to build with -O0.
549: kcah
550:
1.21 mycroft 551:
552: port sh5
553:
554: hack SuperH SH5 Toolchain Bugs
555: cdate 11 Jul 2002
556: who scw
557: file usr.sbin/ndbootd/ndbootd.c : 1.6
558: file usr.sbin/traceroute/traceroute.c : 1.48
559: descr
560: The SuperH SH5 toolchain (2.97-sh5-010522) gets an internal
561: compiler error when assigning a bit-wise inverted value
562: under some circumstances.
563: Work around it by splitting the statement into two.
564: kcah
565:
566: hack SuperH SH5 Toolchain Bugs
567: cdate 17 May 2003
568: who scw
569: file lib/libpthread/pthread_lock.c : 1.7
570: descr
571: The SuperH SH5 toolchain generates incorrect PIC code when
572: faced with a symbol which is declared extern, but has local
573: scope due to being defined within an asm() statement (without
574: being declared .globl in that statement). Work around it by
575: adding the .globl.
1.27 scw 576: kcah
577:
578: hack gcc 3.3.2 on sh5 - ICE compiling reload1.c at -O2
579: cdate Sun Dec 7 19:44:05 GMT 2003
580: who scw
581: file gnu/usr.bin/gcc3/backend/Makefile : 1.13
582: descr
583: Gcc3 for sh5 gets an ICE compiling reload1.c at -O2.
584: Drop to -O1 for now when building for sh5.
585: kcah
1.28 scw 586:
587: hack gcc 3.3.2 on sh5 - ICE compiling elf32.c/elf64.c at -O2
588: cdate Sun Dec 7 21:10:46 GMT 2003
589: who scw
590: file gnu/lib/libbfd/Makefile : 1.39
591: descr
592: Gcc3 for sh5 gets an ICE compiling libbfd's elf32.c
593: and elf64.c at -O2.
594: Drop to -O1 for now when building for sh5.
595: kcah
596:
1.27 scw 597:
598: hack gcc 3.3.2 on sh5 - fatal warning compiling function.c
599: cdate Sun Dec 7 19:44:05 GMT 2003
600: who scw
601: file gnu/usr.bin/gcc3/backend/Makefile : 1.13
602: descr
603: Gcc3 for sh5 issues a warning:
604: .../gnu/dist/gcc/gcc/function.c:4742: warning: `and' of
605: mutually exclusive equal-tests is always 0.
606: This causes the build to fail because of -Werror.
607: Work-around by defining NOGCCERROR when building for sh5.
608: kcah
609:
1.40 he 610: hack gcc 3.3.3 on sh5 - ICE compiling rbtdb.c and rbtdb64.c
611: cdate Thu Nov 11 00:35:33 UTC 2004
612: who he
613: file usr.sbin/bind/libdns/Makefile/1.2
1.27 scw 614: descr
1.40 he 615: Gcc3 for sh5 gets an ICE compiling these files at -O2.
1.27 scw 616: Drop to -O1 for now when building for sh5.
1.21 mycroft 617: kcah
1.17 mrg 618:
1.48 he 619: hack gcc 3.3.3 nb3 on sh5 - ICE compiling bsd-comp.c
620: cdate Thu May 25 23:05:20 UTC 2005
621: who he
622: file sys/lkm/net/bsdcomp/Makefile : 1.3
623: descr
624: Gcc3 for sh5 gets an ICE compiling this at -O2,
625: "could not split insn". Drop to -O1 for sh5.
626: kcah
1.17 mrg 627:
1.53 scw 628: hack gcc 3.3.3 nb3 on sh5 - ICE compiling strtod.c
629: cdate Tue Jan 31 10:51:52 GMT 2006
630: who scw
631: file lib/libc/gdtoa/Makefile.inc : 1.2
632: descr
633: Gcc3 for sh5 gets an ICE compiling this at -O2,
634: "could not split insn". Drop to -O1 for sh5.
635: kcah
636:
1.17 mrg 637: port sun2
1.20 skrll 638:
1.21 mycroft 639: hack gcc 3.3.2/mdsetimage
640: cdate Tue Oct 28 18:43:05 EST 2003
641: who fredette
642: file gnu/usr.sbin/mdsetimage/Makefile : 1.15
643: descr
644: mdsetimage.c causes cc1 to barf for as-yet unknown reasons.
1.26 simonb 645: this hack uses -O0 to avoid the problem.
1.21 mycroft 646: kcah
647:
648: hack gcc 3.3.2/installboot/ffs.c
649: cdate Tue Oct 28 18:43:05 EST 2003
650: who fredette
651: file usr.sbin/installboot/Makefile : 1.26
652: descr
653: ffs.c causes cc1 to barf for as-yet unknown reasons. this
1.26 simonb 654: hack uses -O0 to avoid the problem.
1.22 mrg 655: kcah
656:
1.79 mrg 657: hack gcc 4.1.1/fsck_ffs/pass1.c
658: cdate Fri Jun 23 10:30:25 PDT 2006
659: who mrg
660: file sbin/fsck_ffs/Makefile : 1.30
661: file sbin/fsdb/Makefile : 1.19
662: file sbin/dump_lfs/Makefile : 1.9
663: file usr.sbin/ndbootd/Makefile : 1.2
664: descr
665: pass1.c causes cc1 to barf for as-yet unknown reasons. this
666: hack uses -O0 to avoid the problem. (these all seem to be the
667: same problem.)
668: kcah
669:
1.22 mrg 670:
1.56 tsutsui 671: port m68000
1.22 mrg 672:
673: hack gcc 3.3.2/gcc/ra-colorize.c
674: cdate Wed Nov 5 11:03:13 EST 2003
675: who mrg
1.46 chs 676: file gnu/usr.bin/gcc3/backend/Makefile : 1.11
1.22 mrg 677: descr
678: ra-colorize.c causes a whole spew of unreferenced .L* local
679: symbols. using -O0 (or even -O2 reportedly) avoids the problem.
1.56 tsutsui 680: Note this has been fixed in 3.3.3 at least on m68k,
681: but it hasn't been confirmed on sun2/m68000.
682: (it's too slow even on emulator and unlikely to build
683: toolchains on sun2 with its maximum 4MB RAM)
1.21 mycroft 684: kcah
1.31 martin 685:
686: port sparc64
687:
688: hack disable optimzations for uvm_bio.c on 32 bit kernels
689: cdate Sun Mar 21 14:14:04 MET 2004
690: who martin
1.32 martin 691: file sys/arch/sparc64/conf/Makefile.sparc64 : 1.53-1.54
692: file sys/arch/sparc64/conf/files.sparc64 : 1.93
1.31 martin 693: descr
694: The sparc compiler miscompiles uvm_bio.c when using
695: any optimization. This results in ubc_release panics.
696: kcah
1.42 christos 697:
698: port macppc
699:
700: hack remove inline from rotate_{left,right}
701: cdate Tue Feb 22 13:43:25 EST 2005
702: who christos
703: file src/dist/bind/lib/dns/rbt.c
704: descr
705: The macppc gcc-3.3 compiler miscompiles rbt.c when these
706: functions are inlined. The error is:
707: .* named[368]: rbt.c:1584: INSIST(child != (void *)0) >failed
708: .* named[368]: exiting (due to assertion failure)
709: This is reportedly fixed in gcc-3.4
710: kcah
1.46 chs 711:
712: port hppa
713:
714: hack hppa-gcc-3.3.3/grep/dfa.c
715: cdate Sun Aug 8 08:34:32 PDT 2004
716: who chs
717: file gnu/usr.bin/grep/grep/Makefile : 1.4
718: descr
719: gcc 3.3.3 generates bad code for dfa.c with -O2,
720: reduce optimization to -O1 to avoid the bug.
721: kcah
1.47 chs 722:
723: hack hppa boot-from-disk memory corruption
724: cdate Wed May 18 06:56:07 PDT 2005
725: who chs
726: file src/sys/dev/scsipi/scsipiconf.h : 1.98
727: descr
728: There is some bug with DMA on hppa that corrupts scsipi_xfer
729: structures, but it only shows up when booting from disk.
730: For now, we'll add some padding to scsipi_xfer so that
731: the corrupted memory is not otherwise used.
732: kcah
1.51 simonb 733:
734: port mips
735:
736: hack mips-shared-linker-load-address
737: cdate Fri Oct 7 08:33:10 UTC 2005
738: who simonb
739: file src/sys/kern/exec_elf32.c : 1.107
740: descr
741: With COMPAT_16 or previous enabled (which enables
742: ELF_INTERP_NON_RELOCATABLE) a recent ld.elf_so will
743: load and run at address 0. The check to fix this in
744: rev 1.107 only checks the first psection of the ELF
745: executable, which may not be loadable. A more correct
746: fix is to check the first loadable psection instead of
747: just the first psection.
748: kcah
1.54 he 749:
1.82 ! christos 750: port i386
! 751:
! 752: hack minus-Os-broken-machdep-c
! 753: cdate Mon Jul 31 13:09:01 EDT 2006
! 754: who christos
! 755: file src/sys/arch/machdep.c : 1.576
! 756: descr
! 757: gcc-4 miscompiles this file with -Os and the resulting
! 758: kernel resets as reported in PR33918
! 759: kcah
CVSweb <webmaster@jp.NetBSD.org>