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