HACKS revision 1.171
1# $NetBSD: HACKS,v 1.171 2016/06/15 13:29:30 riastradh 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/dumplfs/Makefile : 1.11 257file usr.sbin/hprop/Makefile : 1.13 258file usr.sbin/installboot/Makefile : 1.35 259file usr.sbin/ipf/ipftest/Makefile : 1.32 260file usr.sbin/isdn/isdnd/Makefile : 1.6 261file usr.sbin/isdn/isdnmonitor/Makefile : 1.3 262file usr.sbin/isdn/isdntel/Makefile : 1.2 263file usr.sbin/isdn/isdntrace/Makefile : 126 264file usr.sbin/mopd/common/Makefile : 1.10 265file usr.sbin/mopd/mopd/Makefile : 1.9 266file usr.sbin/mopd/mopprobe/Makefile : 1.7 267file usr.sbin/makefs/Makefile : 1.17 268file usr.sbin/mscdlabel/Makefile : 1.5 269file usr.sbin/pkg_install/add/Makefile : 1.7 270file usr.sbin/pkg_install/create/Makefile : 1.5 271file usr.sbin/pkg_install/lib/Makefile : 1.28 272file usr.sbin/ntp/ntpd/Makefile : 1.10/1.11 273file usr.sbin/ntp/ntptime/Makefile : 1.4/1.5 274file usr.sbin/pppd/Makefile.inc : 1.3 275file usr.sbin/pppd/pppd/Makefile : 1.38 276file usr.sbin/rarpd/Makefile : 1.10 277file usr.sbin/rbootd/Makefile : 1.10 278file usr.sbin/rpc.pcnfsd/Makefile : 1.17 279file usr.sbin/rtadvd/Makefile : 1.9 280file usr.sbin/tcpdump/Makefile : 1.42 281file usr.sbin/wiconfig/Makefile : 1.3 282descr 283 GCC 4.1 warns on pointer sign comparision/assignments and lots of 284 code does not conform. For now we use -Wno-pointer-sign and 285 -fno-strict-aliasing. 286kcah 287 288hack disable ctf for gcc-4.8 build 289mdate April 3 2014 290who christos 291file external/gpl3/gcc/usr.bin/Makefile.frontend : 1.4 292file external/gpl3/gcc/usr.bin/Makefile.backend : 1.5 293descr 294 nbctfconvert -g -L VERSION -g fold-const.o 295 ERROR: fold-const.c: failed to get mapping for tid 79154 \ 296 ((null)) <13532> 297kcak 298 299hack emacs aborting on exit (libgcc issue) 300mdate 7 November 2011 301who christos 302file external/gpl3/gcc/dist/gcc/unwind-dw2-fde.c : 1.2 303descr 304 GCC 4.5.3 now calls __unregister_frame_info_bases() on unloading/exit 305 to do just that. If the symbol requested is not found, then it aborts. 306 emacs 23.3 triggers this assertion. For now disable aborting, and 307 silently ignore. 308kcah 309 310hack cross-building hack on Darwin 311mdate 20 July 2008 312who agc 313file src/distrib/common/Makefile.mdset : 1.33 314descr 315 Darwin has problems with getopt() when used in mdsetimage -v, 316 due to the difference between BSD and libiberty() getopt 317 implementations, more fully described in 318 http://mail-index.netbsd.org/current-users/2008/06/27/msg003242.html 319 and the subsequent thread. For just now, we just have an ugly 320 workaround not to call mdsetimage with the -v argument on Darwin 321kcah 322 323hack avoid rebuilding asn1 libraries 324mdate 03 August 2008 325who veego 326file src/crypto/dist/heimdal/lib/asn1/gen.c : 1.10 327file src/lib/libasn1/Makefile : 1.32 328file src/lib/libhdb/Makefile : 1.23 329file src/lib/libgssapi/Makefile : 1.20 330file src/lib/libhx509/Makefile : 1.3 331pr 9702 39185 332descr 333 asn1_compile does not check if generated header files do not have to 334 be rebuild. 335 Generate .hx files and copy it in the Makefiles if they changed. 336kcah 337 338hack avoid gcc4 -O1 bug in loop optimize 339cdate 29 November 2008 340who tsutsui 341file src/sbin/ifconfig/Makefile : 1.39 342pr 40036 40066 343descr 344 gcc -O1 seems to generate wrong code in loop optimize so that 345 ifconfig lo0 inet6 doesn't return error even if a kernel 346 doesn't have IPv6 support. (see the above PRs for details) 347 For workaround, specify -fno-loop-optimize on m68000, 348 which uses -O1 by default. 349kcah 350 351hack MKPIE ldscript for /usr.sbin/crash 352cdate 22 April 2010 353who christos 354file src/usr.sbin/crash/Makefile : 1.5 355file src/usr.sbin/crash/ldscript.crash : 1.1 356pr N/A 357descr 358 fixed in binutils-2.20.1. Linking with MKPIE=yes causes overlapping 359 sections 360kcah 361 362hack Disable fortification for /usr/bin/makeinfo 363cdata 24 Mar 2014 364who tron 365file src/gnu/usr.bin/texinfo/makeinfo/Makefile : 1.8 366pr N/A 367descr 368 If "makeinfo" is compiled with "-D_FORTIFY_SOURCE=2" using GCC 4.8.3 369 it fails to process certain texinfo files, e.g. "cl.texi" 370 included in the Emacs 24.3 distribution. 371kcah 372 373hack Disable Stack Smash Protection for /usr/X11R7/bin/xauth 374cdata 05 Apr 2014 375who tron 376file src/external/mit/xorg/bin/xauth/Makefile : 1.4 377pr N/A 378descr 379 If "xauth" is compile with "USE_SSP" set to "yes" it fails 380 mysteriously with an error message like this: 381 382 /usr/X11R7/bin/xauth: file /foo/bar/.Xauthority does not exist 383 /usr/X11R7/bin/xauth: unable to link authority file /foo/bar/.Xauthority, use /foo/bar/.Xauthority 384 385 The compiler seems to get confused about the two filename variables 386 used in the link(2) system call. 387kcah 388 389hack g++ 5.x barfs on volatile in constexpr initializers 390cdata 27 Aug 2015 391who pooka 392file src/lib/libpthread/pthread_types.h : 1.17 393pr lib/49989 394descr 395 Trying to use e.g. pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER 396 in C++ results in: 397 error: temporary of non-literal type '__pthread_mutex_st' 398 in a constant expression 399 constexpr mutex() _NOEXCEPT : __m_(PTHREAD_MUTEX_INITIALIZER) {} 400 [...] 401 include/pthread_types.h:101:8: note: '__pthread_mutex_st' is 402 not literal because: 403 struct __pthread_mutex_st { 404 ^ 405 include/pthread_types.h:103:17: note: non-static data 406 member '__pthread_mutex_st::ptm_errorcheck' has volatile type 407 pthread_spin_t ptm_errorcheck; 408kcah 409 410hack libm cabs{,f,l} and g++ 411cdata 11 Jan 2016 412who christos 413pr lib/50646 414file src/external/gpl3/gcc.old/dist/libstdc++-v3/include/std/complex : 1.2 415file src/external/gpl3/gcc/dist/libstdc++-v3/include/std/complex : 1.2 416descr 417 Our cabs and cabsf have a different argument format on some architectures 418 and for that we have created in libm/compat_cabs{,f}.c. The standard 419 versions in libc are __c99_cabs{,f,l} and there are __RENAME()'s in 420 <complex.h>. G++ uses __builtin_cabs{,f,l} to implement those and they 421 translate by default to cabs{,f,l} which gets defined to cabs{,f} (the 422 wrong function) and an undefined cabsl. I've changed <complex> to use 423 the __c99_cabs{,f,l} directly. Using the __builtin_cabs{,f,l} in gcc is 424 still broken. 425kcah 426 427port vax 428 429 hack gcc4/vax ICE 430 cdate 431 who tsutsui 432 file sys/arch/vax/conf/Makefile.vax 433 descr 434 GCC4 on vax gets ICE on compiling sys/ddb/db_command.c. 435 -fno-tree-ter prevents it so add it to COPTS. 436 kcah 437 438 hack gcc4/vax compiler crash 439 cdate Fri Jun 30 22:39:12 PDT 2006 440 who mrg 441 file bin/csh/Makefile : 1.27 442 file lib/i18n_module/UTF7/Makefile : 1.2 443 descr 444 GCC4 on vax crashes. -O0 stops it happening so far... 445 kcah 446 447 hack vax Toolchain bug 448 cdate 28 Mar 2003 449 who he 450 file sys/arch/vax/vax/intvec.S : 1.5 451 descr 452 Workaround for PR toolchain/20924. The assembler apparently 453 tries to range-check byte offsets when it doesn't have 454 sufficient information to make that decision. 455 Workaround uses `brw' instead of `brb' instruction. 456 kcah 457 458 hack declare boolean_t in two IPF user-mode programs 459 cdate Tue Mar 7 19:19:20 CET 2006 460 who he 461 file dist/ipf/ipsend/iptests.c : 1.8 462 dist/ipf/ipsend/sock.c : 1.7 463 descr 464 The IPF user-mode programs ipsend and iptest first 465 include <sys/types.h> without _KERNEL defined, and 466 later include <sys/file.h> with _KERNEL defined. 467 This causes a build failure when building for vax, 468 since <sys/device.h> ends up being included without 469 bollean_t being defined by <sys/types.h>. 470 Build failure and further details documented in 471 PR#32907. 472 kcah 473 474 hack pcc 0.9.9 large string literals 475 cdat 8 July 2008 476 who gmcgarry 477 file sys/conf/param.c : 1.58 478 descr 479 Workaround for pcc 0.9.9 not handling large string literals 480 which causes kernels with 'options INCLUDE_CONFIG_FILE' to 481 fail compilation. 482 There is a proposal on the pcc mailing list to stuff config 483 file in ELF section. 484 kcah 485 486 hack xorg warnings 487 cdat 30 July 2008, 3 June, 2013 488 who mrg 489 file external/mit/xorg/lib/libSM/Makefile : 1.2 490 external/mit/xorg/lib/libX11/Makefile.libx11 : 1.10 491 external/mit/xorg/lib/libXext/Makefile : 1.2 492 external/mit/xorg/lib/libXfont/Makefile : 1.2 493 descr 494 Disable several warnings or use -Wno-error across Xorg sources 495 while we get them working 496 kcah 497 498 hack 32 bit time leftovers 499 cdat 11 January 2009 500 who christos 501 file lib/libc/time/localtime.c : 1.41 502 lib/libc/time/zic.c : 1.23 503 descr 504 The timezone compiled files still contain 32 bit time_t 505 quantities. I did not want to version the files because 506 the ``parser'' is too ugly for words. What needs to be 507 done, is to rewrite the parser from scratch also to avoid 508 potential core-dumps from parsing invalid files. 509 kcah 510 511 hack 32 bit time leftovers 512 cdat 11 January 2009 513 who christos 514 file various 515 descr 516 Many filesystem on-disk formats have 32 bit times. 517 kcah 518 519 hack gcc 4.5 fsdb miscompile 520 date Sat Nov 9 11:03:02 EST 2013 521 who christos 522 file src/sbin/fsdb/Makefile : 1.36 (and earlier) 523 descr 524 src/sbin/fsdb/fsdb.c: In function 'findblk': 525 src/sbin/fsdb/fsdb.c:610:1: error: unrecognizable insn: 526 (insn 941 940 942 134 src/sbin/fsdb/fsdb.c:589 (set (reg:SI 604) 527 (subreg:SI (mem/s/j:DI (plus:SI (mult:SI (reg:SI 602) 528 (const_int 8 [0x8])) 529 (reg/f:SI 601)) [0 curinode.99_378->dp2.di_ib S8 A32]) 4)) \ 530 -1 (nil)) 531 src/sbin/fsdb/fsdb.c:610:1: internal compiler error: in \ 532 extract_insn, at recog.c:2103 533 kcah 534 535 hack gcc 4.8 gcc miscompiles 536 date Sat Nov 9 16:35:18 EST 2013 537 who christos 538 file distrib/utils/x_ping/Makefile 539 file distrib/vax/miniroot/Makefile.inc 540 file distrib/vax/ramdisk/Makefile 541 file external/gpl3/gdb/lib/libdecnumber/Makefile 542 file sbin/fsdb/Makefile 543 file sbin/newfs_ext2fs/Makefile 544 file sbin/ping/Makefile 545 file usr.sbin/lmcconfig/Makefile 546 file usr.sbin/mtrace/Makefile 547 descr 548 external/gpl3/gcc/dist/gcc/expmed.c:2781:1: 549 internal compiler error: in change_address_1, at emit-rtl.c:2019 550 external/gpl3/gcc/dist/gcc/recog.c:770:1: 551 internal compiler error: in change_address_1, at emit-rtl.c:2019 552 external/gpl3/gcc/dist/libdecnumber/decNumber.c:7214:3: 553 internal compiler error: in change_address_1, at emit-rtl.c:2019 554 sbin/ping/ping.c:679:1: 555 internal compiler error: in change_address_1, at emit-rtl.c:2019 556 sbin/newfs_ext2fs/mke2fs.c:681:1: 557 internal compiler error: in reload_combine_note_use, 558 at postreload.c:1561 559 external/gpl3/gdb/dist/libdecnumber/decNumber.c:7214:3: 560 internal compiler error: in change_address_1, at emit-rtl.c:2019 561 usr.sbin/lmcconfig/lmcconfig.c:939:3: 562 internal compiler error: in reload_combine_note_use, 563 at postreload.c:1561 564 usr.sbin/mtrace/mtrace.c:1655:1: 565 internal compiler error: in change_address_1, at emit-rtl.c:2019 566 kcah 567 568port arm 569 570 hack gcc-unsigned-compare 571 cdate 09 Mar 2002 572 mdate 18 Mar 2002 573 who bjh21 574 file dist/bind/lib/nameser/ns_parse.c : 1.3 575 file dist/dhcp/minires/ns_parse.c : 1.3 576 file dist/dhcp/omapip/result.c : 1.2 577 file dist/dhcp/server/failover.c : 1.3 578 file gnu/dist/toolchain/bfd/bfd.c : 1.2 579 file gnu/dist/toolchain/bfd/format.c : 1.2 580 file gnu/dist/toolchain/gdb/target.c : 1.2 581 file sys/kern/vfs_subr.c : 1.172 582 descr When checking that a potentially-unsigned enum is >= 0, assign 583 it to an int first. This is necessary to avoid "comparison is 584 always true" warnings with -fshort-enums. Casting to an int 585 really should be enough, but turns out not to be. 586 kcah 587 588 hack gcc-4.5 arm CNAME hostname lookup failure on 589 certain DNS environment (probably -ftree-ter problem) 590 cdate Sat Dec 24 04:59:00 UTC 2011 591 mdate 592 who tsutsui 593 file lib/libc/net/Makefile.inc 1.79 594 descr Hostname lookup against CNAMEs by some commands fails 595 on certain DNS environments if lib/libc/net/gethnamaddr.c 596 (ping(8) etc) and lib/libc/net/getaddrinfo.c (ftp(1) etc) 597 are compiled with -O2, even though nslookup(1) against 598 the same CNAME returns proper hostname. 599 They works properly if compiled with -O2 -fno-tree-ter. 600 Also -O2 fails but -O2 -fno-tree-ter works on the following 601 test case in gcc bugzilla: 602 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48863#c4 603 kcah 604 605 hack gcc-4.5 arm without -fno-tree-vrp generate broken code 606 cdate Wed Nov 14 13:02:02 JST 2012 607 who msaitoh 608 file lib/libc/softfloat/Makefile.inc 609 pr 46953 610 regress src/tests/lib/libm/t_cbrt 611 regress src/tests/lib/libm/t_ceil 612 regress src/tests/lib/libm/t_exp 613 regress src/tests/lib/libm/t_log 614 regress src/tests/lib/libm/t_scalbn 615 regress src/tests/lib/libm/t_sinh 616 regress src/tests/lib/libm/t_sqrt 617 descr Gcc has a bug in tree optimization. For adddf3, 618 -INF + -INF returns 0 without -fno-tree-vrp. 619 Debugging with -fdump-tree-all shows that 620 softfloat.c.021t.cleanup_cfg is ok but softfloat.c.023t.ssa 621 is broken. 622 kcah 623 624port sh3 625 626 hack gcc4-sh3-bz2 627 cdate Sun May 21 03:34:57 UTC 2006 628 mdate Fri May 16 13:13:00 UTC 2008 629 who mrg, tsutsui 630 file lib/libbz2/Makefile : 1.10 631 descr 632 The in-tree GCC 4.1-based compiler generated too-far 633 pc-relative addresses. Hack is to build with 634 -fno-loop-optimize. 635 kcah 636 637port sh3eb 638 hack gcc4.8.1 639 cdate Thu Nov 7 16:31:23 EST 2013 640 who christos 641 file src/sys/rump/net/lib/libnetbt/Makefile : 1.2 642 desrc 643 for profiling 644 compile l2cap_signal.c with -O0 to avoid: 645 ./netbt/l2cap_signal.c:36: 646 /p/netbsd/cvsroot/src/sys/rump/net/lib/libnetbt/../../../../\ 647 netbt/l2cap_signal.c: In function 'l2cap_recv_signal': 648 ./sh3/byte_swap.h:20:2: error: 'asm' operand requires \ 649 impossible reload 650 __asm volatile ("swap.b %1,%0" : "=r"(rval) : "r"(x)); 651 kcah 652 653port sh3el 654 hack gcc4.8.1 655 cdate Fri Nov 8 19:27:01 EST 2013 656 who christos 657 file src/external/bsd/libevent/lib/libevent/Makefile : 1.2 658 desrc 659 for profiling 660 compile evdns.c with -O0 to avoid: 661 ./sh3/byte_swap.h:20:2: error: 'asm' operand requires \ 662 impossible reload 663 __asm volatile ("swap.b %1,%0" : "=r"(rval) : "r"(x)); 664 kcah 665 666 hack gcc4.8.1 667 cdate Fri Nov 8 19:34:48 EST 2013 668 who christos 669 file src/usr.sbin/racoon/Makefile : 1.27 670 desrc 671 for profiling 672 compile ipsec_doi.c with -O0 to avoid: 673 ./sh3/byte_swap.h:20:2: error: 'asm' operand requires \ 674 impossible reload 675 __asm volatile ("swap.b %1,%0" : "=r"(rval) : "r"(x)); 676 kcah 677 678port m68000 679 680 hack gcc4-m68000 681 cdate Fri Feb 8 10:29:37 PST 2008 682 mdate Sun May 4 15:37:19 UTC 2008 683 who mrg, tsutsui 684 file rescue/Makefile : 1.21 685 file sbin/dump_lfs/Makefile : 1.9 686 file sbin/fsck_ffs/Makefile : 1.35 687 file sbin/fsdb/Makefile : 1.22 688 file share/mk/sys.mk : 1.96 689 file usr.sbin/ndbootd/Makefile : 1.5 690 descr 691 Several internal compiler errors with gcc -O1 692 around 64bit integer arithmetic. 693 This hack uses -O1 and adds some -fno-tree-foo options 694 to avoid the problem. 695 This might be related with GCC Bugzilla Bug 32424. 696 kcah 697 698port m68k,sh3,vax 699 700 hack gcc-4.8.1 701 cdate Wed Nov 6 20:41:35 EST 2013 702 who christos 703 file src/external/gpl3/gcc/libstdc++-v3/Makefile : 1.6 704 descr 705 compile hashtable_c++0x.cc with -O2 instead of -Os to 706 produce missing instantiation of std::lower_bound expansion 707 for unsigned long. 708 kcah 709 710port sparc 711 712 hack avoid NULL pointer derefs in savefpstate IPIs and GCC 4.5.3 713 cdate Sun Aug 14 19:26:48 PDT 2011 714 who mrg 715 file sys/arch/sparc64/sparc/cpu.c : 1.234 716 file sys/arch/sparc64/sparc/cpuvar.h : 1.90 717 file sys/arch/sparc64/sparc/genassym.cf : 1.67 718 file sys/arch/sparc64/sparc/locore.s : 1.265 719 descr 720 Something is wrong with GCC 4.5.3 and the savefpstate IPI. 721 Post newlock2 there was a bug where a lock was reduced from 722 IPL_SCHED to IPL_VM (?) and occasionally savefpstate IPI 723 would crash due to NULL IPI. This was fixed by re-using the 724 right IPL value. However, GCC 4.5.3 build kernels have the 725 same problems. For now, the hack is re-instated. 726 kcah 727 728 729port mips 730 731 hack mips-shared-linker-load-address 732 cdate Fri Oct 7 08:33:10 UTC 2005 733 who simonb 734 file src/sys/kern/exec_elf32.c : 1.107 735 descr 736 With COMPAT_16 or previous enabled (which enables 737 ELF_INTERP_NON_RELOCATABLE) a recent ld.elf_so will 738 load and run at address 0. The check to fix this in 739 rev 1.107 only checks the first psection of the ELF 740 executable, which may not be loadable. A more correct 741 fix is to check the first loadable psection instead of 742 just the first psection. 743 kcah 744 745 hack mips-duplicate-ras-end-label 746 cdate Sat Sep 2 23:29:42 2006 747 who martin 748 file src/regress/sys/kern/ras/ras3/Makefile : 1.3 749 descr 750 Add -fno-reorder-blocks to CFLAGS to avoid duplicate 751 labels by duplicated __asm output from RAS_END() 752 macro. 753 kcah 754 755 hack mips-mcount-assembler-warning 756 cdate Tue Jul 29 14:16:52 UTC 2008 757 who lukem 758 file src/lib/libc/gmon/Makefile.inc : 1.8 759 descr 760 Workaround for PR port-mips/39192. 761 common/lib/libc/gmon/mcount.c generates a (fatal) 762 assembler warning on MIPS: 763 Warning: No .cprestore pseudo-op used in PIC code 764 Add COPTS.count.c+=-Wa,--no-warn to avoid -Wa,--fatal-warnings 765 kcah 766 767port i386 768 769 hack use volatile intermediate variable to enforce rounding 770 cdate Tue Aug 1 22:15:55 MEST 2006 771 who drochner 772 file src/lib/libm/src/lrintf.c : 1.4 773 file src/lib/libm/src/s_rintf.c : 1.8 774 descr 775 gcc-4 does subsequent operations on "float" values within 776 the i387 FPU without rounding the intermediate results 777 kcah 778 779port x86 780 hack turn off optimization for biosdisk_ll.c because otherwise 781 we are pass the wrong arguments to biosdisk_read(). 782 $ cd /usr/src/sys/arch/i386/floppies/bootflopp-com 783 $ qemu-system-i386 -nographic -fda boot-com1.fs -boot a 784 who christos 785 file src/sys/arch/i386/stand/lib/Makefile : 1.38 786 descr 787 Turning on DISK_DEBUG shows the problem. We should find 788 out which option is causing this. 789 hcah 790 791port powerpc 792 793 hack avoid using __builtin_return_address(0) because it fails in 794 Xorg's module loader 795 cdate Sat Sep 27 03:52:05 UTC 2008 796 who macallan 797 file src/libexec/ld.elf_so/rtld.c : 1.121 798 descr 799 workaround for PR port-macppc/37812 800 kcah 801 802 hack define TARGET_SECURE_PLT and HAVE_AS_TLS because when 803 building the native compiler via build.sh those don't defined 804 properly. 805 cdate Sat Mar 12 08:00:00 UTC 2011 806 who matt 807 file src/gnu/dist/gcc4/gcc/config/rs6000/netbsd.h 808 descr 809 see above 810 kcah 811 812port powerpc64 813 814 hack include _errno.c in libposix so that __errno resolves. It 815 should resolve from libc's errno, but somehow it does not. 816 Linker bug? 817 cdate Thu Oct 27 13:19:47 EDT 2011 818 who christos 819 file src/lib/libposix/Makefile: 1.15 820 file src/lib/librt/Makefile: 1.14 821 descr 822 workaround for: 823 libposix_pic.a(cerror.pico)(.text+0x14): unresolvable \ 824 R_PPC64_REL24 relocation against symbol `.__errno' 825 kcah 826 827 hack rename data() function in mdocml to avoid redefined error. 828 Compiler/Assembler bug? 829 cdate Sat Oct 29 11:16:01 EDT 2011 830 who christos 831 file src/external/bsd/mdocml/tbl_data.c: 1.2 832 descr 833 workaround for: 834 {standard input}: Assembler messages: 835 {standard input}:105: Error: symbol `.data' is already \ 836 defined 837 kcah 838 839port emips 840 841 hack Add nop between ctc1 and mtc0 to avoid assembler internal 842 error 843 cdate Sat Oct 29 16:57:34 EDT 2011 844 who christos 845 file src/sys/arch/mips/mips/mips_fpu.c: 1.7 846 descr 847 workaround for: 848 {standard input}: Assembler messages: 849 {standard input}:730: Internal error! 850 Assertion failure in append_insn at /usr/src/external/gpl3/\ 851 binutils/dist/gas/config/tc-mips.c line 2910. 852 kcah 853 854port ia64 855 856 hack libc hesiod.c file does not compile with -O2 (internal 857 compiler error in gcc 4.5.3) 858 cdate Thu Dec 27 08:05:43 CET 2012 859 who martin 860 file src/lib/libc/net/Makefile.inc: 1.82 861 descr 862 workaround for: 863 {standard input}: Assembler messages: 864 {standard input}:1507: Warning: Use of 'mov' may violate WAW dependency 'GR%, % in 1 - 127' (impliedf), specific resource number is 15 865 {standard input}:1506: Warning: This is the location of the conflicting usage 866 {standard input}: Error: 2 warnings, treating warnings as errors 867 kcah 868 869 hack libelf libelf_extended.c compiler error in gcc 4.5.3 870 cdate Thu Dec 27 09:05:51 CET 2012 871 who martin 872 file src/external/bsd/libelf/lib/Makefile: 1.3 873 descr 874 workaround for: 875 {standard input}: Assembler messages: 876 {standard input}:87: Warning: Use of 'adds' may violate RAW dependency 'GR%, % in 1 - 127' (impliedf), specific resource number is 33 877 {standard input}:87: Warning: Only the first path encountering the conflict is reported 878 {standard input}:85: Warning: This is the location of the conflicting usage 879 kcah 880 881 hack compiler error with gcc 4.5.x 882 cdate Thu Dec 27 15:15:25 CET 2012 883 who martin 884 file src/crypto/external/bsd/netpgp/lib/verify/Makefile: 1.5 885 descr 886 workaround for: 887 {standard input}: Assembler messages: 888 {standard input}:22979: Warning: Use of 'mov' may violate WAW dependency 'GR%, % in 1 - 127' (impliedf), specific resource number is 8 889 {standard input}:22978: Warning: This is the location of the conflicting usage 890 kcah 891 892 hack libgcc unwind dummy function 893 cdate Fri Apr 17 14:31:03 CEST 2015 894 who martin 895 file src/external/gpl3/gcc/dist/libgcc/config/ia64/unwind-ia64.c: 1.4 896 descr 897 Add an empty _Unwind_FindTableEntry() implementation. 898 In the end we will use our libc stuff, and this should 899 go away again. 900 kcah 901 902port x68k 903 904 hack compiler error with gcc 4.5.x 905 cdate Fri May 24 13:23:01 EDT 2013 906 who christos 907 file src/external/gpl3/gcc/usr.bin/bakend/Makefile: 1.17 908 xsrc/external/mit/xorg/lib/libGLU/Makefile: 1.11 909 descr 910 workaround for: 911 internal compiler error: in cselib_record_set, at cselib.c:1999 912 kcah 913 914hack fallback to /usr/bin/clang-cpp in rpcgen 915cdate Wed Jun 5 15:49:27 CEST 2013 916who joerg 917file src/usr.bin/rpcgen/rpc_main.c 918descr 919 It is undecided which compiler owns /usr/bin/cpp and whether it should 920 exist in a MKGCC=no world. To allow rpcgen to work out-of-the-box, 921 if either gcc or clang is installed, use /usr/bin/clang-cpp as fallback. 922 This applies only if RPCGEN_CPP is not set and /usr/bin/cpp is not executable. 923kcah 924 925port hppa 926 927 hack compiler error with gcc 4.5.x 928 cdate Tue Jul 23 07:42:28 BST 2013 929 who skrll 930 file src/sys/lib/libkern/Makefile.libkern: 1.26 931 descr 932 workaround for unanalysed codegen bug affecting md5c.c. 933 kcah 934 935 hack gdb vs _rtld_debug_state problem 936 cdate Thu Mar 5 09:49:53 UTC 2015 937 who skrll 938 file src/libexec/ld.elf_so/rtld.c: 1.175 939 descr 940 workaround for problem where gdb misses the breakpoint on 941 _rtld_debug_state when the function is only the 942 bv,n %r0(%rp) instruction - the nullify seems to 943 confuse something 944 kcah 945 946port mips64* 947hack compiler crashes on mips64* with optimization enabled 948cdate Tue May 13 18:46:48 UTC 2014 949who macallan 950file src/external/lgpl3/gmp/lib/libgmp/arch/mips64eb/Makefile.inc: 1.6 951 src/external/lgpl3/gmp/lib/libgmp/arch/mips64eb/config.h: 1.5 952 src/external/lgpl3/gmp/lib/libgmp/arch/mips64el/Makefile.inc: 1.6 953 src/external/lgpl3/gmp/lib/libgmp/arch/mips64el/config.h: 1.5 954descr workaround for n32 gcc doing unaligned 64bit accesses when optimizing 955pr 48696 956kcah 957 958port vax 959hack compile boot with -O1 960cdate Sat May 24 09:40:58 CEST 2014 961who martin 962file src/sys/arch/vax/boot/boot/Makefile: 1.41 963descr /boot does not work when compiled with -O2 and gcc 4.8 964kcah 965 966port arm 967hack avoid using labels in a 12-bit constant. 968who matt 969file crypto/external/bsd/openssl/lib/libcrypto/arch/arm/aes-armv4.S: 1.2 970descr workaround for clang misassembling an instruction 971kcah 972