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