Push -Wno-array-bounds down to the cases that depend on it.
Selectively disable warnings for 3rd party software or non-trivial
issues to be reviewed later to get clang -Werror to build most of the
tree.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.
this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.
i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.
some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h
- posix_memalign() does not set errno, it returns 0 or an error number
(maybe a jemalloc() vs. phkmalloc() issue, but also how the opengroup
documents it.)
- since "align" must be >= sizeof(void *), expect to fail align=4 on
LP64 systems.
- while i'm here, add a test for align=2 failing everywhere.
Remove the 'answers' section from the test definition, instead use our
own version of strchr() to determine the what the answer should be.
On error report which test we are doing, and the answer we got.
If symbol "test_strchr" exists, test that function instead of strchr().
(With a very dodgy strchr() other things fail badly.
strlen! Move to file scope and make 'volatile'.
When test fails use write (printf might be broken) to report info.
To aid testing new versions, use dlsym() for "test_strlen" defaulting to
strlen() so that the rest of the program doesn't use the broken version.
threads which were created, doing some random mallocs in between
so that threads are not equidistant in the address space
(bug fixed in libpthread/pthread.c rev. 1.109)