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