mirror of
https://github.com/holub/mame
synced 2025-07-04 09:28:51 +03:00
Fixed a netlist crash on clang due to ATTR_NORETURN. Also fixed some debug statements. [Couriersud]
This commit is contained in:
parent
dafa3b185b
commit
bd09f4dbc0
@ -261,7 +261,7 @@ void netlist_mame_stream_output_t::custom_netlist_additions(netlist_setup_t &set
|
|||||||
// netlist_mame_t
|
// netlist_mame_t
|
||||||
// ----------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
void netlist_mame_t::vfatalerror(const loglevel_e level, const char *format, va_list ap) const
|
void netlist_mame_t::verror(const loglevel_e level, const char *format, va_list ap) const
|
||||||
{
|
{
|
||||||
pstring errstr = pstring(format).vprintf(ap);
|
pstring errstr = pstring(format).vprintf(ap);
|
||||||
|
|
||||||
|
@ -142,7 +142,7 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
void vfatalerror(const loglevel_e level, const char *format, va_list ap) const;
|
void verror(const loglevel_e level, const char *format, va_list ap) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
netlist_mame_device_t &m_parent;
|
netlist_mame_device_t &m_parent;
|
||||||
|
@ -77,9 +77,6 @@ NETLIB_START(SN74LS629)
|
|||||||
register_sub(m_R_FC, "R_FC");
|
register_sub(m_R_FC, "R_FC");
|
||||||
register_sub(m_R_RNG, "R_RNG");
|
register_sub(m_R_RNG, "R_RNG");
|
||||||
|
|
||||||
m_R_FC.set_R(90000.0);
|
|
||||||
m_R_RNG.set_R(90000.0);
|
|
||||||
|
|
||||||
register_input("ENQ", m_ENQ);
|
register_input("ENQ", m_ENQ);
|
||||||
register_input("RNG", m_RNG);
|
register_input("RNG", m_RNG);
|
||||||
register_input("FC", m_FC);
|
register_input("FC", m_FC);
|
||||||
@ -95,6 +92,8 @@ NETLIB_START(SN74LS629)
|
|||||||
|
|
||||||
NETLIB_RESET(SN74LS629)
|
NETLIB_RESET(SN74LS629)
|
||||||
{
|
{
|
||||||
|
m_R_FC.set_R(90000.0);
|
||||||
|
m_R_RNG.set_R(90000.0);
|
||||||
m_clock.reset();
|
m_clock.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ void netlist_queue_t::on_pre_save()
|
|||||||
{
|
{
|
||||||
NL_VERBOSE_OUT(("on_pre_save\n"));
|
NL_VERBOSE_OUT(("on_pre_save\n"));
|
||||||
m_qsize = this->count();
|
m_qsize = this->count();
|
||||||
NL_VERBOSE_OUT(("current time %f qsize %d\n", m_netlist->time().as_double(), qsize));
|
NL_VERBOSE_OUT(("current time %f qsize %d\n", m_netlist.time().as_double(), m_qsize));
|
||||||
for (int i = 0; i < m_qsize; i++ )
|
for (int i = 0; i < m_qsize; i++ )
|
||||||
{
|
{
|
||||||
m_times[i] = this->listptr()[i].time().as_raw();
|
m_times[i] = this->listptr()[i].time().as_raw();
|
||||||
@ -58,12 +58,12 @@ void netlist_queue_t::on_pre_save()
|
|||||||
void netlist_queue_t::on_post_load()
|
void netlist_queue_t::on_post_load()
|
||||||
{
|
{
|
||||||
this->clear();
|
this->clear();
|
||||||
NL_VERBOSE_OUT(("current time %f qsize %d\n", m_netlist->time().as_double(), qsize));
|
NL_VERBOSE_OUT(("current time %f qsize %d\n", m_netlist.time().as_double(), m_qsize));
|
||||||
for (int i = 0; i < m_qsize; i++ )
|
for (int i = 0; i < m_qsize; i++ )
|
||||||
{
|
{
|
||||||
netlist_net_t *n = m_netlist.find_net(&(m_name[i][0]));
|
netlist_net_t *n = m_netlist.find_net(&(m_name[i][0]));
|
||||||
NL_VERBOSE_OUT(("Got %s ==> %p\n", qtemp[i].m_name, n));
|
//NL_VERBOSE_OUT(("Got %s ==> %p\n", qtemp[i].m_name, n));
|
||||||
NL_VERBOSE_OUT(("schedule time %f (%f)\n", n->time().as_double(), qtemp[i].m_time.as_double()));
|
//NL_VERBOSE_OUT(("schedule time %f (%f)\n", n->time().as_double(), qtemp[i].m_time.as_double()));
|
||||||
this->push(netlist_queue_t::entry_t(netlist_time::from_raw(m_times[i]), n));
|
this->push(netlist_queue_t::entry_t(netlist_time::from_raw(m_times[i]), n));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -311,7 +311,7 @@ ATTR_COLD void netlist_base_t::error(const char *format, ...) const
|
|||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
vfatalerror(NL_ERROR, format, ap);
|
verror(NL_ERROR, format, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -319,7 +319,7 @@ ATTR_COLD void netlist_base_t::warning(const char *format, ...) const
|
|||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
vfatalerror(NL_WARNING, format, ap);
|
verror(NL_WARNING, format, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -327,7 +327,7 @@ ATTR_COLD void netlist_base_t::log(const char *format, ...) const
|
|||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
vfatalerror(NL_LOG, format, ap);
|
verror(NL_LOG, format, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1118,7 +1118,7 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
// any derived netlist must override this ...
|
// any derived netlist must override this ...
|
||||||
ATTR_COLD ATTR_NORETURN virtual void vfatalerror(const loglevel_e level,
|
ATTR_COLD virtual void verror(const loglevel_e level,
|
||||||
const char *format, va_list ap) const = 0;
|
const char *format, va_list ap) const = 0;
|
||||||
|
|
||||||
/* from netlist_object */
|
/* from netlist_object */
|
||||||
|
@ -40,6 +40,7 @@ public:
|
|||||||
|
|
||||||
ATTR_COLD netlist_list_t &operator=(const netlist_list_t &rhs)
|
ATTR_COLD netlist_list_t &operator=(const netlist_list_t &rhs)
|
||||||
{
|
{
|
||||||
|
this->reset();
|
||||||
for (int i=0; i<rhs.count(); i++)
|
for (int i=0; i<rhs.count(); i++)
|
||||||
{
|
{
|
||||||
this->add(rhs[i]);
|
this->add(rhs[i]);
|
||||||
|
@ -293,7 +293,7 @@ void netlist_parser::parse_netlist(const pstring &nlname)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
require_token(m_tok_param_left);
|
require_token(m_tok_param_left);
|
||||||
NL_VERBOSE_OUT(("Parser: Device: %s\n", n.cstr()));
|
NL_VERBOSE_OUT(("Parser: Device: %s\n", token.str().cstr()));
|
||||||
|
|
||||||
if (token.is(m_tok_ALIAS))
|
if (token.is(m_tok_ALIAS))
|
||||||
net_alias();
|
net_alias();
|
||||||
@ -425,7 +425,7 @@ void netlist_parser::device(const pstring &dev_type)
|
|||||||
{
|
{
|
||||||
pstring paramfq = devname + "." + def_params[cnt];
|
pstring paramfq = devname + "." + def_params[cnt];
|
||||||
|
|
||||||
NL_VERBOSE_OUT(("Defparam: %s\n", def_param.cstr()));
|
NL_VERBOSE_OUT(("Defparam: %s\n", paramfq.cstr()));
|
||||||
require_token(m_tok_comma);
|
require_token(m_tok_comma);
|
||||||
tok = get_token();
|
tok = get_token();
|
||||||
if (tok.is_type(STRING))
|
if (tok.is_type(STRING))
|
||||||
|
@ -208,7 +208,7 @@ void netlist_setup_t::register_object(netlist_device_t &dev, const pstring &name
|
|||||||
{
|
{
|
||||||
case netlist_param_t::DOUBLE:
|
case netlist_param_t::DOUBLE:
|
||||||
{
|
{
|
||||||
NL_VERBOSE_OUT(("Found parameter ... %s : %s\n", temp.cstr(), val->cstr()));
|
NL_VERBOSE_OUT(("Found parameter ... %s : %s\n", name.cstr(), val.cstr()));
|
||||||
double vald = 0;
|
double vald = 0;
|
||||||
if (sscanf(val.cstr(), "%lf", &vald) != 1)
|
if (sscanf(val.cstr(), "%lf", &vald) != 1)
|
||||||
netlist().error("Invalid number conversion %s : %s\n", name.cstr(), val.cstr());
|
netlist().error("Invalid number conversion %s : %s\n", name.cstr(), val.cstr());
|
||||||
@ -218,7 +218,7 @@ void netlist_setup_t::register_object(netlist_device_t &dev, const pstring &name
|
|||||||
case netlist_param_t::INTEGER:
|
case netlist_param_t::INTEGER:
|
||||||
case netlist_param_t::LOGIC:
|
case netlist_param_t::LOGIC:
|
||||||
{
|
{
|
||||||
NL_VERBOSE_OUT(("Found parameter ... %s : %s\n", name.cstr(), val->cstr()));
|
NL_VERBOSE_OUT(("Found parameter ... %s : %s\n", name.cstr(), val.cstr()));
|
||||||
double vald = 0;
|
double vald = 0;
|
||||||
if (sscanf(val.cstr(), "%lf", &vald) != 1)
|
if (sscanf(val.cstr(), "%lf", &vald) != 1)
|
||||||
netlist().error("Invalid number conversion %s : %s\n", name.cstr(), val.cstr());
|
netlist().error("Invalid number conversion %s : %s\n", name.cstr(), val.cstr());
|
||||||
@ -533,7 +533,7 @@ static netlist_core_terminal_t &resolve_proxy(netlist_core_terminal_t &term)
|
|||||||
|
|
||||||
void netlist_setup_t::connect(netlist_core_terminal_t &t1_in, netlist_core_terminal_t &t2_in)
|
void netlist_setup_t::connect(netlist_core_terminal_t &t1_in, netlist_core_terminal_t &t2_in)
|
||||||
{
|
{
|
||||||
NL_VERBOSE_OUT(("Connecting %s to %s\n", t1.name().cstr(), t2.name().cstr()));
|
NL_VERBOSE_OUT(("Connecting %s to %s\n", t1_in.name().cstr(), t2_in.name().cstr()));
|
||||||
netlist_core_terminal_t &t1 = resolve_proxy(t1_in);
|
netlist_core_terminal_t &t1 = resolve_proxy(t1_in);
|
||||||
netlist_core_terminal_t &t2 = resolve_proxy(t2_in);
|
netlist_core_terminal_t &t2 = resolve_proxy(t2_in);
|
||||||
|
|
||||||
@ -578,6 +578,7 @@ void netlist_setup_t::resolve_inputs()
|
|||||||
bool has_twoterms = false;
|
bool has_twoterms = false;
|
||||||
|
|
||||||
netlist().log("Resolving inputs ...");
|
netlist().log("Resolving inputs ...");
|
||||||
|
|
||||||
for (const link_t *entry = m_links.first(); entry != NULL; entry = m_links.next(entry))
|
for (const link_t *entry = m_links.first(); entry != NULL; entry = m_links.next(entry))
|
||||||
{
|
{
|
||||||
const pstring t1s = entry->e1;
|
const pstring t1s = entry->e1;
|
||||||
@ -588,6 +589,7 @@ void netlist_setup_t::resolve_inputs()
|
|||||||
connect(*t1, *t2);
|
connect(*t1, *t2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//netlist().log("printing outputs ...");
|
||||||
/* print all outputs */
|
/* print all outputs */
|
||||||
for (tagmap_terminal_t::entry_t *entry = m_terminals.first(); entry != NULL; entry = m_terminals.next(entry))
|
for (tagmap_terminal_t::entry_t *entry = m_terminals.first(); entry != NULL; entry = m_terminals.next(entry))
|
||||||
{
|
{
|
||||||
|
@ -156,7 +156,7 @@ public:
|
|||||||
pstring m_logs;
|
pstring m_logs;
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
void vfatalerror(const loglevel_e level, const char *format, va_list ap) const
|
void verror(const loglevel_e level, const char *format, va_list ap) const
|
||||||
{
|
{
|
||||||
switch (level)
|
switch (level)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user