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

Annotation of src/doc/HACKS, Revision 1.82

1.82    ! christos    1: # $NetBSD: HACKS,v 1.81 2006/07/01 06:00:41 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   bin/systrace/systrace.c         : 1.33
                    132: file   crypto/dist/heimdal/kdc/524.c   : 1.10
                    133: file   crypto/dist/ssh/sftp.c          : 1.20
                    134: file   crypto/dist/ssh/ssh-keysign.c   : 1.11
                    135: file   dist/ipf/lib/hostname.c         : 1.2
                    136: file   dist/ipf/tools/ipmon.c          : 1.8
1.72      mrg       137: file   dist/ntp/ntpd/ntp_request.c     : 1.4
1.58      mrg       138: file   dist/ntp/ntpd/refclock_shm.c    : 1.4
                    139: file   dist/ntp/sntp/timing.c          : 1.3
                    140: file   dist/pppd/pppstats/pppstats.c   : 1.3
                    141: file   dist/smbfs/lib/smb/rap.c        : 1.6
                    142: file   dist/tcpdump/print-zephyr.c     : 1.5
1.68      mrg       143: file   distrib/utils/sysinst/aout2elf.c : 1.12
1.58      mrg       144: file   gnu/libexec/uucp/uucico/uucico.c : 1.6
                    145: file   lib/libc/citrus/citrus_csmapper.c : 1.6
                    146: file   lib/libc/citrus/citrus_pivot_factory.c : 1.5
                    147: file   lib/libc/inet/inet_cidr_ntop.c  : 1.3
                    148: file   lib/libc/inet/inet_ntop.c       : 1.3
                    149: file   lib/libc/stdio/vfwprintf.c      : 1.8
1.69      mrg       150: file   libexec/ld.elf_so/arch/m68k/mdreloc.c : 1.20
1.76      mrg       151: file   libexec/ld.elf_so/arch/powerpc/ppc_reloc.c : 1.40
1.74      mrg       152: file   libexec/ld.elf_so/arch/sh3/mdreloc.c : 1.22
1.69      mrg       153: file   libexec/ld.elf_so/arch/sparc/mdreloc.c : 1.39
1.58      mrg       154: file   libexec/ld.elf_so/arch/sparc64/mdreloc.c : 1.39
1.74      mrg       155: file   libexec/ld.elf_so/arch/vax/mdreloc.c    : 1.21
1.71      dan       156: file   libexec/ld.elf_so/arch/x86_64/mdreloc.c : 1.27
1.58      mrg       157: file   sbin/fsck_ext2fs/dir.c          : 1.19
                    158: file   sbin/routed/rtquery/rtquery.c   : 1.18
1.73      dan       159: file   sys/arch/amd64/amd64/pmap.c     : 1.26
1.79      mrg       160: file   sys/arch/i386/pci/piixpcib.c    : 1.4
1.80      tsutsui   161: file   sys/arch/m68k/m68k/pmap_motorola.c      : 1.4
1.58      mrg       162: file   sys/crypto/cast128/cast128.c    : 1.9
                    163: file   sys/ddb/db_command.c            : 1.86
1.68      mrg       164: file   sys/dev/cardbus/cardbus_map.c   : 1.21
1.58      mrg       165: file   sys/dev/fss.c                   : 1.25
1.69      mrg       166: file   sys/dev/ic/igsfb.c              : 1.39
1.68      mrg       167: file   sys/dev/ic/mb86950.c            : 1.5
1.58      mrg       168: file   sys/dev/ic/midway.c             : 1.71
1.68      mrg       169: file   sys/dev/kttcp.c                 : 1.18
                    170: file   sys/dev/rasops/rasops_bitops.h  : 1.9
                    171: file   sys/dev/pci/cmpci.c             : 1.31
1.58      mrg       172: file   sys/dev/pci/machfb.c            : 1.45
1.68      mrg       173: file   sys/dev/usb/ohci.c              : 1.174
                    174: file   sys/dev/usb/uhci.c              : 1.196
                    175: file   sys/dev/rasops/rasops_bitops.h  : 1.9
1.58      mrg       176: file   sys/dist/ipf/netinet/ip_nat.c   : 1.10
                    177: file   sys/dist/ipf/netinet/ip_rpcb_pxy.c : 1.8
                    178: file   sys/dist/pf/net/pf.c            : 1.22
1.59      mrg       179: file   sys/fs/udf/udf_vnops.c          : 1.4
1.58      mrg       180: file   sys/kern/kern_sig.c             : 1.219
                    181: file   sys/kern/tty.c                  : 1.181
                    182: file   sys/net/bpf.c                   : 1.116
                    183: file   sys/net/zlib.c                  : 1.26
