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