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