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

Annotation of src/doc/HACKS, Revision 1.96

1.96    ! mrg         1: # $NetBSD: HACKS,v 1.95 2008/02/05 02:41:15 mrg 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:
                     87: hack   GCC2 isn't C99
                     88: cdate  5 December 2003
                     89: who    mrg
                     90: file   gnu/dist/binutils/ld/ldlex.c: r1.2
                     91: descr
                     92:        ldlex.c is generated from ldlex.l and we get macro redefinition
                     93:        errors from it if __STDC_VERSION__ is not C99 compliant.  This
                     94:        hack forces NetBSD 1.6 and later systems to also include <stdint.h>
                     95:        to get the relevant definitions.  This hack should be backed out
                     96:        when all platforms have switched away from GCC2.
1.11      lukem      97: kcah
                     98:
1.37      junyoung   99: hack   gcc-strict-aliasing
                    100: cdate  6 August 2004
                    101: who    junyoung
                    102: pr     26516
                    103: file   src/usr.sbin/racoon/racoon/Makefile : 1.21
                    104: descr
                    105:        GCC issues a warning "dereferencing type-punned pointer will break
                    106:        strict-aliasing rules" when compiling
                    107:        crypto/dist/kame/racoon/crypto/openssl.c with -O[23s]. Note that this
1.38      junyoung  108:        is due to use of type casting in a non-standard way in the code and
                    109:        not a compiler bug. Once a new release of KAME with a proper fix
                    110:        applied is imported this should be backed out.
1.37      junyoung  111: kcah
                    112:
1.62      he        113: hack   gcc 3.3.3 wrong uninitialised variable
                    114: mdate  12 May 2006
                    115: who    he
                    116: file   usr.bin/msgc/msg_sys.def : 1.33-1.34
1.63      he        117: file   distrib/utils/sysinst/aout2elf.c : 1.11
1.62      he        118: descr
                    119:        Gcc 3.3.3 gets some -Wuninitialized warnings wrong.  This is
                    120:        just one of many in the tree, marked with
                    121:        /* XXX -Wuninitialized [arch] */
                    122:        in the source.
                    123: kcah
                    124:
1.80      tsutsui   125: hack   gcc4 wrong uninitialized variable
1.58      mrg       126: mdate  10 May 2006
                    127: who    mrg
                    128: file   bin/ksh/eval.c                  : 1.6
                    129: file   bin/sh/histedit.c               : 1.39
                    130: file   bin/sh/parser.c                 : 1.60
                    131: file   crypto/dist/heimdal/kdc/524.c   : 1.10
                    132: file   crypto/dist/ssh/sftp.c          : 1.20
                    133: file   crypto/dist/ssh/ssh-keysign.c   : 1.11
                    134: file   dist/ipf/lib/hostname.c         : 1.2
                    135: file   dist/ipf/tools/ipmon.c          : 1.8
1.72      mrg       136: file   dist/ntp/ntpd/ntp_request.c     : 1.4
1.58      mrg       137: file   dist/ntp/ntpd/refclock_shm.c    : 1.4
                    138: file   dist/ntp/sntp/timing.c          : 1.3
                    139: file   dist/pppd/pppstats/pppstats.c   : 1.3
                    140: file   dist/smbfs/lib/smb/rap.c        : 1.6
                    141: file   dist/tcpdump/print-zephyr.c     : 1.5
1.68      mrg       142: file   distrib/utils/sysinst/aout2elf.c : 1.12
1.58      mrg       143: file   gnu/libexec/uucp/uucico/uucico.c : 1.6
                    144: file   lib/libc/citrus/citrus_csmapper.c : 1.6
                    145: file   lib/libc/citrus/citrus_pivot_factory.c : 1.5
                    146: file   lib/libc/inet/inet_cidr_ntop.c  : 1.3
                    147: file   lib/libc/inet/inet_ntop.c       : 1.3
                    148: file   lib/libc/stdio/vfwprintf.c      : 1.8
