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

Annotation of src/doc/HACKS, Revision 1.14

1.14    ! simonb      1: # $NetBSD: HACKS,v 1.13 2003/10/27 07:26:17 simonb 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   gcc 2.95/vax cannot handle __builtin_ffs()
                     31: cdate  Fri Aug 23 21:31:15 CEST 2002
                     32: who    ragge
                     33: port   vax
                     34: file   sys/lib/libkern/libkern.h : 1.42
                     35: descr
                     36:        __builtin_ffs() is ifdef'd away if __vax__. Matt Thomas has added
                     37:        this feature to GCC 3 so it can be removed when switching.
                     38: kcah
                     39:
                     40: hack   binutil-2.11-sparc64-pltrela
                     41: mdate  14 Aug 2001
                     42: who    eeh
                     43: port   sparc64
                     44: file   libexec/ld.elf_so/reloc.c: 1.41 : 597 : 619
                     45: descr
                     46:        The first for PLT entries are reserved.  There is some disagreement
                     47:        whether they should have associated relocation entries.  Both the
                     48:        SPARC 32-bit and 64-bit ELF specifications say that they should have
                     49:        relocation entries, but the 32-bit SPARC binutils do not generate
                     50:        them, and now the 64-bit SPARC binutils have stopped generating them
                     51:        too.
                     52:
                     53:        To provide binary compatibility, we will check the first entry, if it
                     54:        is reserved it should not be of the type JMP_SLOT.  If it is JMP_SLOT,
                     55:        then the 4 reserved entries were not generated and our index is 4
                     56:        entries too far, so we frob the rela pointer.
                     57: kcah
                     58:
                     59: hack   netstat ieee1394 address printing.
                     60: mdate  14 Nov 2000
                     61: who    matt
                     62: file   lib/libc/net/getnameinfo.c      : 1.32 : 497 : 503
                     63: descr
                     64:        Because the current implementation of IP over IEEE1394, the
                     65:        fw device address contains more than just the IEEE1394 EUI-64.
                     66:        So when printing out IEEE1394 addresses, ignore the extra stuff.
                     67: kcah
                     68:
                     69: hack   xterm vs. libterm
                     70: mdate  01 Aug 2000
                     71: who    jdc
                     72: file   xsrc/xc/programs/xterm/main.c   : 1.2 : 3609 : 3614
                     73: pr     10383
                     74: descr
                     75:        In order to extend the termcap string over 1023 bytes, a ZZ entry was
                     76:        introduced to point to a memory location containing the full entry.
                     77:        Without this hack, xterm will export a termcap containing the ZZ
                     78:        entry, which will then be ignored by libterm.  As xterm modifies the
                     79:        exported termcap, this would cause those modifications to be ignored.
                     80: kcah
                     81:
                     82: hack   gcc-sh3-sed
                     83: mdate  23 Apr 2002
                     84: who    thorpej
                     85: file   usr.bin/sed/Makefile    : 1.9 : 9 : 13
                     86: descr
                     87:        The in-tree GCC 2.95.3-based compiler ICEs when building
                     88:        with optimization for SuperH.  Hack is to biuld with -O0.
                     89: kcah
                     90:
                     91: hack   gcc-unsigned-compare
                     92: cdate  09 Mar 2002
                     93: mdate  18 Mar 2002
                     94: who    bjh21
                     95: port   arm
                     96: file   dist/bind/lib/nameser/ns_parse.c : 1.3
                     97: file   dist/dhcp/minires/ns_parse.c : 1.3
                     98: file   dist/dhcp/omapip/result.c : 1.2
                     99: file   dist/dhcp/server/failover.c : 1.3
                    100: file   gnu/dist/gawk/eval.c : 1.4
                    101: file   gnu/dist/toolchain/bfd/bfd.c : 1.2
                    102: file   gnu/dist/toolchain/bfd/format.c : 1.2
                    103: file   gnu/dist/toolchain/gdb/target.c : 1.2
                    104: file   sys/kern/vfs_subr.c : 1.172
                    105: descr  When checking that a potentially-unsigned enum is >= 0, assign it
                    106:        to an int first.  This is necessary to avoid "comparison is always
                    107:        true" warnings with -fshort-enums.  Casting to an int really should
                    108:        be enough, but turns out not to be.
                    109: kcah
                    110:
                    111: hack   wi-at-big-endian-bus
                    112: cdate  15 Mar 2002
                    113: who    martin
                    114: file   dev/ic/wireg.h
                    115: descr  Add an option to access the underlying bus in big endian byte order
                    116:        to work around deficiencies in bus_space_{read,write}_* macros.
                    117:        Those don't allow the implementation of a proper pcmcia bus space
                    118:        tag.
                    119: kcah
                    120:
                    121: hack   gcc-vax-libbz2
                    122: mdate  27 Jun 2002
                    123: who    thorpej
                    124: port   vax
                    125: file   lib/libbz2/Makefile
                    126: descr
                    127:        libbz2 is mis-compiled with optimization with GCC 2.95.3
                    128:        on VAX.  -O0 works around this problem.
                    129: kcah
                    130:
                    131: hack   egcs-pc532-ip6_mroute
                    132: cdate  09 Jul 2002
                    133: who    simonb
                    134: port   pc532
                    135: file   sys/arch/pc532/conf/Makefile.pc532 : 1.70
                    136: file   sys/arch/pc532/conf/files.pc532 : 1.47
                    137: descr
                    138:        egcs 1.1.2 gets an "internal error--insn does not satisfy its
                    139:        constraints" error compiling ip6_mroute.c with -O2 or greater.
                    140:        -O1 works around this problem.
                    141: kcah
                    142:
                    143: hack   SuperH SH5 Toolchain Bugs
                    144: cdate  11 Jul 2002
                    145: who    scw
                    146: port   sh5
                    147: file   usr.sbin/ndbootd/ndbootd.c : 1.6
                    148: file   usr.sbin/traceroute/traceroute.c : 1.48
                    149: descr
                    150:        The SuperH SH5 toolchain (2.97-sh5-010522) gets an internal
                    151:        compiler error when assigning a bit-wise inverted value
                    152:        under some circumstances.
                    153:        Work around it by splitting the statement into two.
