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)