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