compile: Add 'set compile-gcc'
As discussed in How to use compile & execute function in GDB https://sourceware.org/ml/gdb/2015-04/msg00026.html GDB currently searches for compilers on /usr/bin/ARCH-OS-gcc and chooses a match from there. However, it is not currently possible for the user to override which compiler to use. This is what this patch implements. It is also a sync between GCC's and GDB's interfaces. gdb/ChangeLog 2017-08-23 Jan Kratochvil <jan.kratochvil@redhat.com> * NEWS (Changes since GDB 7.9): Add set compile-gcc and show compile-gcc. * compile/compile.c (compile_gcc, show_compile_gcc): New. (compile_to_object): Implement compile_gcc. (_initialize_compile): Install "set compile-gcc". Initialize compile_gcc. gdb/doc/ChangeLog 2017-08-23 Jan Kratochvil <jan.kratochvil@redhat.com> * gdb.texinfo (Compiling and Injecting Code): Add to subsection "Compiler search for the compile command" descriptions of set compile-gcc and show compile-gcc. include/ChangeLog 2017-08-23 Jan Kratochvil <jan.kratochvil@redhat.com> * gcc-interface.h (enum gcc_base_api_version): Update comment for GCC_FE_VERSION_1. (struct gcc_base_vtable): Rename set_arguments to set_arguments_v0. Add set_arguments, set_triplet_regexp and set_driver_filename.
This commit is contained in:
parent
e68c32d53e
commit
6e41ddec97
7 changed files with 155 additions and 31 deletions
|
@ -46,7 +46,9 @@ enum gcc_base_api_version
|
|||
{
|
||||
GCC_FE_VERSION_0 = 0,
|
||||
|
||||
/* Deprecated method compile_v0. Added method set_verbose and compile. */
|
||||
/* Deprecated methods set_arguments_v0 and compile_v0. Added methods
|
||||
set_arguments, set_triplet_regexp, set_driver_filename, set_verbose and
|
||||
compile. */
|
||||
GCC_FE_VERSION_1 = 1,
|
||||
};
|
||||
|
||||
|
@ -67,20 +69,12 @@ struct gcc_base_vtable
|
|||
|
||||
unsigned int version;
|
||||
|
||||
/* Set the compiler's command-line options for the next compilation.
|
||||
TRIPLET_REGEXP is a regular expression that is used to match the
|
||||
configury triplet prefix to the compiler.
|
||||
The arguments are copied by GCC. ARGV need not be
|
||||
NULL-terminated. The arguments must be set separately for each
|
||||
compilation; that is, after a compile is requested, the
|
||||
previously-set arguments cannot be reused.
|
||||
/* Deprecated GCC_FE_VERSION_0 variant of the GCC_FE_VERSION_1
|
||||
methods set_triplet_regexp and set_arguments. */
|
||||
|
||||
This returns NULL on success. On failure, returns a malloc()d
|
||||
error message. The caller is responsible for freeing it. */
|
||||
|
||||
char *(*set_arguments) (struct gcc_base_context *self,
|
||||
const char *triplet_regexp,
|
||||
int argc, char **argv);
|
||||
char *(*set_arguments_v0) (struct gcc_base_context *self,
|
||||
const char *triplet_regexp,
|
||||
int argc, char **argv);
|
||||
|
||||
/* Set the file name of the program to compile. The string is
|
||||
copied by the method implementation, but the caller must
|
||||
|
@ -125,6 +119,45 @@ struct gcc_base_vtable
|
|||
|
||||
int /* bool */ (*compile) (struct gcc_base_context *self,
|
||||
const char *filename);
|
||||
|
||||
/* Set the compiler's command-line options for the next compilation.
|
||||
The arguments are copied by GCC. ARGV need not be
|
||||
NULL-terminated. The arguments must be set separately for each
|
||||
compilation; that is, after a compile is requested, the
|
||||
previously-set arguments cannot be reused.
|
||||
|
||||
This returns NULL on success. On failure, returns a malloc()d
|
||||
error message. The caller is responsible for freeing it.
|
||||
|
||||
This method is only available since GCC_FE_VERSION_1. */
|
||||
|
||||
char *(*set_arguments) (struct gcc_base_context *self,
|
||||
int argc, char **argv);
|
||||
|
||||
/* Set TRIPLET_REGEXP as a regular expression that is used to match
|
||||
the configury triplet prefix to the compiler. Calling this method
|
||||
overrides possible previous call of itself or set_driver_filename.
|
||||
|
||||
This returns NULL on success. On failure, returns a malloc()d
|
||||
error message. The caller is responsible for freeing it.
|
||||
|
||||
This method is only available since GCC_FE_VERSION_1. */
|
||||
|
||||
char *(*set_triplet_regexp) (struct gcc_base_context *self,
|
||||
const char *triplet_regexp);
|
||||
|
||||
/* DRIVER_FILENAME should be filename of the gcc compiler driver
|
||||
program. It will be searched in PATH components like
|
||||
TRIPLET_REGEXP. Calling this method overrides possible previous
|
||||
call of itself or set_triplet_regexp.
|
||||
|
||||
This returns NULL on success. On failure, returns a malloc()d
|
||||
error message. The caller is responsible for freeing it.
|
||||
|
||||
This method is only available since GCC_FE_VERSION_1. */
|
||||
|
||||
char *(*set_driver_filename) (struct gcc_base_context *self,
|
||||
const char *driver_filename);
|
||||
};
|
||||
|
||||
/* The GCC object. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue