Go frontend: add -fgo-embedcfg option

This option will be used by the go command to implement go:embed directives,
which are new with the upcoming Go 1.16 release.

	* lang.opt (fgo-embedcfg): New option.
	* go-c.h (struct go_create_gogo_args): Add embedcfg field.
	* go-lang.c (go_embedcfg): New static variable.
	(go_langhook_init): Set go_create_gogo_args embedcfg field.
	(go_langhook_handle_option): Handle OPT_fgo_embedcfg_.
	* gccgo.texi (Invoking gccgo): Document -fgo-embedcfg.
This commit is contained in:
Ian Lance Taylor 2021-01-04 17:40:11 -08:00
parent 15af33a880
commit bf183413c6
4 changed files with 20 additions and 0 deletions

View File

@ -262,6 +262,15 @@ Apply special rules for compiling the runtime package. Implicit
memory allocation is forbidden. Some additional compiler directives
are supported.
@item -fgo-embedcfg=@var{file}
@cindex @option{-fgo-embedcfg}
Identify a JSON file used to map patterns used with special
@code{//go:embed} comments to the files named by the patterns. The
JSON file should have two components: @code{Patterns} maps each
pattern to a list of file names, and @code{Files} maps each file name
to a full path to the file. This option is intended for use by the
@command{go} command to implement @code{//go:embed}.
@item -g
@cindex @option{-g for gccgo}
This is the standard @command{gcc} option (@pxref{Debugging Options, ,

View File

@ -41,6 +41,7 @@ struct go_create_gogo_args
const char* prefix;
const char* relative_import_path;
const char* c_header;
const char* embedcfg;
Backend* backend;
Linemap* linemap;
bool check_divide_by_zero;

View File

@ -89,6 +89,7 @@ static const char *go_pkgpath = NULL;
static const char *go_prefix = NULL;
static const char *go_relative_import_path = NULL;
static const char *go_c_header = NULL;
static const char *go_embedcfg = NULL;
/* Language hooks. */
@ -112,6 +113,7 @@ go_langhook_init (void)
args.prefix = go_prefix;
args.relative_import_path = go_relative_import_path;
args.c_header = go_c_header;
args.embedcfg = go_embedcfg;
args.check_divide_by_zero = go_check_divide_zero;
args.check_divide_overflow = go_check_divide_overflow;
args.compiling_runtime = go_compiling_runtime;
@ -282,6 +284,10 @@ go_langhook_handle_option (
go_c_header = arg;
break;
case OPT_fgo_embedcfg_:
go_embedcfg = arg;
break;
default:
/* Just return 1 to indicate that the option is valid. */
break;

View File

@ -57,6 +57,10 @@ fgo-dump-
Go Joined RejectNegative
-fgo-dump-<type> Dump Go frontend internal information.
fgo-embedcfg=
Go Joined RejectNegative
-fgo-embedcfg=<file> List embedded files via go:embed
fgo-optimize-
Go Joined
-fgo-optimize-<type> Turn on optimization passes in the frontend.