Someone (Thomas Sailer) offered upstream a patch that resolves the FTBFS error.
I tested it and it works.However, applying this patch uncovers some other (I would assume unrelated ?) errors : - Some compiler compiler seems to be required by the upstream makefile, so I added bison to the build dependencies - The automatic tests made after the compilation fail because ImageMagick triggers a segmentation fault. I overrode auto test and tested manually the binary, which seems to work.
I have included the patch, the new control and rules files, and I am tagging this bug as having a patch.
Let me know if you have any questions. Best, Aymeric Agon-Rambosson
Description: Fix compile failures for newer g++ release Author: Thomas Sailer <sai...@ife.ee.ethz.ch> Forwarded: yes Comment: Found on https://sourceforge.net/p/drawtiming/patches/12/ --- a/src/parser.yy +++ b/src/parser.yy @@ -42,13 +42,13 @@ statements: statement { $$ = $1; deps.push_back ($1); } | statements ',' statement { $$ = $3; deps.push_back ($3); } | statements ';' statement { $$ = $3; deps.clear (); deps.push_back ($3); } -| statements CAUSE statement { $$ = $3; data.add_dependencies ($3, deps); +| statements CAUSE statement { $$ = $3; data_.add_dependencies ($3, deps); deps.clear (); deps.push_back ($3); } -| statements DELAY statement { $$ = $3; data.add_delay ($3, $1, $2); } +| statements DELAY statement { $$ = $3; data_.add_delay ($3, $1, $2); } statement: -SYMBOL '=' SYMBOL { $$ = $1; data.set_value ($1, n, timing::sigvalue ($3)); } -| SYMBOL '=' STRING { $$ = $1; data.set_value ($1, n, timing::sigvalue ($3, timing::STATE)); } +SYMBOL '=' SYMBOL { $$ = $1; data_.set_value ($1, n, timing::sigvalue ($3)); } +| SYMBOL '=' STRING { $$ = $1; data_.set_value ($1, n, timing::sigvalue ($3, timing::STATE)); } | SYMBOL { $$ = $1; }; %% --- a/src/globals.h +++ b/src/globals.h @@ -22,7 +22,7 @@ #define YYSTYPE std::string extern unsigned n; -extern timing::data data; +extern timing::data data_; extern timing::signal_sequence deps; #endif --- a/src/timing.cc +++ b/src/timing.cc @@ -113,16 +113,16 @@ sigdata &sigdata::operator= (const sigda // ------------------------------------------------------------ -data::data (void) : maxlen (0) { +timing::data::data (void) : maxlen (0) { } -data::data (const data &d) { +timing::data::data (const timing::data &d) { *this = d; } // ------------------------------------------------------------ -data &data::operator= (const data &d) { +timing::data &timing::data::operator= (const timing::data &d) { maxlen = d.maxlen; signals = d.signals; sequence = d.sequence; @@ -132,7 +132,7 @@ data &data::operator= (const data &d) { // ------------------------------------------------------------ -sigdata &data::find_signal (const signame &name) { +sigdata &timing::data::find_signal (const signame &name) { signal_database::iterator i = signals.find (name); if (i == signals.end ()) { i = signals.insert (signal_database::value_type (name, sigdata ())).first; @@ -143,7 +143,7 @@ sigdata &data::find_signal (const signam // ------------------------------------------------------------ -const sigdata &data::find_signal (const signame &name) const { +const sigdata &timing::data::find_signal (const signame &name) const { signal_database::const_iterator i = signals.find (name); if (i == signals.end ()) throw not_found (name); @@ -152,7 +152,7 @@ const sigdata &data::find_signal (const // ------------------------------------------------------------ -void data::add_dependency (const signame &name, const signame &dep) { +void timing::data::add_dependency (const signame &name, const signame &dep) { // find the signal sigdata &sig = find_signal (name); sigdata &trigger = find_signal (dep); @@ -168,14 +168,14 @@ void data::add_dependency (const signame // ------------------------------------------------------------ -void data::add_dependencies (const signame &name, const signal_sequence &deps) { +void timing::data::add_dependencies (const signame &name, const signal_sequence &deps) { for (signal_sequence::const_iterator j = deps.begin (); j != deps.end (); ++ j) add_dependency (name, *j); } // ------------------------------------------------------------ -void data::add_delay (const signame &name, const signame &dep, const string &text) { +void timing::data::add_delay (const signame &name, const signame &dep, const string &text) { // a delay always indicates a dependency // (but would require a way to select which is rendered) // add_dependency (name, dep); @@ -206,7 +206,7 @@ void data::add_delay (const signame &nam // ------------------------------------------------------------ -void data::set_value (const signame &name, unsigned n, const sigvalue &value) { +void timing::data::set_value (const signame &name, unsigned n, const sigvalue &value) { // find the signal sigdata &sig = find_signal (name); @@ -228,7 +228,7 @@ void data::set_value (const signame &nam // ------------------------------------------------------------ -void data::pad (unsigned n) { +void timing::data::pad (unsigned n) { // pad all sequences to length n if (n > maxlen) maxlen = n; @@ -250,7 +250,7 @@ ostream &operator<< (ostream &f, const s // ------------------------------------------------------------ -ostream &operator<< (ostream &f, const data &data) { +ostream &operator<< (ostream &f, const timing::data &data) { f << "signals: " << endl; for (signal_sequence::const_iterator i = data.sequence.begin (); i != data.sequence.end (); ++ i) @@ -288,7 +288,7 @@ ostream &operator<< (ostream &f, const d // ------------------------------------------------------------ // calculate the required label width -static int label_width (const data &d) { +static int label_width (const timing::data &d) { int labelWidth = 0; #ifndef LITE @@ -319,7 +319,7 @@ static int label_width (const data &d) { // ------------------------------------------------------------ // calculate the basic height and width required before scaling -static void base_size (const data &d, int &w, int &h) { +static void base_size (const timing::data &d, int &w, int &h) { vCellHsep = vCellHt / 8; vCellH=vCellHt-vCellHsep; @@ -596,7 +596,7 @@ static void draw_delay (gc &gc, int x0, // ------------------------------------------------------------ -static void render_common (gc& gc, const data &d, +static void render_common (gc& gc, const timing::data &d, double hscale, double vscale) { gc.push (); @@ -650,7 +650,7 @@ static void render_common (gc& gc, const // ------------------------------------------------------------ -void timing::render (gc &gc, const data &d, double scale) { +void timing::render (gc &gc, const timing::data &d, double scale) { int base_width, base_height; base_size (d, base_width, base_height); @@ -662,7 +662,7 @@ void timing::render (gc &gc, const data // ------------------------------------------------------------ -void timing::render (gc &gc, const data &d, int w, int h, bool fixAspect) { +void timing::render (gc &gc, const timing::data &d, int w, int h, bool fixAspect) { int base_width, base_height; base_size (d, base_width, base_height); --- a/src/main.cc +++ b/src/main.cc @@ -44,7 +44,7 @@ static void banner (void); static void freesoft (void); unsigned n; -timing::data data; +timing::data data_; timing::signal_sequence deps; string outfile; int verbose = 0; @@ -87,9 +87,9 @@ static void render_it (timing::gc& gc, i int width, int height, double scale) { if (flags & FLAG_PAGESIZE) - render (gc, data, width, height, (flags & FLAG_ASPECT)); + render (gc, data_, width, height, (flags & FLAG_ASPECT)); else - render (gc, data, scale); + render (gc, data_, scale); } int main (int argc, char *argv[]) { @@ -193,9 +193,9 @@ int main (int argc, char *argv[]) { } } - data.pad (n); + data_.pad (n); if (verbose) - cout << data; + cout << data_; if (outfile.empty ()) return 0;
control
Description: Binary data
rules
Description: Binary data