HACKS revision 1.57
1# $NetBSD: HACKS,v 1.57 2006/05/10 21:54:58 mrg 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
30hack	gcc4 wrong uninitialised variable
31mdate	10 May 2006
32who	mrg
33file	bin/ksh/eval.c			: 1.6
34file	bin/sh/histedit.c		: 1.39
35file	bin/sh/parser.c			: 1.60
36file	bin/systrace/systrace.c		: 1.33
37file	crypto/dist/heimdal/kdc/524.c	: 1.10
38file	crypto/dist/ssh/sftp.c		: 1.20
39file	crypto/dist/ssh/ssh-keysign.c	: 1.11
40file	dist/ipf/lib/hostname.c		: 1.2
41file	dist/ipf/tools/ipmon.c		: 1.8
42file	dist/ntp/ntpd/refclock_shm.c	: 1.4
43file	dist/ntp/sntp/timing.c		: 1.3
44file	dist/pppd/pppstats/pppstats.c	: 1.3
45file	dist/smbfs/lib/smb/rap.c	: 1.6
46file	dist/tcpdump/print-zephyr.c	: 1.5
47file	gnu/libexec/uucp/uucico/uucico.c : 1.6
48file	lib/libc/citrus/citrus_csmapper.c : 1.6
49file	lib/libc/citrus/citrus_pivot_factory.c : 1.5
50file	lib/libc/inet/inet_cidr_ntop.c	: 1.3
51file	lib/libc/inet/inet_ntop.c	: 1.3
52file	lib/libc/stdio/vfwprintf.c	: 1.8
53file	libexec/ld.elf_so/arch/sparc64/mdreloc.c : 1.39
54file	sbin/fsck_ext2fs/dir.c		: 1.19
55file	sbin/routed/rtquery/rtquery.c	: 1.18
56file	sys/crypto/cast128/cast128.c	: 1.9
57file	sys/ddb/db_command.c		: 1.86
58file	sys/dev/fss.c			: 1.25
59file	sys/dev/ic/midway.c		: 1.71
60file	sys/dev/pci/machfb.c		: 1.45
61file	sys/dist/ipf/netinet/ip_nat.c	: 1.10
62file	sys/dist/ipf/netinet/ip_rpcb_pxy.c : 1.8
63file	sys/kern/kern_sig.c		: 1.219
64file	sys/kern/tty.c			: 1.181
65file	sys/net/bpf.c			: 1.116
66file	sys/net/zlib.c			: 1.26
67file	sys/netinet/in.c		: 1.107
68file	sys/netsmb/smb_smb.c		: 1.27
69file	sys/netsmb/smb_trantcp.c	: 1.22
70file	sys/nfs/nfs_serv.c		: 1.108
71file	sys/nfs/nfs_socket.c		: 1.129
72file	sys/nfs/nfs_syscalls.c		: 1.91
73file	sys/ufs/lfs/lfs_vfsops.c	: 1.207 [also (char *)]
74file	usr.bin/ftp/ftp.c		: 1.140
75file	usr.bin/find/function.c		: 1.54
76file	usr.bin/mail/tty.c		: 1.20
77file	usr.bin/nl/nl.c			: 1.7
78file	usr.bin/systat/keyboard.c	: 1.23
79file	usr.bin/usbhidctl/usbhid.c	: 1.29
80file	usr.bin/vi/cl/cl_read.c		: 1.5
81file	usr.bin/vi/ex/ex_cscope.c	: 1.12
82file	usr.bin/vi/ex/ex_tag.c		: 1.19
83file	usr.bin/vi/vi/v_txt.c		: 1.15
84file	usr.sbin/altq/altqstat/qdisc_rio.c : 1.4
85file	usr.sbin/cron/do_command.c	: 1.19
86file	usr.sbin/timed/timed/slave.c	: 1.15
87descr
88	GCC 4.1 gets many uninitialised variable warnings wrong.  We should
89	really audit all the old hacks like this when older compilers are
90	removed from the tree, as many are probably no longer required.
91kcah
92
93hack	netstat ieee1394 address printing.
94mdate	14 Nov 2000
95who	matt
96file	lib/libc/net/getnameinfo.c	: 1.32 : 497 : 503
97descr
98	Because the current implementation of IP over IEEE1394, the
99	fw device address contains more than just the IEEE1394 EUI-64.
100	So when printing out IEEE1394 addresses, ignore the extra stuff.
101kcah
102
103hack	xterm vs. libterm
104mdate	01 Aug 2000
105who	jdc
106file	xsrc/xc/programs/xterm/main.c	: 1.2 : 3609 : 3614
107pr	10383
108descr
109	In order to extend the termcap string over 1023 bytes, a ZZ entry was
110	introduced to point to a memory location containing the full entry.
111	Without this hack, xterm will export a termcap containing the ZZ
112	entry, which will then be ignored by libterm.  As xterm modifies the
113	exported termcap, this would cause those modifications to be ignored.
114kcah
115
116hack	wi-at-big-endian-bus
117cdate	15 Mar 2002
118who	martin
119file	dev/ic/wireg.h
120descr	Add an option to access the underlying bus in big endian byte order
121	to work around deficiencies in bus_space_{read,write}_* macros.
122	Those don't allow the implementation of a proper pcmcia bus space
123	tag.
124kcah
125
126hack	specific knowledge of colours in curses code
127cdate	Sun Apr  6 11:05:24 BST 2003
128who	jdc
129file	lib/libcurses/color.c : r1.24
130descr
131	Swap red/blue and yellow/cyan colours for COLOR_OTHER.
132	Fix is to enhance libtermcap to understand terminfo-style % sequences.
133	See also:
134	    http://mail-index.NetBSD.org/tech-userlevel/2003/04/06/0000.html
135kcah
136
137hack	Compensation for differing types of LINUX_USRSTACK and USRSTACK
138cdate	21 Aug 2003
139who	he
140file	sys/miscfs/procfs/procfs_linux.c : 1.14
141descr
142	Not all ports have LINUX_USRSTACK and/or USRSTACK defined as
143	literals/constants, but refer to variables of a type which is
144	not "unsigned long", causing compilation of procfs_linux.c to
145	fail with "makes integer from pointer without a cast".  This
146	is observed on e.g. the sun3 port.  Ideally the "types" for
147	symbols should be consistent across all ports.
148kcah
149
150hack	GCC2 isn't C99
151cdate	5 December 2003
152who	mrg
153file	gnu/dist/binutils/ld/ldlex.c: r1.2
154descr
155	ldlex.c is generated from ldlex.l and we get macro redefinition
156	errors from it if __STDC_VERSION__ is not C99 compliant.  This
157	hack forces NetBSD 1.6 and later systems to also include <stdint.h>
158	to get the relevant definitions.  This hack should be backed out
159	when all platforms have switched away from GCC2.
160kcah
161
162hack	gcc-strict-aliasing
163cdate	6 August 2004
164who	junyoung
165pr	26516
166file	src/usr.sbin/racoon/racoon/Makefile : 1.21
167descr
168	GCC issues a warning "dereferencing type-punned pointer will break
169	strict-aliasing rules" when compiling
170	crypto/dist/kame/racoon/crypto/openssl.c with -O[23s]. Note that this
171	is due to use of type casting in a non-standard way in the code and
172	not a compiler bug. Once a new release of KAME with a proper fix
173	applied is imported this should be backed out.
174kcah
175
176
177port	vax
178
179	hack	gcc 2.95/vax doesn't like abort being used as function pointer
180	cdate	Tue Dec 13 05:54:50 GMT 2005
181	who	jmc
182	file	lib/libc/rpc/svc_vc.c 1.15
183	descr
184		Provide a local definition for abort which doesn't include
185		the noreturn attribute which trips up gcc 2.95 on vax.
186	
187	hack	gcc 2.95/vax doesn't have stdbool.h and gettext needs it
188	cdate	Mon May  9 12:16:22 CDT 2005
189	who	jmc
190	file	gnu/usr.bin/gettext/Makefile.inc.prog 1.5
191		gnu/usr.bin/gettext/libgrep/Makefile 1.3
192		gnu/usr.bin/gettext/libnlspr/Makefile 1.5
193		gnu/usr.bin/gettext/libnlsut/Makefile 1.3   
194	descr
195		The latest gettext assumes a C99 environment or at least
196		configure checks to work around this. As we don't use configure
197		provide a stdbool.h for vax builds locally in directories from
198		the template provided by the gettext code.
199	
200	hack	gcc 2.95/vax can't handle __used__ in mcount.c
201	cdate	Fri May  6 14:30:53 CDT 2005
202	who	jmc
203	file	src/lib/libc/gmon/mcount.c 1.17
204	descr
205                Recent changes to mark this as __used__ to prevent optimization
206                away on sparc64 don't work on 2.95 vax. Ifdef'd back in the
207                old __unused__ if on vax.
208	
209	hack	gcc 2.95/vax cannot handle __builtin_ffs()
210	cdate	Fri Aug 23 21:31:15 CEST 2002
211	who	ragge
212	file	sys/lib/libkern/libkern.h : 1.42
213	descr
214		__builtin_ffs() is ifdef'd away if __vax__. Matt Thomas has
215		added this feature to GCC 3 so it can be removed when switching.
216	
217
218	hack	gcc-vax-libbz2
219	mdate	27 Jun 2002
220	who	thorpej
221	file	lib/libbz2/Makefile
222	descr
223		libbz2 is mis-compiled with optimization with GCC 2.95.3
224		on VAX.  -O0 works around this problem.
225	kcah
226
227	hack	gawk
228	mdate	8 Nov 2003
229	who	ragge
230	file	gnu/usr.bin/gawk/Makefile
231	descr
232		gawk is mis-compiled with optimization with GCC 2.95.3
233		on VAX.  -O0 works around this problem.
234	kcah
235
236	hack	vax Toolchain bug
237	cdate	28 Mar 2003
238	who	he
239	file	sys/arch/vax/vax/intvec.S : 1.5
240	descr
241		Workaround for PR toolchain/20924.  The assembler apparently
242		tries to range-check byte offsets when it doesn't have
243		sufficient information to make that decision.
244		Workaround uses `brw' instead of `brb' instruction.
245	kcah
246
247	hack	vax gcc 2.95.3 -Wuninitialized workarounds
248	cdate	6 Nov 2003
249	who	he
250	file	sys/dev/bi/if_ni.c : 1.22
251	file	sys/arch/vax/vax/ctu.c : 1.20
252	descr
253		Workaround for gcc 2.95.3 failing to detect that certain
254		variables will be initialized; so that this code compiles
255		with -Wuninitialized.  Should be reviewed and possibly
256		reverted when gcc 3.3.2 is ready for vax.
257	kcah
258
259	hack	vax gcc 2.95.3 structure initialization
260	cdat	13 May 2004
261	who	cl
262	file	sys/miscfs/kernfs/kernfs_vnops.c : 1.104
263	descr
264		Workaround for gcc 2.95.3 failing to initialize structures
265		and/or unions inside structures using nested designators.
266		Should be reverted when gcc >=3.3.3 is ready for vax.
267	kcah
268
269	hack	vax gcc 2.95.3 needs -I. to build nslexer.c
270	cdat	6 Jun 2004
271	who	mhitch
272	file	lib/libc/arch/vax/Makefile.inc : 1.6
273	descr
274		It appears necessary to add -I. to CPPFLAGS when building
275		nslesxer.c.  This may be caused by gcc 2.95.3 being used.
276		Should be reverted when a newer gcc is ready for vax.
277	kcah
278
279	hack	vax gcc 2.95.3 doesn't understand "-std=c99"
280	cdat	5 April 2005
281	who	tron
282	file	src/share/mk/bsd.sys.mk
283	descr
284		We cannot use "-std=c99" for compiler warning level 4 and above
285		because gcc 2.95.3 doesn't support that option.
286	kcah
287
288	hack	declare boolean_t in two IPF user-mode programs
289	cdate	Tue Mar  7 19:19:20 CET 2006
290	who	he
291	file	dist/ipf/ipsend/iptests.c : 1.8
292		dist/ipf/ipsend/sock.c : 1.7
293	descr
294		The IPF user-mode programs ipsend and iptest first
295		include <sys/types.h> without _KERNEL defined, and
296		later include <sys/file.h> with _KERNEL defined.
297		This causes a build failure when building for vax,
298		since <sys/device.h> ends up being included without
299		bollean_t being defined by <sys/types.h>.
300		Build failure and further details documented in
301		PR#32907.
302	kcah
303
304port	sparc64
305
306	hack	binutil-2.11-sparc64-pltrela
307	mdate	14 Aug 2001
308	who	eeh
309	file	libexec/ld.elf_so/arch/sparc64/mdreloc.c
310	descr
311		The first four PLT entries are reserved.  There is some
312		disagreement whether they should have associated relocation
313		entries.  Both the SPARC 32-bit and 64-bit ELF specifications
314		say that they should have relocation entries, but the 32-bit
315		SPARC binutils do not generate them, and now the 64-bit SPARC
316		binutils have stopped generating them too.
317
318		To provide binary compatibility, we will check the first entry,
319		if it is reserved it should not be of the type JMP_SLOT.  If it
320		is JMP_SLOT, then the 4 reserved entries were not generated and
321		our index is 4 entries too far, so we frob the rela pointer.
322	kcah
323
324
325port	arm
326
327	hack	gcc-unsigned-compare
328	cdate	09 Mar 2002
329	mdate	18 Mar 2002
330	who	bjh21
331	file	dist/bind/lib/nameser/ns_parse.c : 1.3
332	file	dist/dhcp/minires/ns_parse.c : 1.3
333	file	dist/dhcp/omapip/result.c : 1.2
334	file	dist/dhcp/server/failover.c : 1.3
335	file	gnu/dist/gawk/eval.c : 1.4
336	file	gnu/dist/toolchain/bfd/bfd.c : 1.2
337	file	gnu/dist/toolchain/bfd/format.c : 1.2
338	file	gnu/dist/toolchain/gdb/target.c : 1.2
339	file	sys/kern/vfs_subr.c : 1.172
340	descr	When checking that a potentially-unsigned enum is >= 0, assign
341		it to an int first.  This is necessary to avoid "comparison is
342		always true" warnings with -fshort-enums.  Casting to an int
343		really should be enough, but turns out not to be.
344	kcah
345
346	hack	gcc 3.3.2/arm sys/kern/uipc_socket.c
347	cdate	Tue Oct 28 18:02:16 GMT 2003
348	who	skrll
349	pr	23044
350	file	sys/arch/arm/conf/Makefile.arm : 1.19
351	descr
352		Performing a build.sh tools on a CATS with NFS mounted 
353		obj and src directories results in "panic: receive 1"
354		The hack is to compile sys/kern/uipc_socket.c with
355		-fno-strict-aliasing
356	kcah
357
358
359port	pc532
360
361	hack	egcs-pc532-ip6_mroute
362	cdate	09 Jul 2002
363	who	simonb
364	file	sys/arch/pc532/conf/Makefile.pc532 : 1.70
365	file	sys/arch/pc532/conf/files.pc532 : 1.47
366	descr
367		egcs 1.1.2 gets an "internal error--insn does not satisfy its
368		constraints" error compiling ip6_mroute.c with -O2 or greater.
369		-O1 works around this problem.
370	kcah
371
372	hack	gcc-pc532-duffs_device
373	cdate	Mon Oct 27 07:23:05 UTC 2003
374	who	simonb
375	file	sys/arch/pc532/conf/Makefile.pc532 : 1.71
376	file	sys/arch/pc532/conf/files.pc532 : 1.52
377	pr	GCC PR optimization/5230
378	descr
379		gcc incorrectly gives an "unreachable code at beginning of
380		switch statement" for a Duff's device construct in
381		arch/pc532/dev/ncr.c.  There is no way to disable just this
382		warning, so -Wno-error is turned on for this file.
383	kcah
384
385	hack	gcc332-cppmacro-ice
386	cdate	Sun Dec  7 12:48:33 UTC 2003
387	who	simonb
388	file	gnu/usr.bin/gcc3/libcpp/Makefile : 1.2
389	descr
390		gcc 3.3.2 gets an ICE when compiling cppmacro.c with -O2.
391		The hack is to use -O1 for this file.  Fixed in gcc
392		-current mainline, unable to work out where the fix is
393		right now.
394	kcah
395
396
397port	sh3
398
399	hack	gcc-sh3-sed
400	mdate	23 Apr 2002
401	who	thorpej
402	file	usr.bin/sed/Makefile	: 1.9 : 9 : 13
403	descr
404		The in-tree GCC 2.95.3-based compiler ICEs when building
405		with optimization for SuperH.  Hack is to build with -O0.
406	kcah
407
408
409port	sh5
410
411	hack	SuperH SH5 Toolchain Bugs
412	cdate	11 Jul 2002
413	who	scw
414	file	usr.sbin/ndbootd/ndbootd.c : 1.6
415	file	usr.sbin/traceroute/traceroute.c : 1.48
416	descr
417		The SuperH SH5 toolchain (2.97-sh5-010522) gets an internal
418		compiler error when assigning a bit-wise inverted value
419		under some circumstances.
420		Work around it by splitting the statement into two.
421	kcah
422
423	hack	SuperH SH5 Toolchain Bugs
424	cdate	17 May 2003
425	who	scw
426	file	lib/libpthread/pthread_lock.c : 1.7
427	descr
428		The SuperH SH5 toolchain generates incorrect PIC code when
429		faced with a symbol which is declared extern, but has local
430		scope due to being defined within an asm() statement (without
431		being declared .globl in that statement). Work around it by
432		adding the .globl.
433	kcah
434
435	hack	gcc 3.3.2 on sh5 - ICE compiling reload1.c at -O2
436	cdate	Sun Dec  7 19:44:05 GMT 2003
437	who	scw
438	file	gnu/usr.bin/gcc3/backend/Makefile : 1.13
439	descr
440		Gcc3 for sh5 gets an ICE compiling reload1.c at -O2.
441		Drop to -O1 for now when building for sh5.
442	kcah
443
444	hack	gcc 3.3.2 on sh5 - ICE compiling elf32.c/elf64.c at -O2
445	cdate	Sun Dec  7 21:10:46 GMT 2003
446	who	scw
447	file	gnu/lib/libbfd/Makefile : 1.39
448	descr
449		Gcc3 for sh5 gets an ICE compiling libbfd's elf32.c
450		and elf64.c at -O2.
451		Drop to -O1 for now when building for sh5.
452	kcah
453
454
455	hack	gcc 3.3.2 on sh5 - fatal warning compiling function.c
456	cdate	Sun Dec  7 19:44:05 GMT 2003
457	who	scw
458	file	gnu/usr.bin/gcc3/backend/Makefile : 1.13
459	descr
460		Gcc3 for sh5 issues a warning:
461		.../gnu/dist/gcc/gcc/function.c:4742: warning: `and' of
462		    mutually exclusive equal-tests is always 0.
463		This causes the build to fail because of -Werror.
464		Work-around by defining NOGCCERROR when building for sh5.
465	kcah
466
467	hack	gcc 3.3.3 on sh5 - ICE compiling rbtdb.c and rbtdb64.c
468	cdate	Thu Nov 11 00:35:33 UTC 2004
469	who	he
470	file	usr.sbin/bind/libdns/Makefile/1.2
471	descr
472		Gcc3 for sh5 gets an ICE compiling these files at -O2.
473		Drop to -O1 for now when building for sh5.
474	kcah
475
476	hack	gcc 3.3.3 nb3 on sh5 - ICE compiling bsd-comp.c
477	cdate	Thu May 25 23:05:20 UTC 2005
478	who	he
479	file	sys/lkm/net/bsdcomp/Makefile : 1.3
480	descr
481		Gcc3 for sh5 gets an ICE compiling this at -O2,
482		"could not split insn".  Drop to -O1 for sh5.
483	kcah
484
485	hack	gcc 3.3.3 nb3 on sh5 - ICE compiling strtod.c
486	cdate	Tue Jan 31 10:51:52 GMT 2006
487	who	scw
488	file	lib/libc/gdtoa/Makefile.inc : 1.2
489	descr
490		Gcc3 for sh5 gets an ICE compiling this at -O2,
491		"could not split insn".  Drop to -O1 for sh5.
492	kcah
493
494port	sun2
495
496	hack	gcc 3.3.2/mdsetimage
497	cdate	Tue Oct 28 18:43:05 EST 2003
498	who	fredette
499	file	gnu/usr.sbin/mdsetimage/Makefile : 1.15
500	descr
501		mdsetimage.c causes cc1 to barf for as-yet unknown reasons.
502		this hack uses -O0 to avoid the problem.
503	kcah
504
505	hack	gcc 3.3.2/installboot/ffs.c
506	cdate	Tue Oct 28 18:43:05 EST 2003
507	who	fredette
508	file	usr.sbin/installboot/Makefile : 1.26
509	descr
510		ffs.c causes cc1 to barf for as-yet unknown reasons.  this
511		hack uses -O0 to avoid the problem.
512	kcah
513
514
515port	m68000
516
517	hack	gcc 3.3.2/gcc/ra-colorize.c
518	cdate	Wed Nov  5 11:03:13 EST 2003
519	who	mrg
520	file	gnu/usr.bin/gcc3/backend/Makefile : 1.11
521	descr
522		ra-colorize.c causes a whole spew of unreferenced .L* local
523		symbols.  using -O0 (or even -O2 reportedly) avoids the problem.
524		Note this has been fixed in 3.3.3 at least on m68k,
525		but it hasn't been confirmed on sun2/m68000.
526		(it's too slow even on emulator and unlikely to build
527		 toolchains on sun2 with its maximum 4MB RAM)
528	kcah
529
530port	sparc64
531
532	hack	disable optimzations for uvm_bio.c on 32 bit kernels
533	cdate	Sun Mar 21 14:14:04 MET 2004
534	who	martin
535	file	sys/arch/sparc64/conf/Makefile.sparc64 : 1.53-1.54
536	file	sys/arch/sparc64/conf/files.sparc64 : 1.93
537	descr
538		The sparc compiler miscompiles uvm_bio.c when using
539		any optimization. This results in ubc_release panics.
540	kcah
541
542port	macppc
543
544	hack	remove inline from rotate_{left,right}
545	cdate	Tue Feb 22 13:43:25 EST 2005
546	who	christos
547	file	src/dist/bind/lib/dns/rbt.c
548	descr
549		The macppc gcc-3.3 compiler miscompiles rbt.c when these
550		functions are inlined. The error is:
551		.* named[368]: rbt.c:1584: INSIST(child != (void *)0) >failed
552		.* named[368]: exiting (due to assertion failure)
553		This is reportedly fixed in gcc-3.4
554	kcah
555
556port	hppa
557
558	hack	hppa-gcc-3.3.3/grep/dfa.c
559	cdate	Sun Aug  8 08:34:32 PDT 2004
560	who	chs
561	file	gnu/usr.bin/grep/grep/Makefile : 1.4
562	descr
563		gcc 3.3.3 generates bad code for dfa.c with -O2,
564		reduce optimization to -O1 to avoid the bug.
565	kcah
566
567	hack	hppa-gcc-3.3.3 / make/buf.c
568	cdate	Mon May  8 13:02:36 CEST 2006
569	who	he
570	file	usr.bin/make/Makefile : 1.34
571	descr
572		gcc 3.3.3 nb3 gets an "unrecognized insn" internal
573		compiler error when building this file with -O2,
574		reduce optimization to -O1 to avoid the bug.
575	kcah
576
577	hack	hppa boot-from-disk memory corruption
578	cdate	Wed May 18 06:56:07 PDT 2005
579	who	chs
580	file	src/sys/dev/scsipi/scsipiconf.h : 1.98
581	descr
582		There is some bug with DMA on hppa that corrupts scsipi_xfer
583		structures, but it only shows up when booting from disk.
584		For now, we'll add some padding to scsipi_xfer so that
585		the corrupted memory is not otherwise used.
586	kcah
587
588port	mips
589
590	hack	mips-shared-linker-load-address
591	cdate	Fri Oct  7 08:33:10 UTC 2005
592	who	simonb
593	file	src/sys/kern/exec_elf32.c : 1.107
594	descr
595		With COMPAT_16 or previous enabled (which enables
596		ELF_INTERP_NON_RELOCATABLE) a recent ld.elf_so will
597		load and run at address 0.  The check to fix this in
598		rev 1.107 only checks the first psection of the ELF
599		executable, which may not be loadable.  A more correct
600		fix is to check the first loadable psection instead of
601		just the first psection.
602	kcah
603
604