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; }