Annotation of src/external/gpl3/binutils.old/dist/include/gcc-interface.h, Revision 1.1.1.3
1.1 christos 1: /* Generic interface between GCC and GDB
2:
1.1.1.3 ! christos 3: Copyright (C) 2014-2018 Free Software Foundation, Inc.
1.1 christos 4:
5: This file is part of GCC.
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: #ifndef GCC_INTERFACE_H
21: #define GCC_INTERFACE_H
22:
23: /* This header defines the interface to the GCC API. It must be both
24: valid C and valid C++, because it is included by both programs. */
25:
26: #ifdef __cplusplus
27: extern "C" {
28: #endif
29:
30: /* Opaque typedefs for objects passed through the interface. */
31:
32: typedef unsigned long long gcc_type;
33: typedef unsigned long long gcc_decl;
34:
35: /* An address in the inferior. */
36:
37: typedef unsigned long long gcc_address;
38:
39: /* Forward declaration. */
40:
41: struct gcc_base_context;
42:
43: /* Defined versions of the generic API. */
44:
45: enum gcc_base_api_version
46: {
1.1.1.3 ! christos 47: GCC_FE_VERSION_0 = 0,
! 48:
! 49: /* Deprecated methods set_arguments_v0 and compile_v0. Added methods
! 50: set_arguments, set_triplet_regexp, set_driver_filename, set_verbose and
! 51: compile. */
! 52: GCC_FE_VERSION_1 = 1,
1.1 christos 53: };
54:
55: /* The operations defined by the GCC base API. This is the vtable for
56: the real context structure which is passed around.
57:
58: The "base" API is concerned with basics shared by all compiler
59: front ends: setting command-line arguments, the file names, etc.
60:
61: Front-end-specific interfaces inherit from this one. */
62:
63: struct gcc_base_vtable
64: {
65: /* The actual version implemented in this interface. This field can
66: be relied on not to move, so users can always check it if they
67: desire. The value is one of the gcc_base_api_version constants.
68: */
69:
70: unsigned int version;
71:
1.1.1.3 ! christos 72: /* Deprecated GCC_FE_VERSION_0 variant of the GCC_FE_VERSION_1
! 73: methods set_triplet_regexp and set_arguments. */
1.1 christos 74:
1.1.1.3 ! christos 75: char *(*set_arguments_v0) (struct gcc_base_context *self,
! 76: const char *triplet_regexp,
! 77: int argc, char **argv);
1.1 christos 78:
79: /* Set the file name of the program to compile. The string is
80: copied by the method implementation, but the caller must
81: guarantee that the file exists through the compilation. */
82:
83: void (*set_source_file) (struct gcc_base_context *self, const char *file);
84:
85: /* Set a callback to use for printing error messages. DATUM is
86: passed through to the callback unchanged. */
87:
88: void (*set_print_callback) (struct gcc_base_context *self,
89: void (*print_function) (void *datum,
90: const char *message),
91: void *datum);
92:
1.1.1.3 ! christos 93: /* Deprecated GCC_FE_VERSION_0 variant of the GCC_FE_VERSION_1
! 94: compile method. GCC_FE_VERSION_0 version verbose parameter has
! 95: been replaced by the set_verbose method. */
! 96:
! 97: int /* bool */ (*compile_v0) (struct gcc_base_context *self,
! 98: const char *filename,
! 99: int /* bool */ verbose);
! 100:
! 101: /* Destroy this object. */
! 102:
! 103: void (*destroy) (struct gcc_base_context *self);
! 104:
! 105: /* VERBOSE can be set to non-zero to cause GCC to print some
! 106: information as it works. Calling this method overrides its
! 107: possible previous calls.
! 108:
! 109: This method is only available since GCC_FE_VERSION_1. */
! 110:
! 111: void (*set_verbose) (struct gcc_base_context *self,
! 112: int /* bool */ verbose);
! 113:
1.1 christos 114: /* Perform the compilation. FILENAME is the name of the resulting
1.1.1.3 ! christos 115: object file. Either set_triplet_regexp or set_driver_filename must
! 116: be called before. Returns true on success, false on error.
! 117:
! 118: This method is only available since GCC_FE_VERSION_1. */
1.1 christos 119:
120: int /* bool */ (*compile) (struct gcc_base_context *self,
1.1.1.3 ! christos 121: const char *filename);
1.1 christos 122:
1.1.1.3 ! christos 123: /* Set the compiler's command-line options for the next compilation.
! 124: The arguments are copied by GCC. ARGV need not be
! 125: NULL-terminated. The arguments must be set separately for each
! 126: compilation; that is, after a compile is requested, the
! 127: previously-set arguments cannot be reused.
1.1 christos 128:
1.1.1.3 ! christos 129: This returns NULL on success. On failure, returns a malloc()d
! 130: error message. The caller is responsible for freeing it.
! 131:
! 132: This method is only available since GCC_FE_VERSION_1. */
! 133:
! 134: char *(*set_arguments) (struct gcc_base_context *self,
! 135: int argc, char **argv);
! 136:
! 137: /* Set TRIPLET_REGEXP as a regular expression that is used to match
! 138: the configury triplet prefix to the compiler. Calling this method
! 139: overrides possible previous call of itself or set_driver_filename.
! 140:
! 141: This returns NULL on success. On failure, returns a malloc()d
! 142: error message. The caller is responsible for freeing it.
! 143:
! 144: This method is only available since GCC_FE_VERSION_1. */
! 145:
! 146: char *(*set_triplet_regexp) (struct gcc_base_context *self,
! 147: const char *triplet_regexp);
! 148:
! 149: /* DRIVER_FILENAME should be filename of the gcc compiler driver
! 150: program. It will be searched in PATH components like
! 151: TRIPLET_REGEXP. Calling this method overrides possible previous
! 152: call of itself or set_triplet_regexp.
! 153:
! 154: This returns NULL on success. On failure, returns a malloc()d
! 155: error message. The caller is responsible for freeing it.
! 156:
! 157: This method is only available since GCC_FE_VERSION_1. */
! 158:
! 159: char *(*set_driver_filename) (struct gcc_base_context *self,
! 160: const char *driver_filename);
1.1 christos 161: };
162:
163: /* The GCC object. */
164:
165: struct gcc_base_context
166: {
167: /* The virtual table. */
168:
169: const struct gcc_base_vtable *ops;
170: };
171:
1.1.1.3 ! christos 172: /* An array of types used for creating function types in multiple
! 173: languages. */
! 174:
! 175: struct gcc_type_array
! 176: {
! 177: /* Number of elements. */
! 178:
! 179: int n_elements;
! 180:
! 181: /* The elements. */
! 182:
! 183: gcc_type *elements;
! 184: };
! 185:
1.1 christos 186: /* The name of the dummy wrapper function generated by gdb. */
187:
188: #define GCC_FE_WRAPPER_FUNCTION "_gdb_expr"
189:
190: #ifdef __cplusplus
191: }
192: #endif
193:
194: #endif /* GCC_INTERFACE_H */
CVSweb <webmaster@jp.NetBSD.org>