summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/gold/gold-plugin.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/tools/gold/gold-plugin.cpp b/tools/gold/gold-plugin.cpp
index 119631cfa7e..826173938a1 100644
--- a/tools/gold/gold-plugin.cpp
+++ b/tools/gold/gold-plugin.cpp
@@ -427,9 +427,14 @@ static ld_plugin_status all_symbols_read_hook(void) {
exit(0);
}
}
- const char *objPath;
- if (lto_codegen_compile_to_file(code_gen, &objPath)) {
- (*message)(LDPL_ERROR, "Could not produce a combined object file\n");
+
+ std::string ObjPath;
+ {
+ const char *Temp;
+ if (lto_codegen_compile_to_file(code_gen, &Temp)) {
+ (*message)(LDPL_ERROR, "Could not produce a combined object file\n");
+ }
+ ObjPath = Temp;
}
lto_codegen_dispose(code_gen);
@@ -441,9 +446,9 @@ static ld_plugin_status all_symbols_read_hook(void) {
}
}
- if ((*add_input_file)(objPath) != LDPS_OK) {
+ if ((*add_input_file)(ObjPath.c_str()) != LDPS_OK) {
(*message)(LDPL_ERROR, "Unable to add .o file to the link.");
- (*message)(LDPL_ERROR, "File left behind in: %s", objPath);
+ (*message)(LDPL_ERROR, "File left behind in: %s", ObjPath.c_str());
return LDPS_ERR;
}
@@ -454,7 +459,7 @@ static ld_plugin_status all_symbols_read_hook(void) {
}
if (options::obj_path.empty())
- Cleanup.push_back(objPath);
+ Cleanup.push_back(ObjPath);
return LDPS_OK;
}