From 9769564e7456453e2273071d0faa5aab2554ff78 Mon Sep 17 00:00:00 2001 From: Michael Matloob Date: Thu, 11 Feb 2021 19:28:57 -0500 Subject: [PATCH] compiler: open byte slice and string embeds using the absolute path The paths vector contains the names of the files that the embed_files_ map is keyed by. While the code processing embed.FS values looks up the paths in the embed_files_ map, the code processing string and byte slice embeds tries opening the files using their names directly. Look up the full paths in the embed_files_ map when opening them. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/291429 --- gcc/go/gofrontend/MERGE | 2 +- gcc/go/gofrontend/embed.cc | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 905c6fe9326..3175ba0e005 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -78770fd9c29037dec8b2919c0f02067915c6ad33 +a5d7c4225fbbd06b97db6fa424cc0cb5191082d4 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/gcc/go/gofrontend/embed.cc b/gcc/go/gofrontend/embed.cc index bea1003bc08..0a7df0531ec 100644 --- a/gcc/go/gofrontend/embed.cc +++ b/gcc/go/gofrontend/embed.cc @@ -812,8 +812,7 @@ Gogo::initializer_for_embeds(Type* type, } // Each pattern in the embedcfg file maps to a list of file - // names. For each file name, the embedcfg file records an - // absolute path. Add those absolute paths to PATHS. + // names. Add those file names to PATHS. for (std::vector::const_iterator pf = pp->second.begin(); pf != pp->second.end(); pf++) @@ -865,7 +864,7 @@ Gogo::initializer_for_embeds(Type* type, } std::string data; - if (!read_file(paths[0].c_str(), loc, &data)) + if (!read_file(this->embed_files_[paths[0]].c_str(), loc, &data)) return Expression::make_error(loc); Expression* e = Expression::make_string(data, loc); -- 2.30.2