1.69      mrg       149: file   libexec/ld.elf_so/arch/m68k/mdreloc.c : 1.20
1.76      mrg       150: file   libexec/ld.elf_so/arch/powerpc/ppc_reloc.c : 1.40
1.74      mrg       151: file   libexec/ld.elf_so/arch/sh3/mdreloc.c : 1.22
1.69      mrg       152: file   libexec/ld.elf_so/arch/sparc/mdreloc.c : 1.39
1.58      mrg       153: file   libexec/ld.elf_so/arch/sparc64/mdreloc.c : 1.39
1.74      mrg       154: file   libexec/ld.elf_so/arch/vax/mdreloc.c    : 1.21
1.71      dan       155: file   libexec/ld.elf_so/arch/x86_64/mdreloc.c : 1.27
1.58      mrg       156: file   sbin/fsck_ext2fs/dir.c          : 1.19
                    157: file   sbin/routed/rtquery/rtquery.c   : 1.18
1.73      dan       158: file   sys/arch/amd64/amd64/pmap.c     : 1.26
1.79      mrg       159: file   sys/arch/i386/pci/piixpcib.c    : 1.4
1.80      tsutsui   160: file   sys/arch/m68k/m68k/pmap_motorola.c      : 1.4
1.58      mrg       161: file   sys/crypto/cast128/cast128.c    : 1.9
                    162: file   sys/ddb/db_command.c            : 1.86
1.68      mrg       163: file   sys/dev/cardbus/cardbus_map.c   : 1.21
1.58      mrg       164: file   sys/dev/fss.c                   : 1.25
1.69      mrg       165: file   sys/dev/ic/igsfb.c              : 1.39
1.68      mrg       166: file   sys/dev/ic/mb86950.c            : 1.5
1.58      mrg       167: file   sys/dev/ic/midway.c             : 1.71
1.68      mrg       168: file   sys/dev/kttcp.c                 : 1.18
                    169: file   sys/dev/rasops/rasops_bitops.h  : 1.9
                    170: file   sys/dev/pci/cmpci.c             : 1.31
1.58      mrg       171: file   sys/dev/pci/machfb.c            : 1.45
1.68      mrg       172: file   sys/dev/usb/ohci.c              : 1.174
                    173: file   sys/dev/usb/uhci.c              : 1.196
                    174: file   sys/dev/rasops/rasops_bitops.h  : 1.9
1.58      mrg       175: file   sys/dist/ipf/netinet/ip_nat.c   : 1.10
                    176: file   sys/dist/ipf/netinet/ip_rpcb_pxy.c : 1.8
                    177: file   sys/dist/pf/net/pf.c            : 1.22
1.59      mrg       178: file   sys/fs/udf/udf_vnops.c          : 1.4
1.58      mrg       179: file   sys/kern/kern_sig.c             : 1.219
                    180: file   sys/kern/tty.c                  : 1.181
                    181: file   sys/net/bpf.c                   : 1.116
                    182: file   sys/net/zlib.c                  : 1.26
1.68      mrg       183: file   sys/netccitt/if_x25subr.c       : 1.37
1.58      mrg       184: file   sys/netinet/in.c                : 1.107
                    185: file   sys/netsmb/smb_smb.c            : 1.27
                    186: file   sys/netsmb/smb_trantcp.c        : 1.22
                    187: file   sys/nfs/nfs_serv.c              : 1.108
                    188: file   sys/nfs/nfs_socket.c            : 1.129
                    189: file   sys/nfs/nfs_syscalls.c          : 1.91
                    190: file   sys/ufs/lfs/lfs_vfsops.c        : 1.207 [also (char *)]
                    191: file   usr.bin/ftp/ftp.c               : 1.140
                    192: file   usr.bin/find/function.c         : 1.54
                    193: file   usr.bin/mail/tty.c              : 1.20
                    194: file   usr.bin/nl/nl.c                 : 1.7
                    195: file   usr.bin/systat/keyboard.c       : 1.23
                    196: file   usr.bin/usbhidctl/usbhid.c      : 1.29
                    197: file   usr.bin/vi/cl/cl_read.c         : 1.5
                    198: file   usr.bin/vi/ex/ex_cscope.c       : 1.12
                    199: file   usr.bin/vi/ex/ex_tag.c          : 1.19
                    200: file   usr.bin/vi/vi/v_txt.c           : 1.15
                    201: file   usr.sbin/altq/altqstat/qdisc_rio.c : 1.4
                    202: file   usr.sbin/cron/do_command.c      : 1.19
                    203: file   usr.sbin/timed/timed/slave.c    : 1.15
                    204: descr
                    205:        GCC 4.1 gets many uninitialised variable warnings wrong.  We should
                    206:        really audit all the old hacks like this when older compilers are
                    207:        removed from the tree, as many are probably no longer required.