1.68      mrg       184: file   sys/netccitt/if_x25subr.c       : 1.37
1.58      mrg       185: file   sys/netinet/in.c                : 1.107
                    186: file   sys/netsmb/smb_smb.c            : 1.27
                    187: file   sys/netsmb/smb_trantcp.c        : 1.22
                    188: file   sys/nfs/nfs_serv.c              : 1.108
                    189: file   sys/nfs/nfs_socket.c            : 1.129
                    190: file   sys/nfs/nfs_syscalls.c          : 1.91
                    191: file   sys/ufs/lfs/lfs_vfsops.c        : 1.207 [also (char *)]
                    192: file   usr.bin/ftp/ftp.c               : 1.140
                    193: file   usr.bin/find/function.c         : 1.54
                    194: file   usr.bin/mail/tty.c              : 1.20
                    195: file   usr.bin/nl/nl.c                 : 1.7
                    196: file   usr.bin/systat/keyboard.c       : 1.23
                    197: file   usr.bin/usbhidctl/usbhid.c      : 1.29
                    198: file   usr.bin/vi/cl/cl_read.c         : 1.5
                    199: file   usr.bin/vi/ex/ex_cscope.c       : 1.12
                    200: file   usr.bin/vi/ex/ex_tag.c          : 1.19
                    201: file   usr.bin/vi/vi/v_txt.c           : 1.15
                    202: file   usr.sbin/altq/altqstat/qdisc_rio.c : 1.4
                    203: file   usr.sbin/cron/do_command.c      : 1.19
                    204: file   usr.sbin/timed/timed/slave.c    : 1.15
                    205: descr
                    206:        GCC 4.1 gets many uninitialised variable warnings wrong.  We should
                    207:        really audit all the old hacks like this when older compilers are
                    208:        removed from the tree, as many are probably no longer required.
1.65      christos  209:        The problem is that it does not recognize initialization via function
                    210:        call pointer. I.e.
                    211:                int p;
                    212:                foo(&p);
                    213:        does not mark p as initialized.
1.58      mrg       214: kcah
                    215:
1.59      mrg       216: hack   gcc4 pointer sign and strict aliasing problems
                    217: mdate  10 May 2006
                    218: who    mrg
                    219: file   bin/ed/Makefile                 : 1.33
1.60      mrg       220: file   bin/systrace/Makefile           : 1.12
1.68      mrg       221: file   distrib/utils/sysinst/Makefile.inc : 1.44
1.60      mrg       222: file   games/bcd/Makefile              : 1.5
                    223: file   games/dab/Makefile              : 1.5
                    224: file   games/larn/Makefile             : 1.17
                    225: file   games/pom/Makefile              : 1.5
                    226: file   lib/libasn1/Makefile            : 1.26
                    227: file   lib/libcrypt/Makefile           : 1.17
                    228: file   lib/libgssapi/Makefile          : 1.16
                    229: file   lib/libhdb/Makefile             : 1.20
                    230: file   lib/libkadm5clnt/Makefile       : 1.21
                    231: file   lib/libkadm5srv/Makefile        : 1.25
                    232: file   lib/libkrb5/Makefile            : 1.35
                    233: file   lib/libssh/Makefile             : 1.6
                    234: file   lib/libtelnet/Makefile          : 1.26
                    235: file   libexec/getty/Makefile          : 1.14
                    236: file   libexec/kadmind/Makefile        : 1.19
                    237: file   libexec/kpasswdd/Makefile       : 1.14
                    238: file   sbin/atactl/Makefile            : 1.3
                    239: file   sbin/cgdconfig/Makefile         : 1.7
                    240: file   sbin/clri/Makefile              : 1.13
                    241: file   sbin/dkctl/Makefile             : 1.4
                    242: file   sbin/dump/Makefile              : 1.33
                    243: file   sbin/fdisk/Makefile             : 1.35
                    244: file   sbin/fsck_ext2fs/Makefile       : 1.11
                    245: file   sbin/fsck_ffs/Makefile          : 1.29
                    246: file   sbin/fsdb/Makefile              : 1.18
                    247: file   sbin/mount_smbfs/Makefile       : 1.4
                    248: file   sbin/newfs/Makefile             : 1.30
                    249: file   sbin/newfs_sysvbfs/Makefile     : 1.2
                    250: file   sbin/restore/Makefile           : 1.23
                    251: file   sbin/veriexecctl/Makefile       : 1.11
