HACKS revision 1.94
1# $NetBSD: HACKS,v 1.94 2007/12/31 14:10:41 ad 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 uninitialized 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 crypto/dist/heimdal/kdc/524.c : 1.10 132file crypto/dist/ssh/sftp.c : 1.20 133file crypto/dist/ssh/ssh-keysign.c : 1.11 134file dist/ipf/lib/hostname.c : 1.2 135file dist/ipf/tools/ipmon.c : 1.8 136file dist/ntp/ntpd/ntp_request.c : 1.4 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/m68k/mdreloc.c : 1.20 150file libexec/ld.elf_so/arch/powerpc/ppc_reloc.c : 1.40 151file libexec/ld.elf_so/arch/sh3/mdreloc.c : 1.22 152file libexec/ld.elf_so/arch/sparc/mdreloc.c : 1.39 153file libexec/ld.elf_so/arch/sparc64/mdreloc.c : 1.39 154file libexec/ld.elf_so/arch/vax/mdreloc.c : 1.21 155file libexec/ld.elf_so/arch/x86_64/mdreloc.c : 1.27 156file sbin/fsck_ext2fs/dir.c : 1.19 157file sbin/routed/rtquery/rtquery.c : 1.18 158file sys/arch/amd64/amd64/pmap.c : 1.26 159file sys/arch/i386/pci/piixpcib.c : 1.4 160file sys/arch/m68k/m68k/pmap_motorola.c : 1.4 161file sys/crypto/cast128/cast128.c : 1.9 162file sys/ddb/db_command.c : 1.86 163file sys/dev/cardbus/cardbus_map.c : 1.21 164file sys/dev/fss.c : 1.25 165file sys/dev/ic/igsfb.c : 1.39 166file sys/dev/ic/mb86950.c : 1.5 167file sys/dev/ic/midway.c : 1.71 168file sys/dev/kttcp.c : 1.18 169file sys/dev/rasops/rasops_bitops.h : 1.9 170file sys/dev/pci/cmpci.c : 1.31 171file sys/dev/pci/machfb.c : 1.45 172file sys/dev/usb/ohci.c : 1.174 173file sys/dev/usb/uhci.c : 1.196 174file sys/dev/rasops/rasops_bitops.h : 1.9 175file sys/dist/ipf/netinet/ip_nat.c : 1.10 176file sys/dist/ipf/netinet/ip_rpcb_pxy.c : 1.8 177file sys/dist/pf/net/pf.c : 1.22 178file sys/fs/udf/udf_vnops.c : 1.4 179file sys/kern/kern_sig.c : 1.219 180file sys/kern/tty.c : 1.181 181file sys/net/bpf.c : 1.116 182file sys/net/zlib.c : 1.26 183file sys/netccitt/if_x25subr.c : 1.37 184file sys/netinet/in.c : 1.107 185file sys/netsmb/smb_smb.c : 1.27 186file sys/netsmb/smb_trantcp.c : 1.22 187file sys/nfs/nfs_serv.c : 1.108 188file sys/nfs/nfs_socket.c : 1.129 189file sys/nfs/nfs_syscalls.c : 1.91 190file sys/ufs/lfs/lfs_vfsops.c : 1.207 [also (char *)] 191file usr.bin/ftp/ftp.c : 1.140 192file usr.bin/find/function.c : 1.54 193file usr.bin/mail/tty.c : 1.20 194file usr.bin/nl/nl.c : 1.7 195file usr.bin/systat/keyboard.c : 1.23 196file usr.bin/usbhidctl/usbhid.c : 1.29 197file usr.bin/vi/cl/cl_read.c : 1.5 198file usr.bin/vi/ex/ex_cscope.c : 1.12 199file usr.bin/vi/ex/ex_tag.c : 1.19 200file usr.bin/vi/vi/v_txt.c : 1.15 201file usr.sbin/altq/altqstat/qdisc_rio.c : 1.4 202file usr.sbin/cron/do_command.c : 1.19 203file usr.sbin/timed/timed/slave.c : 1.15 204descr 205 GCC 4.1 gets many uninitialised variable warnings wrong. We should 206 really audit all the old hacks like this when older compilers are 207 removed from the tree, as many are probably no longer required. 208 The problem is that it does not recognize initialization via function 209 call pointer. I.e. 210 int p; 211 foo(&p); 212 does not mark p as initialized. 213kcah 214 215hack gcc4 pointer sign and strict aliasing problems 216mdate 10 May 2006 217who mrg 218file bin/ed/Makefile : 1.33 219file distrib/utils/sysinst/Makefile.inc : 1.44 220file distrib/utils/x_dhclient/Makefile : 1.15 221file games/bcd/Makefile : 1.5 222file games/dab/Makefile : 1.5 223file games/larn/Makefile : 1.17 224file games/pom/Makefile : 1.5 225file lib/libasn1/Makefile : 1.26 226file lib/libcrypt/Makefile : 1.17 227file lib/libgssapi/Makefile : 1.16 228file lib/libhdb/Makefile : 1.20 229file lib/libkadm5clnt/Makefile : 1.21 230file lib/libkadm5srv/Makefile : 1.25 231file lib/libkrb5/Makefile : 1.35 232file lib/libssh/Makefile : 1.6 233file lib/libtelnet/Makefile : 1.26 234file libexec/getty/Makefile : 1.14 235file libexec/kadmind/Makefile : 1.19 236file libexec/kpasswdd/Makefile : 1.14 237file sbin/atactl/Makefile : 1.3 238file sbin/cgdconfig/Makefile : 1.7 239file sbin/clri/Makefile : 1.13 240file sbin/dkctl/Makefile : 1.4 241file sbin/dump/Makefile : 1.33 242file sbin/fdisk/Makefile : 1.35 243file sbin/fsck_ext2fs/Makefile : 1.11 244file sbin/fsck_ffs/Makefile : 1.29 245file sbin/fsdb/Makefile : 1.18 246file sbin/mount_smbfs/Makefile : 1.4 247file sbin/newfs/Makefile : 1.30 248file sbin/newfs_sysvbfs/Makefile : 1.2 249file sbin/restore/Makefile : 1.23 250file sbin/veriexecctl/Makefile : 1.11 251file sys/lib/libsa/Makefile : 1.59 252file sys/arch/evbarm/adi_brh/brh_machdep.c : 1.24 253file usr.bin/awk/Makefile : 1.9 254file usr.bin/crontab/Makefile : 1.24 255file usr.bin/ctags/Makefile : 1.8 256file usr.bin/gzip/Makefile : 1.10 257file usr.bin/ssh/sftp/Makefile : 1.10 258file usr.bin/ssh/ssh/Makefile : 1.25 259file usr.bin/vi/build/Makefile : 1.26 260file usr.bin/telnet/Makefile : 1.40 261file usr.bin/tn3270/tn3270/Makefile : 1.36 262file usr.bin/tr/Makefile : 1.4 263file usr.sbin/amd/amd/Makefile : 1.27 264file usr.sbin/amd/amq/Makefile : 1.14 265file usr.sbin/amd/libamu/Makefile : 1.20 266file usr.sbin/amd/pawd/Makefile : 1.5 267file usr.sbin/bind/Makefile.inc : 1.22 268file usr.sbin/bind/libdns/Makefile : 1.3 269file usr.sbin/bind/named/Makefile : 1.17 270file usr.sbin/bootp/bootptest/Makefile : 1.2 271file usr.sbin/chrtbl/Makefile : 1.6 272file usr.sbin/cron/Makefile : 1.12 273file usr.sbin/dhcp/Makefile.inc : 1.20 274file usr.sbin/dumplfs/Makefile : 1.11 275file usr.sbin/hprop/Makefile : 1.13 276file usr.sbin/installboot/Makefile : 1.35 277file usr.sbin/ipf/ipftest/Makefile : 1.32 278file usr.sbin/isdn/isdnd/Makefile : 1.6 279file usr.sbin/isdn/isdnmonitor/Makefile : 1.3 280file usr.sbin/isdn/isdntel/Makefile : 1.2 281file usr.sbin/isdn/isdntrace/Makefile : 126 282file usr.sbin/mopd/common/Makefile : 1.10 283file usr.sbin/mopd/mopd/Makefile : 1.9 284file usr.sbin/mopd/mopprobe/Makefile : 1.7 285file usr.sbin/makefs/Makefile : 1.17 286file usr.sbin/mscdlabel/Makefile : 1.5 287file usr.sbin/pkg_install/add/Makefile : 1.7 288file usr.sbin/pkg_install/create/Makefile : 1.5 289file usr.sbin/pkg_install/lib/Makefile : 1.28 290file usr.sbin/ntp/ntpd/Makefile : 1.10/1.11 291file usr.sbin/ntp/ntptime/Makefile : 1.4/1.5 292file usr.sbin/pppd/Makefile.inc : 1.3 293file usr.sbin/pppd/pppd/Makefile : 1.38 294file usr.sbin/rarpd/Makefile : 1.10 295file usr.sbin/rbootd/Makefile : 1.10 296file usr.sbin/rpc.pcnfsd/Makefile : 1.17 297file usr.sbin/rtadvd/Makefile : 1.9 298file usr.sbin/tcpdump/Makefile : 1.42 299file usr.sbin/wiconfig/Makefile : 1.3 300descr 301 GCC 4.1 warns on pointer sign comparision/assignments and lots of 302 code does not conform. For now we use -Wno-pointer-sign and 303 -fno-strict-aliasing. 304kcah 305 306port vax 307 308 hack gcc4/vax compiler crash 309 cdate Fri Jun 30 22:39:12 PDT 2006 310 who mrg 311 file bin/csh/Makefile : 1.27 312 file lib/i18n_module/UTF7/Makefile : 1.2 313 descr 314 GCC4 on vax crashes. -O0 stops it happening so far... 315 kcah 316 317 hack gcc 2.95/vax doesn't like abort being used as function pointer 318 cdate Tue Dec 13 05:54:50 GMT 2005 319 who jmc 320 file lib/libc/rpc/svc_vc.c 1.15 321 descr 322 Provide a local definition for abort which doesn't include 323 the noreturn attribute which trips up gcc 2.95 on vax. 324 kcah 325 326 hack gcc 2.95/vax doesn't have stdbool.h and gettext needs it 327 cdate Mon May 9 12:16:22 CDT 2005 328 who jmc 329 file gnu/usr.bin/gettext/Makefile.inc.prog 1.5 330 gnu/usr.bin/gettext/libgrep/Makefile 1.3 331 gnu/usr.bin/gettext/libnlspr/Makefile 1.5 332 gnu/usr.bin/gettext/libnlsut/Makefile 1.3 333 descr 334 The latest gettext assumes a C99 environment or at least 335 configure checks to work around this. As we don't use configure 336 provide a stdbool.h for vax builds locally in directories from 337 the template provided by the gettext code. 338 kcah 339 340 hack gcc 2.95/vax cannot handle __builtin_ffs() 341 cdate Fri Aug 23 21:31:15 CEST 2002 342 who ragge 343 file sys/lib/libkern/libkern.h : 1.42 344 descr 345 __builtin_ffs() is ifdef'd away if __vax__. Matt Thomas has 346 added this feature to GCC 3 so it can be removed when switching. 347 kcah 348 349 hack gcc-vax-libbz2 350 mdate 27 Jun 2002 351 who thorpej 352 file lib/libbz2/Makefile 353 descr 354 libbz2 is mis-compiled with optimization with GCC 2.95.3 355 on VAX. -O0 works around this problem. 356 kcah 357 358 hack vax Toolchain bug 359 cdate 28 Mar 2003 360 who he 361 file sys/arch/vax/vax/intvec.S : 1.5 362 descr 363 Workaround for PR toolchain/20924. The assembler apparently 364 tries to range-check byte offsets when it doesn't have 365 sufficient information to make that decision. 366 Workaround uses `brw' instead of `brb' instruction. 367 kcah 368 369 hack vax gcc 2.95.3 -Wuninitialized workarounds 370 cdate 6 Nov 2003 371 who he 372 file sys/dev/bi/if_ni.c : 1.22 373 file sys/arch/vax/vax/ctu.c : 1.20 374 descr 375 Workaround for gcc 2.95.3 failing to detect that certain 376 variables will be initialized; so that this code compiles 377 with -Wuninitialized. Should be reviewed and possibly 378 reverted when gcc 3.3.2 is ready for vax. 379 kcah 380 381 hack vax gcc 2.95.3 structure initialization 382 cdat 13 May 2004 383 who cl 384 file sys/miscfs/kernfs/kernfs_vnops.c : 1.104 385 descr 386 Workaround for gcc 2.95.3 failing to initialize structures 387 and/or unions inside structures using nested designators. 388 Should be reverted when gcc >=3.3.3 is ready for vax. 389 kcah 390 391 hack vax gcc 2.95.3 needs -I. to build nslexer.c 392 cdat 6 Jun 2004 393 who mhitch 394 file lib/libc/arch/vax/Makefile.inc : 1.6 395 descr 396 It appears necessary to add -I. to CPPFLAGS when building 397 nslesxer.c. This may be caused by gcc 2.95.3 being used. 398 Should be reverted when a newer gcc is ready for vax. 399 kcah 400 401 hack vax gcc 2.95.3 doesn't understand "-std=c99" 402 cdat 5 April 2005 403 who tron 404 file src/share/mk/bsd.sys.mk 405 descr 406 We cannot use "-std=c99" for compiler warning level 4 and above 407 because gcc 2.95.3 doesn't support that option. 408 kcah 409 410 hack declare boolean_t in two IPF user-mode programs 411 cdate Tue Mar 7 19:19:20 CET 2006 412 who he 413 file dist/ipf/ipsend/iptests.c : 1.8 414 dist/ipf/ipsend/sock.c : 1.7 415 descr 416 The IPF user-mode programs ipsend and iptest first 417 include <sys/types.h> without _KERNEL defined, and 418 later include <sys/file.h> with _KERNEL defined. 419 This causes a build failure when building for vax, 420 since <sys/device.h> ends up being included without 421 bollean_t being defined by <sys/types.h>. 422 Build failure and further details documented in 423 PR#32907. 424 kcah 425 426port arm 427 428 hack gcc-unsigned-compare 429 cdate 09 Mar 2002 430 mdate 18 Mar 2002 431 who bjh21 432 file dist/bind/lib/nameser/ns_parse.c : 1.3 433 file dist/dhcp/minires/ns_parse.c : 1.3 434 file dist/dhcp/omapip/result.c : 1.2 435 file dist/dhcp/server/failover.c : 1.3 436 file gnu/dist/toolchain/bfd/bfd.c : 1.2 437 file gnu/dist/toolchain/bfd/format.c : 1.2 438 file gnu/dist/toolchain/gdb/target.c : 1.2 439 file sys/kern/vfs_subr.c : 1.172 440 descr When checking that a potentially-unsigned enum is >= 0, assign 441 it to an int first. This is necessary to avoid "comparison is 442 always true" warnings with -fshort-enums. Casting to an int 443 really should be enough, but turns out not to be. 444 kcah 445 446 hack gcc 3.3.2/arm sys/kern/uipc_socket.c 447 cdate Tue Oct 28 18:02:16 GMT 2003 448 who skrll 449 pr 23044 450 file sys/arch/arm/conf/Makefile.arm : 1.19 451 descr 452 Performing a build.sh tools on a CATS with NFS mounted 453 obj and src directories results in "panic: receive 1" 454 The hack is to compile sys/kern/uipc_socket.c with 455 -fno-strict-aliasing 456 kcah 457 458 459port pc532 460 461 hack egcs-pc532-ip6_mroute 462 cdate 09 Jul 2002 463 who simonb 464 file sys/arch/pc532/conf/Makefile.pc532 : 1.70 465 file sys/arch/pc532/conf/files.pc532 : 1.47 466 descr 467 egcs 1.1.2 gets an "internal error--insn does not satisfy its 468 constraints" error compiling ip6_mroute.c with -O2 or greater. 469 -O1 works around this problem. 470 kcah 471 472 hack gcc-pc532-duffs_device 473 cdate Mon Oct 27 07:23:05 UTC 2003 474 who simonb 475 file sys/arch/pc532/conf/Makefile.pc532 : 1.71 476 file sys/arch/pc532/conf/files.pc532 : 1.52 477 pr GCC PR optimization/5230 478 descr 479 gcc incorrectly gives an "unreachable code at beginning of 480 switch statement" for a Duff's device construct in 481 arch/pc532/dev/ncr.c. There is no way to disable just this 482 warning, so -Wno-error is turned on for this file. 483 kcah 484 485 hack gcc332-cppmacro-ice 486 cdate Sun Dec 7 12:48:33 UTC 2003 487 who simonb 488 file gnu/usr.bin/gcc3/libcpp/Makefile : 1.2 489 descr 490 gcc 3.3.2 gets an ICE when compiling cppmacro.c with -O2. 491 The hack is to use -O1 for this file. Fixed in gcc 492 -current mainline, unable to work out where the fix is 493 right now. 494 kcah 495 496 497port sh3 498 499 hack gcc4-sh3-bz2 500 mdate 20 May 2006 501 who mrg 502 file lib/libbz2/Makefile : 1.10 503 descr 504 The in-tree GCC 4.1-based compiler generated too-far 505 pc-relative addresses. Hack is to build with -O0. 506 kcah 507 508 509port sun2 510 511 hack gcc 3.3.2/mdsetimage 512 cdate Tue Oct 28 18:43:05 EST 2003 513 who fredette 514 file gnu/usr.sbin/mdsetimage/Makefile : 1.15 515 descr 516 mdsetimage.c causes cc1 to barf for as-yet unknown reasons. 517 this hack uses -O0 to avoid the problem. 518 kcah 519 520 hack gcc 3.3.2/installboot/ffs.c 521 cdate Tue Oct 28 18:43:05 EST 2003 522 who fredette 523 file usr.sbin/installboot/Makefile : 1.26 524 descr 525 ffs.c causes cc1 to barf for as-yet unknown reasons. this 526 hack uses -O0 to avoid the problem. 527 kcah 528 529 hack gcc 4.1.1/fsck_ffs/pass1.c 530 cdate Fri Jun 23 10:30:25 PDT 2006 531 who mrg 532 file sbin/fsck_ffs/Makefile : 1.30 533 file sbin/fsdb/Makefile : 1.19 534 file sbin/dump_lfs/Makefile : 1.9 535 file usr.sbin/ndbootd/Makefile : 1.2 536 descr 537 pass1.c causes cc1 to barf for as-yet unknown reasons. this 538 hack uses -O0 to avoid the problem. (these all seem to be the 539 same problem.) 540 kcah 541 542 543port m68000 544 545 hack gcc 3.3.2/gcc/ra-colorize.c 546 cdate Wed Nov 5 11:03:13 EST 2003 547 who mrg 548 file gnu/usr.bin/gcc3/backend/Makefile : 1.11 549 descr 550 ra-colorize.c causes a whole spew of unreferenced .L* local 551 symbols. using -O0 (or even -O2 reportedly) avoids the problem. 552 Note this has been fixed in 3.3.3 at least on m68k, 553 but it hasn't been confirmed on sun2/m68000. 554 (it's too slow even on emulator and unlikely to build 555 toolchains on sun2 with its maximum 4MB RAM) 556 kcah 557 558port sparc64 559 560 hack disable optimzations for uvm_bio.c on 32 bit kernels 561 cdate Sun Mar 21 14:14:04 MET 2004 562 who martin 563 file sys/arch/sparc64/conf/Makefile.sparc64 : 1.53-1.54 564 file sys/arch/sparc64/conf/files.sparc64 : 1.93 565 descr 566 The sparc compiler miscompiles uvm_bio.c when using 567 any optimization. This results in ubc_release panics. 568 kcah 569 570port macppc 571 572 hack remove inline from rotate_{left,right} 573 cdate Tue Feb 22 13:43:25 EST 2005 574 who christos 575 file src/dist/bind/lib/dns/rbt.c 576 descr 577 The macppc gcc-3.3 compiler miscompiles rbt.c when these 578 functions are inlined. The error is: 579 .* named[368]: rbt.c:1584: INSIST(child != (void *)0) >failed 580 .* named[368]: exiting (due to assertion failure) 581 This is reportedly fixed in gcc-3.4 582 kcah 583 584port mips 585 586 hack mips-shared-linker-load-address 587 cdate Fri Oct 7 08:33:10 UTC 2005 588 who simonb 589 file src/sys/kern/exec_elf32.c : 1.107 590 descr 591 With COMPAT_16 or previous enabled (which enables 592 ELF_INTERP_NON_RELOCATABLE) a recent ld.elf_so will 593 load and run at address 0. The check to fix this in 594 rev 1.107 only checks the first psection of the ELF 595 executable, which may not be loadable. A more correct 596 fix is to check the first loadable psection instead of 597 just the first psection. 598 kcah 599 600 hack mips-duplicate-ras-end-label 601 cdate Sat Sep 2 23:29:42 2006 602 who martin 603 file src/regress/sys/kern/ras/ras3/Makefile : 1.3 604 descr 605 Add -fno-reorder-blocks to CFLAGS to avoid duplicate 606 labels by duplicated __asm output from RAS_END() 607 macro. 608 kcah 609 610port i386 611 612 hack use volatile intermediate variable to enforce rounding 613 cdate Tue Aug 1 22:15:55 MEST 2006 614 who drochner 615 file src/lib/libm/src/lrintf.c : 1.4 616 file src/lib/libm/src/s_rintf.c : 1.8 617 descr 618 gcc-4 does subsequent operations on "float" values within 619 the i387 FPU without rounding the intermediate results 620 kcah 621