From 2f11c3631d3bcaf5447019bb4784c231f079285b Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Thu, 15 Oct 2015 21:06:05 +1100 Subject: Always provide the argument size defines. --- linkers/rtems-tld.cpp | 86 +++++++++++++++++++++++++-------------------------- 1 file changed, 42 insertions(+), 44 deletions(-) diff --git a/linkers/rtems-tld.cpp b/linkers/rtems-tld.cpp index a2a6e23..01c0853 100644 --- a/linkers/rtems-tld.cpp +++ b/linkers/rtems-tld.cpp @@ -1234,59 +1234,57 @@ namespace rld c.write_line(""); - if (sig.has_args () || (sig.has_ret () && !generator_.ret_trace.empty ())) + std::string ds; + std::string des; + std::string drs; + bool ds_added = false; + bool des_added = false; + bool drs_added = false; + ds = "#define FUNC_DATA_SIZE_" + sig.name + " ("; + des = "#define FUNC_DATA_ENTRY_SIZE_" + sig.name + " ("; + drs = "#define FUNC_DATA_RET_SIZE_" + sig.name + " ("; + + if (sig.has_args ()) { - std::string ds; - std::string des; - std::string drs; - bool ds_added = false; - bool des_added = false; - bool drs_added = false; - ds = "#define FUNC_DATA_SIZE_" + sig.name + " ("; - des = "#define FUNC_DATA_ENTRY_SIZE_" + sig.name + " ("; - drs = "#define FUNC_DATA_RET_SIZE_" + sig.name + " ("; - if (sig.has_args ()) - { - for (size_t a = 0; a < sig.args.size (); ++a) - { - if (ds_added) - ds += " + "; - else - ds_added = true; - if (des_added) - des += " + "; - else - des_added = true; - ds += "sizeof(" + sig.args[a] + ')'; - des += "sizeof(" + sig.args[a] + ')'; - } - } - if (sig.has_ret () && !generator_.ret_trace.empty ()) + for (size_t a = 0; a < sig.args.size (); ++a) { if (ds_added) ds += " + "; else ds_added = true; - if (drs_added) - drs += " + "; + if (des_added) + des += " + "; else - drs_added = true; - ds += "sizeof(" + sig.ret + ')'; - drs += "sizeof(" + sig.ret + ')'; + des_added = true; + ds += "sizeof(" + sig.args[a] + ')'; + des += "sizeof(" + sig.args[a] + ')'; } - if (!ds_added) - ds += '0'; - ds += ')'; - if (!des_added) - des += '0'; - des += ')'; - if (!drs_added) - drs += '0'; - drs += ')'; - c.write_line(ds); - c.write_line(des); - c.write_line(drs); } + if (sig.has_ret () && !generator_.ret_trace.empty ()) + { + if (ds_added) + ds += " + "; + else + ds_added = true; + if (drs_added) + drs += " + "; + else + drs_added = true; + ds += "sizeof(" + sig.ret + ')'; + drs += "sizeof(" + sig.ret + ')'; + } + if (!ds_added) + ds += '0'; + ds += ')'; + if (!des_added) + des += '0'; + des += ')'; + if (!drs_added) + drs += '0'; + drs += ')'; + c.write_line(ds); + c.write_line(des); + c.write_line(drs); c.write_line(sig.decl () + ";"); c.write_line(sig.decl ("__real_") + ";"); -- cgit v1.2.3