1.64      mrg       252: file   sys/lib/libsa/Makefile          : 1.59
1.68      mrg       253: file   sys/arch/evbarm/adi_brh/brh_machdep.c : 1.24
1.59      mrg       254: file   usr.bin/awk/Makefile            : 1.9
1.64      mrg       255: file   usr.bin/crontab/Makefile        : 1.24
1.60      mrg       256: file   usr.bin/ctags/Makefile          : 1.8
1.61      mrg       257: file   usr.bin/gzip/Makefile           : 1.10
1.60      mrg       258: file   usr.bin/ssh/sftp/Makefile       : 1.10
                    259: file   usr.bin/ssh/ssh/Makefile        : 1.25
1.59      mrg       260: file   usr.bin/vi/build/Makefile       : 1.26
1.60      mrg       261: file   usr.bin/telnet/Makefile         : 1.40
                    262: file   usr.bin/tn3270/tn3270/Makefile  : 1.36
                    263: file   usr.bin/tr/Makefile             : 1.4
1.59      mrg       264: file   usr.sbin/amd/amd/Makefile       : 1.27
                    265: file   usr.sbin/amd/amq/Makefile       : 1.14
                    266: file   usr.sbin/amd/libamu/Makefile    : 1.20
                    267: file   usr.sbin/amd/pawd/Makefile      : 1.5
                    268: file   usr.sbin/bind/Makefile.inc      : 1.22
1.60      mrg       269: file   usr.sbin/bind/libdns/Makefile   : 1.3
                    270: file   usr.sbin/bind/named/Makefile    : 1.17
                    271: file   usr.sbin/bootp/bootptest/Makefile : 1.2
                    272: file   usr.sbin/chrtbl/Makefile        : 1.6
                    273: file   usr.sbin/cron/Makefile          : 1.12
1.59      mrg       274: file   usr.sbin/dhcp/Makefile.inc      : 1.20
                    275: file   usr.sbin/dumplfs/Makefile       : 1.11
1.60      mrg       276: file   usr.sbin/hprop/Makefile         : 1.13
                    277: file   usr.sbin/installboot/Makefile   : 1.35
1.59      mrg       278: file   usr.sbin/ipf/ipftest/Makefile   : 1.32
                    279: file   usr.sbin/isdn/isdnd/Makefile    : 1.6
                    280: file   usr.sbin/isdn/isdnmonitor/Makefile : 1.3
                    281: file   usr.sbin/isdn/isdntel/Makefile  : 1.2
                    282: file   usr.sbin/isdn/isdntrace/Makefile : 126
1.61      mrg       283: file   usr.sbin/mopd/common/Makefile   : 1.10
                    284: file   usr.sbin/mopd/mopd/Makefile     : 1.9
                    285: file   usr.sbin/mopd/mopprobe/Makefile : 1.7
1.60      mrg       286: file   usr.sbin/makefs/Makefile        : 1.17
                    287: file   usr.sbin/mscdlabel/Makefile     : 1.5
                    288: file   usr.sbin/pkg_install/add/Makefile : 1.7
                    289: file   usr.sbin/pkg_install/create/Makefile : 1.5
                    290: file   usr.sbin/pkg_install/lib/Makefile : 1.28
1.59      mrg       291: file   usr.sbin/ntp/ntpd/Makefile      : 1.10/1.11
                    292: file   usr.sbin/ntp/ntptime/Makefile   : 1.4/1.5
                    293: file   usr.sbin/pppd/Makefile.inc      : 1.3
                    294: file   usr.sbin/pppd/pppd/Makefile     : 1.38
1.60      mrg       295: file   usr.sbin/rarpd/Makefile         : 1.10
1.59      mrg       296: file   usr.sbin/rbootd/Makefile        : 1.10
1.60      mrg       297: file   usr.sbin/rpc.pcnfsd/Makefile    : 1.17
1.59      mrg       298: file   usr.sbin/rtadvd/Makefile        : 1.9
1.60      mrg       299: file   usr.sbin/tcpdump/Makefile       : 1.42
1.59      mrg       300: file   usr.sbin/wiconfig/Makefile      : 1.3
                    301: descr
                    302:        GCC 4.1 warns on pointer sign comparision/assignments and lots of
                    303:        code does not conform.  For now we use -Wno-pointer-sign and
                    304:        -fno-strict-aliasing.
                    305: kcah
                    306:
1.21      mycroft   307: port   vax
                    308:
1.81      mrg       309:        hack    gcc4/vax compiler crash
                    310:        cdate   Fri Jun 30 22:39:12 PDT 2006
                    311:        who     mrg
                    312:        file    bin/csh/Makefile        : 1.27
                    313:        file    lib/i18n_module/UTF7/Makefile   : 1.2
                    314:        descr
                    315:                GCC4 on vax crashes.  -O0 stops it happening so far...
                    316:        kcah
                    317:
