enhance build process to allow selective -O3 optimization the motivation for this patch is that the vast majority of libc is code that does not benefit at all from optimizations, but that certain components like string/memory operations can be major performance bottlenecks. at the same time, the old -falign-*=1 options are removed, since they were only beneficial for avoiding bloat when global -O3 was used, and in that case, they may have prevented some of the performance gains. to be the most useful, this patch will need further tuning. in particular, research is needed to determine which components should be built with -O3 by default, and it may be desirable to remove the hard-coded -O3 and instead allow more customization of the optimization level used for selected modules.
fix invalid C in new trycppif tests in configure script an empty program is not valid and would be reasonable grounds for the compiler to give an error, which would break these tests.
add build system support for arch endian & float abi variants
treat invalid C as an error even if warnings aren't enabled.
fix error in configure script using >/dev/null in noclobber mode
Merge remote-tracking branch 'ppc-port/ppc-squashed'
PPC port cleaned up, static linking works well now.
fix "configure --prefix=" and improve path/arg handling in configure previously, empty string was treated as "use default". this is apparently not compatible with standard configure semantics where an empty prefix puts everything under /. the new logic should be a lot cleaner and not suffer from such issues.
further pcc fixes in configure -lpcc only works if -nostdlib is not passed, so it's useless. instead, use -print-file-name to look up the full pathname for libpcc.a, and check whether that succeeds before trying to link with the result. also, silence pcc's junk printed on stdout during tests.
add support for detecting pcc's compiler runtime in old versions of pcc, the directory containing libpcc.a was not in the library path, and other options like -print-file-name may have been needed to locate it. however, -print-file-name itself seems to have been added around the same time that the directory was added to the search path, and moreover, I see no evidence that older versions of pcc are capable of building a working musl shared library. thus, it seems reasonable to just test whether -lpcc is accepted.
configure: test not just compiling but linking with -march/-mtune pcc wrongly passes any option beginning with -m to the linker, and will break at link time if these options were added to CFLAGS. testing linking lets us catch this at configure time and skip them.
use $CC rather than "$CC" in configure script this is necessary to allow $CC with arguments in it
tell the assembler to mark all files as not requiring executable stack for some reason this option is undocumented. not sure when it was added, so I'm using a configure test. gcc was already setting the mark correctly for C files, but assembler source files would need ugly .note boilerplate in every single file to achieve this without the option to the assembler. blame whoever thought it would be a good idea to make the stack executable by default rather than doing it the other way around...
microblaze port based on initial work by rdp, with heavy modifications. some features including threads are untested because qemu app-level emulation seems to be broken and I do not have a proper system image for testing.
add LIBCC (compiler runtime) logic and override to configure this should both fix the issue with ARM needing -lgcc_eh (although that's really a bug in the libgcc build process that's causing considerable bloat, which should be fixed) and make it easier to build musl using clang/llvm in place of gcc. unfortunately I don't know a good way to detect and support pcc's -lpcc since it's not in pcc's default library search path...
get rid of eh_frame bloat if needed for debugging, it will be output in the .debug_frame section instead, where it is not part of the loaded program and where the strip command is free to strip it.
add gnu hash support in the dynamic linker based on the patches contributed by boris brezillon.
support configuring cross compiling with CROSS_COMPILE prefix variable
make configure accept mipsel
remove configure check disabling shared libraries on mips