HACKS revision 1.146
1# $NetBSD: HACKS,v 1.146 2014/04/04 07:21:40 wiz 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 gcc-strict-aliasing 88cdate 6 August 2004 89who junyoung 90pr 26516 91file src/usr.sbin/racoon/racoon/Makefile : 1.21 92descr 93 GCC issues a warning "dereferencing type-punned pointer will break 94 strict-aliasing rules" when compiling 95 crypto/dist/kame/racoon/crypto/openssl.c with -O[23s]. Note that this 96 is due to use of type casting in a non-standard way in the code and 97 not a compiler bug. Once a new release of KAME with a proper fix 98 applied is imported this should be backed out. 99kcah 100 101hack gcc4 wrong uninitialized variable 102mdate 10 May 2006 103who mrg 104file bin/ksh/eval.c : 1.6 105file bin/sh/histedit.c : 1.39 106file bin/sh/parser.c : 1.60 107file crypto/dist/heimdal/kdc/524.c : 1.10 108file crypto/dist/ssh/sftp.c : 1.20 109file crypto/dist/ssh/ssh-keysign.c : 1.11 110file dist/ipf/lib/hostname.c : 1.2 111file dist/ipf/tools/ipmon.c : 1.8 112file dist/ntp/ntpd/ntp_request.c : 1.4 113file dist/ntp/ntpd/refclock_shm.c : 1.4 114file dist/ntp/sntp/timing.c : 1.3 115file dist/pppd/pppstats/pppstats.c : 1.3 116file dist/smbfs/lib/smb/rap.c : 1.6 117file dist/tcpdump/print-zephyr.c : 1.5 118file distrib/utils/sysinst/aout2elf.c : 1.12 119file gnu/libexec/uucp/uucico/uucico.c : 1.6 120file lib/libc/citrus/citrus_csmapper.c : 1.6 121file lib/libc/citrus/citrus_pivot_factory.c : 1.5 122file lib/libc/inet/inet_cidr_ntop.c : 1.3 123file lib/libc/inet/inet_ntop.c : 1.3 124file lib/libc/stdio/vfwprintf.c : 1.8 125file libexec/ld.elf_so/arch/m68k/mdreloc.c : 1.20 126file libexec/ld.elf_so/arch/powerpc/ppc_reloc.c : 1.40 127file libexec/ld.elf_so/arch/sh3/mdreloc.c : 1.22 128file libexec/ld.elf_so/arch/sparc/mdreloc.c : 1.39 129file libexec/ld.elf_so/arch/sparc64/mdreloc.c : 1.39 130file libexec/ld.elf_so/arch/vax/mdreloc.c : 1.21 131file libexec/ld.elf_so/arch/x86_64/mdreloc.c : 1.27 132file sbin/fsck_ext2fs/dir.c : 1.19 133file sbin/routed/rtquery/rtquery.c : 1.18 134file sys/arch/amd64/amd64/pmap.c : 1.26 135file sys/arch/i386/pci/piixpcib.c : 1.4 136file sys/arch/m68k/m68k/pmap_motorola.c : 1.4 137file sys/crypto/cast128/cast128.c : 1.9 138file sys/ddb/db_command.c : 1.86 139file sys/dev/cardbus/cardbus_map.c : 1.21 140file sys/dev/fss.c : 1.25 141file sys/dev/ic/igsfb.c : 1.39 142file sys/dev/ic/mb86950.c : 1.5 143file sys/dev/ic/midway.c : 1.71 144file sys/dev/kttcp.c : 1.18 145file sys/dev/rasops/rasops_bitops.h : 1.9 146file sys/dev/pci/cmpci.c : 1.31 147file sys/dev/pci/machfb.c : 1.45 148file sys/dev/usb/ohci.c : 1.174 149file sys/dev/usb/uhci.c : 1.196 150file sys/dev/rasops/rasops_bitops.h : 1.9 151file sys/dist/ipf/netinet/ip_nat.c : 1.10 152file sys/dist/ipf/netinet/ip_rpcb_pxy.c : 1.8 153file sys/dist/pf/net/pf.c : 1.22 154file sys/fs/udf/udf_vnops.c : 1.4 155file sys/kern/kern_sig.c : 1.219 156file sys/kern/tty.c : 1.181 157file sys/net/bpf.c : 1.116 158file sys/net/zlib.c : 1.26 159file sys/netccitt/if_x25subr.c : 1.37 160file sys/netinet/in.c : 1.107 161file sys/netsmb/smb_smb.c : 1.27 162file sys/netsmb/smb_trantcp.c : 1.22 163file sys/nfs/nfs_serv.c : 1.108 164file sys/nfs/nfs_socket.c : 1.129 165file sys/nfs/nfs_syscalls.c : 1.91 166file sys/ufs/lfs/lfs_vfsops.c : 1.207 [also (char *)] 167file usr.bin/ftp/ftp.c : 1.140 168file usr.bin/find/function.c : 1.54 169file usr.bin/mail/tty.c : 1.20 170file usr.bin/msgc/msg_sys.def : 1.33-1.34 171file usr.bin/nl/nl.c : 1.7 172file usr.bin/systat/keyboard.c : 1.23 173file usr.bin/usbhidctl/usbhid.c : 1.29 174file usr.bin/vi/cl/cl_read.c : 1.5 175file usr.bin/vi/ex/ex_cscope.c : 1.12 176file usr.bin/vi/ex/ex_tag.c : 1.19 177file usr.bin/vi/vi/v_txt.c : 1.15 178file usr.sbin/altq/altqstat/qdisc_rio.c : 1.4 179file usr.sbin/cron/do_command.c : 1.19 180file usr.sbin/timed/timed/slave.c : 1.15 181descr 182 GCC 4.1 gets many uninitialised variable warnings wrong. We should 183 really audit all the old hacks like this when older compilers are 184 removed from the tree, as many are probably no longer required. 185 The problem is that it does not recognize initialization via function 186 call pointer. I.e. 187 int p; 188 foo(&p); 189 does not mark p as initialized. 190kcah 191 192hack gcc4 pointer sign and strict aliasing problems 193mdate 10 May 2006 194who mrg 195file bin/ed/Makefile : 1.33 196file distrib/utils/sysinst/Makefile.inc : 1.44 197file distrib/utils/x_dhclient/Makefile : 1.15 198file games/bcd/Makefile : 1.5 199file games/dab/Makefile : 1.5 200file games/larn/Makefile : 1.17 201file games/pom/Makefile : 1.5 202file lib/libasn1/Makefile : 1.26 203file lib/libcrypt/Makefile : 1.17 204file lib/libgssapi/Makefile : 1.16 205file lib/libhdb/Makefile : 1.20 206file lib/libkadm5clnt/Makefile : 1.21 207file lib/libkadm5srv/Makefile : 1.25 208file lib/libkrb5/Makefile : 1.35 209file lib/libssh/Makefile : 1.6 210file lib/libtelnet/Makefile : 1.26 211file libexec/getty/Makefile : 1.14 212file libexec/kadmind/Makefile : 1.19 213file libexec/kpasswdd/Makefile : 1.14 214file sbin/atactl/Makefile : 1.3 215file sbin/cgdconfig/Makefile : 1.7 216file sbin/clri/Makefile : 1.13 217file sbin/dkctl/Makefile : 1.4 218file sbin/dump/Makefile : 1.33 219file sbin/fdisk/Makefile : 1.35 220file sbin/fsck_ext2fs/Makefile : 1.11 221file sbin/fsck_ffs/Makefile : 1.29 222file sbin/fsdb/Makefile : 1.18 223file sbin/mount_smbfs/Makefile : 1.4 224file sbin/newfs/Makefile : 1.30 225file sbin/newfs_sysvbfs/Makefile : 1.2 226file sbin/restore/Makefile : 1.23 227file sbin/veriexecctl/Makefile : 1.11 228file sys/lib/libsa/Makefile : 1.59 229file sys/arch/evbarm/adi_brh/brh_machdep.c : 1.24 230file usr.bin/awk/Makefile : 1.9 231file usr.bin/crontab/Makefile : 1.24 232file usr.bin/ctags/Makefile : 1.8 233file usr.bin/gzip/Makefile : 1.10 234file usr.bin/ssh/sftp/Makefile : 1.10 235file usr.bin/ssh/ssh/Makefile : 1.25 236file usr.bin/vi/build/Makefile : 1.26 237file usr.bin/telnet/Makefile : 1.40 238file usr.bin/tn3270/tn3270/Makefile : 1.36 239file usr.bin/tr/Makefile : 1.4 240file usr.sbin/amd/amd/Makefile : 1.27 241file usr.sbin/amd/amq/Makefile : 1.14 242file usr.sbin/amd/libamu/Makefile : 1.20 243file usr.sbin/amd/pawd/Makefile : 1.5 244file usr.sbin/bind/Makefile.inc : 1.22 245file usr.sbin/bind/libdns/Makefile : 1.3 246file usr.sbin/bind/named/Makefile : 1.17 247file usr.sbin/bootp/bootptest/Makefile : 1.2 248file usr.sbin/chrtbl/Makefile : 1.6 249file usr.sbin/cron/Makefile : 1.12 250file usr.sbin/dhcp/Makefile.inc : 1.20 251file usr.sbin/dumplfs/Makefile : 1.11 252file usr.sbin/hprop/Makefile : 1.13 253file usr.sbin/installboot/Makefile : 1.35 254file usr.sbin/ipf/ipftest/Makefile : 1.32 255file usr.sbin/isdn/isdnd/Makefile : 1.6 256file usr.sbin/isdn/isdnmonitor/Makefile : 1.3 257file usr.sbin/isdn/isdntel/Makefile : 1.2 258file usr.sbin/isdn/isdntrace/Makefile : 126 259file usr.sbin/mopd/common/Makefile : 1.10 260file usr.sbin/mopd/mopd/Makefile : 1.9 261file usr.sbin/mopd/mopprobe/Makefile : 1.7 262file usr.sbin/makefs/Makefile : 1.17 263file usr.sbin/mscdlabel/Makefile : 1.5 264file usr.sbin/pkg_install/add/Makefile : 1.7 265file usr.sbin/pkg_install/create/Makefile : 1.5 266file usr.sbin/pkg_install/lib/Makefile : 1.28 267file usr.sbin/ntp/ntpd/Makefile : 1.10/1.11 268file usr.sbin/ntp/ntptime/Makefile : 1.4/1.5 269file usr.sbin/pppd/Makefile.inc : 1.3 270file usr.sbin/pppd/pppd/Makefile : 1.38 271file usr.sbin/rarpd/Makefile : 1.10 272file usr.sbin/rbootd/Makefile : 1.10 273file usr.sbin/rpc.pcnfsd/Makefile : 1.17 274file usr.sbin/rtadvd/Makefile : 1.9 275file usr.sbin/tcpdump/Makefile : 1.42 276file usr.sbin/wiconfig/Makefile : 1.3 277descr 278 GCC 4.1 warns on pointer sign comparision/assignments and lots of 279 code does not conform. For now we use -Wno-pointer-sign and 280 -fno-strict-aliasing. 281kcah 282 283hack disable ctf for gcc-4.8 build 284mdate April 3 2014 285who christos 286file external/gpl3/gcc/usr.bin/Makefile.frontend : 1.4 287file external/gpl3/gcc/usr.bin/Makefile.backend : 1.5 288descr 289 nbctfconvert -g -L VERSION -g fold-const.o 290 ERROR: fold-const.c: failed to get mapping for tid 79154 \ 291 ((null)) <13532> 292kcak 293 294hack emacs aborting on exit (libgcc issue) 295mdate 7 November 2011 296who christos 297file external/gpl3/gcc/dist/gcc/unwind-dw2-fde.c : 1.2 298descr 299 GCC 4.5.3 now calls __unregister_frame_info_bases() on unloading/exit 300 to do just that. If the symbol requested is not found, then it aborts. 301 emacs 23.3 triggers this assertion. For now disable aborting, and 302 silently ignore. 303kcah 304 305hack cross-building hack on Darwin 306mdate 20 July 2008 307who agc 308file src/distrib/common/Makefile.mdset : 1.33 309descr 310 Darwin has problems with getopt() when used in mdsetimage -v, 311 due to the difference between BSD and libiberty() getopt 312 implementations, more fully described in 313 http://mail-index.netbsd.org/current-users/2008/06/27/msg003242.html 314 and the subsequent thread. For just now, we just have an ugly 315 workaround not to call mdsetimage with the -v argument on Darwin 316kcah 317 318hack avoid rebuilding asn1 libraries 319mdate 03 August 2008 320who veego 321file src/crypto/dist/heimdal/lib/asn1/gen.c : 1.10 322file src/lib/libasn1/Makefile : 1.32 323file src/lib/libhdb/Makefile : 1.23 324file src/lib/libgssapi/Makefile : 1.20 325file src/lib/libhx509/Makefile : 1.3 326pr 9702 39185 327descr 328 asn1_compile does not check if generated header files do not have to 329 be rebuild. 330 Generate .hx files and copy it in the Makefiles if they changed. 331kcah 332 333hack avoid gcc4 -O1 bug in loop optimize 334cdate 29 November 2008 335who tsutsui 336file src/sbin/ifconfig/Makefile : 1.39 337pr 40036 40066 338descr 339 gcc -O1 seems to generate wrong code in loop optimize so that 340 ifconfig lo0 inet6 doesn't return error even if a kernel 341 doesn't have IPv6 support. (see the above PRs for details) 342 For workaround, specify -fno-loop-optimize on m68000, 343 which uses -O1 by default. 344kcah 345 346hack MKPIE ldscript for /usr.sbin/crash 347cdate 22 April 2010 348who christos 349file src/usr.sbin/crash/Makefile : 1.5 350file src/usr.sbin/crash/ldscript.crash : 1.1 351pr N/A 352descr 353 fixed in binutils-2.20.1. Linking with MKPIE=yes causes overlapping 354 sections 355kcah 356 357hack Disable fortification for /usr/bin/makeinfo 358cdata 24 Mar 2014 359who tron 360file src/gnu/usr.bin/texinfo/makeinfo/Makefile : 1.8 361pr N/A 362descr 363 If "makeinfo" is compiled with "-D_FORTIFY_SOURCE=2" using GCC 4.8.3 364 it fails to process certain texinfo files, e.g. "cl.texi" 365 included in the Emacs 24.3 distribution. 366kcah 367 368port vax 369 370 hack gcc4/vax ICE 371 cdate 372 who tsutsui 373 file sys/arch/vax/conf/Makefile.vax 374 descr 375 GCC4 on vax gets ICE on compiling sys/ddb/db_command.c. 376 -fno-tree-ter prevents it so add it to COPTS. 377 kcah 378 379 hack gcc4/vax compiler crash 380 cdate Fri Jun 30 22:39:12 PDT 2006 381 who mrg 382 file bin/csh/Makefile : 1.27 383 file lib/i18n_module/UTF7/Makefile : 1.2 384 descr 385 GCC4 on vax crashes. -O0 stops it happening so far... 386 kcah 387 388 hack gcc 2.95/vax doesn't like abort being used as function pointer 389 cdate Tue Dec 13 05:54:50 GMT 2005 390 who jmc 391 file lib/libc/rpc/svc_vc.c 1.15 392 descr 393 Provide a local definition for abort which doesn't include 394 the noreturn attribute which trips up gcc 2.95 on vax. 395 kcah 396 397 hack gcc 2.95/vax doesn't have stdbool.h and gettext needs it 398 cdate Mon May 9 12:16:22 CDT 2005 399 who jmc 400 file gnu/usr.bin/gettext/Makefile.inc.prog 1.5 401 gnu/usr.bin/gettext/libgrep/Makefile 1.3 402 gnu/usr.bin/gettext/libnlspr/Makefile 1.5 403 gnu/usr.bin/gettext/libnlsut/Makefile 1.3 404 descr 405 The latest gettext assumes a C99 environment or at least 406 configure checks to work around this. As we don't use configure 407 provide a stdbool.h for vax builds locally in directories from 408 the template provided by the gettext code. 409 kcah 410 411 hack gcc 2.95/vax cannot handle __builtin_ffs() 412 cdate Fri Aug 23 21:31:15 CEST 2002 413 who ragge 414 file sys/lib/libkern/libkern.h : 1.42 415 descr 416 __builtin_ffs() is ifdef'd away if __vax__. Matt Thomas has 417 added this feature to GCC 3 so it can be removed when switching. 418 kcah 419 420 hack gcc 2.95/vax libbz2 421 mdate 27 Jun 2002 422 who thorpej 423 file lib/libbz2/Makefile 424 descr 425 libbz2 is mis-compiled with optimization with GCC 2.95.3 426 on VAX. -O0 works around this problem. 427 kcah 428 429 hack vax Toolchain bug 430 cdate 28 Mar 2003 431 who he 432 file sys/arch/vax/vax/intvec.S : 1.5 433 descr 434 Workaround for PR toolchain/20924. The assembler apparently 435 tries to range-check byte offsets when it doesn't have 436 sufficient information to make that decision. 437 Workaround uses `brw' instead of `brb' instruction. 438 kcah 439 440 hack vax gcc 2.95.3 -Wuninitialized workarounds 441 cdate 6 Nov 2003 442 who he 443 file sys/dev/bi/if_ni.c : 1.22 444 file sys/arch/vax/vax/ctu.c : 1.20 445 descr 446 Workaround for gcc 2.95.3 failing to detect that certain 447 variables will be initialized; so that this code compiles 448 with -Wuninitialized. Should be reviewed and possibly 449 reverted when gcc 3.3.2 is ready for vax. 450 kcah 451 452 hack vax gcc 2.95.3 structure initialization 453 cdat 13 May 2004 454 who cl 455 file sys/miscfs/kernfs/kernfs_vnops.c : 1.104 456 descr 457 Workaround for gcc 2.95.3 failing to initialize structures 458 and/or unions inside structures using nested designators. 459 Should be reverted when gcc >=3.3.3 is ready for vax. 460 kcah 461 462 hack vax gcc 2.95.3 needs -I. to build nslexer.c 463 cdat 6 Jun 2004 464 who mhitch 465 file lib/libc/arch/vax/Makefile.inc : 1.6 466 descr 467 It appears necessary to add -I. to CPPFLAGS when building 468 nslesxer.c. This may be caused by gcc 2.95.3 being used. 469 Should be reverted when a newer gcc is ready for vax. 470 kcah 471 472 hack vax gcc 2.95.3 doesn't understand "-std=c99" 473 cdat 5 April 2005 474 who tron 475 file src/share/mk/bsd.sys.mk 476 descr 477 We cannot use "-std=c99" for compiler warning level 4 and above 478 because gcc 2.95.3 doesn't support that option. 479 kcah 480 481 hack declare boolean_t in two IPF user-mode programs 482 cdate Tue Mar 7 19:19:20 CET 2006 483 who he 484 file dist/ipf/ipsend/iptests.c : 1.8 485 dist/ipf/ipsend/sock.c : 1.7 486 descr 487 The IPF user-mode programs ipsend and iptest first 488 include <sys/types.h> without _KERNEL defined, and 489 later include <sys/file.h> with _KERNEL defined. 490 This causes a build failure when building for vax, 491 since <sys/device.h> ends up being included without 492 bollean_t being defined by <sys/types.h>. 493 Build failure and further details documented in 494 PR#32907. 495 kcah 496 497 hack pcc 0.9.9 large string literals 498 cdat 8 July 2008 499 who gmcgarry 500 file sys/conf/param.c : 1.58 501 descr 502 Workaround for pcc 0.9.9 not handling large string literals 503 which causes kernels with 'options INCLUDE_CONFIG_FILE' to 504 fail compilation. 505 There is a proposal on the pcc mailing list to stuff config 506 file in ELF section. 507 kcah 508 509 hack xorg warnings 510 cdat 30 July 2008, 3 June, 2013 511 who mrg 512 file external/mit/xorg/lib/libSM/Makefile : 1.2 513 external/mit/xorg/lib/libX11/Makefile.libx11 : 1.10 514 external/mit/xorg/lib/libXext/Makefile : 1.2 515 external/mit/xorg/lib/libXfont/Makefile : 1.2 516 descr 517 Disable several warnings or use -Wno-error across Xorg sources 518 while we get them working 519 kcah 520 521 hack 32 bit time leftovers 522 cdat 11 January 2009 523 who christos 524 file lib/libc/time/localtime.c : 1.41 525 lib/libc/time/zic.c : 1.23 526 descr 527 The timezone compiled files still contain 32 bit time_t 528 quantities. I did not want to version the files because 529 the ``parser'' is too ugly for words. What needs to be 530 done, is to rewrite the parser from scratch also to avoid 531 potential core-dumps from parsing invalid files. 532 kcah 533 534 hack 32 bit time leftovers 535 cdat 11 January 2009 536 who christos 537 file various 538 descr 539 Many filesystem on-disk formats have 32 bit times. 540 kcah 541 542 hack gcc 4.5 fsdb miscompile 543 date Sat Nov 9 11:03:02 EST 2013 544 who christos 545 file src/sbin/fsdb/Makefile : 1.36 (and earlier) 546 descr 547 src/sbin/fsdb/fsdb.c: In function 'findblk': 548 src/sbin/fsdb/fsdb.c:610:1: error: unrecognizable insn: 549 (insn 941 940 942 134 src/sbin/fsdb/fsdb.c:589 (set (reg:SI 604) 550 (subreg:SI (mem/s/j:DI (plus:SI (mult:SI (reg:SI 602) 551 (const_int 8 [0x8])) 552 (reg/f:SI 601)) [0 curinode.99_378->dp2.di_ib S8 A32]) 4)) \ 553 -1 (nil)) 554 src/sbin/fsdb/fsdb.c:610:1: internal compiler error: in \ 555 extract_insn, at recog.c:2103 556 kcah 557 558 hack gcc 4.8 gcc miscompiles 559 date Sat Nov 9 16:35:18 EST 2013 560 who christos 561 file distrib/utils/x_ping/Makefile 562 file distrib/vax/miniroot/Makefile.inc 563 file distrib/vax/ramdisk/Makefile 564 file external/gpl3/gdb/lib/libdecnumber/Makefile 565 file sbin/fsdb/Makefile 566 file sbin/newfs_ext2fs/Makefile 567 file sbin/ping/Makefile 568 file usr.sbin/lmcconfig/Makefile 569 file usr.sbin/mtrace/Makefile 570 descr 571 external/gpl3/gcc/dist/gcc/expmed.c:2781:1: 572 internal compiler error: in change_address_1, at emit-rtl.c:2019 573 external/gpl3/gcc/dist/gcc/recog.c:770:1: 574 internal compiler error: in change_address_1, at emit-rtl.c:2019 575 external/gpl3/gcc/dist/libdecnumber/decNumber.c:7214:3: 576 internal compiler error: in change_address_1, at emit-rtl.c:2019 577 sbin/ping/ping.c:679:1: 578 internal compiler error: in change_address_1, at emit-rtl.c:2019 579 sbin/newfs_ext2fs/mke2fs.c:681:1: 580 internal compiler error: in reload_combine_note_use, 581 at postreload.c:1561 582 external/gpl3/gdb/dist/libdecnumber/decNumber.c:7214:3: 583 internal compiler error: in change_address_1, at emit-rtl.c:2019 584 usr.sbin/lmcconfig/lmcconfig.c:939:3: 585 internal compiler error: in reload_combine_note_use, 586 at postreload.c:1561 587 usr.sbin/mtrace/mtrace.c:1655:1: 588 internal compiler error: in change_address_1, at emit-rtl.c:2019 589 kcah 590 591port arm 592 593 hack gcc-unsigned-compare 594 cdate 09 Mar 2002 595 mdate 18 Mar 2002 596 who bjh21 597 file dist/bind/lib/nameser/ns_parse.c : 1.3 598 file dist/dhcp/minires/ns_parse.c : 1.3 599 file dist/dhcp/omapip/result.c : 1.2 600 file dist/dhcp/server/failover.c : 1.3 601 file gnu/dist/toolchain/bfd/bfd.c : 1.2 602 file gnu/dist/toolchain/bfd/format.c : 1.2 603 file gnu/dist/toolchain/gdb/target.c : 1.2 604 file sys/kern/vfs_subr.c : 1.172 605 descr When checking that a potentially-unsigned enum is >= 0, assign 606 it to an int first. This is necessary to avoid "comparison is 607 always true" warnings with -fshort-enums. Casting to an int 608 really should be enough, but turns out not to be. 609 kcah 610 611 hack gcc-4.5 arm CNAME hostname lookup failure on 612 certain DNS environment (probably -ftree-ter problem) 613 cdate Sat Dec 24 04:59:00 UTC 2011 614 mdate 615 who tsutsui 616 file lib/libc/net/Makefile.inc 1.79 617 descr Hostname lookup against CNAMEs by some commands fails 618 on certain DNS environments if lib/libc/net/gethnamaddr.c 619 (ping(8) etc) and lib/libc/net/getaddrinfo.c (ftp(1) etc) 620 are compiled with -O2, even though nslookup(1) against 621 the same CNAME returns proper hostname. 622 They works properly if compiled with -O2 -fno-tree-ter. 623 Also -O2 fails but -O2 -fno-tree-ter works on the following 624 test case in gcc bugzilla: 625 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48863#c4 626 kcah 627 628 hack gcc-4.5 arm without -fno-tree-vrp generate broken code 629 cdate Wed Nov 14 13:02:02 JST 2012 630 who msaitoh 631 file lib/libc/softfloat/Makefile.inc 632 pr 46953 633 regress src/tests/lib/libm/t_cbrt 634 regress src/tests/lib/libm/t_ceil 635 regress src/tests/lib/libm/t_exp 636 regress src/tests/lib/libm/t_log 637 regress src/tests/lib/libm/t_scalbn 638 regress src/tests/lib/libm/t_sinh 639 regress src/tests/lib/libm/t_sqrt 640 descr Gcc has a bug in tree optimization. For adddf3, 641 -INF + -INF returns 0 without -fno-tree-vrp. 642 Debugging with -fdump-tree-all shows that 643 softfloat.c.021t.cleanup_cfg is ok but softfloat.c.023t.ssa 644 is broken. 645 kcah 646 647port sh3 648 649 hack gcc4-sh3-bz2 650 cdate Sun May 21 03:34:57 UTC 2006 651 mdate Fri May 16 13:13:00 UTC 2008 652 who mrg, tsutsui 653 file lib/libbz2/Makefile : 1.10 654 descr 655 The in-tree GCC 4.1-based compiler generated too-far 656 pc-relative addresses. Hack is to build with 657 -fno-loop-optimize. 658 kcah 659 660port sh3eb 661 hack gcc4.8.1 662 cdate Thu Nov 7 16:31:23 EST 2013 663 who christos 664 file src/sys/rump/net/lib/libnetbt/Makefile : 1.2 665 desrc 666 for profiling 667 compile l2cap_signal.c with -O0 to avoid: 668 ./netbt/l2cap_signal.c:36: 669 /p/netbsd/cvsroot/src/sys/rump/net/lib/libnetbt/../../../../\ 670 netbt/l2cap_signal.c: In function 'l2cap_recv_signal': 671 ./sh3/byte_swap.h:20:2: error: 'asm' operand requires \ 672 impossible reload 673 __asm volatile ("swap.b %1,%0" : "=r"(rval) : "r"(x)); 674 kcah 675 676port sh3el 677 hack gcc4.8.1 678 cdate Fri Nov 8 19:27:01 EST 2013 679 who christos 680 file src/external/bsd/libevent/lib/libevent/Makefile : 1.2 681 desrc 682 for profiling 683 compile evdns.c with -O0 to avoid: 684 ./sh3/byte_swap.h:20:2: error: 'asm' operand requires \ 685 impossible reload 686 __asm volatile ("swap.b %1,%0" : "=r"(rval) : "r"(x)); 687 kcah 688 689 hack gcc4.8.1 690 cdate Fri Nov 8 19:34:48 EST 2013 691 who christos 692 file src/usr.sbin/racoon/Makefile : 1.27 693 desrc 694 for profiling 695 compile ipsec_doi.c with -O0 to avoid: 696 ./sh3/byte_swap.h:20:2: error: 'asm' operand requires \ 697 impossible reload 698 __asm volatile ("swap.b %1,%0" : "=r"(rval) : "r"(x)); 699 kcah 700 701port m68000 702 703 hack gcc4-m68000 704 cdate Fri Feb 8 10:29:37 PST 2008 705 mdate Sun May 4 15:37:19 UTC 2008 706 who mrg, tsutsui 707 file rescue/Makefile : 1.21 708 file sbin/dump_lfs/Makefile : 1.9 709 file sbin/fsck_ffs/Makefile : 1.35 710 file sbin/fsdb/Makefile : 1.22 711 file share/mk/sys.mk : 1.96 712 file usr.sbin/ndbootd/Makefile : 1.5 713 descr 714 Several internal compiler errors with gcc -O1 715 around 64bit integer arithmetic. 716 This hack uses -O1 and adds some -fno-tree-foo options 717 to avoid the problem. 718 This might be related with GCC Bugzilla Bug 32424. 719 kcah 720 721port m68k,sh3,vax 722 723 hack gcc-4.8.1 724 cdate Wed Nov 6 20:41:35 EST 2013 725 who christos 726 file src/external/gpl3/gcc/libstdc++-v3/Makefile : 1.6 727 descr 728 compile hashtable_c++0x.cc with -O2 instead of -Os to 729 produce missing instantiation of std::lower_bound expansion 730 for unsigned long. 731 kcah 732 733port sparc 734 735 hack avoid NULL pointer derefs in savefpstate IPIs and GCC 4.5.3 736 cdate Sun Aug 14 19:26:48 PDT 2011 737 who mrg 738 file sys/arch/sparc64/sparc/cpu.c : 1.234 739 file sys/arch/sparc64/sparc/cpuvar.h : 1.90 740 file sys/arch/sparc64/sparc/genassym.cf : 1.67 741 file sys/arch/sparc64/sparc/locore.s : 1.265 742 descr 743 Something is wrong with GCC 4.5.3 and the savefpstate IPI. 744 Post newlock2 there was a bug where a lock was reduced from 745 IPL_SCHED to IPL_VM (?) and occasionally savefpstate IPI 746 would crash due to NULL IPI. This was fixed by re-using the 747 right IPL value. However, GCC 4.5.3 build kernels have the 748 same problems. For now, the hack is re-instated. 749 kcah 750 751 752port mips 753 754 hack mips-shared-linker-load-address 755 cdate Fri Oct 7 08:33:10 UTC 2005 756 who simonb 757 file src/sys/kern/exec_elf32.c : 1.107 758 descr 759 With COMPAT_16 or previous enabled (which enables 760 ELF_INTERP_NON_RELOCATABLE) a recent ld.elf_so will 761 load and run at address 0. The check to fix this in 762 rev 1.107 only checks the first psection of the ELF 763 executable, which may not be loadable. A more correct 764 fix is to check the first loadable psection instead of 765 just the first psection. 766 kcah 767 768 hack mips-duplicate-ras-end-label 769 cdate Sat Sep 2 23:29:42 2006 770 who martin 771 file src/regress/sys/kern/ras/ras3/Makefile : 1.3 772 descr 773 Add -fno-reorder-blocks to CFLAGS to avoid duplicate 774 labels by duplicated __asm output from RAS_END() 775 macro. 776 kcah 777 778 hack mips-mcount-assembler-warning 779 cdate Tue Jul 29 14:16:52 UTC 2008 780 who lukem 781 file src/lib/libc/gmon/Makefile.inc : 1.8 782 descr 783 Workaround for PR port-mips/39192. 784 common/lib/libc/gmon/mcount.c generates a (fatal) 785 assembler warning on MIPS: 786 Warning: No .cprestore pseudo-op used in PIC code 787 Add COPTS.count.c+=-Wa,--no-warn to avoid -Wa,--fatal-warnings 788 kcah 789 790port i386 791 792 hack use volatile intermediate variable to enforce rounding 793 cdate Tue Aug 1 22:15:55 MEST 2006 794 who drochner 795 file src/lib/libm/src/lrintf.c : 1.4 796 file src/lib/libm/src/s_rintf.c : 1.8 797 descr 798 gcc-4 does subsequent operations on "float" values within 799 the i387 FPU without rounding the intermediate results 800 kcah 801 802port powerpc 803 804 hack avoid using __builtin_return_address(0) because it fails in 805 Xorg's module loader 806 cdate Sat Sep 27 03:52:05 UTC 2008 807 who macallan 808 file src/libexec/ld.elf_so/rtld.c : 1.121 809 descr 810 workaround for PR port-macppc/37812 811 kcah 812 813 hack define TARGET_SECURE_PLT and HAVE_AS_TLS because when 814 building the native compiler via build.sh those don't defined 815 properly. 816 cdate Sat Mar 12 08:00:00 UTC 2011 817 who matt 818 file src/gnu/dist/gcc4/gcc/config/rs6000/netbsd.h 819 descr 820 see above 821 kcah 822 823port powerpc64 824 825 hack include _errno.c in libposix so that __errno resolves. It 826 should resolve from libc's errno, but somehow it does not. 827 Linker bug? 828 cdate Thu Oct 27 13:19:47 EDT 2011 829 who christos 830 file src/lib/libposix/Makefile: 1.15 831 file src/lib/librt/Makefile: 1.14 832 descr 833 workaround for: 834 libposix_pic.a(cerror.pico)(.text+0x14): unresolvable \ 835 R_PPC64_REL24 relocation against symbol `.__errno' 836 kcah 837 838 hack rename data() function in mdocml to avoid redefined error. 839 Compiler/Assembler bug? 840 cdate Sat Oct 29 11:16:01 EDT 2011 841 who christos 842 file src/external/bsd/mdocml/tbl_data.c: 1.2 843 descr 844 workaround for: 845 {standard input}: Assembler messages: 846 {standard input}:105: Error: symbol `.data' is already \ 847 defined 848 kcah 849 850port emips 851 852 hack Add nop between ctc1 and mtc0 to avoid assembler internal 853 error 854 cdate Sat Oct 29 16:57:34 EDT 2011 855 who christos 856 file src/sys/arch/mips/mips/mips_fpu.c: 1.7 857 descr 858 workaround for: 859 {standard input}: Assembler messages: 860 {standard input}:730: Internal error! 861 Assertion failure in append_insn at /usr/src/external/gpl3/\ 862 binutils/dist/gas/config/tc-mips.c line 2910. 863 kcah 864 865port ia64 866 867 hack libc hesiod.c file does not compile with -O2 (internal 868 compiler error in gcc 4.5.3) 869 cdate Thu Dec 27 08:05:43 CET 2012 870 who martin 871 file src/lib/libc/net/Makefile.inc: 1.82 872 descr 873 workaround for: 874 {standard input}: Assembler messages: 875 {standard input}:1507: Warning: Use of 'mov' may violate WAW dependency 'GR%, % in 1 - 127' (impliedf), specific resource number is 15 876 {standard input}:1506: Warning: This is the location of the conflicting usage 877 {standard input}: Error: 2 warnings, treating warnings as errors 878 kcah 879 880 hack libelf libelf_extended.c compiler error in gcc 4.5.3 881 cdate Thu Dec 27 09:05:51 CET 2012 882 who martin 883 file src/external/bsd/libelf/lib/Makefile: 1.3 884 descr 885 workaround for: 886 {standard input}: Assembler messages: 887 {standard input}:87: Warning: Use of 'adds' may violate RAW dependency 'GR%, % in 1 - 127' (impliedf), specific resource number is 33 888 {standard input}:87: Warning: Only the first path encountering the conflict is reported 889 {standard input}:85: Warning: This is the location of the conflicting usage 890 kcah 891 892 hack compiler error with gcc 4.5.x 893 cdate Thu Dec 27 15:15:25 CET 2012 894 who martin 895 file src/crypto/external/bsd/netpgp/lib/verify/Makefile: 1.5 896 descr 897 workaround for: 898 {standard input}: Assembler messages: 899 {standard input}:22979: Warning: Use of 'mov' may violate WAW dependency 'GR%, % in 1 - 127' (impliedf), specific resource number is 8 900 {standard input}:22978: Warning: This is the location of the conflicting usage 901 kcah 902 903port x68k 904 905 hack compiler error with gcc 4.5.x 906 cdate Fri May 24 13:23:01 EDT 2013 907 who christos 908 file src/external/gpl3/gcc/usr.bin/bakend/Makefile: 1.17 909 xsrc/external/mit/xorg/lib/libGLU/Makefile: 1.11 910 src/x11/lib/GLU/Makefile: 1.9 911 descr 912 workaround for: 913 internal compiler error: in cselib_record_set, at cselib.c:1999 914 kcah 915 916hack fallback to /usr/bin/clang-cpp in rpcgen 917cdate Wed Jun 5 15:49:27 CEST 2013 918who joerg 919file src/usr.bin/rpcgen/rpc_main.c 920descr 921 It is undecided which compiler owns /usr/bin/cpp and whether it should 922 exist in a MKGCC=no world. To allow rpcgen to work out-of-the-box, 923 if either gcc or clang is installed, use /usr/bin/clang-cpp as fallback. 924 This applies only if RPCGEN_CPP is not set and /usr/bin/cpp is not executable. 925kcah 926 927port hp700 928 929 hack compiler error with gcc 4.5.x 930 cdate Tue Jul 23 07:42:28 BST 2013 931 who skrll 932 file src/sys/lib/libkern/Makefile.libkern: 1.26 933 descr 934 workaround for unanalysed codegen bug affecting md5c.c. 935 kcah 936