1.52      jmc       318:        hack    gcc 2.95/vax doesn't like abort being used as function pointer
                    319:        cdate   Tue Dec 13 05:54:50 GMT 2005
                    320:        who     jmc
                    321:        file    lib/libc/rpc/svc_vc.c 1.15
                    322:        descr
                    323:                Provide a local definition for abort which doesn't include
                    324:                the noreturn attribute which trips up gcc 2.95 on vax.
1.81      mrg       325:        kcah
1.52      jmc       326:
1.45      jmc       327:        hack    gcc 2.95/vax doesn't have stdbool.h and gettext needs it
                    328:        cdate   Mon May  9 12:16:22 CDT 2005
                    329:        who     jmc
                    330:        file    gnu/usr.bin/gettext/Makefile.inc.prog 1.5
                    331:                gnu/usr.bin/gettext/libgrep/Makefile 1.3
                    332:                gnu/usr.bin/gettext/libnlspr/Makefile 1.5
                    333:                gnu/usr.bin/gettext/libnlsut/Makefile 1.3
                    334:        descr
                    335:                The latest gettext assumes a C99 environment or at least
                    336:                configure checks to work around this. As we don't use configure
                    337:                provide a stdbool.h for vax builds locally in directories from
                    338:                the template provided by the gettext code.
1.81      mrg       339:        kcah
1.45      jmc       340:
1.75      christos  341:        hack    gcc 2.95/vax can't handle __used__
1.44      jmc       342:        cdate   Fri May  6 14:30:53 CDT 2005
                    343:        who     jmc
                    344:        file    src/lib/libc/gmon/mcount.c 1.17
1.75      christos  345:                src/usr.bin/config/main.c 1.11
1.44      jmc       346:        descr
                    347:                 Recent changes to mark this as __used__ to prevent optimization
                    348:                 away on sparc64 don't work on 2.95 vax. Ifdef'd back in the
                    349:                 old __unused__ if on vax.
1.81      mrg       350:        kcah
1.44      jmc       351:
1.21      mycroft   352:        hack    gcc 2.95/vax cannot handle __builtin_ffs()
                    353:        cdate   Fri Aug 23 21:31:15 CEST 2002
                    354:        who     ragge
                    355:        file    sys/lib/libkern/libkern.h : 1.42
                    356:        descr
                    357:                __builtin_ffs() is ifdef'd away if __vax__. Matt Thomas has
                    358:                added this feature to GCC 3 so it can be removed when switching.
1.81      mrg       359:        kcah
1.21      mycroft   360:
                    361:        hack    gcc-vax-libbz2
                    362:        mdate   27 Jun 2002
                    363:        who     thorpej
                    364:        file    lib/libbz2/Makefile
                    365:        descr
                    366:                libbz2 is mis-compiled with optimization with GCC 2.95.3
1.24      ragge     367:                on VAX.  -O0 works around this problem.
                    368:        kcah
                    369:
                    370:        hack    gawk
                    371:        mdate   8 Nov 2003
                    372:        who     ragge
                    373:        file    gnu/usr.bin/gawk/Makefile
                    374:        descr
                    375:                gawk is mis-compiled with optimization with GCC 2.95.3
1.21      mycroft   376:                on VAX.  -O0 works around this problem.
                    377:        kcah
                    378:
                    379:        hack    vax Toolchain bug
                    380:        cdate   28 Mar 2003
                    381:        who     he
                    382:        file    sys/arch/vax/vax/intvec.S : 1.5
                    383:        descr
                    384:                Workaround for PR toolchain/20924.  The assembler apparently
                    385:                tries to range-check byte offsets when it doesn't have
                    386:                sufficient information to make that decision.
                    387:                Workaround uses `brw' instead of `brb' instruction.
1.23      he        388:        kcah
                    389:
                    390:        hack    vax gcc 2.95.3 -Wuninitialized workarounds
                    391:        cdate   6 Nov 2003
                    392:        who     he
                    393:        file    sys/dev/bi/if_ni.c : 1.22
                    394:        file    sys/arch/vax/vax/ctu.c : 1.20
                    395:        descr
                    396:                Workaround for gcc 2.95.3 failing to detect that certain
                    397:                variables will be initialized; so that this code compiles
                    398:                with -Wuninitialized.  Should be reviewed and possibly
                    399:                reverted when gcc 3.3.2 is ready for vax.
1.21      mycroft   400:        kcah
                    401:
