Allow creation of indirection functions on all platforms, not just GNU
and FreeBSD.
Add basic support for indirect functions. It allows providing a public
function symbol with an implementation choosen at run time.
Refactor calls to functions by address in ld.elf_so to create temporary
function descriptors on the stack, if the address is not leaked outside.

Limitations:
- no support for initialising static storage with function pointers
- no support for unnamed resolver functions

Inspired by FreeBSD's r228435 by kib@freebsd.org.
Return 0, not uninitialized, if the condition is already true.
Introduce a cast to fix the build for Elf32 on _LP64.
alpha (and others) don't like .set name, expr. Use name = expr like elsewhere.
Fix build with TFTPROOT option enabled
fix sets
Implement pci_intr_setattr()

(well, kinda.  it just ignores the MPSAFE param for now, but that's
easy to fix later)
effectively disable the test to fix the build and explain why.
Make it compile without DIAGNOSTIC
Adding extra dependencies does not affect the inference rule search anymore.
XXX[1]: should that be the case?
Simplify the code anyway via selective path search.
XXX[2]: Split arch portions to arch specific files, this is a mess
Make it compile without DIAGNOSTIC
Make it compile without DIAGNOSTIC by using __diagused
Go back to skipping init/fini handling for ldd, makes problems for 32bit
compat on LP64.