mirror of
https://git.rtems.org/rtems-tools/
synced 2025-10-19 14:31:24 +08:00
Fix rtems-ld to keep tmep files around while building.
This commit is contained in:
@@ -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);
|
||||||
|
Reference in New Issue
Block a user