1.34      cl        402:        hack    vax gcc 2.95.3 structure initialization
                    403:        cdat    13 May 2004
                    404:        who     cl
                    405:        file    sys/miscfs/kernfs/kernfs_vnops.c : 1.104
                    406:        descr
                    407:                Workaround for gcc 2.95.3 failing to initialize structures
                    408:                and/or unions inside structures using nested designators.
                    409:                Should be reverted when gcc >=3.3.3 is ready for vax.
                    410:        kcah
1.21      mycroft   411:
1.35      he        412:        hack    vax gcc 2.95.3 needs -I. to build nslexer.c
                    413:        cdat    6 Jun 2004
1.36      he        414:        who     mhitch
                    415:        file    lib/libc/arch/vax/Makefile.inc : 1.6
1.35      he        416:        descr
                    417:                It appears necessary to add -I. to CPPFLAGS when building
                    418:                nslesxer.c.  This may be caused by gcc 2.95.3 being used.
                    419:                Should be reverted when a newer gcc is ready for vax.
                    420:        kcah
                    421:
1.43      tron      422:        hack    vax gcc 2.95.3 doesn't understand "-std=c99"
                    423:        cdat    5 April 2005
                    424:        who     tron
                    425:        file    src/share/mk/bsd.sys.mk
                    426:        descr
                    427:                We cannot use "-std=c99" for compiler warning level 4 and above
                    428:                because gcc 2.95.3 doesn't support that option.
                    429:        kcah
                    430:
1.54      he        431:        hack    declare boolean_t in two IPF user-mode programs
                    432:        cdate   Tue Mar  7 19:19:20 CET 2006
                    433:        who     he
                    434:        file    dist/ipf/ipsend/iptests.c : 1.8
                    435:                dist/ipf/ipsend/sock.c : 1.7
                    436:        descr
                    437:                The IPF user-mode programs ipsend and iptest first
                    438:                include <sys/types.h> without _KERNEL defined, and
                    439:                later include <sys/file.h> with _KERNEL defined.
                    440:                This causes a build failure when building for vax,
                    441:                since <sys/device.h> ends up being included without
                    442:                bollean_t being defined by <sys/types.h>.
                    443:                Build failure and further details documented in
                    444:                PR#32907.
                    445:        kcah
                    446:
1.21      mycroft   447: port   sparc64
                    448:
                    449:        hack    binutil-2.11-sparc64-pltrela
                    450:        mdate   14 Aug 2001
                    451:        who     eeh
                    452:        file    libexec/ld.elf_so/arch/sparc64/mdreloc.c
                    453:        descr
1.39      skrll     454:                The first four PLT entries are reserved.  There is some
1.21      mycroft   455:                disagreement whether they should have associated relocation
                    456:                entries.  Both the SPARC 32-bit and 64-bit ELF specifications
                    457:                say that they should have relocation entries, but the 32-bit
                    458:                SPARC binutils do not generate them, and now the 64-bit SPARC
                    459:                binutils have stopped generating them too.
                    460:
                    461:                To provide binary compatibility, we will check the first entry,
                    462:                if it is reserved it should not be of the type JMP_SLOT.  If it
                    463:                is JMP_SLOT, then the 4 reserved entries were not generated and
                    464:                our index is 4 entries too far, so we frob the rela pointer.
                    465:        kcah
                    466:
                    467:
                    468: port   arm
                    469:
                    470:        hack    gcc-unsigned-compare
                    471:        cdate   09 Mar 2002
                    472:        mdate   18 Mar 2002
                    473:        who     bjh21
                    474:        file    dist/bind/lib/nameser/ns_parse.c : 1.3
                    475:        file    dist/dhcp/minires/ns_parse.c : 1.3
                    476:        file    dist/dhcp/omapip/result.c : 1.2
                    477:        file    dist/dhcp/server/failover.c : 1.3
                    478:        file    gnu/dist/gawk/eval.c : 1.4
                    479:        file    gnu/dist/toolchain/bfd/bfd.c : 1.2
                    480:        file    gnu/dist/toolchain/bfd/format.c : 1.2
                    481:        file    gnu/dist/toolchain/gdb/target.c : 1.2
                    482:        file    sys/kern/vfs_subr.c : 1.172
                    483:        descr   When checking that a potentially-unsigned enum is >= 0, assign
                    484:                it to an int first.  This is necessary to avoid "comparison is
                    485:                always true" warnings with -fshort-enums.  Casting to an int
                    486:                really should be enough, but turns out not to be.
                    487:        kcah
                    488:
                    489:        hack    gcc 3.3.2/arm sys/kern/uipc_socket.c
                    490:        cdate   Tue Oct 28 18:02:16 GMT 2003
                    491:        who     skrll