1.65      christos  208:        The problem is that it does not recognize initialization via function
                    209:        call pointer. I.e.
                    210:                int p;
                    211:                foo(&p);
                    212:        does not mark p as initialized.
1.58      mrg       213: kcah
                    214:
1.59      mrg       215: hack   gcc4 pointer sign and strict aliasing problems
                    216: mdate  10 May 2006
                    217: who    mrg
                    218: file   bin/ed/Makefile                 : 1.33
1.68      mrg       219: file   distrib/utils/sysinst/Makefile.inc : 1.44
1.91      martin    220: file   distrib/utils/x_dhclient/Makefile : 1.15
1.60      mrg       221: file   games/bcd/Makefile              : 1.5
                    222: file   games/dab/Makefile              : 1.5
                    223: file   games/larn/Makefile             : 1.17
                    224: file   games/pom/Makefile              : 1.5
                    225: file   lib/libasn1/Makefile            : 1.26
                    226: file   lib/libcrypt/Makefile           : 1.17
                    227: file   lib/libgssapi/Makefile          : 1.16
                    228: file   lib/libhdb/Makefile             : 1.20
                    229: file   lib/libkadm5clnt/Makefile       : 1.21
                    230: file   lib/libkadm5srv/Makefile        : 1.25
                    231: file   lib/libkrb5/Makefile            : 1.35
                    232: file   lib/libssh/Makefile             : 1.6
                    233: file   lib/libtelnet/Makefile          : 1.26
                    234: file   libexec/getty/Makefile          : 1.14
                    235: file   libexec/kadmind/Makefile        : 1.19
                    236: file   libexec/kpasswdd/Makefile       : 1.14
                    237: file   sbin/atactl/Makefile            : 1.3
                    238: file   sbin/cgdconfig/Makefile         : 1.7
                    239: file   sbin/clri/Makefile              : 1.13
                    240: file   sbin/dkctl/Makefile             : 1.4
                    241: file   sbin/dump/Makefile              : 1.33
                    242: file   sbin/fdisk/Makefile             : 1.35
                    243: file   sbin/fsck_ext2fs/Makefile       : 1.11
                    244: file   sbin/fsck_ffs/Makefile          : 1.29
                    245: file   sbin/fsdb/Makefile              : 1.18
                    246: file   sbin/mount_smbfs/Makefile       : 1.4
                    247: file   sbin/newfs/Makefile             : 1.30
                    248: file   sbin/newfs_sysvbfs/Makefile     : 1.2
                    249: file   sbin/restore/Makefile           : 1.23
                    250: file   sbin/veriexecctl/Makefile       : 1.11
1.64      mrg       251: file   sys/lib/libsa/Makefile          : 1.59
1.68      mrg       252: file   sys/arch/evbarm/adi_brh/brh_machdep.c : 1.24
1.59      mrg       253: file   usr.bin/awk/Makefile            : 1.9
1.64      mrg       254: file   usr.bin/crontab/Makefile        : 1.24
1.60      mrg       255: file   usr.bin/ctags/Makefile          : 1.8
1.61      mrg       256: file   usr.bin/gzip/Makefile           : 1.10
1.60      mrg       257: file   usr.bin/ssh/sftp/Makefile       : 1.10
                    258: file   usr.bin/ssh/ssh/Makefile        : 1.25
1.59      mrg       259: file   usr.bin/vi/build/Makefile       : 1.26
1.60      mrg       260: file   usr.bin/telnet/Makefile         : 1.40
                    261: file   usr.bin/tn3270/tn3270/Makefile  : 1.36
                    262: file   usr.bin/tr/Makefile             : 1.4
1.59      mrg       263: file   usr.sbin/amd/amd/Makefile       : 1.27
                    264: file   usr.sbin/amd/amq/Makefile       : 1.14
                    265: file   usr.sbin/amd/libamu/Makefile    : 1.20
                    266: file   usr.sbin/amd/pawd/Makefile      : 1.5
                    267: file   usr.sbin/bind/Makefile.inc      : 1.22
