public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
* compile: new libcc1 API proposal
@ 2015-05-17 19:30 Jan Kratochvil
  2015-05-21 11:32 ` Pedro Alves
  0 siblings, 1 reply; 2+ messages in thread
From: Jan Kratochvil @ 2015-05-17 19:30 UTC (permalink / raw)
  To: gdb; +Cc: Phil Muldoon

[-- Attachment #1: Type: text/plain, Size: 367 bytes --]

Hi,

as discussed in threads around
	[PATCH v2 1/2] compile: set debug compile: Display GCC driver filename
	https://sourceware.org/ml/gdb-patches/2015-04/msg00909.html
	[PATCH v3 2/2] compile: Add 'set compile-gcc'
	https://sourceware.org/ml/gdb-patches/2015-04/msg00915.html

here is new libcc1 API proposal, before it gets (re)implemented and posted to
GCC.


Jan

[-- Attachment #2: 1 --]
[-- Type: text/plain, Size: 4947 bytes --]

diff --git a/include/gcc-interface.h b/include/gcc-interface.h
index df7db6e..cd9dfce 100644
--- a/include/gcc-interface.h
+++ b/include/gcc-interface.h
@@ -44,7 +44,12 @@ struct gcc_base_context;
 
 enum gcc_base_api_version
 {
-  GCC_FE_VERSION_0 = 0
+  GCC_FE_VERSION_0 = 0,
+
+  /* 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,
 };
 
 /* The operations defined by the GCC base API.  This is the vtable for
@@ -64,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
@@ -93,18 +90,74 @@ struct gcc_base_vtable
 						      const char *message),
 			      void *datum);
 
-  /* Perform the compilation.  FILENAME is the name of the resulting
-     object file.  VERBOSE can be set to cause GCC to print some
-     information as it works.  Returns true on success, false on
-     error.  */
+  /* Deprecated GCC_FE_VERSION_0 variant of the GCC_FE_VERSION_1
+     compile method.  GCC_FE_VERSION_0 version verbose parameter has
+     been replaced by the set_verbose method.  */
 
-  int /* bool */ (*compile) (struct gcc_base_context *self,
-			     const char *filename,
-			     int /* bool */ verbose);
+  int /* bool */ (*compile_v0) (struct gcc_base_context *self,
+				const char *filename,
+				int /* bool */ verbose);
 
   /* Destroy this object.  */
 
   void (*destroy) (struct gcc_base_context *self);
+
+  /* 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);
+
+  /* VERBOSE can be set to non-zero to cause GCC to print some
+     information as it works.  Calling this method overrides its
+     possible previous calls.
+
+     This method is only available since GCC_FE_VERSION_1.  */
+
+  void (*set_verbose) (struct gcc_base_context *self,
+		       int /* bool */ verbose);
+
+  /* Perform the compilation.  FILENAME is the name of the resulting
+     object file.  Either set_triplet_regexp or set_driver_filename must
+     be called before.  Returns true on success, false on error. 
+
+     This method is only available since GCC_FE_VERSION_1.  */
+
+  int /* bool */ (*compile) (struct gcc_base_context *self,
+			     const char *filename);
 };
 
 /* The GCC object.  */

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: compile: new libcc1 API proposal
  2015-05-17 19:30 compile: new libcc1 API proposal Jan Kratochvil
@ 2015-05-21 11:32 ` Pedro Alves
  0 siblings, 0 replies; 2+ messages in thread
From: Pedro Alves @ 2015-05-21 11:32 UTC (permalink / raw)
  To: Jan Kratochvil, gdb; +Cc: Phil Muldoon

On 05/17/2015 08:30 PM, Jan Kratochvil wrote:
> Hi,
> 
> as discussed in threads around
> 	[PATCH v2 1/2] compile: set debug compile: Display GCC driver filename
> 	https://sourceware.org/ml/gdb-patches/2015-04/msg00909.html
> 	[PATCH v3 2/2] compile: Add 'set compile-gcc'
> 	https://sourceware.org/ml/gdb-patches/2015-04/msg00915.html
> 
> here is new libcc1 API proposal, before it gets (re)implemented and posted to
> GCC.

Thanks, this looks good to me.

Thanks,
Pedro Alves

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-05-21 11:32 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-17 19:30 compile: new libcc1 API proposal Jan Kratochvil
2015-05-21 11:32 ` Pedro Alves

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).