Fix ldd to work with more ELF files.
- Use libelf to parse ELF data structures and remove code duplication for ELF32.
- Don't require the OSABI field to be set to the FreeBSD OSABI for shared libraries. Both AArch64 and RISC-V leave it set to "none" and instead depend on the ABI tag note. For ldd, this means falling back to walking the notes in PT_NOTE segments to find the ABI tag note to determine if an ELF shared library without OSABI set in the header file is a FreeBSD shared library.
Approved by: re (gjb)
(cherry picked from commit 9d4104b214963bb3371ada05cae8006940121634)
(cherry picked from commit fa3b2ad265d311191c1c8337bf3aa356f28480cb)