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