1.41      bjh21     492:        pr      23044
                    493:        file    sys/arch/arm/conf/Makefile.arm : 1.19
1.21      mycroft   494:        descr
                    495:                Performing a build.sh tools on a CATS with NFS mounted
                    496:                obj and src directories results in "panic: receive 1"
                    497:                The hack is to compile sys/kern/uipc_socket.c with
                    498:                -fno-strict-aliasing
                    499:        kcah
                    500:
                    501:
1.13      simonb    502: port   pc532
1.16      cl        503:
1.21      mycroft   504:        hack    egcs-pc532-ip6_mroute
                    505:        cdate   09 Jul 2002
                    506:        who     simonb
                    507:        file    sys/arch/pc532/conf/Makefile.pc532 : 1.70
                    508:        file    sys/arch/pc532/conf/files.pc532 : 1.47
                    509:        descr
                    510:                egcs 1.1.2 gets an "internal error--insn does not satisfy its
                    511:                constraints" error compiling ip6_mroute.c with -O2 or greater.
                    512:                -O1 works around this problem.
                    513:        kcah
                    514:
                    515:        hack    gcc-pc532-duffs_device
                    516:        cdate   Mon Oct 27 07:23:05 UTC 2003
                    517:        who     simonb
                    518:        file    sys/arch/pc532/conf/Makefile.pc532 : 1.71
                    519:        file    sys/arch/pc532/conf/files.pc532 : 1.52
                    520:        pr      GCC PR optimization/5230
                    521:        descr
                    522:                gcc incorrectly gives an "unreachable code at beginning of
                    523:                switch statement" for a Duff's device construct in
                    524:                arch/pc532/dev/ncr.c.  There is no way to disable just this
                    525:                warning, so -Wno-error is turned on for this file.
                    526:        kcah
                    527:
1.26      simonb    528:        hack    gcc332-cppmacro-ice
                    529:        cdate   Sun Dec  7 12:48:33 UTC 2003
                    530:        who     simonb
                    531:        file    gnu/usr.bin/gcc3/libcpp/Makefile : 1.2
                    532:        descr
                    533:                gcc 3.3.2 gets an ICE when compiling cppmacro.c with -O2.
                    534:                The hack is to use -O1 for this file.  Fixed in gcc
                    535:                -current mainline, unable to work out where the fix is
                    536:                right now.
                    537:        kcah
                    538:
1.21      mycroft   539:
                    540: port   sh3
                    541:
1.74      mrg       542:        hack    gcc4-sh3-bz2
                    543:        mdate   20 May 2006
                    544:        who     mrg
                    545:        file    lib/libbz2/Makefile     : 1.10
                    546:        descr
                    547:                The in-tree GCC 4.1-based compiler generated too-far
                    548:                pc-relative addresses.  Hack is to build with -O0.
                    549:        kcah
                    550:
1.21      mycroft   551:
                    552: port   sh5
                    553:
                    554:        hack    SuperH SH5 Toolchain Bugs
                    555:        cdate   11 Jul 2002
                    556:        who     scw
                    557:        file    usr.sbin/ndbootd/ndbootd.c : 1.6
                    558:        file    usr.sbin/traceroute/traceroute.c : 1.48
                    559:        descr
                    560:                The SuperH SH5 toolchain (2.97-sh5-010522) gets an internal
                    561:                compiler error when assigning a bit-wise inverted value
                    562:                under some circumstances.
                    563:                Work around it by splitting the statement into two.
                    564:        kcah
                    565:
                    566:        hack    SuperH SH5 Toolchain Bugs
                    567:        cdate   17 May 2003
                    568:        who     scw
                    569:        file    lib/libpthread/pthread_lock.c : 1.7
                    570:        descr
                    571:                The SuperH SH5 toolchain generates incorrect PIC code when
                    572:                faced with a symbol which is declared extern, but has local
                    573:                scope due to being defined within an asm() statement (without
                    574:                being declared .globl in that statement). Work around it by
                    575:                adding the .globl.
1.27      scw       576:        kcah
                    577:
                    578:        hack    gcc 3.3.2 on sh5 - ICE compiling reload1.c at -O2
                    579:        cdate   Sun Dec  7 19:44:05 GMT 2003
                    580:        who     scw
                    581:        file    gnu/usr.bin/gcc3/backend/Makefile : 1.13
                    582:        descr
                    583:                Gcc3 for sh5 gets an ICE compiling reload1.c at -O2.
                    584:                Drop to -O1 for now when building for sh5.
                    585:        kcah