1.2       he        154: kcah
                    155:
                    156: hack   vax Toolchain bug
                    157: cdate  28 Mar 2003
                    158: who    he
                    159: port   vax
                    160: file   sys/arch/vax/vax/intvec.S : 1.5
                    161: descr
                    162:        Workaround for PR toolchain/20924.  The assembler apparently
                    163:        tries to range-check byte offsets when it doesn't have
                    164:        sufficient information to make that decision.
                    165:        Workaround uses `brw' instead of `brb' instruction.
1.3       jdc       166: kcah
                    167:
                    168: hack   specific knowledge of colours in curses code
                    169: cdate  Sun Apr  6 11:05:24 BST 2003
                    170: who    jdc
                    171: port   all
                    172: file   lib/libcurses/color.c : r1.24
                    173: descr
                    174:        Swap red/blue and yellow/cyan colours for COLOR_OTHER.
                    175:        Fix is to enhance libtermcap to understand terminfo-style % sequences.
                    176:        See also:
1.5       salo      177:            http://mail-index.NetBSD.org/tech-userlevel/2003/04/06/0000.html
1.4       scw       178: kcah
                    179:
                    180: hack   SuperH SH5 Toolchain Bugs
                    181: cdate  17 May 2003
                    182: who    scw
                    183: port   sh5
                    184: file   lib/libpthread/pthread_lock.c : 1.7
                    185: descr
                    186:        The SuperH SH5 toolchain generates incorrect PIC code when faced
                    187:        with a symbol which is declared extern, but has local scope due
                    188:        to being defined within an asm() statement (without being declared
                    189:        .globl in that statement). Work around it by adding the .globl.
1.7       he        190: kcah
                    191:
                    192: hack   Compensation for differing types of LINUX_USRSTACK and USRSTACK
                    193: cdate  21 Aug 2003
                    194: who    he
                    195: file   sys/miscfs/procfs/procfs_linux.c : 1.14
                    196: descr
                    197:        Not all ports have LINUX_USRSTACK and/or USRSTACK defined as
                    198:        literals/constants, but refer to variables of a type which is
                    199:        not "unsigned long", causing compilation of procfs_linux.c to
                    200:        fail with "makes integer from pointer without a cast".  This
                    201:        is observed on e.g. the sun3 port.  Ideally the "types" for
                    202:        symbols should be consistent across all ports.
1.11      lukem     203: kcah
                    204:
                    205: hack   gcc 3.3.x bug
                    206: cdate  Sun Oct 26 01:50:16 UTC 2003
                    207: who    lukem
                    208: port   MACHINE_ARCH == arm
                    209: file   usr.bin/newsyslog/newsyslog.c
                    210: pr     22986 23002 23217
                    211: descr
                    212:        newsyslog fails with
                    213:                newsyslog: config line 7: bad flags
                    214:        solved when compiled with -fno-gcse-lm
1.13      simonb    215: kcah
                    216:
                    217: hack   gcc-pc532-duffs_device
                    218: cdate  Mon Oct 27 07:23:05 UTC 2003
                    219: who    simonb
                    220: port   pc532
                    221: file   sys/arch/pc532/conf/Makefile.pc532 : 1.71
                    222: file   sys/arch/pc532/conf/files.pc532 : 1.52
1.14    ! simonb    223: pr     GCC PR optimization/5230
1.13      simonb    224: descr
                    225:        gcc incorrectly gives an "unreachable code at beginning of switch
                    226:        statement" for a Duff's device construct in arch/pc532/dev/ncr.c.
                    227:        There is now way to disable just this warning, so -Wno-error is
                    228:        turned on for this file.
1.1       lukem     229: kcah

CVSweb <webmaster@jp.NetBSD.org>