[BACK]Return to HACKS CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / doc

Annotation of src/doc/HACKS, Revision 1.122.2.1.4.1

1.122.2.1.4.1! (jdc        1:: # $NetBSD: HACKS,v 1.122.2.1 2012/03/05 20:59:25 sborrill Exp $
1.1       lukem       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:
                     30: hack   netstat ieee1394 address printing.
                     31: mdate  14 Nov 2000
                     32: who    matt
                     33: file   lib/libc/net/getnameinfo.c      : 1.32 : 497 : 503
                     34: descr
                     35:        Because the current implementation of IP over IEEE1394, the
                     36:        fw device address contains more than just the IEEE1394 EUI-64.
                     37:        So when printing out IEEE1394 addresses, ignore the extra stuff.
                     38: kcah
                     39:
                     40: hack   xterm vs. libterm
                     41: mdate  01 Aug 2000
                     42: who    jdc
                     43: file   xsrc/xc/programs/xterm/main.c   : 1.2 : 3609 : 3614
                     44: pr     10383
                     45: descr
                     46:        In order to extend the termcap string over 1023 bytes, a ZZ entry was
                     47:        introduced to point to a memory location containing the full entry.
                     48:        Without this hack, xterm will export a termcap containing the ZZ
                     49:        entry, which will then be ignored by libterm.  As xterm modifies the
                     50:        exported termcap, this would cause those modifications to be ignored.
                     51: kcah
                     52:
                     53: hack   wi-at-big-endian-bus
                     54: cdate  15 Mar 2002
                     55: who    martin
                     56: file   dev/ic/wireg.h
                     57: descr  Add an option to access the underlying bus in big endian byte order
                     58:        to work around deficiencies in bus_space_{read,write}_* macros.
                     59:        Those don't allow the implementation of a proper pcmcia bus space
                     60:        tag.
                     61: kcah
                     62:
1.3       jdc        63: hack   specific knowledge of colours in curses code
                     64: cdate  Sun Apr  6 11:05:24 BST 2003
                     65: who    jdc
                     66: file   lib/libcurses/color.c : r1.24
                     67: descr
                     68:        Swap red/blue and yellow/cyan colours for COLOR_OTHER.
                     69:        Fix is to enhance libtermcap to understand terminfo-style % sequences.
                     70:        See also:
1.5       salo       71:            http://mail-index.NetBSD.org/tech-userlevel/2003/04/06/0000.html
1.4       scw        72: kcah
                     73:
1.7       he         74: hack   Compensation for differing types of LINUX_USRSTACK and USRSTACK
                     75: cdate  21 Aug 2003
                     76: who    he
                     77: file   sys/miscfs/procfs/procfs_linux.c : 1.14
                     78: descr
                     79:        Not all ports have LINUX_USRSTACK and/or USRSTACK defined as
                     80:        literals/constants, but refer to variables of a type which is
                     81:        not "unsigned long", causing compilation of procfs_linux.c to
                     82:        fail with "makes integer from pointer without a cast".  This
                     83:        is observed on e.g. the sun3 port.  Ideally the "types" for
                     84:        symbols should be consistent across all ports.
1.25      mrg        85: kcah
                     86:
1.37      junyoung   87: hack   gcc-strict-aliasing
                     88: cdate  6 August 2004
                     89: who    junyoung
                     90: pr     26516
                     91: file   src/usr.sbin/racoon/racoon/Makefile : 1.21
                     92: descr
                     93:        GCC issues a warning "dereferencing type-punned pointer will break
                     94:        strict-aliasing rules" when compiling
                     95:        crypto/dist/kame/racoon/crypto/openssl.c with -O[23s]. Note that this
1.38      junyoung   96:        is due to use of type casting in a non-standard way in the code and
                     97:        not a compiler bug. Once a new release of KAME with a proper fix
                     98:        applied is imported this should be backed out.
1.37      junyoung   99: kcah
                    100:
1.80      tsutsui   101: hack   gcc4 wrong uninitialized variable
1.58      mrg       102: mdate  10 May 2006
                    103: who    mrg
                    104: file   bin/ksh/eval.c                  : 1.6
                    105: file   bin/sh/histedit.c               : 1.39
                    106: file   bin/sh/parser.c                 : 1.60
                    107: file   crypto/dist/heimdal/kdc/524.c   : 1.10
                    108: file   crypto/dist/ssh/sftp.c          : 1.20
                    109: file   crypto/dist/ssh/ssh-keysign.c   : 1.11
                    110: file   dist/ipf/lib/hostname.c         : 1.2
                    111: file   dist/ipf/tools/ipmon.c          : 1.8
1.72      mrg       112: file   dist/ntp/ntpd/ntp_request.c     : 1.4
1.58      mrg       113: file   dist/ntp/ntpd/refclock_shm.c    : 1.4
                    114: file   dist/ntp/sntp/timing.c          : 1.3
                    115: file   dist/pppd/pppstats/pppstats.c   : 1.3
                    116: file   dist/smbfs/lib/smb/rap.c        : 1.6
                    117: file   dist/tcpdump/print-zephyr.c     : 1.5
1.68      mrg       118: file   distrib/utils/sysinst/aout2elf.c : 1.12
1.58      mrg       119: file   gnu/libexec/uucp/uucico/uucico.c : 1.6
                    120: file   lib/libc/citrus/citrus_csmapper.c : 1.6
                    121: file   lib/libc/citrus/citrus_pivot_factory.c : 1.5
                    122: file   lib/libc/inet/inet_cidr_ntop.c  : 1.3
                    123: file   lib/libc/inet/inet_ntop.c       : 1.3
                    124: file   lib/libc/stdio/vfwprintf.c      : 1.8
1.69      mrg       125: file   libexec/ld.elf_so/arch/m68k/mdreloc.c : 1.20
1.76      mrg       126: file   libexec/ld.elf_so/arch/powerpc/ppc_reloc.c : 1.40
1.74      mrg       127: file   libexec/ld.elf_so/arch/sh3/mdreloc.c : 1.22
1.69      mrg       128: file   libexec/ld.elf_so/arch/sparc/mdreloc.c : 1.39
1.58      mrg       129: file   libexec/ld.elf_so/arch/sparc64/mdreloc.c : 1.39
1.74      mrg       130: file   libexec/ld.elf_so/arch/vax/mdreloc.c    : 1.21
1.71      dan       131: file   libexec/ld.elf_so/arch/x86_64/mdreloc.c : 1.27
1.58      mrg       132: file   sbin/fsck_ext2fs/dir.c          : 1.19
                    133: file   sbin/routed/rtquery/rtquery.c   : 1.18
1.73      dan       134: file   sys/arch/amd64/amd64/pmap.c     : 1.26
1.79      mrg       135: file   sys/arch/i386/pci/piixpcib.c    : 1.4
1.80      tsutsui   136: file   sys/arch/m68k/m68k/pmap_motorola.c      : 1.4
1.58      mrg       137: file   sys/crypto/cast128/cast128.c    : 1.9
                    138: file   sys/ddb/db_command.c            : 1.86
1.68      mrg       139: file   sys/dev/cardbus/cardbus_map.c   : 1.21
1.58      mrg       140: file   sys/dev/fss.c                   : 1.25
1.69      mrg       141: file   sys/dev/ic/igsfb.c              : 1.39
1.68      mrg       142: file   sys/dev/ic/mb86950.c            : 1.5
1.58      mrg       143: file   sys/dev/ic/midway.c             : 1.71
1.68      mrg       144: file   sys/dev/kttcp.c                 : 1.18
                    145: file   sys/dev/rasops/rasops_bitops.h  : 1.9
                    146: file   sys/dev/pci/cmpci.c             : 1.31
1.58      mrg       147: file   sys/dev/pci/machfb.c            : 1.45
1.68      mrg       148: file   sys/dev/usb/ohci.c              : 1.174
                    149: file   sys/dev/usb/uhci.c              : 1.196
                    150: file   sys/dev/rasops/rasops_bitops.h  : 1.9
1.58      mrg       151: file   sys/dist/ipf/netinet/ip_nat.c   : 1.10
                    152: file   sys/dist/ipf/netinet/ip_rpcb_pxy.c : 1.8
                    153: file   sys/dist/pf/net/pf.c            : 1.22
1.59      mrg       154: file   sys/fs/udf/udf_vnops.c          : 1.4
1.58      mrg       155: file   sys/kern/kern_sig.c             : 1.219
                    156: file   sys/kern/tty.c                  : 1.181
                    157: file   sys/net/bpf.c                   : 1.116
                    158: file   sys/net/zlib.c                  : 1.26
1.68      mrg       159: file   sys/netccitt/if_x25subr.c       : 1.37
1.58      mrg       160: file   sys/netinet/in.c                : 1.107
                    161: file   sys/netsmb/smb_smb.c            : 1.27
                    162: file   sys/netsmb/smb_trantcp.c        : 1.22
                    163: file   sys/nfs/nfs_serv.c              : 1.108
                    164: file   sys/nfs/nfs_socket.c            : 1.129
                    165: file   sys/nfs/nfs_syscalls.c          : 1.91
                    166: file   sys/ufs/lfs/lfs_vfsops.c        : 1.207 [also (char *)]
                    167: file   usr.bin/ftp/ftp.c               : 1.140
                    168: file   usr.bin/find/function.c         : 1.54
                    169: file   usr.bin/mail/tty.c              : 1.20
1.100     tsutsui   170: file   usr.bin/msgc/msg_sys.def        : 1.33-1.34
1.58      mrg       171: file   usr.bin/nl/nl.c                 : 1.7
                    172: file   usr.bin/systat/keyboard.c       : 1.23
                    173: file   usr.bin/usbhidctl/usbhid.c      : 1.29
                    174: file   usr.bin/vi/cl/cl_read.c         : 1.5
                    175: file   usr.bin/vi/ex/ex_cscope.c       : 1.12
                    176: file   usr.bin/vi/ex/ex_tag.c          : 1.19
                    177: file   usr.bin/vi/vi/v_txt.c           : 1.15
                    178: file   usr.sbin/altq/altqstat/qdisc_rio.c : 1.4
                    179: file   usr.sbin/cron/do_command.c      : 1.19
                    180: file   usr.sbin/timed/timed/slave.c    : 1.15
                    181: descr
                    182:        GCC 4.1 gets many uninitialised variable warnings wrong.  We should
                    183:        really audit all the old hacks like this when older compilers are
                    184:        removed from the tree, as many are probably no longer required.
1.65      christos  185:        The problem is that it does not recognize initialization via function
                    186:        call pointer. I.e.
                    187:                int p;
                    188:                foo(&p);
                    189:        does not mark p as initialized.
1.58      mrg       190: kcah
                    191:
1.59      mrg       192: hack   gcc4 pointer sign and strict aliasing problems
                    193: mdate  10 May 2006
                    194: who    mrg
                    195: file   bin/ed/Makefile                 : 1.33
1.68      mrg       196: file   distrib/utils/sysinst/Makefile.inc : 1.44
1.91      martin    197: file   distrib/utils/x_dhclient/Makefile : 1.15
1.60      mrg       198: file   games/bcd/Makefile              : 1.5
                    199: file   games/dab/Makefile              : 1.5
                    200: file   games/larn/Makefile             : 1.17
                    201: file   games/pom/Makefile              : 1.5
                    202: file   lib/libasn1/Makefile            : 1.26
                    203: file   lib/libcrypt/Makefile           : 1.17
                    204: file   lib/libgssapi/Makefile          : 1.16
                    205: file   lib/libhdb/Makefile             : 1.20
                    206: file   lib/libkadm5clnt/Makefile       : 1.21
                    207: file   lib/libkadm5srv/Makefile        : 1.25
                    208: file   lib/libkrb5/Makefile            : 1.35
                    209: file   lib/libssh/Makefile             : 1.6
                    210: file   lib/libtelnet/Makefile          : 1.26
                    211: file   libexec/getty/Makefile          : 1.14
                    212: file   libexec/kadmind/Makefile        : 1.19
                    213: file   libexec/kpasswdd/Makefile       : 1.14
                    214: file   sbin/atactl/Makefile            : 1.3
                    215: file   sbin/cgdconfig/Makefile         : 1.7
                    216: file   sbin/clri/Makefile              : 1.13
                    217: file   sbin/dkctl/Makefile             : 1.4
                    218: file   sbin/dump/Makefile              : 1.33
                    219: file   sbin/fdisk/Makefile             : 1.35
                    220: file   sbin/fsck_ext2fs/Makefile       : 1.11
                    221: file   sbin/fsck_ffs/Makefile          : 1.29
                    222: file   sbin/fsdb/Makefile              : 1.18
                    223: file   sbin/mount_smbfs/Makefile       : 1.4
                    224: file   sbin/newfs/Makefile             : 1.30
                    225: file   sbin/newfs_sysvbfs/Makefile     : 1.2
                    226: file   sbin/restore/Makefile           : 1.23
                    227: file   sbin/veriexecctl/Makefile       : 1.11
1.64      mrg       228: file   sys/lib/libsa/Makefile          : 1.59
1.68      mrg       229: file   sys/arch/evbarm/adi_brh/brh_machdep.c : 1.24
1.59      mrg       230: file   usr.bin/awk/Makefile            : 1.9
1.64      mrg       231: file   usr.bin/crontab/Makefile        : 1.24
1.60      mrg       232: file   usr.bin/ctags/Makefile          : 1.8
1.61      mrg       233: file   usr.bin/gzip/Makefile           : 1.10
1.60      mrg       234: file   usr.bin/ssh/sftp/Makefile       : 1.10
                    235: file   usr.bin/ssh/ssh/Makefile        : 1.25
1.59      mrg       236: file   usr.bin/vi/build/Makefile       : 1.26
1.60      mrg       237: file   usr.bin/telnet/Makefile         : 1.40
                    238: file   usr.bin/tn3270/tn3270/Makefile  : 1.36
                    239: file   usr.bin/tr/Makefile             : 1.4
1.59      mrg       240: file   usr.sbin/amd/amd/Makefile       : 1.27
                    241: file   usr.sbin/amd/amq/Makefile       : 1.14
                    242: file   usr.sbin/amd/libamu/Makefile    : 1.20
                    243: file   usr.sbin/amd/pawd/Makefile      : 1.5
                    244: file   usr.sbin/bind/Makefile.inc      : 1.22
1.60      mrg       245: file   usr.sbin/bind/libdns/Makefile   : 1.3
                    246: file   usr.sbin/bind/named/Makefile    : 1.17
                    247: file   usr.sbin/bootp/bootptest/Makefile : 1.2
                    248: file   usr.sbin/chrtbl/Makefile        : 1.6
                    249: file   usr.sbin/cron/Makefile          : 1.12
1.59      mrg       250: file   usr.sbin/dhcp/Makefile.inc      : 1.20
                    251: file   usr.sbin/dumplfs/Makefile       : 1.11
1.60      mrg       252: file   usr.sbin/hprop/Makefile         : 1.13
                    253: file   usr.sbin/installboot/Makefile   : 1.35
1.59      mrg       254: file   usr.sbin/ipf/ipftest/Makefile   : 1.32
                    255: file   usr.sbin/isdn/isdnd/Makefile    : 1.6
                    256: file   usr.sbin/isdn/isdnmonitor/Makefile : 1.3
                    257: file   usr.sbin/isdn/isdntel/Makefile  : 1.2
                    258: file   usr.sbin/isdn/isdntrace/Makefile : 126
1.61      mrg       259: file   usr.sbin/mopd/common/Makefile   : 1.10
                    260: file   usr.sbin/mopd/mopd/Makefile     : 1.9
                    261: file   usr.sbin/mopd/mopprobe/Makefile : 1.7
1.60      mrg       262: file   usr.sbin/makefs/Makefile        : 1.17
                    263: file   usr.sbin/mscdlabel/Makefile     : 1.5
                    264: file   usr.sbin/pkg_install/add/Makefile : 1.7
                    265: file   usr.sbin/pkg_install/create/Makefile : 1.5
                    266: file   usr.sbin/pkg_install/lib/Makefile : 1.28
1.59      mrg       267: file   usr.sbin/ntp/ntpd/Makefile      : 1.10/1.11
                    268: file   usr.sbin/ntp/ntptime/Makefile   : 1.4/1.5
                    269: file   usr.sbin/pppd/Makefile.inc      : 1.3
                    270: file   usr.sbin/pppd/pppd/Makefile     : 1.38
1.60      mrg       271: file   usr.sbin/rarpd/Makefile         : 1.10
1.59      mrg       272: file   usr.sbin/rbootd/Makefile        : 1.10
1.60      mrg       273: file   usr.sbin/rpc.pcnfsd/Makefile    : 1.17
1.59      mrg       274: file   usr.sbin/rtadvd/Makefile        : 1.9
1.60      mrg       275: file   usr.sbin/tcpdump/Makefile       : 1.42
1.59      mrg       276: file   usr.sbin/wiconfig/Makefile      : 1.3
                    277: descr
                    278:        GCC 4.1 warns on pointer sign comparision/assignments and lots of
                    279:        code does not conform.  For now we use -Wno-pointer-sign and
                    280:        -fno-strict-aliasing.
                    281: kcah
                    282:
1.121     christos  283: hack   emacs aborting on exit (libgcc issue)
                    284: mdate  7 November 2011
                    285: who    christos
                    286: file   external/gpl3/gcc/dist/gcc/unwind-dw2-fde.c : 1.2
                    287: descr
                    288:        GCC 4.5.3 now calls __unregister_frame_info_bases() on unloading/exit
                    289:        to do just that. If the symbol requested is not found, then it aborts.
                    290:        emacs 23.3 triggers this assertion. For now disable aborting, and
                    291:        silently ignore.
                    292: kcah
                    293:
1.105     agc       294: hack   cross-building hack on Darwin
                    295: mdate  20 July 2008
                    296: who    agc
                    297: file   src/distrib/common/Makefile.mdset       : 1.33
                    298: descr
                    299:        Darwin has problems with getopt() when used in mdsetimage -v,
                    300:        due to the difference between BSD and libiberty() getopt
                    301:        implementations, more fully described in
                    302:        http://mail-index.netbsd.org/current-users/2008/06/27/msg003242.html
                    303:        and the subsequent thread.  For just now, we just have an ugly
                    304:        workaround not to call mdsetimage with the -v argument on Darwin
                    305: kcah
                    306:
1.109     veego     307: hack   avoid rebuilding asn1 libraries
                    308: mdate  03 August 2008
                    309: who    veego
                    310: file   src/crypto/dist/heimdal/lib/asn1/gen.c  : 1.10
                    311: file   src/lib/libasn1/Makefile        : 1.32
                    312: file   src/lib/libhdb/Makefile : 1.23
                    313: file   src/lib/libgssapi/Makefile      : 1.20
                    314: file   src/lib/libhx509/Makefile       : 1.3
                    315: pr     9702 39185
                    316: descr
                    317:        asn1_compile does not check if generated header files do not have to
                    318:        be rebuild.
                    319:        Generate .hx files and copy it in the Makefiles if they changed.
                    320: kcah
                    321:
1.111     tsutsui   322: hack   avoid gcc4 -O1 bug in loop optimize
                    323: cdate  29 November 2008
                    324: who    tsutsui
                    325: file   src/sbin/ifconfig/Makefile      : 1.39
                    326: pr     40036 40066
                    327: descr
                    328:        gcc -O1 seems to generate wrong code in loop optimize so that
                    329:        ifconfig lo0 inet6 doesn't return error even if a kernel
                    330:        doesn't have IPv6 support. (see the above PRs for details)
                    331:        For workaround, specify -fno-loop-optimize on m68000,
                    332:        which uses -O1 by default.
                    333: kcah
                    334:
1.114     christos  335: hack   MKPIE ldscript for /usr.sbin/crash
                    336: cdate  22 April 2010
                    337: who    christos
                    338: file   src/usr.sbin/crash/Makefile     : 1.5
                    339: file   src/usr.sbin/crash/ldscript.crash       : 1.1
                    340: pr     N/A
                    341: descr
                    342:        fixed in binutils-2.20.1. Linking with MKPIE=yes causes overlapping
                    343:        sections
                    344: kcah
                    345:
1.21      mycroft   346: port   vax
                    347:
1.102     tsutsui   348:        hack    gcc4/vax ICE
                    349:        cdate
                    350:        who     tsutsui
                    351:        file    sys/arch/vax/conf/Makefile.vax
                    352:        descr
                    353:                GCC4 on vax gets ICE on compiling sys/ddb/db_command.c.
                    354:                -fno-tree-ter prevents it so add it to COPTS.
                    355:        kcah
                    356:
1.81      mrg       357:        hack    gcc4/vax compiler crash
                    358:        cdate   Fri Jun 30 22:39:12 PDT 2006
                    359:        who     mrg
                    360:        file    bin/csh/Makefile        : 1.27
                    361:        file    lib/i18n_module/UTF7/Makefile   : 1.2
                    362:        descr
                    363:                GCC4 on vax crashes.  -O0 stops it happening so far...
                    364:        kcah
                    365:
1.52      jmc       366:        hack    gcc 2.95/vax doesn't like abort being used as function pointer
                    367:        cdate   Tue Dec 13 05:54:50 GMT 2005
                    368:        who     jmc
                    369:        file    lib/libc/rpc/svc_vc.c 1.15
                    370:        descr
                    371:                Provide a local definition for abort which doesn't include
                    372:                the noreturn attribute which trips up gcc 2.95 on vax.
1.81      mrg       373:        kcah
1.52      jmc       374:
1.45      jmc       375:        hack    gcc 2.95/vax doesn't have stdbool.h and gettext needs it
                    376:        cdate   Mon May  9 12:16:22 CDT 2005
                    377:        who     jmc
                    378:        file    gnu/usr.bin/gettext/Makefile.inc.prog 1.5
                    379:                gnu/usr.bin/gettext/libgrep/Makefile 1.3
                    380:                gnu/usr.bin/gettext/libnlspr/Makefile 1.5
                    381:                gnu/usr.bin/gettext/libnlsut/Makefile 1.3
                    382:        descr
                    383:                The latest gettext assumes a C99 environment or at least
                    384:                configure checks to work around this. As we don't use configure
                    385:                provide a stdbool.h for vax builds locally in directories from
                    386:                the template provided by the gettext code.
1.81      mrg       387:        kcah
1.45      jmc       388:
1.21      mycroft   389:        hack    gcc 2.95/vax cannot handle __builtin_ffs()
                    390:        cdate   Fri Aug 23 21:31:15 CEST 2002
                    391:        who     ragge
                    392:        file    sys/lib/libkern/libkern.h : 1.42
                    393:        descr
                    394:                __builtin_ffs() is ifdef'd away if __vax__. Matt Thomas has
                    395:                added this feature to GCC 3 so it can be removed when switching.
1.81      mrg       396:        kcah
1.21      mycroft   397:
1.102     tsutsui   398:        hack    gcc 2.95/vax libbz2
1.21      mycroft   399:        mdate   27 Jun 2002
                    400:        who     thorpej
                    401:        file    lib/libbz2/Makefile
                    402:        descr
                    403:                libbz2 is mis-compiled with optimization with GCC 2.95.3
1.24      ragge     404:                on VAX.  -O0 works around this problem.
                    405:        kcah
                    406:
1.21      mycroft   407:        hack    vax Toolchain bug
                    408:        cdate   28 Mar 2003
                    409:        who     he
                    410:        file    sys/arch/vax/vax/intvec.S : 1.5
                    411:        descr
                    412:                Workaround for PR toolchain/20924.  The assembler apparently
                    413:                tries to range-check byte offsets when it doesn't have
                    414:                sufficient information to make that decision.
                    415:                Workaround uses `brw' instead of `brb' instruction.
1.23      he        416:        kcah
                    417:
                    418:        hack    vax gcc 2.95.3 -Wuninitialized workarounds
                    419:        cdate   6 Nov 2003
                    420:        who     he
                    421:        file    sys/dev/bi/if_ni.c : 1.22
                    422:        file    sys/arch/vax/vax/ctu.c : 1.20
                    423:        descr
                    424:                Workaround for gcc 2.95.3 failing to detect that certain
                    425:                variables will be initialized; so that this code compiles
                    426:                with -Wuninitialized.  Should be reviewed and possibly
                    427:                reverted when gcc 3.3.2 is ready for vax.
1.21      mycroft   428:        kcah
                    429:
1.34      cl        430:        hack    vax gcc 2.95.3 structure initialization
                    431:        cdat    13 May 2004
                    432:        who     cl
                    433:        file    sys/miscfs/kernfs/kernfs_vnops.c : 1.104
                    434:        descr
                    435:                Workaround for gcc 2.95.3 failing to initialize structures
                    436:                and/or unions inside structures using nested designators.
                    437:                Should be reverted when gcc >=3.3.3 is ready for vax.
                    438:        kcah
1.21      mycroft   439:
1.35      he        440:        hack    vax gcc 2.95.3 needs -I. to build nslexer.c
                    441:        cdat    6 Jun 2004
1.36      he        442:        who     mhitch
                    443:        file    lib/libc/arch/vax/Makefile.inc : 1.6
1.35      he        444:        descr
                    445:                It appears necessary to add -I. to CPPFLAGS when building
                    446:                nslesxer.c.  This may be caused by gcc 2.95.3 being used.
                    447:                Should be reverted when a newer gcc is ready for vax.
                    448:        kcah
                    449:
1.43      tron      450:        hack    vax gcc 2.95.3 doesn't understand "-std=c99"
                    451:        cdat    5 April 2005
                    452:        who     tron
                    453:        file    src/share/mk/bsd.sys.mk
                    454:        descr
                    455:                We cannot use "-std=c99" for compiler warning level 4 and above
                    456:                because gcc 2.95.3 doesn't support that option.
                    457:        kcah
                    458:
1.54      he        459:        hack    declare boolean_t in two IPF user-mode programs
                    460:        cdate   Tue Mar  7 19:19:20 CET 2006
                    461:        who     he
                    462:        file    dist/ipf/ipsend/iptests.c : 1.8
                    463:                dist/ipf/ipsend/sock.c : 1.7
                    464:        descr
                    465:                The IPF user-mode programs ipsend and iptest first
                    466:                include <sys/types.h> without _KERNEL defined, and
                    467:                later include <sys/file.h> with _KERNEL defined.
                    468:                This causes a build failure when building for vax,
                    469:                since <sys/device.h> ends up being included without
                    470:                bollean_t being defined by <sys/types.h>.
                    471:                Build failure and further details documented in
                    472:                PR#32907.
                    473:        kcah
                    474:
1.104     gmcgarry  475:        hack    pcc 0.9.9 large string literals
                    476:        cdat    8 July 2008
                    477:        who     gmcgarry
                    478:        file    sys/conf/param.c : 1.58
                    479:        descr
                    480:                Workaround for pcc 0.9.9 not handling large string literals
                    481:                which causes kernels with 'options INCLUDE_CONFIG_FILE' to
                    482:                fail compilation.
                    483:                There is a proposal on the pcc mailing list to stuff config
                    484:                file in ELF section.
                    485:        kcah
                    486:
1.107     mrg       487:        hack    xorg warnings
                    488:        cdat    30 July 2008
                    489:        who     mrg
1.108     mrg       490:        file    external/mit/xorg/lib/libSM/Makefile : 1.2
1.107     mrg       491:                external/mit/xorg/lib/libX11/Makefile.libx11 : 1.2
                    492:                external/mit/xorg/lib/libXext/Makefile : 1.2
                    493:                external/mit/xorg/lib/libXfont/Makefile : 1.2
                    494:        descr
                    495:                Disable several warnings or use -Wno-error across Xorg sources
                    496:                while we get them working
                    497:        kcah
                    498:
1.112     christos  499:        hack    32 bit time leftovers
                    500:        cdat    11 January 2009
                    501:        who     christos
                    502:        file    lib/libc/time/localtime.c : 1.41
                    503:                lib/libc/time/zic.c : 1.23
                    504:        descr
                    505:                The timezone compiled files still contain 32 bit time_t
                    506:                quantities. I did not want to version the files because
                    507:                the ``parser'' is too ugly for words. What needs to be
                    508:                done, is to rewrite the parser from scratch also to avoid
                    509:                potential core-dumps from parsing invalid files.
                    510:        kcah
                    511:
                    512:        hack    32 bit time leftovers
                    513:        cdat    11 January 2009
                    514:        who     christos
                    515:        file    various
                    516:        descr
1.113     sketch    517:                Many filesystem on-disk formats have 32 bit times.
1.112     christos  518:        kcah
                    519:
1.21      mycroft   520: port   arm
                    521:
                    522:        hack    gcc-unsigned-compare
                    523:        cdate   09 Mar 2002
                    524:        mdate   18 Mar 2002
                    525:        who     bjh21
                    526:        file    dist/bind/lib/nameser/ns_parse.c : 1.3
                    527:        file    dist/dhcp/minires/ns_parse.c : 1.3
                    528:        file    dist/dhcp/omapip/result.c : 1.2
                    529:        file    dist/dhcp/server/failover.c : 1.3
                    530:        file    gnu/dist/toolchain/bfd/bfd.c : 1.2
                    531:        file    gnu/dist/toolchain/bfd/format.c : 1.2
                    532:        file    gnu/dist/toolchain/gdb/target.c : 1.2
                    533:        file    sys/kern/vfs_subr.c : 1.172
                    534:        descr   When checking that a potentially-unsigned enum is >= 0, assign
                    535:                it to an int first.  This is necessary to avoid "comparison is
                    536:                always true" warnings with -fshort-enums.  Casting to an int
                    537:                really should be enough, but turns out not to be.
                    538:        kcah
                    539:
1.122     tsutsui   540:        hack    gcc-4.5 arm CNAME hostname lookup failure on
                    541:                certain DNS environment (probably -ftree-ter problem)
                    542:        cdate   Sat Dec 24 04:59:00 UTC 2011
                    543:        mdate
                    544:        who     tsutsui
                    545:        file    lib/libc/net/Makefile.inc 1.79
                    546:        descr   Hostname lookup against CNAMEs by some commands fails
                    547:                on certain DNS environments if lib/libc/net/gethnamaddr.c
                    548:                (ping(8) etc) and lib/libc/net/getaddrinfo.c (ftp(1) etc)
                    549:                are compiled with -O2, even though nslookup(1) against
                    550:                the same CNAME returns proper hostname.
                    551:                They works properly if compiled with -O2 -fno-tree-ter.
                    552:                Also -O2 fails but -O2 -fno-tree-ter works on the following
                    553:                test case in gcc bugzilla:
                    554:                http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48863#c4
                    555:        kcah
                    556:
1.122.2.1.4.1! (jdc      557::       hack    gcc-4.5 arm without -fno-tree-vrp generate broken code
        !           558::       cdate   Wed Nov 14 13:02:02 JST 2012
        !           559::       who     msaitoh
        !           560::       file    lib/libc/softfloat/Makefile.inc
        !           561::       pr      46953
        !           562::       regress src/tests/lib/libm/t_cbrt
        !           563::       regress src/tests/lib/libm/t_ceil
        !           564::       regress src/tests/lib/libm/t_exp
        !           565::       regress src/tests/lib/libm/t_log
        !           566::       regress src/tests/lib/libm/t_scalbn
        !           567::       regress src/tests/lib/libm/t_sinh
        !           568::       regress src/tests/lib/libm/t_sqrt
        !           569::       descr   Gcc has a bug in tree optimization. For adddf3,
        !           570::               -INF + -INF returns 0 without -fno-tree-vrp.
        !           571::               Debugging with -fdump-tree-all shows that
        !           572::               softfloat.c.021t.cleanup_cfg is ok but softfloat.c.023t.ssa
        !           573::               is broken.
        !           574::       kcah
1.21      mycroft   575:
                    576: port   sh3
                    577:
1.74      mrg       578:        hack    gcc4-sh3-bz2
1.103     tsutsui   579:        cdate   Sun May 21 03:34:57 UTC 2006
                    580:        mdate   Fri May 16 13:13:00 UTC 2008
                    581:        who     mrg, tsutsui
1.74      mrg       582:        file    lib/libbz2/Makefile     : 1.10
                    583:        descr
                    584:                The in-tree GCC 4.1-based compiler generated too-far
1.103     tsutsui   585:                pc-relative addresses.  Hack is to build with
                    586:                -fno-loop-optimize.
1.74      mrg       587:        kcah
                    588:
1.21      mycroft   589:
1.96      mrg       590: port   m68000
1.79      mrg       591:
1.96      mrg       592:        hack    gcc4-m68000
1.102     tsutsui   593:        cdate   Fri Feb  8 10:29:37 PST 2008
                    594:        mdate   Sun May  4 15:37:19 UTC 2008
1.99      tsutsui   595:        who     mrg, tsutsui
1.96      mrg       596:        file    rescue/Makefile : 1.21
1.99      tsutsui   597:        file    sbin/dump_lfs/Makefile  : 1.9
1.101     tsutsui   598:        file    sbin/fsck_ffs/Makefile  : 1.35
                    599:        file    sbin/fsdb/Makefile      : 1.22
                    600:        file    share/mk/sys.mk : 1.96
1.99      tsutsui   601:        file    usr.sbin/ndbootd/Makefile       : 1.5
1.95      mrg       602:        descr
1.101     tsutsui   603:                Several internal compiler errors with gcc -O1
                    604:                around 64bit integer arithmetic.
1.99      tsutsui   605:                This hack uses -O1 and adds some -fno-tree-foo options
                    606:                to avoid the problem.
1.101     tsutsui   607:                This might be related with GCC Bugzilla Bug 32424.
1.95      mrg       608:        kcah
                    609:
1.22      mrg       610:
1.116     mrg       611: port   sparc
                    612:
                    613:        hack    avoid NULL pointer derefs in savefpstate IPIs and GCC 4.5.3
                    614:        cdate   Sun Aug 14 19:26:48 PDT 2011
                    615:        who     mrg
                    616:        file    sys/arch/sparc64/sparc/cpu.c : 1.234
                    617:        file    sys/arch/sparc64/sparc/cpuvar.h : 1.90
                    618:        file    sys/arch/sparc64/sparc/genassym.cf : 1.67
                    619:        file    sys/arch/sparc64/sparc/locore.s : 1.265
                    620:        descr
                    621:                Something is wrong with GCC 4.5.3 and the savefpstate IPI.
                    622:                Post newlock2 there was a bug where a lock was reduced from
                    623:                IPL_SCHED to IPL_VM (?) and occasionally savefpstate IPI
                    624:                would crash due to NULL IPI.  This was fixed by re-using the
                    625:                right IPL value.  However, GCC 4.5.3 build kernels have the
                    626:                same problems.  For now, the hack is re-instated.
                    627:        kcah
                    628:
                    629:
1.51      simonb    630: port   mips
                    631:
                    632:        hack    mips-shared-linker-load-address
                    633:        cdate   Fri Oct  7 08:33:10 UTC 2005
                    634:        who     simonb
                    635:        file    src/sys/kern/exec_elf32.c : 1.107
                    636:        descr
                    637:                With COMPAT_16 or previous enabled (which enables
                    638:                ELF_INTERP_NON_RELOCATABLE) a recent ld.elf_so will
                    639:                load and run at address 0.  The check to fix this in
                    640:                rev 1.107 only checks the first psection of the ELF
                    641:                executable, which may not be loadable.  A more correct
                    642:                fix is to check the first loadable psection instead of
                    643:                just the first psection.
                    644:        kcah
1.54      he        645:
1.85      martin    646:        hack    mips-duplicate-ras-end-label
                    647:        cdate   Sat Sep  2 23:29:42 2006
                    648:        who     martin
1.92      chs       649:        file    src/regress/sys/kern/ras/ras3/Makefile : 1.3
1.85      martin    650:        descr
                    651:                Add -fno-reorder-blocks to CFLAGS to avoid duplicate
                    652:                labels by duplicated __asm output from RAS_END()
                    653:                macro.
                    654:        kcah
                    655:
1.106     lukem     656:        hack    mips-mcount-assembler-warning
                    657:        cdate   Tue Jul 29 14:16:52 UTC 2008
                    658:        who     lukem
                    659:        file    src/lib/libc/gmon/Makefile.inc : 1.8
                    660:        descr
                    661:                Workaround for PR port-mips/39192.
                    662:                common/lib/libc/gmon/mcount.c generates a (fatal)
                    663:                assembler warning on MIPS:
                    664:                        Warning: No .cprestore pseudo-op used in PIC code
                    665:                Add COPTS.count.c+=-Wa,--no-warn to avoid -Wa,--fatal-warnings
                    666:        kcah
                    667:
1.82      christos  668: port   i386
                    669:
1.84      drochner  670:        hack    use volatile intermediate variable to enforce rounding
                    671:        cdate   Tue Aug  1 22:15:55 MEST 2006
                    672:        who     drochner
                    673:        file    src/lib/libm/src/lrintf.c : 1.4
                    674:        file    src/lib/libm/src/s_rintf.c : 1.8
                    675:        descr
                    676:                gcc-4 does subsequent operations on "float" values within
                    677:                the i387 FPU without rounding the intermediate results
                    678:        kcah
1.110     macallan  679:
                    680: port   powerpc
                    681:
                    682:        hack    avoid using __builtin_return_address(0) because it fails in
                    683:                Xorg's module loader
                    684:        cdate   Sat Sep 27 03:52:05 UTC 2008
                    685:        who     macallan
                    686:        file    src/libexec/ld.elf_so/rtld.c : 1.121
                    687:        descr
                    688:                workaround for PR port-macppc/37812
                    689:        kcah
                    690:
1.115     matt      691:        hack    define TARGET_SECURE_PLT and HAVE_AS_TLS because when
                    692:                building the native compiler via build.sh those don't defined
                    693:                properly.
                    694:        cdate   Sat Mar 12 08:00:00 UTC 2011
                    695:        who     matt
                    696:        file    src/gnu/dist/gcc4/gcc/config/rs6000/netbsd.h
                    697:        descr
                    698:                see above
                    699:        kcah
1.117     christos  700:
                    701: port   powerpc64
                    702:
                    703:        hack    include _errno.c in libposix so that __errno resolves. It
                    704:                should resolve from libc's errno, but somehow it does not.
                    705:                Linker bug?
                    706:        cdate   Thu Oct 27 13:19:47 EDT 2011
                    707:        who     christos
                    708:        file    src/lib/libposix/Makefile: 1.15
1.118     christos  709:        file    src/lib/librt/Makefile: 1.14
1.117     christos  710:        descr
                    711:                workaround for:
                    712:                    libposix_pic.a(cerror.pico)(.text+0x14): unresolvable \
                    713:                    R_PPC64_REL24 relocation against symbol `.__errno'
                    714:        kcah
1.119     christos  715:
                    716:        hack    rename data() function in mdocml to avoid redefined error.
                    717:                Compiler/Assembler bug?
                    718:        cdate   Sat Oct 29 11:16:01 EDT 2011
                    719:        who     christos
                    720:        file    src/external/bsd/mdocml/tbl_data.c: 1.2
                    721:        descr
                    722:                workaround for:
                    723:                    {standard input}: Assembler messages:
                    724:                    {standard input}:105: Error: symbol `.data' is already \
                    725:                    defined
                    726:        kcah
1.120     christos  727:
                    728: port   emips
                    729:
                    730:        hack    Add nop between ctc1 and mtc0 to avoid assembler internal
                    731:                error
                    732:        cdate   Sat Oct 29 16:57:34 EDT 2011
                    733:        who     christos
                    734:        file    src/sys/arch/mips/mips/mips_fpu.c: 1.7
                    735:        descr
                    736:                workaround for:
                    737:                    {standard input}: Assembler messages:
                    738:                    {standard input}:730: Internal error!
                    739:                    Assertion failure in append_insn at /usr/src/external/gpl3/\
                    740:                    binutils/dist/gas/config/tc-mips.c line 2910.
                    741:        kcah

CVSweb <webmaster@jp.NetBSD.org>