GDB (xrefs)
Loading...
Searching...
No Matches
go-lang.h
Go to the documentation of this file.
1/* Go language support definitions for GDB, the GNU debugger.
2
3 Copyright (C) 2012-2023 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20#if !defined (GO_LANG_H)
21#define GO_LANG_H 1
22
24
25#include "language.h"
26#include "gdbtypes.h"
27#include "symtab.h"
28#include "value.h"
29
30struct parser_state;
31
33{
34 struct type *builtin_void = nullptr;
35 struct type *builtin_char = nullptr;
36 struct type *builtin_bool = nullptr;
37 struct type *builtin_int = nullptr;
38 struct type *builtin_uint = nullptr;
39 struct type *builtin_uintptr = nullptr;
40 struct type *builtin_int8 = nullptr;
41 struct type *builtin_int16 = nullptr;
42 struct type *builtin_int32 = nullptr;
43 struct type *builtin_int64 = nullptr;
44 struct type *builtin_uint8 = nullptr;
45 struct type *builtin_uint16 = nullptr;
46 struct type *builtin_uint32 = nullptr;
47 struct type *builtin_uint64 = nullptr;
48 struct type *builtin_float32 = nullptr;
49 struct type *builtin_float64 = nullptr;
50 struct type *builtin_complex64 = nullptr;
51 struct type *builtin_complex128 = nullptr;
52};
53
55{
56 GO_TYPE_NONE, /* Not a Go object. */
58};
59
60/* Defined in go-lang.c. */
61
62extern const char *go_main_name (void);
63
64extern enum go_type go_classify_struct_type (struct type *type);
65
66/* Given a symbol, return its package or nullptr if unknown. */
67extern gdb::unique_xmalloc_ptr<char> go_symbol_package_name
68 (const struct symbol *sym);
69
70/* Return the package that BLOCK is in, or nullptr if there isn't
71 one. */
72extern gdb::unique_xmalloc_ptr<char> go_block_package_name
73 (const struct block *block);
74
75extern const struct builtin_go_type *builtin_go_type (struct gdbarch *);
76
77/* Class representing the Go language. */
78
80{
81public:
84 { /* Nothing. */ }
85
86 /* See language.h. */
87
88 const char *name () const override
89 { return "go"; }
90
91 /* See language.h. */
92
93 const char *natural_name () const override
94 { return "Go"; }
95
96 /* See language.h. */
97
99 struct language_arch_info *lai) const override;
100
101 /* See language.h. */
102
104 (const char *mangled, gdb::unique_xmalloc_ptr<char> *demangled)
105 const override
106 {
107 *demangled = demangle_symbol (mangled, 0);
108 return *demangled != NULL;
109 }
110
111 /* See language.h. */
112
113 gdb::unique_xmalloc_ptr<char> demangle_symbol (const char *mangled,
114 int options) const override;
115
116 /* See language.h. */
117
118 void print_type (struct type *type, const char *varstring,
119 struct ui_file *stream, int show, int level,
120 const struct type_print_options *flags) const override;
121
122 /* See language.h. */
123
125 (struct value *val, struct ui_file *stream, int recurse,
126 const struct value_print_options *options) const override;
127
128 /* See language.h. */
129
130 int parser (struct parser_state *ps) const override;
131
132 /* See language.h. */
133
134 bool is_string_type_p (struct type *type) const override
135 {
137 return (type->code () == TYPE_CODE_STRUCT
139 }
140
141 /* See language.h. */
142
144 { return true; }
145};
146
147#endif /* !defined (GO_LANG_H) */
bool store_sym_names_in_linkage_form_p() const override
Definition go-lang.h:143
void language_arch_info(struct gdbarch *gdbarch, struct language_arch_info *lai) const override
Definition go-lang.c:466
bool sniff_from_mangled_name(const char *mangled, gdb::unique_xmalloc_ptr< char > *demangled) const override
Definition go-lang.h:104
gdb::unique_xmalloc_ptr< char > demangle_symbol(const char *mangled, int options) const override
Definition go-lang.c:361
int parser(struct parser_state *ps) const override
Definition go-exp.c:3081
void value_print_inner(struct value *val, struct ui_file *stream, int recurse, const struct value_print_options *options) const override
Definition go-valprint.c:90
go_language()
Definition go-lang.h:82
void print_type(struct type *type, const char *varstring, struct ui_file *stream, int show, int level, const struct type_print_options *flags) const override
const char * natural_name() const override
Definition go-lang.h:93
bool is_string_type_p(struct type *type) const override
Definition go-lang.h:134
const char * name() const override
Definition go-lang.h:88
@ language_go
Definition defs.h:218
struct type * check_typedef(struct type *type)
Definition gdbtypes.c:2966
mach_port_t kern_return_t mach_port_t mach_msg_type_name_t msgportsPoly mach_port_t kern_return_t pid_t pid mach_port_t kern_return_t mach_port_t task mach_port_t kern_return_t int flags
Definition gnu-nat.c:1861
enum go_type go_classify_struct_type(struct type *type)
Definition go-lang.c:121
const struct builtin_go_type * builtin_go_type(struct gdbarch *)
Definition go-lang.c:553
go_type
Definition go-lang.h:55
@ GO_TYPE_STRING
Definition go-lang.h:57
@ GO_TYPE_NONE
Definition go-lang.h:56
gdb::unique_xmalloc_ptr< char > go_symbol_package_name(const struct symbol *sym)
Definition go-lang.c:411
const char * go_main_name(void)
Definition go-lang.c:56
gdb::unique_xmalloc_ptr< char > go_block_package_name(const struct block *block)
Definition go-lang.c:437
Definition block.h:109
struct type * builtin_uint
Definition go-lang.h:38
struct type * builtin_complex64
Definition go-lang.h:50
struct type * builtin_complex128
Definition go-lang.h:51
struct type * builtin_int64
Definition go-lang.h:43
struct type * builtin_int32
Definition go-lang.h:42
struct type * builtin_char
Definition go-lang.h:35
struct type * builtin_void
Definition go-lang.h:34
struct type * builtin_int
Definition go-lang.h:37
struct type * builtin_uint64
Definition go-lang.h:47
struct type * builtin_uintptr
Definition go-lang.h:39
struct type * builtin_float64
Definition go-lang.h:49
struct type * builtin_int16
Definition go-lang.h:41
struct type * builtin_bool
Definition go-lang.h:36
struct type * builtin_float32
Definition go-lang.h:48
struct type * builtin_uint32
Definition go-lang.h:46
struct type * builtin_uint16
Definition go-lang.h:45
struct type * builtin_int8
Definition go-lang.h:40
struct type * builtin_uint8
Definition go-lang.h:44
type_code code() const
Definition gdbtypes.h:956
Definition value.h:130