1.28      scw       586:
                    587:        hack    gcc 3.3.2 on sh5 - ICE compiling elf32.c/elf64.c at -O2
                    588:        cdate   Sun Dec  7 21:10:46 GMT 2003
                    589:        who     scw
                    590:        file    gnu/lib/libbfd/Makefile : 1.39
                    591:        descr
                    592:                Gcc3 for sh5 gets an ICE compiling libbfd's elf32.c
                    593:                and elf64.c at -O2.
                    594:                Drop to -O1 for now when building for sh5.
                    595:        kcah
                    596:
1.27      scw       597:
                    598:        hack    gcc 3.3.2 on sh5 - fatal warning compiling function.c
                    599:        cdate   Sun Dec  7 19:44:05 GMT 2003
                    600:        who     scw
                    601:        file    gnu/usr.bin/gcc3/backend/Makefile : 1.13
                    602:        descr
                    603:                Gcc3 for sh5 issues a warning:
                    604:                .../gnu/dist/gcc/gcc/function.c:4742: warning: `and' of
                    605:                    mutually exclusive equal-tests is always 0.
                    606:                This causes the build to fail because of -Werror.
                    607:                Work-around by defining NOGCCERROR when building for sh5.
                    608:        kcah
                    609:
1.40      he        610:        hack    gcc 3.3.3 on sh5 - ICE compiling rbtdb.c and rbtdb64.c
                    611:        cdate   Thu Nov 11 00:35:33 UTC 2004
                    612:        who     he
                    613:        file    usr.sbin/bind/libdns/Makefile/1.2
1.27      scw       614:        descr
1.40      he        615:                Gcc3 for sh5 gets an ICE compiling these files at -O2.
1.27      scw       616:                Drop to -O1 for now when building for sh5.
1.21      mycroft   617:        kcah
1.17      mrg       618:
1.48      he        619:        hack    gcc 3.3.3 nb3 on sh5 - ICE compiling bsd-comp.c
                    620:        cdate   Thu May 25 23:05:20 UTC 2005
                    621:        who     he
                    622:        file    sys/lkm/net/bsdcomp/Makefile : 1.3
                    623:        descr
                    624:                Gcc3 for sh5 gets an ICE compiling this at -O2,
                    625:                "could not split insn".  Drop to -O1 for sh5.
                    626:        kcah
1.17      mrg       627:
1.53      scw       628:        hack    gcc 3.3.3 nb3 on sh5 - ICE compiling strtod.c
                    629:        cdate   Tue Jan 31 10:51:52 GMT 2006
                    630:        who     scw
                    631:        file    lib/libc/gdtoa/Makefile.inc : 1.2
                    632:        descr
                    633:                Gcc3 for sh5 gets an ICE compiling this at -O2,
                    634:                "could not split insn".  Drop to -O1 for sh5.
                    635:        kcah
                    636:
1.17      mrg       637: port   sun2
1.20      skrll     638:
1.21      mycroft   639:        hack    gcc 3.3.2/mdsetimage
                    640:        cdate   Tue Oct 28 18:43:05 EST 2003
                    641:        who     fredette
                    642:        file    gnu/usr.sbin/mdsetimage/Makefile : 1.15
                    643:        descr
                    644:                mdsetimage.c causes cc1 to barf for as-yet unknown reasons.
1.26      simonb    645:                this hack uses -O0 to avoid the problem.
1.21      mycroft   646:        kcah
                    647:
                    648:        hack    gcc 3.3.2/installboot/ffs.c
                    649:        cdate   Tue Oct 28 18:43:05 EST 2003
                    650:        who     fredette
                    651:        file    usr.sbin/installboot/Makefile : 1.26
                    652:        descr
                    653:                ffs.c causes cc1 to barf for as-yet unknown reasons.  this
1.26      simonb    654:                hack uses -O0 to avoid the problem.
1.22      mrg       655:        kcah
                    656:
1.79      mrg       657:        hack    gcc 4.1.1/fsck_ffs/pass1.c
                    658:        cdate   Fri Jun 23 10:30:25 PDT 2006
                    659:        who     mrg
                    660:        file    sbin/fsck_ffs/Makefile : 1.30
                    661:        file    sbin/fsdb/Makefile : 1.19
                    662:        file    sbin/dump_lfs/Makefile : 1.9
                    663:        file    usr.sbin/ndbootd/Makefile : 1.2
                    664:        descr
                    665:                pass1.c causes cc1 to barf for as-yet unknown reasons.  this
                    666:                hack uses -O0 to avoid the problem. (these all seem to be the
                    667:                same problem.)
                    668:        kcah
                    669:
1.22      mrg       670:
1.56      tsutsui   671: port   m68000
1.22      mrg       672:
                    673:        hack    gcc 3.3.2/gcc/ra-colorize.c
                    674:        cdate   Wed Nov  5 11:03:13 EST 2003
                    675:        who     mrg
1.46      chs       676:        file    gnu/usr.bin/gcc3/backend/Makefile : 1.11
1.22      mrg       677:        descr
                    678:                ra-colorize.c causes a whole spew of unreferenced .L* local
                    679:                symbols.  using -O0 (or even -O2 reportedly) avoids the problem.
1.56      tsutsui   680:                Note this has been fixed in 3.3.3 at least on m68k,
                    681:                but it hasn't been confirmed on sun2/m68000.
                    682:                (it's too slow even on emulator and unlikely to build
                    683:                 toolchains on sun2 with its maximum 4MB RAM)
1.21      mycroft   684:        kcah
1.31      martin    685:
                    686: port   sparc64
                    687:
                    688:        hack    disable optimzations for uvm_bio.c on 32 bit kernels
                    689:        cdate   Sun Mar 21 14:14:04 MET 2004
                    690:        who     martin
1.32      martin    691:        file    sys/arch/sparc64/conf/Makefile.sparc64 : 1.53-1.54
                    692:        file    sys/arch/sparc64/conf/files.sparc64 : 1.93
1.31      martin    693:        descr
                    694:                The sparc compiler miscompiles uvm_bio.c when using
                    695:                any optimization. This results in ubc_release panics.
                    696:        kcah
1.42      christos  697:
                    698: port   macppc
                    699:
                    700:        hack    remove inline from rotate_{left,right}
                    701:        cdate   Tue Feb 22 13:43:25 EST 2005
                    702:        who     christos
                    703:        file    src/dist/bind/lib/dns/rbt.c
                    704:        descr
                    705:                The macppc gcc-3.3 compiler miscompiles rbt.c when these
                    706:                functions are inlined. The error is:
                    707:                .* named[368]: rbt.c:1584: INSIST(child != (void *)0) >failed
                    708:                .* named[368]: exiting (due to assertion failure)
                    709:                This is reportedly fixed in gcc-3.4
                    710:        kcah
1.46      chs       711:
                    712: port   hppa
                    713:
                    714:        hack    hppa-gcc-3.3.3/grep/dfa.c
                    715:        cdate   Sun Aug  8 08:34:32 PDT 2004
                    716:        who     chs
                    717:        file    gnu/usr.bin/grep/grep/Makefile : 1.4
                    718:        descr
                    719:                gcc 3.3.3 generates bad code for dfa.c with -O2,
                    720:                reduce optimization to -O1 to avoid the bug.
                    721:        kcah
1.47      chs       722:
                    723:        hack    hppa boot-from-disk memory corruption
                    724:        cdate   Wed May 18 06:56:07 PDT 2005
                    725:        who     chs
                    726:        file    src/sys/dev/scsipi/scsipiconf.h : 1.98
                    727:        descr
                    728:                There is some bug with DMA on hppa that corrupts scsipi_xfer
                    729:                structures, but it only shows up when booting from disk.
                    730:                For now, we'll add some padding to scsipi_xfer so that
                    731:                the corrupted memory is not otherwise used.
                    732:        kcah
1.51      simonb    733:
                    734: port   mips
                    735:
                    736:        hack    mips-shared-linker-load-address
                    737:        cdate   Fri Oct  7 08:33:10 UTC 2005
                    738:        who     simonb
                    739:        file    src/sys/kern/exec_elf32.c : 1.107
                    740:        descr
                    741:                With COMPAT_16 or previous enabled (which enables
                    742:                ELF_INTERP_NON_RELOCATABLE) a recent ld.elf_so will
                    743:                load and run at address 0.  The check to fix this in
                    744:                rev 1.107 only checks the first psection of the ELF
                    745:                executable, which may not be loadable.  A more correct
                    746:                fix is to check the first loadable psection instead of
                    747:                just the first psection.
                    748:        kcah
1.54      he        749:
1.82    ! christos  750: port   i386
        !           751:
        !           752:        hack    minus-Os-broken-machdep-c
        !           753:        cdate   Mon Jul 31 13:09:01 EDT 2006
        !           754:        who     christos
        !           755:        file    src/sys/arch/machdep.c : 1.576
        !           756:        descr
        !           757:                gcc-4 miscompiles this file with -Os and the resulting
        !           758:                kernel resets as reported in PR33918
        !           759:        kcah

CVSweb <webmaster@jp.NetBSD.org>