Ok, I think it's reached the point where I'd like to ask for formal approval. Included in this patch are some additional internal consistency checking points, and documentation updates. I also moved the inclusion of osabi.h into defs.h, since this stuff is somewhat tightly coupled to the whole gdbarch framework. * Makefile.in (SFILES): Add osabi.c. (defs_h): Add osabi.h. (COMMON_OBS): Add osabi.o. (osabi.o): New dependency list. * defs.h: Include osabi.h. * osabi.c: New file. * osabi.h: New file. * doc/gdbint.texinfo: Document new generic OS ABI framework. * alpha-tdep.c (alpha_abi_names, process_note_abi_tag_sections, get_elfosabi, alpha_abi_handler_list, alpha_gdbarch_register_os_abi): Remove. (alpha_gdbarch_init, alpha_dump_tdep): Use generic OS ABI framework. * alpha-tdep.h (alpha_abi): Remove. (gdbarch_tdep): Use generic OS ABI framework. * alpha-linux-tdep.c (_initialize_alpha_linux_tdep): Use gdbarch_register_osabi. * alpha-osf1-tdep.c (_initialize_alpha_osf1_tdep): Likewise. * alphafbsd-tdep.c (_initialize_alphafbsd_tdep): Likewise. * alphanbsd-tdep.c (_initialize_alphanbsd_tdep): Likewise. * config/sh/tm-sh.h (sh_osabi): Remove. (sh_abi, gdbarch_tdep, register enum): Move to... * sh-tdep.h: ...here. (gdbarch_tdep): Use generic OS ABI framework. * sh-tdep.c: Include sh-tdep.h. (sh_osabi_names, process_note_abi_tag_sections, sh_osabi_handler_list, sh_gdbarch_register_os_abi): Remove. (sh_gdbarch_init, sh_dump_tdep): Use generic OS ABI framework. * sh3-rom.c: Include sh-tdep.h. * shnbsd-tdep.c: Include sh-tdep.h. (_initialize_shnbsd_tdep): Use gdbarch_register_osabi. -- -- Jason R. Thorpe