1.60      mrg       268: file   usr.sbin/bind/libdns/Makefile   : 1.3
                    269: file   usr.sbin/bind/named/Makefile    : 1.17
                    270: file   usr.sbin/bootp/bootptest/Makefile : 1.2
                    271: file   usr.sbin/chrtbl/Makefile        : 1.6
                    272: file   usr.sbin/cron/Makefile          : 1.12
1.59      mrg       273: file   usr.sbin/dhcp/Makefile.inc      : 1.20
                    274: file   usr.sbin/dumplfs/Makefile       : 1.11
1.60      mrg       275: file   usr.sbin/hprop/Makefile         : 1.13
                    276: file   usr.sbin/installboot/Makefile   : 1.35
1.59      mrg       277: file   usr.sbin/ipf/ipftest/Makefile   : 1.32
                    278: file   usr.sbin/isdn/isdnd/Makefile    : 1.6
                    279: file   usr.sbin/isdn/isdnmonitor/Makefile : 1.3
                    280: file   usr.sbin/isdn/isdntel/Makefile  : 1.2
                    281: file   usr.sbin/isdn/isdntrace/Makefile : 126
1.61      mrg       282: file   usr.sbin/mopd/common/Makefile   : 1.10
                    283: file   usr.sbin/mopd/mopd/Makefile     : 1.9
                    284: file   usr.sbin/mopd/mopprobe/Makefile : 1.7
1.60      mrg       285: file   usr.sbin/makefs/Makefile        : 1.17
                    286: file   usr.sbin/mscdlabel/Makefile     : 1.5
                    287: file   usr.sbin/pkg_install/add/Makefile : 1.7
                    288: file   usr.sbin/pkg_install/create/Makefile : 1.5
                    289: file   usr.sbin/pkg_install/lib/Makefile : 1.28
1.59      mrg       290: file   usr.sbin/ntp/ntpd/Makefile      : 1.10/1.11
                    291: file   usr.sbin/ntp/ntptime/Makefile   : 1.4/1.5
                    292: file   usr.sbin/pppd/Makefile.inc      : 1.3
                    293: file   usr.sbin/pppd/pppd/Makefile     : 1.38
1.60      mrg       294: file   usr.sbin/rarpd/Makefile         : 1.10
1.59      mrg       295: file   usr.sbin/rbootd/Makefile        : 1.10
1.60      mrg       296: file   usr.sbin/rpc.pcnfsd/Makefile    : 1.17
1.59      mrg       297: file   usr.sbin/rtadvd/Makefile        : 1.9
1.60      mrg       298: file   usr.sbin/tcpdump/Makefile       : 1.42
1.59      mrg       299: file   usr.sbin/wiconfig/Makefile      : 1.3
                    300: descr
                    301:        GCC 4.1 warns on pointer sign comparision/assignments and lots of
                    302:        code does not conform.  For now we use -Wno-pointer-sign and
                    303:        -fno-strict-aliasing.
                    304: kcah
                    305:
1.21      mycroft   306: port   vax
                    307:
1.81      mrg       308:        hack    gcc4/vax compiler crash
                    309:        cdate   Fri Jun 30 22:39:12 PDT 2006
                    310:        who     mrg
                    311:        file    bin/csh/Makefile        : 1.27
                    312:        file    lib/i18n_module/UTF7/Makefile   : 1.2
                    313:        descr
                    314:                GCC4 on vax crashes.  -O0 stops it happening so far...
                    315:        kcah
                    316:
1.52      jmc       317:        hack    gcc 2.95/vax doesn't like abort being used as function pointer
                    318:        cdate   Tue Dec 13 05:54:50 GMT 2005
                    319:        who     jmc
                    320:        file    lib/libc/rpc/svc_vc.c 1.15
                    321:        descr
                    322:                Provide a local definition for abort which doesn't include
                    323:                the noreturn attribute which trips up gcc 2.95 on vax.
1.81      mrg       324:        kcah
1.52      jmc       325:
1.45      jmc       326:        hack    gcc 2.95/vax doesn't have stdbool.h and gettext needs it
                    327:        cdate   Mon May  9 12:16:22 CDT 2005
                    328:        who     jmc
                    329:        file    gnu/usr.bin/gettext/Makefile.inc.prog 1.5
                    330:                gnu/usr.bin/gettext/libgrep/Makefile 1.3
                    331:                gnu/usr.bin/gettext/libnlspr/Makefile 1.5
                    332:                gnu/usr.bin/gettext/libnlsut/Makefile 1.3
                    333:        descr
                    334:                The latest gettext assumes a C99 environment or at least
                    335:                configure checks to work around this. As we don't use configure
                    336:                provide a stdbool.h for vax builds locally in directories from
                    337:                the template provided by the gettext code.
