HACKS revision 1.166 1 # $NetBSD: HACKS,v 1.166 2016/05/04 22:42:40 christos Exp $
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-5.3 optimizes memset+malloc -> calloc inside calloc
31 mdate 4 May 2016
32 who christos
33 file external/gpl2/lib/libmalloc/lib/Makefile 1.3 -> 1.5
34 descr
35 resulting in infinite recursion; we prevent this with
36 -fno-builtin-malloc
37 kcah
38
39 hack netstat ieee1394 address printing.
40 mdate 14 Nov 2000
41 who matt
42 file lib/libc/net/getnameinfo.c : 1.32 : 497 : 503
43 descr
44 Because the current implementation of IP over IEEE1394, the
45 fw device address contains more than just the IEEE1394 EUI-64.
46 So when printing out IEEE1394 addresses, ignore the extra stuff.
47 kcah
48
49 hack xterm vs. libterm
50 mdate 01 Aug 2000
51 who jdc
52 file xsrc/xc/programs/xterm/main.c : 1.2 : 3609 : 3614
53 pr 10383
54 descr
55 In order to extend the termcap string over 1023 bytes, a ZZ entry was
56 introduced to point to a memory location containing the full entry.
57 Without this hack, xterm will export a termcap containing the ZZ
58 entry, which will then be ignored by libterm. As xterm modifies the
59 exported termcap, this would cause those modifications to be ignored.
60 kcah
61
62 hack wi-at-big-endian-bus
63 cdate 15 Mar 2002
64 who martin
65 file dev/ic/wireg.h
66 descr Add an option to access the underlying bus in big endian byte order
67 to work around deficiencies in bus_space_{read,write}_* macros.
68 Those don't allow the implementation of a proper pcmcia bus space
69 tag.
70 kcah
71
72 hack specific knowledge of colours in curses code
73 cdate Sun Apr 6 11:05:24 BST 2003
74 who jdc
75 file lib/libcurses/color.c : r1.24
76 descr
77 Swap red/blue and yellow/cyan colours for COLOR_OTHER.
78 Fix is to enhance libtermcap to understand terminfo-style % sequences.
79 See also:
80 http://mail-index.NetBSD.org/tech-userlevel/2003/04/06/0000.html
81 kcah
82
83 hack Compensation for differing types of LINUX_USRSTACK and USRSTACK
84 cdate 21 Aug 2003
85 who he
86 file sys/miscfs/procfs/procfs_linux.c : 1.14
87 descr
88 Not all ports have LINUX_USRSTACK and/or USRSTACK defined as
89 literals/constants, but refer to variables of a type which is
90 not "unsigned long", causing compilation of procfs_linux.c to
91 fail with "makes integer from pointer without a cast". This
92 is observed on e.g. the sun3 port. Ideally the "types" for
93 symbols should be consistent across all ports.
94 kcah
95
96 hack gcc-strict-aliasing
97 cdate 6 August 2004
98 who junyoung
99 pr 26516
100 file src/usr.sbin/racoon/racoon/Makefile : 1.21
101 descr
102 GCC issues a warning "dereferencing type-punned pointer will break
103 strict-aliasing rules" when compiling
104 crypto/dist/kame/racoon/crypto/openssl.c with -O[23s]. Note that this
105 is due to use of type casting in a non-standard way in the code and
106 not a compiler bug. Once a new release of KAME with a proper fix
107 applied is imported this should be backed out.
108 kcah
109
110 hack gcc4 wrong uninitialized variable
111 mdate 10 May 2006
112 who mrg
113 file bin/ksh/eval.c : 1.6
114 file bin/sh/histedit.c : 1.39
115 file bin/sh/parser.c : 1.60
116 file crypto/dist/heimdal/kdc/524.c : 1.10
117 file crypto/dist/ssh/sftp.c : 1.20
118 file crypto/dist/ssh/ssh-keysign.c : 1.11
119 file dist/ipf/lib/hostname.c : 1.2
120 file dist/ipf/tools/ipmon.c : 1.8
121 file dist/ntp/ntpd/ntp_request.c : 1.4
122 file dist/ntp/ntpd/refclock_shm.c : 1.4
123 file dist/ntp/sntp/timing.c : 1.3
124 file dist/pppd/pppstats/pppstats.c : 1.3
125 file dist/smbfs/lib/smb/rap.c : 1.6
126 file dist/tcpdump/print-zephyr.c : 1.5
127 file distrib/utils/sysinst/aout2elf.c : 1.12
128 file gnu/libexec/uucp/uucico/uucico.c : 1.6
129 file lib/libc/citrus/citrus_csmapper.c : 1.6
130 file lib/libc/citrus/citrus_pivot_factory.c : 1.5
131 file lib/libc/inet/inet_cidr_ntop.c : 1.3
132 file lib/libc/inet/inet_ntop.c : 1.3
133 file lib/libc/stdio/vfwprintf.c : 1.8
134 file libexec/ld.elf_so/arch/m68k/mdreloc.c : 1.20
135 file libexec/ld.elf_so/arch/powerpc/ppc_reloc.c : 1.40
136 file libexec/ld.elf_so/arch/sh3/mdreloc.c : 1.22
137 file libexec/ld.elf_so/arch/sparc/mdreloc.c : 1.39
138 file libexec/ld.elf_so/arch/sparc64/mdreloc.c : 1.39
139 file libexec/ld.elf_so/arch/vax/mdreloc.c : 1.21
140 file libexec/ld.elf_so/arch/x86_64/mdreloc.c : 1.27
141 file sbin/fsck_ext2fs/dir.c : 1.19
142 file sbin/routed/rtquery/rtquery.c : 1.18
143 file sys/arch/amd64/amd64/pmap.c : 1.26
144 file sys/arch/i386/pci/piixpcib.c : 1.4
145 file sys/arch/m68k/m68k/pmap_motorola.c : 1.4
146 file sys/crypto/cast128/cast128.c : 1.9
147 file sys/ddb/db_command.c : 1.86
148 file sys/dev/cardbus/cardbus_map.c : 1.21
149 file sys/dev/fss.c : 1.25
150 file sys/dev/ic/igsfb.c : 1.39
151 file sys/dev/ic/mb86950.c : 1.5
152 file sys/dev/ic/midway.c : 1.71
153 file sys/dev/kttcp.c : 1.18
154 file sys/dev/rasops/rasops_bitops.h : 1.9
155 file sys/dev/pci/cmpci.c : 1.31
156 file sys/dev/pci/machfb.c : 1.45
157 file sys/dev/usb/ohci.c : 1.174
158 file sys/dev/usb/uhci.c : 1.196
159 file sys/dev/rasops/rasops_bitops.h : 1.9
160 file sys/dist/ipf/netinet/ip_nat.c : 1.10
161 file sys/dist/ipf/netinet/ip_rpcb_pxy.c : 1.8
162 file sys/dist/pf/net/pf.c : 1.22
163 file sys/fs/udf/udf_vnops.c : 1.4
164 file sys/kern/kern_sig.c : 1.219
165 file sys/kern/tty.c : 1.181
166 file sys/net/bpf.c : 1.116
167 file sys/net/zlib.c : 1.26
168 file sys/netccitt/if_x25subr.c : 1.37
169 file sys/netinet/in.c : 1.107
170 file sys/netsmb/smb_smb.c : 1.27
171 file sys/netsmb/smb_trantcp.c : 1.22
172 file sys/nfs/nfs_serv.c : 1.108
173 file sys/nfs/nfs_socket.c : 1.129
174 file sys/nfs/nfs_syscalls.c : 1.91
175 file sys/ufs/lfs/lfs_vfsops.c : 1.207 [also (char *)]
176 file usr.bin/ftp/ftp.c : 1.140
177 file usr.bin/find/function.c : 1.54
178 file usr.bin/mail/tty.c : 1.20
179 file usr.bin/msgc/msg_sys.def : 1.33-1.34
180 file usr.bin/nl/nl.c : 1.7
181 file usr.bin/systat/keyboard.c : 1.23
182 file usr.bin/usbhidctl/usbhid.c : 1.29
183 file usr.bin/vi/cl/cl_read.c : 1.5
184 file usr.bin/vi/ex/ex_cscope.c : 1.12
185 file usr.bin/vi/ex/ex_tag.c : 1.19
186 file usr.bin/vi/vi/v_txt.c : 1.15
187 file usr.sbin/altq/altqstat/qdisc_rio.c : 1.4
188 file usr.sbin/cron/do_command.c : 1.19
189 file usr.sbin/timed/timed/slave.c : 1.15
190 descr
191 GCC 4.1 gets many uninitialised variable warnings wrong. We should
192 really audit all the old hacks like this when older compilers are
193 removed from the tree, as many are probably no longer required.
194 The problem is that it does not recognize initialization via function
195 call pointer. I.e.
196 int p;
197 foo(&p);
198 does not mark p as initialized.
199 kcah
200
201 hack gcc4 pointer sign and strict aliasing problems
202 mdate 10 May 2006
203 who mrg
204 file bin/ed/Makefile : 1.33
205 file distrib/utils/sysinst/Makefile.inc : 1.44
206 file distrib/utils/x_dhclient/Makefile : 1.15
207 file games/bcd/Makefile : 1.5
208 file games/dab/Makefile : 1.5
209 file games/larn/Makefile : 1.17
210 file games/pom/Makefile : 1.5
211 file lib/libasn1/Makefile : 1.26
212 file lib/libcrypt/Makefile : 1.17
213 file lib/libgssapi/Makefile : 1.16
214 file lib/libhdb/Makefile : 1.20
215 file lib/libkadm5clnt/Makefile : 1.21
216 file lib/libkadm5srv/Makefile : 1.25
217 file lib/libkrb5/Makefile : 1.35
218 file lib/libssh/Makefile : 1.6
219 file lib/libtelnet/Makefile : 1.26
220 file libexec/getty/Makefile : 1.14
221 file libexec/kadmind/Makefile : 1.19
222 file libexec/kpasswdd/Makefile : 1.14
223 file sbin/atactl/Makefile : 1.3
224 file sbin/cgdconfig/Makefile : 1.7
225 file sbin/clri/Makefile : 1.13
226 file sbin/dkctl/Makefile : 1.4
227 file sbin/dump/Makefile : 1.33
228 file sbin/fdisk/Makefile : 1.35
229 file sbin/fsck_ext2fs/Makefile : 1.11
230 file sbin/fsck_ffs/Makefile : 1.29
231 file sbin/fsdb/Makefile : 1.18
232 file sbin/mount_smbfs/Makefile : 1.4
233 file sbin/newfs/Makefile : 1.30
234 file sbin/newfs_sysvbfs/Makefile : 1.2
235 file sbin/restore/Makefile : 1.23
236 file sbin/veriexecctl/Makefile : 1.11
237 file sys/lib/libsa/Makefile : 1.59
238 file sys/arch/evbarm/adi_brh/brh_machdep.c : 1.24
239 file usr.bin/awk/Makefile : 1.9
240 file usr.bin/crontab/Makefile : 1.24
241 file usr.bin/ctags/Makefile : 1.8
242 file usr.bin/gzip/Makefile : 1.10
243 file usr.bin/ssh/sftp/Makefile : 1.10
244 file usr.bin/ssh/ssh/Makefile : 1.25
245 file usr.bin/vi/build/Makefile : 1.26
246 file usr.bin/telnet/Makefile : 1.40
247 file usr.bin/tn3270/tn3270/Makefile : 1.36
248 file usr.bin/tr/Makefile : 1.4
249 file usr.sbin/amd/amd/Makefile : 1.27
250 file usr.sbin/amd/amq/Makefile : 1.14
251 file usr.sbin/amd/libamu/Makefile : 1.20
252 file usr.sbin/amd/pawd/Makefile : 1.5
253 file usr.sbin/bind/Makefile.inc : 1.22
254 file usr.sbin/bind/libdns/Makefile : 1.3
255 file usr.sbin/bind/named/Makefile : 1.17
256 file usr.sbin/bootp/bootptest/Makefile : 1.2
257 file usr.sbin/chrtbl/Makefile : 1.6
258 file usr.sbin/cron/Makefile : 1.12
259 file usr.sbin/dhcp/Makefile.inc : 1.20
260 file usr.sbin/dumplfs/Makefile : 1.11
261 file usr.sbin/hprop/Makefile : 1.13
262 file usr.sbin/installboot/Makefile : 1.35
263 file usr.sbin/ipf/ipftest/Makefile : 1.32
264 file usr.sbin/isdn/isdnd/Makefile : 1.6
265 file usr.sbin/isdn/isdnmonitor/Makefile : 1.3
266 file usr.sbin/isdn/isdntel/Makefile : 1.2
267 file usr.sbin/isdn/isdntrace/Makefile : 126
268 file usr.sbin/mopd/common/Makefile : 1.10
269 file usr.sbin/mopd/mopd/Makefile : 1.9
270 file usr.sbin/mopd/mopprobe/Makefile : 1.7
271 file usr.sbin/makefs/Makefile : 1.17
272 file usr.sbin/mscdlabel/Makefile : 1.5
273 file usr.sbin/pkg_install/add/Makefile : 1.7
274 file usr.sbin/pkg_install/create/Makefile : 1.5
275 file usr.sbin/pkg_install/lib/Makefile : 1.28
276 file usr.sbin/ntp/ntpd/Makefile : 1.10/1.11
277 file usr.sbin/ntp/ntptime/Makefile : 1.4/1.5
278 file usr.sbin/pppd/Makefile.inc : 1.3
279 file usr.sbin/pppd/pppd/Makefile : 1.38
280 file usr.sbin/rarpd/Makefile : 1.10
281 file usr.sbin/rbootd/Makefile : 1.10
282 file usr.sbin/rpc.pcnfsd/Makefile : 1.17
283 file usr.sbin/rtadvd/Makefile : 1.9
284 file usr.sbin/tcpdump/Makefile : 1.42
285 file usr.sbin/wiconfig/Makefile : 1.3
286 descr
287 GCC 4.1 warns on pointer sign comparision/assignments and lots of
288 code does not conform. For now we use -Wno-pointer-sign and
289 -fno-strict-aliasing.
290 kcah
291
292 hack disable ctf for gcc-4.8 build
293 mdate April 3 2014
294 who christos
295 file external/gpl3/gcc/usr.bin/Makefile.frontend : 1.4
296 file external/gpl3/gcc/usr.bin/Makefile.backend : 1.5
297 descr
298 nbctfconvert -g -L VERSION -g fold-const.o
299 ERROR: fold-const.c: failed to get mapping for tid 79154 \
300 ((null)) <13532>
301 kcak
302
303 hack emacs aborting on exit (libgcc issue)
304 mdate 7 November 2011
305 who christos
306 file external/gpl3/gcc/dist/gcc/unwind-dw2-fde.c : 1.2
307 descr
308 GCC 4.5.3 now calls __unregister_frame_info_bases() on unloading/exit
309 to do just that. If the symbol requested is not found, then it aborts.
310 emacs 23.3 triggers this assertion. For now disable aborting, and
311 silently ignore.
312 kcah
313
314 hack cross-building hack on Darwin
315 mdate 20 July 2008
316 who agc
317 file src/distrib/common/Makefile.mdset : 1.33
318 descr
319 Darwin has problems with getopt() when used in mdsetimage -v,
320 due to the difference between BSD and libiberty() getopt
321 implementations, more fully described in
322 http://mail-index.netbsd.org/current-users/2008/06/27/msg003242.html
323 and the subsequent thread. For just now, we just have an ugly
324 workaround not to call mdsetimage with the -v argument on Darwin
325 kcah
326
327 hack avoid rebuilding asn1 libraries
328 mdate 03 August 2008
329 who veego
330 file src/crypto/dist/heimdal/lib/asn1/gen.c : 1.10
331 file src/lib/libasn1/Makefile : 1.32
332 file src/lib/libhdb/Makefile : 1.23
333 file src/lib/libgssapi/Makefile : 1.20
334 file src/lib/libhx509/Makefile : 1.3
335 pr 9702 39185
336 descr
337 asn1_compile does not check if generated header files do not have to
338 be rebuild.
339 Generate .hx files and copy it in the Makefiles if they changed.
340 kcah
341
342 hack avoid gcc4 -O1 bug in loop optimize
343 cdate 29 November 2008
344 who tsutsui
345 file src/sbin/ifconfig/Makefile : 1.39
346 pr 40036 40066
347 descr
348 gcc -O1 seems to generate wrong code in loop optimize so that
349 ifconfig lo0 inet6 doesn't return error even if a kernel
350 doesn't have IPv6 support. (see the above PRs for details)
351 For workaround, specify -fno-loop-optimize on m68000,
352 which uses -O1 by default.
353 kcah
354
355 hack MKPIE ldscript for /usr.sbin/crash
356 cdate 22 April 2010
357 who christos
358 file src/usr.sbin/crash/Makefile : 1.5
359 file src/usr.sbin/crash/ldscript.crash : 1.1
360 pr N/A
361 descr
362 fixed in binutils-2.20.1. Linking with MKPIE=yes causes overlapping
363 sections
364 kcah
365
366 hack Disable fortification for /usr/bin/makeinfo
367 cdata 24 Mar 2014
368 who tron
369 file src/gnu/usr.bin/texinfo/makeinfo/Makefile : 1.8
370 pr N/A
371 descr
372 If "makeinfo" is compiled with "-D_FORTIFY_SOURCE=2" using GCC 4.8.3
373 it fails to process certain texinfo files, e.g. "cl.texi"
374 included in the Emacs 24.3 distribution.
375 kcah
376
377 hack Disable Stack Smash Protection for /usr/X11R7/bin/xauth
378 cdata 05 Apr 2014
379 who tron
380 file src/external/mit/xorg/bin/xauth/Makefile : 1.4
381 pr N/A
382 descr
383 If "xauth" is compile with "USE_SSP" set to "yes" it fails
384 mysteriously with an error message like this:
385
386 /usr/X11R7/bin/xauth: file /foo/bar/.Xauthority does not exist
387 /usr/X11R7/bin/xauth: unable to link authority file /foo/bar/.Xauthority, use /foo/bar/.Xauthority
388
389 The compiler seems to get confused about the two filename variables
390 used in the link(2) system call.
391 kcah
392
393 hack g++ 5.x barfs on volatile in constexpr initializers
394 cdata 27 Aug 2015
395 who pooka
396 file src/lib/libpthread/pthread_types.h : 1.17
397 pr lib/49989
398 descr
399 Trying to use e.g. pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER
400 in C++ results in:
401 error: temporary of non-literal type '__pthread_mutex_st'
402 in a constant expression
403 constexpr mutex() _NOEXCEPT : __m_(PTHREAD_MUTEX_INITIALIZER) {}
404 [...]
405 include/pthread_types.h:101:8: note: '__pthread_mutex_st' is
406 not literal because:
407 struct __pthread_mutex_st {
408 ^
409 include/pthread_types.h:103:17: note: non-static data
410 member '__pthread_mutex_st::ptm_errorcheck' has volatile type
411 pthread_spin_t ptm_errorcheck;
412 kcah
413
414 hack libm cabs{,f,l} and g++
415 cdata 11 Jan 2016
416 who christos
417 pr lib/50646
418 file src/external/gpl3/gcc.old/dist/libstdc++-v3/include/std/complex : 1.2
419 file src/external/gpl3/gcc/dist/libstdc++-v3/include/std/complex : 1.2
420 descr
421 Our cabs and cabsf have a different argument format on some architectures
422 and for that we have created in libm/compat_cabs{,f}.c. The standard
423 versions in libc are __c99_cabs{,f,l} and there are __RENAME()'s in
424 <complex.h>. G++ uses __builtin_cabs{,f,l} to implement those and they
425 translate by default to cabs{,f,l} which gets defined to cabs{,f} (the
426 wrong function) and an undefined cabsl. I've changed <complex> to use
427 the __c99_cabs{,f,l} directly. Using the __builtin_cabs{,f,l} in gcc is
428 still broken.
429 kcah
430
431 port vax
432
433 hack gcc4/vax ICE
434 cdate
435 who tsutsui
436 file sys/arch/vax/conf/Makefile.vax
437 descr
438 GCC4 on vax gets ICE on compiling sys/ddb/db_command.c.
439 -fno-tree-ter prevents it so add it to COPTS.
440 kcah
441
442 hack gcc4/vax compiler crash
443 cdate Fri Jun 30 22:39:12 PDT 2006
444 who mrg
445 file bin/csh/Makefile : 1.27
446 file lib/i18n_module/UTF7/Makefile : 1.2
447 descr
448 GCC4 on vax crashes. -O0 stops it happening so far...
449 kcah
450
451 hack vax Toolchain bug
452 cdate 28 Mar 2003
453 who he
454 file sys/arch/vax/vax/intvec.S : 1.5
455 descr
456 Workaround for PR toolchain/20924. The assembler apparently
457 tries to range-check byte offsets when it doesn't have
458 sufficient information to make that decision.
459 Workaround uses `brw' instead of `brb' instruction.
460 kcah
461
462 hack declare boolean_t in two IPF user-mode programs
463 cdate Tue Mar 7 19:19:20 CET 2006
464 who he
465 file dist/ipf/ipsend/iptests.c : 1.8
466 dist/ipf/ipsend/sock.c : 1.7
467 descr
468 The IPF user-mode programs ipsend and iptest first
469 include <sys/types.h> without _KERNEL defined, and
470 later include <sys/file.h> with _KERNEL defined.
471 This causes a build failure when building for vax,
472 since <sys/device.h> ends up being included without
473 bollean_t being defined by <sys/types.h>.
474 Build failure and further details documented in
475 PR#32907.
476 kcah
477
478 hack pcc 0.9.9 large string literals
479 cdat 8 July 2008
480 who gmcgarry
481 file sys/conf/param.c : 1.58
482 descr
483 Workaround for pcc 0.9.9 not handling large string literals
484 which causes kernels with 'options INCLUDE_CONFIG_FILE' to
485 fail compilation.
486 There is a proposal on the pcc mailing list to stuff config
487 file in ELF section.
488 kcah
489
490 hack xorg warnings
491 cdat 30 July 2008, 3 June, 2013
492 who mrg
493 file external/mit/xorg/lib/libSM/Makefile : 1.2
494 external/mit/xorg/lib/libX11/Makefile.libx11 : 1.10
495 external/mit/xorg/lib/libXext/Makefile : 1.2
496 external/mit/xorg/lib/libXfont/Makefile : 1.2
497 descr
498 Disable several warnings or use -Wno-error across Xorg sources
499 while we get them working
500 kcah
501
502 hack 32 bit time leftovers
503 cdat 11 January 2009
504 who christos
505 file lib/libc/time/localtime.c : 1.41
506 lib/libc/time/zic.c : 1.23
507 descr
508 The timezone compiled files still contain 32 bit time_t
509 quantities. I did not want to version the files because
510 the ``parser'' is too ugly for words. What needs to be
511 done, is to rewrite the parser from scratch also to avoid
512 potential core-dumps from parsing invalid files.
513 kcah
514
515 hack 32 bit time leftovers
516 cdat 11 January 2009
517 who christos
518 file various
519 descr
520 Many filesystem on-disk formats have 32 bit times.
521 kcah
522
523 hack gcc 4.5 fsdb miscompile
524 date Sat Nov 9 11:03:02 EST 2013
525 who christos
526 file src/sbin/fsdb/Makefile : 1.36 (and earlier)
527 descr
528 src/sbin/fsdb/fsdb.c: In function 'findblk':
529 src/sbin/fsdb/fsdb.c:610:1: error: unrecognizable insn:
530 (insn 941 940 942 134 src/sbin/fsdb/fsdb.c:589 (set (reg:SI 604)
531 (subreg:SI (mem/s/j:DI (plus:SI (mult:SI (reg:SI 602)
532 (const_int 8 [0x8]))
533 (reg/f:SI 601)) [0 curinode.99_378->dp2.di_ib S8 A32]) 4)) \
534 -1 (nil))
535 src/sbin/fsdb/fsdb.c:610:1: internal compiler error: in \
536 extract_insn, at recog.c:2103
537 kcah
538
539 hack gcc 4.8 gcc miscompiles
540 date Sat Nov 9 16:35:18 EST 2013
541 who christos
542 file distrib/utils/x_ping/Makefile
543 file distrib/vax/miniroot/Makefile.inc
544 file distrib/vax/ramdisk/Makefile
545 file external/gpl3/gdb/lib/libdecnumber/Makefile
546 file sbin/fsdb/Makefile
547 file sbin/newfs_ext2fs/Makefile
548 file sbin/ping/Makefile
549 file usr.sbin/lmcconfig/Makefile
550 file usr.sbin/mtrace/Makefile
551 descr
552 external/gpl3/gcc/dist/gcc/expmed.c:2781:1:
553 internal compiler error: in change_address_1, at emit-rtl.c:2019
554 external/gpl3/gcc/dist/gcc/recog.c:770:1:
555 internal compiler error: in change_address_1, at emit-rtl.c:2019
556 external/gpl3/gcc/dist/libdecnumber/decNumber.c:7214:3:
557 internal compiler error: in change_address_1, at emit-rtl.c:2019
558 sbin/ping/ping.c:679:1:
559 internal compiler error: in change_address_1, at emit-rtl.c:2019
560 sbin/newfs_ext2fs/mke2fs.c:681:1:
561 internal compiler error: in reload_combine_note_use,
562 at postreload.c:1561
563 external/gpl3/gdb/dist/libdecnumber/decNumber.c:7214:3:
564 internal compiler error: in change_address_1, at emit-rtl.c:2019
565 usr.sbin/lmcconfig/lmcconfig.c:939:3:
566 internal compiler error: in reload_combine_note_use,
567 at postreload.c:1561
568 usr.sbin/mtrace/mtrace.c:1655:1:
569 internal compiler error: in change_address_1, at emit-rtl.c:2019
570 kcah
571
572 port arm
573
574 hack gcc-unsigned-compare
575 cdate 09 Mar 2002
576 mdate 18 Mar 2002
577 who bjh21
578 file dist/bind/lib/nameser/ns_parse.c : 1.3
579 file dist/dhcp/minires/ns_parse.c : 1.3
580 file dist/dhcp/omapip/result.c : 1.2
581 file dist/dhcp/server/failover.c : 1.3
582 file gnu/dist/toolchain/bfd/bfd.c : 1.2
583 file gnu/dist/toolchain/bfd/format.c : 1.2
584 file gnu/dist/toolchain/gdb/target.c : 1.2
585 file sys/kern/vfs_subr.c : 1.172
586 descr When checking that a potentially-unsigned enum is >= 0, assign
587 it to an int first. This is necessary to avoid "comparison is
588 always true" warnings with -fshort-enums. Casting to an int
589 really should be enough, but turns out not to be.
590 kcah
591
592 hack gcc-4.5 arm CNAME hostname lookup failure on
593 certain DNS environment (probably -ftree-ter problem)
594 cdate Sat Dec 24 04:59:00 UTC 2011
595 mdate
596 who tsutsui
597 file lib/libc/net/Makefile.inc 1.79
598 descr Hostname lookup against CNAMEs by some commands fails
599 on certain DNS environments if lib/libc/net/gethnamaddr.c
600 (ping(8) etc) and lib/libc/net/getaddrinfo.c (ftp(1) etc)
601 are compiled with -O2, even though nslookup(1) against
602 the same CNAME returns proper hostname.
603 They works properly if compiled with -O2 -fno-tree-ter.
604 Also -O2 fails but -O2 -fno-tree-ter works on the following
605 test case in gcc bugzilla:
606 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48863#c4
607 kcah
608
609 hack gcc-4.5 arm without -fno-tree-vrp generate broken code
610 cdate Wed Nov 14 13:02:02 JST 2012
611 who msaitoh
612 file lib/libc/softfloat/Makefile.inc
613 pr 46953
614 regress src/tests/lib/libm/t_cbrt
615 regress src/tests/lib/libm/t_ceil
616 regress src/tests/lib/libm/t_exp
617 regress src/tests/lib/libm/t_log
618 regress src/tests/lib/libm/t_scalbn
619 regress src/tests/lib/libm/t_sinh
620 regress src/tests/lib/libm/t_sqrt
621 descr Gcc has a bug in tree optimization. For adddf3,
622 -INF + -INF returns 0 without -fno-tree-vrp.
623 Debugging with -fdump-tree-all shows that
624 softfloat.c.021t.cleanup_cfg is ok but softfloat.c.023t.ssa
625 is broken.
626 kcah
627
628 port sh3
629
630 hack gcc4-sh3-bz2
631 cdate Sun May 21 03:34:57 UTC 2006
632 mdate Fri May 16 13:13:00 UTC 2008
633 who mrg, tsutsui
634 file lib/libbz2/Makefile : 1.10
635 descr
636 The in-tree GCC 4.1-based compiler generated too-far
637 pc-relative addresses. Hack is to build with
638 -fno-loop-optimize.
639 kcah
640
641 port sh3eb
642 hack gcc4.8.1
643 cdate Thu Nov 7 16:31:23 EST 2013
644 who christos
645 file src/sys/rump/net/lib/libnetbt/Makefile : 1.2
646 desrc
647 for profiling
648 compile l2cap_signal.c with -O0 to avoid:
649 ./netbt/l2cap_signal.c:36:
650 /p/netbsd/cvsroot/src/sys/rump/net/lib/libnetbt/../../../../\
651 netbt/l2cap_signal.c: In function 'l2cap_recv_signal':
652 ./sh3/byte_swap.h:20:2: error: 'asm' operand requires \
653 impossible reload
654 __asm volatile ("swap.b %1,%0" : "=r"(rval) : "r"(x));
655 kcah
656
657 port sh3el
658 hack gcc4.8.1
659 cdate Fri Nov 8 19:27:01 EST 2013
660 who christos
661 file src/external/bsd/libevent/lib/libevent/Makefile : 1.2
662 desrc
663 for profiling
664 compile evdns.c with -O0 to avoid:
665 ./sh3/byte_swap.h:20:2: error: 'asm' operand requires \
666 impossible reload
667 __asm volatile ("swap.b %1,%0" : "=r"(rval) : "r"(x));
668 kcah
669
670 hack gcc4.8.1
671 cdate Fri Nov 8 19:34:48 EST 2013
672 who christos
673 file src/usr.sbin/racoon/Makefile : 1.27
674 desrc
675 for profiling
676 compile ipsec_doi.c with -O0 to avoid:
677 ./sh3/byte_swap.h:20:2: error: 'asm' operand requires \
678 impossible reload
679 __asm volatile ("swap.b %1,%0" : "=r"(rval) : "r"(x));
680 kcah
681
682 port m68000
683
684 hack gcc4-m68000
685 cdate Fri Feb 8 10:29:37 PST 2008
686 mdate Sun May 4 15:37:19 UTC 2008
687 who mrg, tsutsui
688 file rescue/Makefile : 1.21
689 file sbin/dump_lfs/Makefile : 1.9
690 file sbin/fsck_ffs/Makefile : 1.35
691 file sbin/fsdb/Makefile : 1.22
692 file share/mk/sys.mk : 1.96
693 file usr.sbin/ndbootd/Makefile : 1.5
694 descr
695 Several internal compiler errors with gcc -O1
696 around 64bit integer arithmetic.
697 This hack uses -O1 and adds some -fno-tree-foo options
698 to avoid the problem.
699 This might be related with GCC Bugzilla Bug 32424.
700 kcah
701
702 port m68k,sh3,vax
703
704 hack gcc-4.8.1
705 cdate Wed Nov 6 20:41:35 EST 2013
706 who christos
707 file src/external/gpl3/gcc/libstdc++-v3/Makefile : 1.6
708 descr
709 compile hashtable_c++0x.cc with -O2 instead of -Os to
710 produce missing instantiation of std::lower_bound expansion
711 for unsigned long.
712 kcah
713
714 port sparc
715
716 hack avoid NULL pointer derefs in savefpstate IPIs and GCC 4.5.3
717 cdate Sun Aug 14 19:26:48 PDT 2011
718 who mrg
719 file sys/arch/sparc64/sparc/cpu.c : 1.234
720 file sys/arch/sparc64/sparc/cpuvar.h : 1.90
721 file sys/arch/sparc64/sparc/genassym.cf : 1.67
722 file sys/arch/sparc64/sparc/locore.s : 1.265
723 descr
724 Something is wrong with GCC 4.5.3 and the savefpstate IPI.
725 Post newlock2 there was a bug where a lock was reduced from
726 IPL_SCHED to IPL_VM (?) and occasionally savefpstate IPI
727 would crash due to NULL IPI. This was fixed by re-using the
728 right IPL value. However, GCC 4.5.3 build kernels have the
729 same problems. For now, the hack is re-instated.
730 kcah
731
732
733 port mips
734
735 hack mips-shared-linker-load-address
736 cdate Fri Oct 7 08:33:10 UTC 2005
737 who simonb
738 file src/sys/kern/exec_elf32.c : 1.107
739 descr
740 With COMPAT_16 or previous enabled (which enables
741 ELF_INTERP_NON_RELOCATABLE) a recent ld.elf_so will
742 load and run at address 0. The check to fix this in
743 rev 1.107 only checks the first psection of the ELF
744 executable, which may not be loadable. A more correct
745 fix is to check the first loadable psection instead of
746 just the first psection.
747 kcah
748
749 hack mips-duplicate-ras-end-label
750 cdate Sat Sep 2 23:29:42 2006
751 who martin
752 file src/regress/sys/kern/ras/ras3/Makefile : 1.3
753 descr
754 Add -fno-reorder-blocks to CFLAGS to avoid duplicate
755 labels by duplicated __asm output from RAS_END()
756 macro.
757 kcah
758
759 hack mips-mcount-assembler-warning
760 cdate Tue Jul 29 14:16:52 UTC 2008
761 who lukem
762 file src/lib/libc/gmon/Makefile.inc : 1.8
763 descr
764 Workaround for PR port-mips/39192.
765 common/lib/libc/gmon/mcount.c generates a (fatal)
766 assembler warning on MIPS:
767 Warning: No .cprestore pseudo-op used in PIC code
768 Add COPTS.count.c+=-Wa,--no-warn to avoid -Wa,--fatal-warnings
769 kcah
770
771 port i386
772
773 hack use volatile intermediate variable to enforce rounding
774 cdate Tue Aug 1 22:15:55 MEST 2006
775 who drochner
776 file src/lib/libm/src/lrintf.c : 1.4
777 file src/lib/libm/src/s_rintf.c : 1.8
778 descr
779 gcc-4 does subsequent operations on "float" values within
780 the i387 FPU without rounding the intermediate results
781 kcah
782
783 port x86
784 hack turn off optimization for biosdisk_ll.c because otherwise
785 we are pass the wrong arguments to biosdisk_read().
786 $ cd /usr/src/sys/arch/i386/floppies/bootflopp-com
787 $ qemu-system-i386 -nographic -fda boot-com1.fs -boot a
788 who christos
789 file src/sys/arch/i386/stand/lib/Makefile : 1.38
790 descr
791 Turning on DISK_DEBUG shows the problem. We should find
792 out which option is causing this.
793 hcah
794
795 hack turn off -ftree-vrp for ufs_lookup.c
796 who mrg
797 file src/sys/arch/amd64/conf/Makefile.amd64 : 1.54
798 descr
799 with -ftree-vrp enabled in ufs_lookup.c sometimes bad dir
800 panicks are see. see PR 51094.
801 hcah
802
803 port powerpc
804
805 hack avoid using __builtin_return_address(0) because it fails in
806 Xorg's module loader
807 cdate Sat Sep 27 03:52:05 UTC 2008
808 who macallan
809 file src/libexec/ld.elf_so/rtld.c : 1.121
810 descr
811 workaround for PR port-macppc/37812
812 kcah
813
814 hack define TARGET_SECURE_PLT and HAVE_AS_TLS because when
815 building the native compiler via build.sh those don't defined
816 properly.
817 cdate Sat Mar 12 08:00:00 UTC 2011
818 who matt
819 file src/gnu/dist/gcc4/gcc/config/rs6000/netbsd.h
820 descr
821 see above
822 kcah
823
824 port powerpc64
825
826 hack include _errno.c in libposix so that __errno resolves. It
827 should resolve from libc's errno, but somehow it does not.
828 Linker bug?
829 cdate Thu Oct 27 13:19:47 EDT 2011
830 who christos
831 file src/lib/libposix/Makefile: 1.15
832 file src/lib/librt/Makefile: 1.14
833 descr
834 workaround for:
835 libposix_pic.a(cerror.pico)(.text+0x14): unresolvable \
836 R_PPC64_REL24 relocation against symbol `.__errno'
837 kcah
838
839 hack rename data() function in mdocml to avoid redefined error.
840 Compiler/Assembler bug?
841 cdate Sat Oct 29 11:16:01 EDT 2011
842 who christos
843 file src/external/bsd/mdocml/tbl_data.c: 1.2
844 descr
845 workaround for:
846 {standard input}: Assembler messages:
847 {standard input}:105: Error: symbol `.data' is already \
848 defined
849 kcah
850
851 port emips
852
853 hack Add nop between ctc1 and mtc0 to avoid assembler internal
854 error
855 cdate Sat Oct 29 16:57:34 EDT 2011
856 who christos
857 file src/sys/arch/mips/mips/mips_fpu.c: 1.7
858 descr
859 workaround for:
860 {standard input}: Assembler messages:
861 {standard input}:730: Internal error!
862 Assertion failure in append_insn at /usr/src/external/gpl3/\
863 binutils/dist/gas/config/tc-mips.c line 2910.
864 kcah
865
866 port ia64
867
868 hack libc hesiod.c file does not compile with -O2 (internal
869 compiler error in gcc 4.5.3)
870 cdate Thu Dec 27 08:05:43 CET 2012
871 who martin
872 file src/lib/libc/net/Makefile.inc: 1.82
873 descr
874 workaround for:
875 {standard input}: Assembler messages:
876 {standard input}:1507: Warning: Use of 'mov' may violate WAW dependency 'GR%, % in 1 - 127' (impliedf), specific resource number is 15
877 {standard input}:1506: Warning: This is the location of the conflicting usage
878 {standard input}: Error: 2 warnings, treating warnings as errors
879 kcah
880
881 hack libelf libelf_extended.c compiler error in gcc 4.5.3
882 cdate Thu Dec 27 09:05:51 CET 2012
883 who martin
884 file src/external/bsd/libelf/lib/Makefile: 1.3
885 descr
886 workaround for:
887 {standard input}: Assembler messages:
888 {standard input}:87: Warning: Use of 'adds' may violate RAW dependency 'GR%, % in 1 - 127' (impliedf), specific resource number is 33
889 {standard input}:87: Warning: Only the first path encountering the conflict is reported
890 {standard input}:85: Warning: This is the location of the conflicting usage
891 kcah
892
893 hack compiler error with gcc 4.5.x
894 cdate Thu Dec 27 15:15:25 CET 2012
895 who martin
896 file src/crypto/external/bsd/netpgp/lib/verify/Makefile: 1.5
897 descr
898 workaround for:
899 {standard input}: Assembler messages:
900 {standard input}:22979: Warning: Use of 'mov' may violate WAW dependency 'GR%, % in 1 - 127' (impliedf), specific resource number is 8
901 {standard input}:22978: Warning: This is the location of the conflicting usage
902 kcah
903
904 hack libgcc unwind dummy function
905 cdate Fri Apr 17 14:31:03 CEST 2015
906 who martin
907 file src/external/gpl3/gcc/dist/libgcc/config/ia64/unwind-ia64.c: 1.4
908 descr
909 Add an empty _Unwind_FindTableEntry() implementation.
910 In the end we will use our libc stuff, and this should
911 go away again.
912 kcah
913
914 port x68k
915
916 hack compiler error with gcc 4.5.x
917 cdate Fri May 24 13:23:01 EDT 2013
918 who christos
919 file src/external/gpl3/gcc/usr.bin/bakend/Makefile: 1.17
920 xsrc/external/mit/xorg/lib/libGLU/Makefile: 1.11
921 descr
922 workaround for:
923 internal compiler error: in cselib_record_set, at cselib.c:1999
924 kcah
925
926 hack fallback to /usr/bin/clang-cpp in rpcgen
927 cdate Wed Jun 5 15:49:27 CEST 2013
928 who joerg
929 file src/usr.bin/rpcgen/rpc_main.c
930 descr
931 It is undecided which compiler owns /usr/bin/cpp and whether it should
932 exist in a MKGCC=no world. To allow rpcgen to work out-of-the-box,
933 if either gcc or clang is installed, use /usr/bin/clang-cpp as fallback.
934 This applies only if RPCGEN_CPP is not set and /usr/bin/cpp is not executable.
935 kcah
936
937 port hppa
938
939 hack compiler error with gcc 4.5.x
940 cdate Tue Jul 23 07:42:28 BST 2013
941 who skrll
942 file src/sys/lib/libkern/Makefile.libkern: 1.26
943 descr
944 workaround for unanalysed codegen bug affecting md5c.c.
945 kcah
946
947 hack gdb vs _rtld_debug_state problem
948 cdate Thu Mar 5 09:49:53 UTC 2015
949 who skrll
950 file src/libexec/ld.elf_so/rtld.c: 1.175
951 descr
952 workaround for problem where gdb misses the breakpoint on
953 _rtld_debug_state when the function is only the
954 bv,n %r0(%rp) instruction - the nullify seems to
955 confuse something
956 kcah
957
958 port mips64*
959 hack compiler crashes on mips64* with optimization enabled
960 cdate Tue May 13 18:46:48 UTC 2014
961 who macallan
962 file src/external/lgpl3/gmp/lib/libgmp/arch/mips64eb/Makefile.inc: 1.6
963 src/external/lgpl3/gmp/lib/libgmp/arch/mips64eb/config.h: 1.5
964 src/external/lgpl3/gmp/lib/libgmp/arch/mips64el/Makefile.inc: 1.6
965 src/external/lgpl3/gmp/lib/libgmp/arch/mips64el/config.h: 1.5
966 descr workaround for n32 gcc doing unaligned 64bit accesses when optimizing
967 pr 48696
968 kcah
969
970 port vax
971 hack compile boot with -O1
972 cdate Sat May 24 09:40:58 CEST 2014
973 who martin
974 file src/sys/arch/vax/boot/boot/Makefile: 1.41
975 descr /boot does not work when compiled with -O2 and gcc 4.8
976 kcah
977
978 port arm
979 hack avoid using labels in a 12-bit constant.
980 who matt
981 file crypto/external/bsd/openssl/lib/libcrypto/arch/arm/aes-armv4.S: 1.2
982 descr workaround for clang misassembling an instruction
983 kcah
984