mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
481695ed5f
These prototypes were required when compiling GDB as C but are not required for C++. gdb/ChangeLog: * aarch64-linux-nat.c: Remove _initialize_aarch64_linux_nat prototype. * aarch64-linux-tdep.c: Remove _initialize_aarch64_linux_tdep prototype. * aarch64-newlib-tdep.c: Remove _initialize_aarch64_newlib_tdep prototype. * aarch64-tdep.c: Remove _initialize_aarch64_tdep prototype. * ada-exp.y: Remove _initialize_ada_exp prototype. * ada-lang.c: Remove _initialize_ada_language prototype. * ada-tasks.c: Remove _initialize_tasks prototype. * addrmap.c: Remove _initialize_addrmap prototype. * agent.c: Remove _initialize_agent prototype. * aix-thread.c: Remove _initialize_aix_thread prototype. * alpha-bsd-nat.c: Remove _initialize_alphabsd_nat prototype. * alpha-linux-nat.c: Remove _initialize_alpha_linux_nat prototype. * alpha-linux-tdep.c: Remove _initialize_alpha_linux_tdep prototype. * alpha-nbsd-tdep.c: Remove _initialize_alphanbsd_tdep prototype. * alpha-obsd-tdep.c: Remove _initialize_alphaobsd_tdep prototype. * alpha-tdep.c: Remove _initialize_alpha_tdep prototype. * amd64-darwin-tdep.c: Remove _initialize_amd64_darwin_tdep prototype. * amd64-dicos-tdep.c: Remove _initialize_amd64_dicos_tdep prototype. * amd64-fbsd-nat.c: Remove _initialize_amd64fbsd_nat prototype. * amd64-fbsd-tdep.c: Remove _initialize_amd64fbsd_tdep prototype. * amd64-linux-nat.c: Remove _initialize_amd64_linux_nat prototype. * amd64-linux-tdep.c: Remove _initialize_amd64_linux_tdep prototype. * amd64-nbsd-nat.c: Remove _initialize_amd64nbsd_nat prototype. * amd64-nbsd-tdep.c: Remove _initialize_amd64nbsd_tdep prototype. * amd64-obsd-nat.c: Remove _initialize_amd64obsd_nat prototype. * amd64-obsd-tdep.c: Remove _initialize_amd64obsd_tdep prototype. * amd64-sol2-tdep.c: Remove _initialize_amd64_sol2_tdep prototype. * amd64-tdep.c: Remove _initialize_amd64_tdep prototype. * amd64-windows-nat.c: Remove _initialize_amd64_windows_nat prototype. * amd64-windows-tdep.c: Remove _initialize_amd64_windows_tdep prototype. * annotate.c: Remove _initialize_annotate prototype. * arc-newlib-tdep.c: Remove _initialize_arc_newlib_tdep prototype. * arc-tdep.c: Remove _initialize_arc_tdep prototype. * arch-utils.c: Remove _initialize_gdbarch_utils prototype. * arm-linux-nat.c: Remove _initialize_arm_linux_nat prototype. * arm-linux-tdep.c: Remove _initialize_arm_linux_tdep prototype. * arm-nbsd-tdep.c: Remove _initialize_arm_netbsd_tdep prototype. * arm-obsd-tdep.c: Remove _initialize_armobsd_tdep prototype. * arm-symbian-tdep.c: Remove _initialize_arm_symbian_tdep prototype. * arm-tdep.c: Remove _initialize_arm_tdep prototype. * arm-wince-tdep.c: Remove _initialize_arm_wince_tdep prototype. * auto-load.c: Remove _initialize_auto_load prototype. * auxv.c: Remove _initialize_auxv prototype. * avr-tdep.c: Remove _initialize_avr_tdep prototype. * ax-gdb.c: Remove _initialize_ax_gdb prototype. * bfin-linux-tdep.c: Remove _initialize_bfin_linux_tdep prototype. * bfin-tdep.c: Remove _initialize_bfin_tdep prototype. * break-catch-sig.c: Remove _initialize_break_catch_sig prototype. * break-catch-syscall.c: Remove _initialize_break_catch_syscall prototype. * break-catch-throw.c: Remove _initialize_break_catch_throw prototype. * breakpoint.c: Remove _initialize_breakpoint prototype. * bsd-uthread.c: Remove _initialize_bsd_uthread prototype. * btrace.c: Remove _initialize_btrace prototype. * charset.c: Remove _initialize_charset prototype. * cli/cli-cmds.c: Remove _initialize_cli_cmds prototype. * cli/cli-dump.c: Remove _initialize_cli_dump prototype. * cli/cli-interp.c: Remove _initialize_cli_interp prototype. * cli/cli-logging.c: Remove _initialize_cli_logging prototype. * cli/cli-script.c: Remove _initialize_cli_script prototype. * coff-pe-read.c: Remove _initialize_coff_pe_read prototype. * coffread.c: Remove _initialize_coffread prototype. * compile/compile.c: Remove _initialize_compile prototype. * complaints.c: Remove _initialize_complaints prototype. * completer.c: Remove _initialize_completer prototype. * copying.awk: Remove _initialize_copying prototype. * copying.c: Regenerate. * core-regset.c: Remove _initialize_core_regset prototype. * corefile.c: Remove _initialize_core prototype. * corelow.c: Remove _initialize_corelow prototype. * cp-abi.c: Remove _initialize_cp_abi prototype. * cp-namespace.c: Remove _initialize_cp_namespace prototype. * cp-support.c: Remove _initialize_cp_support prototype. * cp-valprint.c: Remove _initialize_cp_valprint prototype. * cris-linux-tdep.c: Remove _initialize_cris_linux_tdep prototype. * cris-tdep.c: Remove _initialize_cris_tdep prototype. * ctf.c: Remove _initialize_ctf prototype. * d-lang.c: Remove _initialize_d_language prototype. * darwin-nat-info.c: Remove _initialize_darwin_info_commands prototype. * darwin-nat.c: Remove _initialize_darwin_inferior prototype. * dbxread.c: Remove _initialize_dbxread prototype. * dcache.c: Remove _initialize_dcache prototype. * demangle.c: Remove _initialize_demangler prototype. * disasm-selftests.c: Remove _initialize_disasm_selftests prototype. * disasm.c: Remove _initialize_disasm prototype. * dtrace-probe.c: Remove _initialize_dtrace_probe prototype. * dummy-frame.c: Remove _initialize_dummy_frame prototype. * dwarf2-frame-tailcall.c: Remove _initialize_tailcall_frame prototype. * dwarf2-frame.c: Remove _initialize_dwarf2_frame prototype. * dwarf2expr.c: Remove _initialize_dwarf2expr prototype. * dwarf2loc.c: Remove _initialize_dwarf2loc prototype. * dwarf2read.c: Remove _initialize_dwarf2_read prototype. * elfread.c: Remove _initialize_elfread prototype. * exec.c: Remove _initialize_exec prototype. * extension.c: Remove _initialize_extension prototype. * f-lang.c: Remove _initialize_f_language prototype. * f-valprint.c: Remove _initialize_f_valprint prototype. * fbsd-nat.c: Remove _initialize_fbsd_nat prototype. * fbsd-tdep.c: Remove _initialize_fbsd_tdep prototype. * filesystem.c: Remove _initialize_filesystem prototype. * findcmd.c: Remove _initialize_mem_search prototype. * fork-child.c: Remove _initialize_fork_child prototype. * frame-base.c: Remove _initialize_frame_base prototype. * frame-unwind.c: Remove _initialize_frame_unwind prototype. * frame.c: Remove _initialize_frame prototype. * frv-linux-tdep.c: Remove _initialize_frv_linux_tdep prototype. * frv-tdep.c: Remove _initialize_frv_tdep prototype. * ft32-tdep.c: Remove _initialize_ft32_tdep prototype. * gcore.c: Remove _initialize_gcore prototype. * gdb_bfd.c: Remove _initialize_gdb_bfd prototype. * gdbarch.c: Regenerate. * gdbarch.sh: Remove _initialize_gdbarch prototype. * gdbtypes.c: Remove _initialize_gdbtypes prototype. * gnu-nat.c: Remove _initialize_gnu_nat prototype. * gnu-v2-abi.c: Remove _initialize_gnu_v2_abi prototype. * gnu-v3-abi.c: Remove _initialize_gnu_v3_abi prototype. * go-lang.c: Remove _initialize_go_language prototype. * go32-nat.c: Remove _initialize_go32_nat prototype. * guile/guile.c: Remove _initialize_guile prototype. * h8300-tdep.c: Remove _initialize_h8300_tdep prototype. * hppa-linux-nat.c: Remove _initialize_hppa_linux_nat prototype. * hppa-linux-tdep.c: Remove _initialize_hppa_linux_tdep prototype. * hppa-nbsd-nat.c: Remove _initialize_hppanbsd_nat prototype. * hppa-nbsd-tdep.c: Remove _initialize_hppanbsd_tdep prototype. * hppa-obsd-nat.c: Remove _initialize_hppaobsd_nat prototype. * hppa-obsd-tdep.c: Remove _initialize_hppaobsd_tdep prototype. * hppa-tdep.c: Remove _initialize_hppa_tdep prototype. * i386-bsd-nat.c: Remove _initialize_i386bsd_nat prototype. * i386-cygwin-tdep.c: Remove _initialize_i386_cygwin_tdep prototype. * i386-darwin-tdep.c: Remove _initialize_i386_darwin_tdep prototype. * i386-dicos-tdep.c: Remove _initialize_i386_dicos_tdep prototype. * i386-fbsd-nat.c: Remove _initialize_i386fbsd_nat prototype. * i386-fbsd-tdep.c: Remove _initialize_i386fbsd_tdep prototype. * i386-gnu-nat.c: Remove _initialize_i386gnu_nat prototype. * i386-gnu-tdep.c: Remove _initialize_i386gnu_tdep prototype. * i386-linux-nat.c: Remove _initialize_i386_linux_nat prototype. * i386-linux-tdep.c: Remove _initialize_i386_linux_tdep prototype. * i386-nbsd-nat.c: Remove _initialize_i386nbsd_nat prototype. * i386-nbsd-tdep.c: Remove _initialize_i386nbsd_tdep prototype. * i386-nto-tdep.c: Remove _initialize_i386nto_tdep prototype. * i386-obsd-nat.c: Remove _initialize_i386obsd_nat prototype. * i386-obsd-tdep.c: Remove _initialize_i386obsd_tdep prototype. * i386-sol2-nat.c: Remove _initialize_amd64_sol2_nat prototype. * i386-sol2-tdep.c: Remove _initialize_amd64_sol2_tdep prototype. * i386-tdep.c: Remove _initialize_i386_tdep prototype. * i386-windows-nat.c: Remove _initialize_i386_windows_nat prototype. * ia64-libunwind-tdep.c: Remove _initialize_libunwind_frame prototype. * ia64-linux-nat.c: Remove _initialize_ia64_linux_nat prototype. * ia64-linux-tdep.c: Remove _initialize_ia64_linux_tdep prototype. * ia64-tdep.c: Remove _initialize_ia64_tdep prototype. * ia64-vms-tdep.c: Remove _initialize_ia64_vms_tdep prototype. * infcall.c: Remove _initialize_infcall prototype. * infcmd.c: Remove _initialize_infcmd prototype. * inferior.c: Remove _initialize_inferiors prototype. * inflow.c: Remove _initialize_inflow prototype. * infrun.c: Remove _initialize_infrun prototype. * interps.c: Remove _initialize_interpreter prototype. * iq2000-tdep.c: Remove _initialize_iq2000_tdep prototype. * jit.c: Remove _initialize_jit prototype. * language.c: Remove _initialize_language prototype. * linux-fork.c: Remove _initialize_linux_fork prototype. * linux-nat.c: Remove _initialize_linux_nat prototype. * linux-tdep.c: Remove _initialize_linux_tdep prototype. * linux-thread-db.c: Remove _initialize_thread_db prototype. * lm32-tdep.c: Remove _initialize_lm32_tdep prototype. * m2-lang.c: Remove _initialize_m2_language prototype. * m32c-tdep.c: Remove _initialize_m32c_tdep prototype. * m32r-linux-nat.c: Remove _initialize_m32r_linux_nat prototype. * m32r-linux-tdep.c: Remove _initialize_m32r_linux_tdep prototype. * m32r-tdep.c: Remove _initialize_m32r_tdep prototype. * m68hc11-tdep.c: Remove _initialize_m68hc11_tdep prototype. * m68k-bsd-nat.c: Remove _initialize_m68kbsd_nat prototype. * m68k-bsd-tdep.c: Remove _initialize_m68kbsd_tdep prototype. * m68k-linux-nat.c: Remove _initialize_m68k_linux_tdep prototype. * m68k-linux-tdep.c: Remove _initialize_m68k_linux_tdep prototype. * m68k-tdep.c: Remove _initialize_m68k_tdep prototype. * m88k-bsd-nat.c: Remove _initialize_m68kbsd_nat prototype. * m88k-tdep.c: Remove _initialize_m68kbsd_tdep prototype. * machoread.c: Remove _initialize_machoread prototype. * macrocmd.c: Remove _initialize_macrocmd prototype. * macroscope.c: Remove _initialize_macroscope prototype. * maint.c: Remove _initialize_maint_cmds prototype. * mdebugread.c: Remove _initialize_mdebugread prototype. * memattr.c: Remove _initialize_mem prototype. * mep-tdep.c: Remove _initialize_mep_tdep prototype. * mi/mi-cmd-env.c: Remove _initialize_mi_cmd_env prototype. * mi/mi-cmds.c: Remove _initialize_mi_cmds prototype. * mi/mi-interp.c: Remove _initialize_mi_interp prototype. * mi/mi-main.c: Remove _initialize_mi_main prototype. * microblaze-linux-tdep.c: Remove _initialize_microblaze_linux_tdep prototype. * microblaze-tdep.c: Remove _initialize_microblaze_tdep prototype. * mips-fbsd-nat.c: Remove _initialize_mips_fbsd_nat prototype. * mips-fbsd-tdep.c: Remove _initialize_mips_fbsd_tdep prototype. * mips-linux-nat.c: Remove _initialize_mips_linux_nat prototype. * mips-linux-tdep.c: Remove _initialize_mips_linux_tdep prototype. * mips-nbsd-nat.c: Remove _initialize_mipsnbsd_nat prototype. * mips-nbsd-tdep.c: Remove _initialize_mipsnbsd_tdep prototype. * mips-sde-tdep.c: Remove _initialize_mips_sde_tdep prototype. * mips-tdep.c: Remove _initialize_mips_tdep prototype. * mips64-obsd-nat.c: Remove _initialize_mips64obsd_nat prototype. * mips64-obsd-tdep.c: Remove _initialize_mips64obsd_tdep prototype. * mipsread.c: Remove _initialize_mipsread prototype. * mn10300-linux-tdep.c: Remove _initialize_mn10300_linux_tdep prototype. * mn10300-tdep.c: Remove _initialize_mn10300_tdep prototype. * moxie-tdep.c: Remove _initialize_moxie_tdep prototype. * msp430-tdep.c: Remove _initialize_msp430_tdep prototype. * mt-tdep.c: Remove _initialize_mt_tdep prototype. * nds32-tdep.c: Remove _initialize_nds32_tdep prototype. * nios2-linux-tdep.c: Remove _initialize_nios2_linux_tdep prototype. * nios2-tdep.c: Remove _initialize_nios2_tdep prototype. * nto-procfs.c: Remove _initialize_procfs prototype. * nto-tdep.c: Remove _initialize_nto_tdep prototype. * objc-lang.c: Remove _initialize_objc_language prototype. * objfiles.c: Remove _initialize_objfiles prototype. * observer.c: Remove observer_test_first_notification_function, observer_test_second_notification_function, observer_test_third_notification_function, and _initialize_observer prototypes. * opencl-lang.c: Remove _initialize_opencl_language prototypes. * osabi.c: Remove _initialize_gdb_osabi prototype. * osdata.c: Remove _initialize_osdata prototype. * p-valprint.c: Remove _initialize_pascal_valprint prototype. * parse.c: Remove _initialize_parse prototype. * ppc-fbsd-nat.c: Remove _initialize_ppcfbsd_nat prototype. * ppc-fbsd-tdep.c: Remove _initialize_ppcfbsd_tdep prototype. * ppc-linux-nat.c: Remove _initialize_ppc_linux_nat prototype. * ppc-linux-tdep.c: Remove _initialize_ppc_linux_tdep prototype. * ppc-nbsd-nat.c: Remove _initialize_ppcnbsd_nat prototype. * ppc-nbsd-tdep.c: Remove _initialize_ppcnbsd_tdep prototype. * ppc-obsd-nat.c: Remove _initialize_ppcobsd_nat prototype. * ppc-obsd-tdep.c: Remove _initialize_ppcobsd_tdep prototype. * printcmd.c: Remove _initialize_printcmd prototype. * probe.c: Remove _initialize_probe prototype. * proc-api.c: Remove _initialize_proc_api prototype. * proc-events.c: Remove _initialize_proc_events prototype. * proc-service.c: Remove _initialize_proc_service prototype. * procfs.c: Remove _initialize_procfs prototype. * psymtab.c: Remove _initialize_psymtab prototype. * python/python.c: Remove _initialize_python prototype. * ravenscar-thread.c: Remove _initialize_ravenscar prototype. * record-btrace.c: Remove _initialize_record_btrace prototype. * record-full.c: Remove _initialize_record_full prototype. * record.c: Remove _initialize_record prototype. * regcache.c: Remove _initialize_regcache prototype. * reggroups.c: Remove _initialize_reggroup prototype. * remote-notif.c: Remove _initialize_notif prototype. * remote-sim.c: Remove _initialize_remote_sim prototype. * remote.c: Remove _initialize_remote prototype. * reverse.c: Remove _initialize_reverse prototype. * rl78-tdep.c: Remove _initialize_rl78_tdep prototype. * rs6000-aix-tdep.c: Remove _initialize_rs6000_aix_tdep prototype. * rs6000-lynx178-tdep.c: Remove _initialize_rs6000_lynx178_tdep prototype. * rs6000-nat.c: Remove _initialize_rs6000_nat prototype. * rs6000-tdep.c: Remove _initialize_rs6000_tdep prototype. * rust-exp.y: Remove _initialize_rust_exp prototype. * rx-tdep.c: Remove _initialize_rx_tdep prototype. * s390-linux-nat.c: Remove _initialize_s390_nat prototype. * s390-linux-tdep.c: Remove _initialize_s390_tdep prototype. * score-tdep.c: Remove _initialize_score_tdep prototype. * selftest-arch.c: Remove _initialize_selftests_foreach_arch prototype. * ser-go32.c: Remove _initialize_ser_dos prototype. * ser-mingw.c: Remove _initialize_ser_windows prototype. * ser-pipe.c: Remove _initialize_ser_pipe prototype. * ser-tcp.c: Remove _initialize_ser_tcp prototype. * ser-unix.c: Remove _initialize_ser_hardwire prototype. * serial.c: Remove _initialize_serial prototype. * sh-linux-tdep.c: Remove _initialize_sh_linux_tdep prototype. * sh-nbsd-nat.c: Remove _initialize_shnbsd_nat prototype. * sh-nbsd-tdep.c: Remove _initialize_shnbsd_tdep prototype. * sh-tdep.c: Remove _initialize_sh_tdep prototype. * skip.c: Remove _initialize_step_skip prototype. * sol-thread.c: Remove _initialize_sol_thread prototype. * solib-aix.c: Remove _initialize_solib_aix prototype. * solib-darwin.c: Remove _initialize_darwin_solib prototype. * solib-dsbt.c: Remove _initialize_dsbt_solib prototype. * solib-frv.c: Remove _initialize_frv_solib prototype. * solib-spu.c: Remove _initialize_spu_solib prototype. * solib-svr4.c: Remove _initialize_svr4_solib prototype. * solib-target.c: Remove _initialize_solib_target prototype. * solib.c: Remove _initialize_solib prototype. * source.c: Remove _initialize_source prototype. * sparc-linux-nat.c: Remove _initialize_sparc_linux_nat prototype. * sparc-linux-tdep.c: Remove _initialize_sparc_linux_tdep prototype. * sparc-nat.c: Remove _initialize_sparc_nat prototype. * sparc-nbsd-nat.c: Remove _initialize_sparcnbsd_nat prototype. * sparc-nbsd-tdep.c: Remove _initialize_sparcnbsd_tdep prototype. * sparc-obsd-tdep.c: Remove _initialize_sparc32obsd_tdep prototype. * sparc-sol2-nat.c: Remove _initialize_sparc_sol2_nat prototype. * sparc-sol2-tdep.c: Remove _initialize_sparc_sol2_tdep prototype. * sparc-tdep.c: Remove _initialize_sparc_tdep prototype. * sparc64-fbsd-nat.c: Remove _initialize_sparc64fbsd_nat prototype. * sparc64-fbsd-tdep.c: Remove _initialize_sparc64fbsd_tdep prototype. * sparc64-linux-nat.c: Remove _initialize_sparc64_linux_nat prototype. * sparc64-linux-tdep.c: Remove _initialize_sparc64_linux_tdep prototype. * sparc64-nat.c: Remove _initialize_sparc64_nat prototype. * sparc64-nbsd-nat.c: Remove _initialize_sparc64nbsd_nat prototype. * sparc64-nbsd-tdep.c: Remove _initialize_sparc64nbsd_tdep prototype. * sparc64-obsd-nat.c: Remove _initialize_sparc64obsd_nat prototype. * sparc64-obsd-tdep.c: Remove _initialize_sparc64obsd_tdep prototype. * sparc64-sol2-tdep.c: Remove _initialize_sparc64_sol2_tdep prototype. * spu-linux-nat.c: Remove _initialize_spu_nat prototype. * spu-multiarch.c: Remove _initialize_spu_multiarch prototype. * spu-tdep.c: Remove _initialize_spu_tdep prototype. * stabsread.c: Remove _initialize_stabsread prototype. * stack.c: Remove _initialize_stack prototype. * stap-probe.c: Remove _initialize_stap_probe prototype. * std-regs.c: Remove _initialize_frame_reg prototype. * symfile-debug.c: Remove _initialize_symfile_debug prototype. * symfile-mem.c: Remove _initialize_symfile_mem prototype. * symfile.c: Remove _initialize_symfile prototype. * symmisc.c: Remove _initialize_symmisc prototype. * symtab.c: Remove _initialize_symtab prototype. * target-dcache.c: Remove _initialize_target_dcache prototype. * target-descriptions.c: Remove _initialize_target_descriptions prototype. * thread.c: Remove _initialize_thread prototype. * tic6x-linux-tdep.c: Remove _initialize_tic6x_linux_tdep prototype. * tic6x-tdep.c: Remove _initialize_tic6x_tdep prototype. * tilegx-linux-nat.c: Remove _initialize_tile_linux_nat prototype. * tilegx-linux-tdep.c: Remove _initialize_tilegx_linux_tdep prototype. * tilegx-tdep.c: Remove _initialize_tilegx_tdep prototype. * tracefile-tfile.c: Remove _initialize_tracefile_tfile prototype. * tracefile.c: Remove _initialize_tracefile prototype. * tracepoint.c: Remove _initialize_tracepoint prototype. * tui/tui-hooks.c: Remove _initialize_tui_hooks prototype. * tui/tui-interp.c: Remove _initialize_tui_interp prototype. * tui/tui-layout.c: Remove _initialize_tui_layout prototype. * tui/tui-regs.c: Remove _initialize_tui_regs prototype. * tui/tui-stack.c: Remove _initialize_tui_stack prototype. * tui/tui-win.c: Remove _initialize_tui_win prototype. * tui/tui.c: Remove _initialize_tui prototype. * typeprint.c: Remove _initialize_typeprint prototype. * user-regs.c: Remove _initialize_user_regs prototype. * utils.c: Remove _initialize_utils prototype. * v850-tdep.c: Remove _initialize_v850_tdep prototype. * valarith.c: Remove _initialize_valarith prototype. * valops.c: Remove _initialize_valops prototype. * valprint.c: Remove _initialize_valprint prototype. * value.c: Remove _initialize_values prototype. * varobj.c: Remove _initialize_varobj prototype. * vax-bsd-nat.c: Remove _initialize_vaxbsd_nat prototype. * vax-nbsd-tdep.c: Remove _initialize_vaxnbsd_tdep prototype. * vax-tdep.c: Remove _initialize_vax_tdep prototype. * windows-nat.c: Remove _initialize_windows_nat, _initialize_check_for_gdb_ini, and _initialize_loadable prototypes. * windows-tdep.c: Remove _initialize_windows_tdep prototype. * xcoffread.c: Remove _initialize_xcoffread prototype. * xml-support.c: Remove _initialize_xml_support prototype. * xstormy16-tdep.c: Remove _initialize_xstormy16_tdep prototype. * xtensa-linux-nat.c: Remove _initialize_xtensa_linux_nat prototype. * xtensa-linux-tdep.c: Remove _initialize_xtensa_linux_tdep prototype. * xtensa-tdep.c: Remove _initialize_xtensa_tdep prototype.
678 lines
20 KiB
C
678 lines
20 KiB
C
/* Go language support routines for GDB, the GNU debugger.
|
|
|
|
Copyright (C) 2012-2017 Free Software Foundation, Inc.
|
|
|
|
This file is part of GDB.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
/* TODO:
|
|
- split stacks
|
|
- printing of native types
|
|
- goroutines
|
|
- lots more
|
|
- gccgo mangling needs redoing
|
|
It's too hard, for example, to know whether one is looking at a mangled
|
|
Go symbol or not, and their are ambiguities, e.g., the demangler may
|
|
get passed *any* symbol, including symbols from other languages
|
|
and including symbols that are already demangled.
|
|
One thought is to at least add an _G prefix.
|
|
- 6g mangling isn't supported yet
|
|
*/
|
|
|
|
#include "defs.h"
|
|
#include "gdb_obstack.h"
|
|
#include "block.h"
|
|
#include "symtab.h"
|
|
#include "language.h"
|
|
#include "varobj.h"
|
|
#include "go-lang.h"
|
|
#include "c-lang.h"
|
|
#include "parser-defs.h"
|
|
|
|
#include <ctype.h>
|
|
|
|
/* The main function in the main package. */
|
|
static const char GO_MAIN_MAIN[] = "main.main";
|
|
|
|
/* Function returning the special symbol name used by Go for the main
|
|
procedure in the main program if it is found in minimal symbol list.
|
|
This function tries to find minimal symbols so that it finds them even
|
|
if the program was compiled without debugging information. */
|
|
|
|
const char *
|
|
go_main_name (void)
|
|
{
|
|
struct bound_minimal_symbol msym;
|
|
|
|
msym = lookup_minimal_symbol (GO_MAIN_MAIN, NULL, NULL);
|
|
if (msym.minsym != NULL)
|
|
return GO_MAIN_MAIN;
|
|
|
|
/* No known entry procedure found, the main program is probably not Go. */
|
|
return NULL;
|
|
}
|
|
|
|
/* Return non-zero if TYPE is a gccgo string.
|
|
We assume CHECK_TYPEDEF has already been done. */
|
|
|
|
static int
|
|
gccgo_string_p (struct type *type)
|
|
{
|
|
/* gccgo strings don't necessarily have a name we can use. */
|
|
|
|
if (TYPE_NFIELDS (type) == 2)
|
|
{
|
|
struct type *type0 = TYPE_FIELD_TYPE (type, 0);
|
|
struct type *type1 = TYPE_FIELD_TYPE (type, 1);
|
|
|
|
type0 = check_typedef (type0);
|
|
type1 = check_typedef (type1);
|
|
|
|
if (TYPE_CODE (type0) == TYPE_CODE_PTR
|
|
&& strcmp (TYPE_FIELD_NAME (type, 0), "__data") == 0
|
|
&& TYPE_CODE (type1) == TYPE_CODE_INT
|
|
&& strcmp (TYPE_FIELD_NAME (type, 1), "__length") == 0)
|
|
{
|
|
struct type *target_type = TYPE_TARGET_TYPE (type0);
|
|
|
|
target_type = check_typedef (target_type);
|
|
|
|
if (TYPE_CODE (target_type) == TYPE_CODE_INT
|
|
&& TYPE_LENGTH (target_type) == 1
|
|
&& strcmp (TYPE_NAME (target_type), "uint8") == 0)
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* Return non-zero if TYPE is a 6g string.
|
|
We assume CHECK_TYPEDEF has already been done. */
|
|
|
|
static int
|
|
sixg_string_p (struct type *type)
|
|
{
|
|
if (TYPE_NFIELDS (type) == 2
|
|
&& TYPE_TAG_NAME (type) != NULL
|
|
&& strcmp (TYPE_TAG_NAME (type), "string") == 0)
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* Classify the kind of Go object that TYPE is.
|
|
TYPE is a TYPE_CODE_STRUCT, used to represent a Go object. */
|
|
|
|
enum go_type
|
|
go_classify_struct_type (struct type *type)
|
|
{
|
|
type = check_typedef (type);
|
|
|
|
/* Recognize strings as they're useful to be able to print without
|
|
pretty-printers. */
|
|
if (gccgo_string_p (type)
|
|
|| sixg_string_p (type))
|
|
return GO_TYPE_STRING;
|
|
|
|
return GO_TYPE_NONE;
|
|
}
|
|
|
|
/* Subroutine of unpack_mangled_go_symbol to simplify it.
|
|
Given "[foo.]bar.baz", store "bar" in *PACKAGEP and "baz" in *OBJECTP.
|
|
We stomp on the last '.' to nul-terminate "bar".
|
|
The caller is responsible for memory management. */
|
|
|
|
static void
|
|
unpack_package_and_object (char *buf,
|
|
const char **packagep, const char **objectp)
|
|
{
|
|
char *last_dot;
|
|
|
|
last_dot = strrchr (buf, '.');
|
|
gdb_assert (last_dot != NULL);
|
|
*objectp = last_dot + 1;
|
|
*last_dot = '\0';
|
|
last_dot = strrchr (buf, '.');
|
|
if (last_dot != NULL)
|
|
*packagep = last_dot + 1;
|
|
else
|
|
*packagep = buf;
|
|
}
|
|
|
|
/* Given a mangled Go symbol, find its package name, object name, and
|
|
method type (if present).
|
|
E.g., for "libgo_net.textproto.String.N33_libgo_net.textproto.ProtocolError"
|
|
*PACKAGEP = "textproto"
|
|
*OBJECTP = "String"
|
|
*METHOD_TYPE_PACKAGEP = "textproto"
|
|
*METHOD_TYPE_OBJECTP = "ProtocolError"
|
|
|
|
Space for the resulting strings is malloc'd in one buffer.
|
|
PACKAGEP,OBJECTP,METHOD_TYPE* will (typically) point into this buffer.
|
|
[There are a few exceptions, but the caller is still responsible for
|
|
freeing the resulting pointer.]
|
|
A pointer to this buffer is returned, or NULL if symbol isn't a
|
|
mangled Go symbol.
|
|
The caller is responsible for freeing the result.
|
|
|
|
*METHOD_TYPE_IS_POINTERP is set to a boolean indicating if
|
|
the method type is a pointer.
|
|
|
|
There may be value in returning the outer container,
|
|
i.e., "net" in the above example, but for now it's not needed.
|
|
Plus it's currently not straightforward to compute,
|
|
it comes from -fgo-prefix, and there's no algorithm to compute it.
|
|
|
|
If we ever need to unpack the method type, this routine should work
|
|
for that too. */
|
|
|
|
static char *
|
|
unpack_mangled_go_symbol (const char *mangled_name,
|
|
const char **packagep,
|
|
const char **objectp,
|
|
const char **method_type_packagep,
|
|
const char **method_type_objectp,
|
|
int *method_type_is_pointerp)
|
|
{
|
|
char *buf;
|
|
char *p;
|
|
int len = strlen (mangled_name);
|
|
/* Pointer to last digit in "N<digit(s)>_". */
|
|
char *saw_digit;
|
|
/* Pointer to "N" if valid "N<digit(s)>_" found. */
|
|
char *method_type;
|
|
/* Pointer to the first '.'. */
|
|
const char *first_dot;
|
|
/* Pointer to the last '.'. */
|
|
const char *last_dot;
|
|
/* Non-zero if we saw a pointer indicator. */
|
|
int saw_pointer;
|
|
|
|
*packagep = *objectp = NULL;
|
|
*method_type_packagep = *method_type_objectp = NULL;
|
|
*method_type_is_pointerp = 0;
|
|
|
|
/* main.init is mangled specially. */
|
|
if (strcmp (mangled_name, "__go_init_main") == 0)
|
|
{
|
|
char *package = xstrdup ("main");
|
|
|
|
*packagep = package;
|
|
*objectp = "init";
|
|
return package;
|
|
}
|
|
|
|
/* main.main is mangled specially (missing prefix). */
|
|
if (strcmp (mangled_name, "main.main") == 0)
|
|
{
|
|
char *package = xstrdup ("main");
|
|
|
|
*packagep = package;
|
|
*objectp = "main";
|
|
return package;
|
|
}
|
|
|
|
/* We may get passed, e.g., "main.T.Foo", which is *not* mangled.
|
|
Alas it looks exactly like "prefix.package.object."
|
|
To cope for now we only recognize the following prefixes:
|
|
|
|
go: the default
|
|
libgo_.*: used by gccgo's runtime
|
|
|
|
Thus we don't support -fgo-prefix (except as used by the runtime). */
|
|
if (!startswith (mangled_name, "go.")
|
|
&& !startswith (mangled_name, "libgo_"))
|
|
return NULL;
|
|
|
|
/* Quick check for whether a search may be fruitful. */
|
|
/* Ignore anything with @plt, etc. in it. */
|
|
if (strchr (mangled_name, '@') != NULL)
|
|
return NULL;
|
|
/* It must have at least two dots. */
|
|
first_dot = strchr (mangled_name, '.');
|
|
if (first_dot == NULL)
|
|
return NULL;
|
|
/* Treat "foo.bar" as unmangled. It can collide with lots of other
|
|
languages and it's not clear what the consequences are.
|
|
And except for main.main, all gccgo symbols are at least
|
|
prefix.package.object. */
|
|
last_dot = strrchr (mangled_name, '.');
|
|
if (last_dot == first_dot)
|
|
return NULL;
|
|
|
|
/* More quick checks. */
|
|
if (last_dot[1] == '\0' /* foo. */
|
|
|| last_dot[-1] == '.') /* foo..bar */
|
|
return NULL;
|
|
|
|
/* At this point we've decided we have a mangled Go symbol. */
|
|
|
|
buf = xstrdup (mangled_name);
|
|
|
|
/* Search backwards looking for "N<digit(s)>". */
|
|
p = buf + len;
|
|
saw_digit = method_type = NULL;
|
|
saw_pointer = 0;
|
|
while (p > buf)
|
|
{
|
|
int current = *(const unsigned char *) --p;
|
|
int current_is_digit = isdigit (current);
|
|
|
|
if (saw_digit)
|
|
{
|
|
if (current_is_digit)
|
|
continue;
|
|
if (current == 'N'
|
|
&& ((p > buf && p[-1] == '.')
|
|
|| (p > buf + 1 && p[-1] == 'p' && p[-2] == '.')))
|
|
{
|
|
if (atoi (p + 1) == strlen (saw_digit + 2))
|
|
{
|
|
if (p[-1] == '.')
|
|
method_type = p - 1;
|
|
else
|
|
{
|
|
gdb_assert (p[-1] == 'p');
|
|
saw_pointer = 1;
|
|
method_type = p - 2;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
/* Not what we're looking for, reset and keep looking. */
|
|
saw_digit = NULL;
|
|
saw_pointer = 0;
|
|
continue;
|
|
}
|
|
if (current_is_digit && p[1] == '_')
|
|
{
|
|
/* Possible start of method "this" [sic] type. */
|
|
saw_digit = p;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if (method_type != NULL
|
|
/* Ensure not something like "..foo". */
|
|
&& (method_type > buf && method_type[-1] != '.'))
|
|
{
|
|
unpack_package_and_object (saw_digit + 2,
|
|
method_type_packagep, method_type_objectp);
|
|
*method_type = '\0';
|
|
*method_type_is_pointerp = saw_pointer;
|
|
}
|
|
|
|
unpack_package_and_object (buf, packagep, objectp);
|
|
return buf;
|
|
}
|
|
|
|
/* Implements the la_demangle language_defn routine for language Go.
|
|
|
|
N.B. This may get passed *any* symbol, including symbols from other
|
|
languages and including symbols that are already demangled.
|
|
Both of these situations are kinda unfortunate, but that's how things
|
|
are today.
|
|
|
|
N.B. This currently only supports gccgo's mangling.
|
|
|
|
N.B. gccgo's mangling needs, I think, changing.
|
|
This demangler can't work in all situations,
|
|
thus not too much effort is currently put into it. */
|
|
|
|
char *
|
|
go_demangle (const char *mangled_name, int options)
|
|
{
|
|
struct obstack tempbuf;
|
|
char *result;
|
|
char *name_buf;
|
|
const char *package_name;
|
|
const char *object_name;
|
|
const char *method_type_package_name;
|
|
const char *method_type_object_name;
|
|
int method_type_is_pointer;
|
|
|
|
if (mangled_name == NULL)
|
|
return NULL;
|
|
|
|
name_buf = unpack_mangled_go_symbol (mangled_name,
|
|
&package_name, &object_name,
|
|
&method_type_package_name,
|
|
&method_type_object_name,
|
|
&method_type_is_pointer);
|
|
if (name_buf == NULL)
|
|
return NULL;
|
|
|
|
obstack_init (&tempbuf);
|
|
|
|
/* Print methods as they appear in "method expressions". */
|
|
if (method_type_package_name != NULL)
|
|
{
|
|
/* FIXME: Seems like we should include package_name here somewhere. */
|
|
if (method_type_is_pointer)
|
|
obstack_grow_str (&tempbuf, "(*");
|
|
obstack_grow_str (&tempbuf, method_type_package_name);
|
|
obstack_grow_str (&tempbuf, ".");
|
|
obstack_grow_str (&tempbuf, method_type_object_name);
|
|
if (method_type_is_pointer)
|
|
obstack_grow_str (&tempbuf, ")");
|
|
obstack_grow_str (&tempbuf, ".");
|
|
obstack_grow_str (&tempbuf, object_name);
|
|
}
|
|
else
|
|
{
|
|
obstack_grow_str (&tempbuf, package_name);
|
|
obstack_grow_str (&tempbuf, ".");
|
|
obstack_grow_str (&tempbuf, object_name);
|
|
}
|
|
obstack_grow_str0 (&tempbuf, "");
|
|
|
|
result = xstrdup ((const char *) obstack_finish (&tempbuf));
|
|
obstack_free (&tempbuf, NULL);
|
|
xfree (name_buf);
|
|
return result;
|
|
}
|
|
|
|
/* la_sniff_from_mangled_name for Go. */
|
|
|
|
static int
|
|
go_sniff_from_mangled_name (const char *mangled, char **demangled)
|
|
{
|
|
*demangled = go_demangle (mangled, 0);
|
|
return *demangled != NULL;
|
|
}
|
|
|
|
/* Given a Go symbol, return its package or NULL if unknown.
|
|
Space for the result is malloc'd, caller must free. */
|
|
|
|
char *
|
|
go_symbol_package_name (const struct symbol *sym)
|
|
{
|
|
const char *mangled_name = SYMBOL_LINKAGE_NAME (sym);
|
|
const char *package_name;
|
|
const char *object_name;
|
|
const char *method_type_package_name;
|
|
const char *method_type_object_name;
|
|
int method_type_is_pointer;
|
|
char *name_buf;
|
|
char *result;
|
|
|
|
gdb_assert (SYMBOL_LANGUAGE (sym) == language_go);
|
|
name_buf = unpack_mangled_go_symbol (mangled_name,
|
|
&package_name, &object_name,
|
|
&method_type_package_name,
|
|
&method_type_object_name,
|
|
&method_type_is_pointer);
|
|
/* Some Go symbols don't have mangled form we interpret (yet). */
|
|
if (name_buf == NULL)
|
|
return NULL;
|
|
result = xstrdup (package_name);
|
|
xfree (name_buf);
|
|
return result;
|
|
}
|
|
|
|
/* Return the package that BLOCK is in, or NULL if there isn't one.
|
|
Space for the result is malloc'd, caller must free. */
|
|
|
|
char *
|
|
go_block_package_name (const struct block *block)
|
|
{
|
|
while (block != NULL)
|
|
{
|
|
struct symbol *function = BLOCK_FUNCTION (block);
|
|
|
|
if (function != NULL)
|
|
{
|
|
char *package_name = go_symbol_package_name (function);
|
|
|
|
if (package_name != NULL)
|
|
return package_name;
|
|
|
|
/* Stop looking if we find a function without a package name.
|
|
We're most likely outside of Go and thus the concept of the
|
|
"current" package is gone. */
|
|
return NULL;
|
|
}
|
|
|
|
block = BLOCK_SUPERBLOCK (block);
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
/* Table mapping opcodes into strings for printing operators
|
|
and precedences of the operators.
|
|
TODO(dje): &^ ? */
|
|
|
|
static const struct op_print go_op_print_tab[] =
|
|
{
|
|
{",", BINOP_COMMA, PREC_COMMA, 0},
|
|
{"=", BINOP_ASSIGN, PREC_ASSIGN, 1},
|
|
{"||", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
|
|
{"&&", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
|
|
{"|", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
|
|
{"^", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
|
|
{"&", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
|
|
{"==", BINOP_EQUAL, PREC_EQUAL, 0},
|
|
{"!=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
|
|
{"<=", BINOP_LEQ, PREC_ORDER, 0},
|
|
{">=", BINOP_GEQ, PREC_ORDER, 0},
|
|
{">", BINOP_GTR, PREC_ORDER, 0},
|
|
{"<", BINOP_LESS, PREC_ORDER, 0},
|
|
{">>", BINOP_RSH, PREC_SHIFT, 0},
|
|
{"<<", BINOP_LSH, PREC_SHIFT, 0},
|
|
{"+", BINOP_ADD, PREC_ADD, 0},
|
|
{"-", BINOP_SUB, PREC_ADD, 0},
|
|
{"*", BINOP_MUL, PREC_MUL, 0},
|
|
{"/", BINOP_DIV, PREC_MUL, 0},
|
|
{"%", BINOP_REM, PREC_MUL, 0},
|
|
{"@", BINOP_REPEAT, PREC_REPEAT, 0},
|
|
{"-", UNOP_NEG, PREC_PREFIX, 0},
|
|
{"!", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
|
|
{"^", UNOP_COMPLEMENT, PREC_PREFIX, 0},
|
|
{"*", UNOP_IND, PREC_PREFIX, 0},
|
|
{"&", UNOP_ADDR, PREC_PREFIX, 0},
|
|
{"unsafe.Sizeof ", UNOP_SIZEOF, PREC_PREFIX, 0},
|
|
{"++", UNOP_POSTINCREMENT, PREC_SUFFIX, 0},
|
|
{"--", UNOP_POSTDECREMENT, PREC_SUFFIX, 0},
|
|
{NULL, OP_NULL, PREC_SUFFIX, 0}
|
|
};
|
|
|
|
enum go_primitive_types {
|
|
go_primitive_type_void,
|
|
go_primitive_type_char,
|
|
go_primitive_type_bool,
|
|
go_primitive_type_int,
|
|
go_primitive_type_uint,
|
|
go_primitive_type_uintptr,
|
|
go_primitive_type_int8,
|
|
go_primitive_type_int16,
|
|
go_primitive_type_int32,
|
|
go_primitive_type_int64,
|
|
go_primitive_type_uint8,
|
|
go_primitive_type_uint16,
|
|
go_primitive_type_uint32,
|
|
go_primitive_type_uint64,
|
|
go_primitive_type_float32,
|
|
go_primitive_type_float64,
|
|
go_primitive_type_complex64,
|
|
go_primitive_type_complex128,
|
|
nr_go_primitive_types
|
|
};
|
|
|
|
static void
|
|
go_language_arch_info (struct gdbarch *gdbarch,
|
|
struct language_arch_info *lai)
|
|
{
|
|
const struct builtin_go_type *builtin = builtin_go_type (gdbarch);
|
|
|
|
lai->string_char_type = builtin->builtin_char;
|
|
|
|
lai->primitive_type_vector
|
|
= GDBARCH_OBSTACK_CALLOC (gdbarch, nr_go_primitive_types + 1,
|
|
struct type *);
|
|
|
|
lai->primitive_type_vector [go_primitive_type_void]
|
|
= builtin->builtin_void;
|
|
lai->primitive_type_vector [go_primitive_type_char]
|
|
= builtin->builtin_char;
|
|
lai->primitive_type_vector [go_primitive_type_bool]
|
|
= builtin->builtin_bool;
|
|
lai->primitive_type_vector [go_primitive_type_int]
|
|
= builtin->builtin_int;
|
|
lai->primitive_type_vector [go_primitive_type_uint]
|
|
= builtin->builtin_uint;
|
|
lai->primitive_type_vector [go_primitive_type_uintptr]
|
|
= builtin->builtin_uintptr;
|
|
lai->primitive_type_vector [go_primitive_type_int8]
|
|
= builtin->builtin_int8;
|
|
lai->primitive_type_vector [go_primitive_type_int16]
|
|
= builtin->builtin_int16;
|
|
lai->primitive_type_vector [go_primitive_type_int32]
|
|
= builtin->builtin_int32;
|
|
lai->primitive_type_vector [go_primitive_type_int64]
|
|
= builtin->builtin_int64;
|
|
lai->primitive_type_vector [go_primitive_type_uint8]
|
|
= builtin->builtin_uint8;
|
|
lai->primitive_type_vector [go_primitive_type_uint16]
|
|
= builtin->builtin_uint16;
|
|
lai->primitive_type_vector [go_primitive_type_uint32]
|
|
= builtin->builtin_uint32;
|
|
lai->primitive_type_vector [go_primitive_type_uint64]
|
|
= builtin->builtin_uint64;
|
|
lai->primitive_type_vector [go_primitive_type_float32]
|
|
= builtin->builtin_float32;
|
|
lai->primitive_type_vector [go_primitive_type_float64]
|
|
= builtin->builtin_float64;
|
|
lai->primitive_type_vector [go_primitive_type_complex64]
|
|
= builtin->builtin_complex64;
|
|
lai->primitive_type_vector [go_primitive_type_complex128]
|
|
= builtin->builtin_complex128;
|
|
|
|
lai->bool_type_symbol = "bool";
|
|
lai->bool_type_default = builtin->builtin_bool;
|
|
}
|
|
|
|
extern const struct language_defn go_language_defn =
|
|
{
|
|
"go",
|
|
"Go",
|
|
language_go,
|
|
range_check_off,
|
|
case_sensitive_on,
|
|
array_row_major,
|
|
macro_expansion_no,
|
|
NULL,
|
|
&exp_descriptor_c,
|
|
go_parse,
|
|
go_yyerror,
|
|
null_post_parser,
|
|
c_printchar, /* Print a character constant. */
|
|
c_printstr, /* Function to print string constant. */
|
|
c_emit_char, /* Print a single char. */
|
|
go_print_type, /* Print a type using appropriate syntax. */
|
|
c_print_typedef, /* Print a typedef using appropriate
|
|
syntax. */
|
|
go_val_print, /* Print a value using appropriate syntax. */
|
|
c_value_print, /* Print a top-level value. */
|
|
default_read_var_value, /* la_read_var_value */
|
|
NULL, /* Language specific skip_trampoline. */
|
|
NULL, /* name_of_this */
|
|
basic_lookup_symbol_nonlocal,
|
|
basic_lookup_transparent_type,
|
|
go_demangle, /* Language specific symbol demangler. */
|
|
go_sniff_from_mangled_name,
|
|
NULL, /* Language specific
|
|
class_name_from_physname. */
|
|
go_op_print_tab, /* Expression operators for printing. */
|
|
1, /* C-style arrays. */
|
|
0, /* String lower bound. */
|
|
default_word_break_characters,
|
|
default_collect_symbol_completion_matches,
|
|
go_language_arch_info,
|
|
default_print_array_index,
|
|
default_pass_by_reference,
|
|
c_get_string,
|
|
c_watch_location_expression,
|
|
NULL, /* la_get_symbol_name_cmp */
|
|
iterate_over_symbols,
|
|
&default_varobj_ops,
|
|
NULL,
|
|
NULL,
|
|
LANG_MAGIC
|
|
};
|
|
|
|
static void *
|
|
build_go_types (struct gdbarch *gdbarch)
|
|
{
|
|
struct builtin_go_type *builtin_go_type
|
|
= GDBARCH_OBSTACK_ZALLOC (gdbarch, struct builtin_go_type);
|
|
|
|
builtin_go_type->builtin_void
|
|
= arch_type (gdbarch, TYPE_CODE_VOID, 1, "void");
|
|
builtin_go_type->builtin_char
|
|
= arch_character_type (gdbarch, 8, 1, "char");
|
|
builtin_go_type->builtin_bool
|
|
= arch_boolean_type (gdbarch, 8, 0, "bool");
|
|
builtin_go_type->builtin_int
|
|
= arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch), 0, "int");
|
|
builtin_go_type->builtin_uint
|
|
= arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch), 1, "uint");
|
|
builtin_go_type->builtin_uintptr
|
|
= arch_integer_type (gdbarch, gdbarch_ptr_bit (gdbarch), 1, "uintptr");
|
|
builtin_go_type->builtin_int8
|
|
= arch_integer_type (gdbarch, 8, 0, "int8");
|
|
builtin_go_type->builtin_int16
|
|
= arch_integer_type (gdbarch, 16, 0, "int16");
|
|
builtin_go_type->builtin_int32
|
|
= arch_integer_type (gdbarch, 32, 0, "int32");
|
|
builtin_go_type->builtin_int64
|
|
= arch_integer_type (gdbarch, 64, 0, "int64");
|
|
builtin_go_type->builtin_uint8
|
|
= arch_integer_type (gdbarch, 8, 1, "uint8");
|
|
builtin_go_type->builtin_uint16
|
|
= arch_integer_type (gdbarch, 16, 1, "uint16");
|
|
builtin_go_type->builtin_uint32
|
|
= arch_integer_type (gdbarch, 32, 1, "uint32");
|
|
builtin_go_type->builtin_uint64
|
|
= arch_integer_type (gdbarch, 64, 1, "uint64");
|
|
builtin_go_type->builtin_float32
|
|
= arch_float_type (gdbarch, 32, "float32", floatformats_ieee_single);
|
|
builtin_go_type->builtin_float64
|
|
= arch_float_type (gdbarch, 64, "float64", floatformats_ieee_double);
|
|
builtin_go_type->builtin_complex64
|
|
= arch_complex_type (gdbarch, "complex64",
|
|
builtin_go_type->builtin_float32);
|
|
builtin_go_type->builtin_complex128
|
|
= arch_complex_type (gdbarch, "complex128",
|
|
builtin_go_type->builtin_float64);
|
|
|
|
return builtin_go_type;
|
|
}
|
|
|
|
static struct gdbarch_data *go_type_data;
|
|
|
|
const struct builtin_go_type *
|
|
builtin_go_type (struct gdbarch *gdbarch)
|
|
{
|
|
return (const struct builtin_go_type *) gdbarch_data (gdbarch, go_type_data);
|
|
}
|
|
|
|
void
|
|
_initialize_go_language (void)
|
|
{
|
|
go_type_data = gdbarch_data_register_post_init (build_go_types);
|
|
}
|