1.81      mrg       338:        kcah
1.45      jmc       339:
1.21      mycroft   340:        hack    gcc 2.95/vax cannot handle __builtin_ffs()
                    341:        cdate   Fri Aug 23 21:31:15 CEST 2002
                    342:        who     ragge
                    343:        file    sys/lib/libkern/libkern.h : 1.42
                    344:        descr
                    345:                __builtin_ffs() is ifdef'd away if __vax__. Matt Thomas has
                    346:                added this feature to GCC 3 so it can be removed when switching.
1.81      mrg       347:        kcah
1.21      mycroft   348:
                    349:        hack    gcc-vax-libbz2
                    350:        mdate   27 Jun 2002
                    351:        who     thorpej
                    352:        file    lib/libbz2/Makefile
                    353:        descr
                    354:                libbz2 is mis-compiled with optimization with GCC 2.95.3
1.24      ragge     355:                on VAX.  -O0 works around this problem.
                    356:        kcah
                    357:
1.21      mycroft   358:        hack    vax Toolchain bug
                    359:        cdate   28 Mar 2003
                    360:        who     he
                    361:        file    sys/arch/vax/vax/intvec.S : 1.5
                    362:        descr
                    363:                Workaround for PR toolchain/20924.  The assembler apparently
                    364:                tries to range-check byte offsets when it doesn't have
                    365:                sufficient information to make that decision.
                    366:                Workaround uses `brw' instead of `brb' instruction.
1.23      he        367:        kcah
                    368:
                    369:        hack    vax gcc 2.95.3 -Wuninitialized workarounds
                    370:        cdate   6 Nov 2003
                    371:        who     he
                    372:        file    sys/dev/bi/if_ni.c : 1.22
                    373:        file    sys/arch/vax/vax/ctu.c : 1.20
                    374:        descr
                    375:                Workaround for gcc 2.95.3 failing to detect that certain
                    376:                variables will be initialized; so that this code compiles
                    377:                with -Wuninitialized.  Should be reviewed and possibly
                    378:                reverted when gcc 3.3.2 is ready for vax.
1.21      mycroft   379:        kcah
                    380:
1.34      cl        381:        hack    vax gcc 2.95.3 structure initialization
                    382:        cdat    13 May 2004
                    383:        who     cl
                    384:        file    sys/miscfs/kernfs/kernfs_vnops.c : 1.104
                    385:        descr
                    386:                Workaround for gcc 2.95.3 failing to initialize structures
                    387:                and/or unions inside structures using nested designators.
                    388:                Should be reverted when gcc >=3.3.3 is ready for vax.
                    389:        kcah
1.21      mycroft   390:
1.35      he        391:        hack    vax gcc 2.95.3 needs -I. to build nslexer.c
                    392:        cdat    6 Jun 2004
1.36      he        393:        who     mhitch
                    394:        file    lib/libc/arch/vax/Makefile.inc : 1.6
1.35      he        395:        descr
                    396:                It appears necessary to add -I. to CPPFLAGS when building
                    397:                nslesxer.c.  This may be caused by gcc 2.95.3 being used.
                    398:                Should be reverted when a newer gcc is ready for vax.
                    399:        kcah
                    400:
1.43      tron      401:        hack    vax gcc 2.95.3 doesn't understand "-std=c99"
                    402:        cdat    5 April 2005
                    403:        who     tron
                    404:        file    src/share/mk/bsd.sys.mk
                    405:        descr
                    406:                We cannot use "-std=c99" for compiler warning level 4 and above
                    407:                because gcc 2.95.3 doesn't support that option.
                    408:        kcah
                    409:
1.54      he        410:        hack    declare boolean_t in two IPF user-mode programs
                    411:        cdate   Tue Mar  7 19:19:20 CET 2006
                    412:        who     he
                    413:        file    dist/ipf/ipsend/iptests.c : 1.8
                    414:                dist/ipf/ipsend/sock.c : 1.7
                    415:        descr
                    416:                The IPF user-mode programs ipsend and iptest first
                    417:                include <sys/types.h> without _KERNEL defined, and
                    418:                later include <sys/file.h> with _KERNEL defined.
                    419:                This causes a build failure when building for vax,
                    420:                since <sys/device.h> ends up being included without
                    421:                bollean_t being defined by <sys/types.h>.
                    422:                Build failure and further details documented in
                    423:                PR#32907.
                    424:        kcah
                    425:
1.21      mycroft   426: port   arm
                    427:
                    428:        hack    gcc-unsigned-compare
                    429:        cdate   09 Mar 2002
                    430:        mdate   18 Mar 2002
                    431:        who     bjh21
                    432:        file    dist/bind/lib/nameser/ns_parse.c : 1.3
                    433:        file    dist/dhcp/minires/ns_parse.c : 1.3
                    434:        file    dist/dhcp/omapip/result.c : 1.2
                    435:        file    dist/dhcp/server/failover.c : 1.3
                    436:        file    gnu/dist/toolchain/bfd/bfd.c : 1.2
                    437:        file    gnu/dist/toolchain/bfd/format.c : 1.2
                    438:        file    gnu/dist/toolchain/gdb/target.c : 1.2
                    439:        file    sys/kern/vfs_subr.c : 1.172
                    440:        descr   When checking that a potentially-unsigned enum is >= 0, assign
                    441:                it to an int first.  This is necessary to avoid "comparison is
                    442:                always true" warnings with -fshort-enums.  Casting to an int
                    443:                really should be enough, but turns out not to be.
                    444:        kcah
                    445:
                    446:        hack    gcc 3.3.2/arm sys/kern/uipc_socket.c
                    447:        cdate   Tue Oct 28 18:02:16 GMT 2003
                    448:        who     skrll
1.41      bjh21     449:        pr      23044
                    450:        file    sys/arch/arm/conf/Makefile.arm : 1.19
1.21      mycroft   451:        descr
                    452:                Performing a build.sh tools on a CATS with NFS mounted
                    453:                obj and src directories results in "panic: receive 1"
                    454:                The hack is to compile sys/kern/uipc_socket.c with
                    455:                -fno-strict-aliasing
                    456:        kcah
                    457:
                    458:
1.13      simonb    459: port   pc532
1.16      cl        460:
1.21      mycroft   461:        hack    egcs-pc532-ip6_mroute
                    462:        cdate   09 Jul 2002
                    463:        who     simonb
                    464:        file    sys/arch/pc532/conf/Makefile.pc532 : 1.70
                    465:        file    sys/arch/pc532/conf/files.pc532 : 1.47
                    466:        descr
                    467:                egcs 1.1.2 gets an "internal error--insn does not satisfy its
                    468:                constraints" error compiling ip6_mroute.c with -O2 or greater.
                    469:                -O1 works around this problem.
                    470:        kcah
                    471:
                    472:        hack    gcc-pc532-duffs_device
                    473:        cdate   Mon Oct 27 07:23:05 UTC 2003
                    474:        who     simonb
                    475:        file    sys/arch/pc532/conf/Makefile.pc532 : 1.71
                    476:        file    sys/arch/pc532/conf/files.pc532 : 1.52
                    477:        pr      GCC PR optimization/5230
                    478:        descr
                    479:                gcc incorrectly gives an "unreachable code at beginning of
                    480:                switch statement" for a Duff's device construct in
                    481:                arch/pc532/dev/ncr.c.  There is no way to disable just this
                    482:                warning, so -Wno-error is turned on for this file.
                    483:        kcah
                    484:
1.26      simonb    485:        hack    gcc332-cppmacro-ice
                    486:        cdate   Sun Dec  7 12:48:33 UTC 2003
                    487:        who     simonb
                    488:        file    gnu/usr.bin/gcc3/libcpp/Makefile : 1.2
                    489:        descr
                    490:                gcc 3.3.2 gets an ICE when compiling cppmacro.c with -O2.
                    491:                The hack is to use -O1 for this file.  Fixed in gcc
                    492:                -current mainline, unable to work out where the fix is
                    493:                right now.
                    494:        kcah
                    495:
1.21      mycroft   496:
                    497: port   sh3
                    498:
