Fix rtems-ld to keep tmep files around while building.

This commit is contained in:
Chris Johns
2014-09-06 21:59:25 +10:00
parent 8807135964
commit c4c8218373

View File

@@ -186,7 +186,7 @@ namespace rld
/** /**
* Generate the wrapper object file. * Generate the wrapper object file.
*/ */
const std::string generate (); void generate (rld::process::tempfile& c);
/** /**
* Generate the trace functions. * Generate the trace functions.
@@ -200,11 +200,11 @@ namespace rld
private: private:
std::string name; /**< The name of the trace. */ std::string name; /**< The name of the trace. */
std::string bsp; /**< The BSP we are linking to. */ std::string bsp; /**< The BSP we are linking to. */
rld::strings traces; /**< The functions to trace. */ rld::strings traces; /**< The functions to trace. */
functions functions_; /**< The functions that can be traced. */ functions functions_; /**< The functions that can be traced. */
generator generator_; /**< The tracer's generator. */ generator generator_; /**< The tracer's generator. */
}; };
/** /**
@@ -224,12 +224,13 @@ namespace rld
/** /**
* Generate the C file. * Generate the C file.
*/ */
void generate_wrapper (); void generate_wrapper (rld::process::tempfile& c);
/** /**
* Compile the C file. * Compile the C file.
*/ */
void compile_wrapper (); void compile_wrapper (rld::process::tempfile& c,
rld::process::tempfile& o);
/** /**
* Dump the linker. * Dump the linker.
@@ -238,10 +239,10 @@ namespace rld
private: private:
rld::config::config config; /**< User configuration. */ rld::config::config config; /**< User configuration. */
tracer tracer_; /**< The tracer */ tracer tracer_; /**< The tracer */
std::string wrapper_c; /**< Wrapper C source file. */ rld::process::tempfile c; /**< The C wrapper file */
std::string wrapper_o; /**< Wrapper object file. */ rld::process::tempfile o; /**< The wrapper object file */
}; };
/** /**
@@ -543,11 +544,9 @@ namespace rld
generator_ = generator (config, gen); generator_ = generator (config, gen);
} }
const std::string void
tracer::generate () tracer::generate (rld::process::tempfile& c)
{ {
rld::process::tempfile c (".c");
c.open (true); c.open (true);
if (rld::verbose ()) if (rld::verbose ())
@@ -578,8 +577,6 @@ namespace rld
} }
c.close (); c.close ();
return c.name ();
} }
void void
@@ -713,18 +710,17 @@ namespace rld
} }
void void
linker::generate_wrapper () linker::generate_wrapper (rld::process::tempfile& c)
{ {
wrapper_c = tracer_.generate (); tracer_.generate (c);
} }
void void
linker::compile_wrapper () linker::compile_wrapper (rld::process::tempfile& c,
rld::process::tempfile& o)
{ {
rld::process::arg_container args; rld::process::arg_container args;
rld::process::tempfile o (".o");
if (rld::verbose ()) if (rld::verbose ())
std::cout << "wrapper O file: " << o.name () << std::endl; std::cout << "wrapper O file: " << o.name () << std::endl;
@@ -734,7 +730,7 @@ namespace rld
args.push_back ("-c"); args.push_back ("-c");
args.push_back ("-o "); args.push_back ("-o ");
args.push_back (o.name ()); args.push_back (o.name ());
args.push_back (wrapper_c); args.push_back (c.name ());
rld::process::tempfile out; rld::process::tempfile out;
rld::process::tempfile err; rld::process::tempfile err;
@@ -751,8 +747,6 @@ namespace rld
err.output (rld::cc::get_cc (), std::cout); err.output (rld::cc::get_cc (), std::cout);
throw rld::error ("Compiler error", "compiling wrapper"); throw rld::error ("Compiler error", "compiling wrapper");
} }
wrapper_o = o.name ();
} }
void void
@@ -951,9 +945,12 @@ main (int argc, char* argv[])
*/ */
try try
{ {
rld::process::tempfile c (".c");
rld::process::tempfile o (".o");
linker.load_config (configuration, trace); linker.load_config (configuration, trace);
linker.generate_wrapper (); linker.generate_wrapper (c);
linker.compile_wrapper (); linker.compile_wrapper (c, o);
if (rld::verbose ()) if (rld::verbose ())
linker.dump (std::cout); linker.dump (std::cout);