Most of the remaining multi-arch conversion work for the ARM is target-specific. Below is an initial stab at detecting the various object formats that I know about. It seems that, even for ELF, this isn't an exact science -- There is a fairly-well defined flag in the elf header (EI_OSABI), but no-one seems to set it reliably, certainly gas/gld don't! I'd appreciate comments from anyone who has been through this gloop before. If nobody yells loudly, I'll probably commit this sometime tomorrow. R. * arm-tdep.h (enum arm_abi): New. (struct gdbarch_tdep): New. (LOWEST_PC): Define if not previously defined; use multi-arch tdep variable. * config/arm/tm-arm.h (LOWEST_PC): Delete. * config/arm/tm-nbsd.h (LOWEST_PC): Delete. * armnbsd-nat.c: Include regcache.h. * arm-tdep.c: Include elf/arm.h. (process_note_abi_tag_sections): New function. (get_elfosabi): New function. (arm_gdbarch_init): Try to determine the type of object we've been handed and set the ABI up appropriately. (arm_dump_tdep): Dump target-dependent data. (_initialize_arm_tdep): Register arm_dump_tdep. * Makefile.in (armnbsd-nat.c, arm-tdep.c): Update dependencies.