1.74      mrg       499:        hack    gcc4-sh3-bz2
                    500:        mdate   20 May 2006
                    501:        who     mrg
                    502:        file    lib/libbz2/Makefile     : 1.10
                    503:        descr
                    504:                The in-tree GCC 4.1-based compiler generated too-far
                    505:                pc-relative addresses.  Hack is to build with -O0.
                    506:        kcah
                    507:
1.21      mycroft   508:
1.96    ! mrg       509: port   m68000
1.79      mrg       510:
1.96    ! mrg       511:        hack    gcc4-m68000
        !           512:        cdate   Fri Feb  8 10:29:37 PST 2008
1.95      mrg       513:        who     mrg
1.96    ! mrg       514:        file    share/mk/sys.mk : 1.94
        !           515:        file    rescue/Makefile : 1.21
        !           516:        file    lib/libcurses/Makefile  : 1.54
1.95      mrg       517:        descr
1.96    ! mrg       518:                Many errors across the tree with optimisation.
        !           519:                This hack uses -O0 to avoid the problem.
1.95      mrg       520:        kcah
                    521:
1.22      mrg       522:
1.31      martin    523: port   sparc64
                    524:
                    525:        hack    disable optimzations for uvm_bio.c on 32 bit kernels
                    526:        cdate   Sun Mar 21 14:14:04 MET 2004
                    527:        who     martin
1.32      martin    528:        file    sys/arch/sparc64/conf/Makefile.sparc64 : 1.53-1.54
                    529:        file    sys/arch/sparc64/conf/files.sparc64 : 1.93
1.31      martin    530:        descr
                    531:                The sparc compiler miscompiles uvm_bio.c when using
                    532:                any optimization. This results in ubc_release panics.
                    533:        kcah
1.42      christos  534:
                    535: port   macppc
                    536:
                    537:        hack    remove inline from rotate_{left,right}
                    538:        cdate   Tue Feb 22 13:43:25 EST 2005
                    539:        who     christos
                    540:        file    src/dist/bind/lib/dns/rbt.c
                    541:        descr
                    542:                The macppc gcc-3.3 compiler miscompiles rbt.c when these
                    543:                functions are inlined. The error is:
                    544:                .* named[368]: rbt.c:1584: INSIST(child != (void *)0) >failed
                    545:                .* named[368]: exiting (due to assertion failure)
                    546:                This is reportedly fixed in gcc-3.4
                    547:        kcah
1.46      chs       548:
1.51      simonb    549: port   mips
                    550:
                    551:        hack    mips-shared-linker-load-address
                    552:        cdate   Fri Oct  7 08:33:10 UTC 2005
                    553:        who     simonb
                    554:        file    src/sys/kern/exec_elf32.c : 1.107
                    555:        descr
                    556:                With COMPAT_16 or previous enabled (which enables
                    557:                ELF_INTERP_NON_RELOCATABLE) a recent ld.elf_so will
                    558:                load and run at address 0.  The check to fix this in
                    559:                rev 1.107 only checks the first psection of the ELF
                    560:                executable, which may not be loadable.  A more correct
                    561:                fix is to check the first loadable psection instead of
                    562:                just the first psection.
                    563:        kcah
1.54      he        564:
1.85      martin    565:        hack    mips-duplicate-ras-end-label
                    566:        cdate   Sat Sep  2 23:29:42 2006
                    567:        who     martin
1.92      chs       568:        file    src/regress/sys/kern/ras/ras3/Makefile : 1.3
1.85      martin    569:        descr
                    570:                Add -fno-reorder-blocks to CFLAGS to avoid duplicate
                    571:                labels by duplicated __asm output from RAS_END()
                    572:                macro.
                    573:        kcah
                    574:
1.82      christos  575: port   i386
                    576:
1.84      drochner  577:        hack    use volatile intermediate variable to enforce rounding
                    578:        cdate   Tue Aug  1 22:15:55 MEST 2006
                    579:        who     drochner
                    580:        file    src/lib/libm/src/lrintf.c : 1.4
                    581:        file    src/lib/libm/src/s_rintf.c : 1.8
                    582:        descr
                    583:                gcc-4 does subsequent operations on "float" values within
                    584:                the i387 FPU without rounding the intermediate results
                    585:        kcah

CVSweb <webmaster@jp.NetBSD.org>