This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Compiling Icarus Verilog with GCC3.3
- From: Mike Ruff <mruff68 at yahoo dot com>
- To: gcc-help at gcc dot gnu dot org
- Date: Mon, 21 Jul 2003 11:06:46 -0700 (PDT)
- Subject: Compiling Icarus Verilog with GCC3.3
Hey all,
Now that I can bootstrap GCC, I'm back to
the problem I noticed before... Specifically,
when compiling the Icarus Verilog simulator,
I get errors like the following... C++ is not
my natiove language, so please be kind...
The code compiles fine on GCC3.2.X, so I suspect
some kind of namespace change in libstdc++, or
perhaps an inlining issue... Any ideas???
g++ -g -O2 -I. -I. -rdynamic -o ivl main.o async.o
design_dump.o dup_expr.o el
aborate.o elab_expr.o elab_lval.o elab_net.o
elab_anet.o elab_pexpr.o elab_scop
e.o elab_sig.o emit.o eval.o eval_attrib.o eval_tree.o
expr_synth.o functor.o l
exor.o lexor_keyword.o link_const.o load_module.o
netlist.o netmisc.o net_assig
n.o net_design.o net_event.o net_expr.o net_force.o
net_func.o net_link.o net_m
odulo.o net_nex_input.o net_nex_output.o net_proc.o
net_scope.o net_udp.o net_v
ariable.o pad_to_width.o parse.o parse_misc.o pform.o
pform_dump.o set_width.o
sync.o verinum.o verireal.o target.o targets.o
Attrib.o HName.o LineInfo.o Modu
le.o PData.o PDelays.o PEvent.o PExpr.o PGate.o
PTask.o PUdp.o PFunction.o PWir
e.o Statement.o StringHeap.o cprop.o nodangle.o
synth.o synth2.o syn-rules.o xn
fio.o t-dll.o t-dll-api.o t-dll-expr.o t-dll-proc.o
t-xnf.o -ldl
/usr/bin/ld: Dwarf Error: Invalid or unhandled FORM
value: 14.
/usr/bin/ld: Dwarf Error: Invalid or unhandled FORM
value: 14.
/usr/bin/ld: Dwarf Error: Invalid or unhandled FORM
value: 14.
async.o: In function `svector<std::basic_string<char,
std::char_traits<char>, s
td::allocator<char> >
>::svector[not-in-charge](unsigned)':
:105: multiple definition of
`svector<std::basic_string<char, std::char_traits<
char>, std::allocator<char> >
>::svector[not-in-charge](unsigned)'
/usr/bin/ld: Dwarf Error: Invalid or unhandled FORM
value: 14.
/usr/bin/ld: Dwarf Error: Invalid or unhandled FORM
value: 14.
/usr/bin/ld: Dwarf Error: Invalid or unhandled FORM
value: 14.
main.o::105: first defined here
__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com
#ifndef __svector_H
#define __svector_H
/*
* Copyright (c) 1999 Stephen Williams (steve@icarus.com)
*
* This source code is free software; you can redistribute it
* and/or modify it in source code form under the terms of the GNU
* General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option)
* any later version. In order to redistribute the software in
* binary form, you will need a Picture Elements Binary Software
* License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#ifdef HAVE_CVS_IDENT
#ident "$Id: svector.h,v 1.8 2003/07/16 00:54:07 steve Exp $"
#endif
# include "config.h"
# include <string>
# include <assert.h>
/*
* This is a way simplified vector class that cannot grow or shrink,
* and is really only able to handle values. It is intended to be
* lighter weight then the STL list class.
*/
template <class TYPE> class svector {
public:
explicit svector() : nitems_(0), items_(0) { }
explicit svector(unsigned size) : nitems_(size), items_(new TYPE[size])
{ for (unsigned idx = 0 ; idx < size ; idx += 1)
items_[idx] = 0;
}
svector(const svector<TYPE>&that)
: nitems_(that.nitems_), items_(new TYPE[nitems_])
{ for (unsigned idx = 0 ; idx < that.nitems_ ; idx += 1)
items_[idx] = that[idx];
}
svector(const svector<TYPE>&l, const svector<TYPE>&r)
: nitems_(l.nitems_ + r.nitems_), items_(new TYPE[nitems_])
{ for (unsigned idx = 0 ; idx < l.nitems_ ; idx += 1)
items_[idx] = l[idx];
for (unsigned idx = 0 ; idx < r.nitems_ ; idx += 1)
items_[l.nitems_+idx] = r[idx];
}
svector(const svector<TYPE>&l, TYPE r)
: nitems_(l.nitems_ + 1), items_(new TYPE[nitems_])
{ for (unsigned idx = 0 ; idx < l.nitems_ ; idx += 1)
items_[idx] = l[idx];
items_[nitems_-1] = r;
}
~svector() { delete[]items_; }
svector<TYPE>& operator= (const svector<TYPE>&that)
{ if (&that == this) return *this;
delete[]items_;
nitems_ = that.nitems_;
items_ = new TYPE[nitems_];
for (unsigned idx = 0 ; idx < nitems_ ; idx += 1) {
items_[idx] = that.items_[idx];
}
return *this;
}
unsigned count() const { return nitems_; }
TYPE&operator[] (unsigned idx)
{ assert(idx < nitems_);
return items_[idx];
}
TYPE operator[] (unsigned idx) const
{ assert(idx < nitems_);
return items_[idx];
}
private:
unsigned nitems_;
TYPE* items_;
};
/*
* Override the implementation of the above template for the string
* type parameter. The initialization to nil works different here.
*/
svector<string>::svector<string>(unsigned size)
: nitems_(size), items_(new string[size])
{
}
/*
* $Log: svector.h,v $
* Revision 1.8 2003/07/16 00:54:07 steve
* Needs the config.h header.
*
* Revision 1.7 2003/07/15 05:07:13 steve
* Move PUdp constructor into compiled file.
*
* Revision 1.6 2002/08/12 01:35:00 steve
* conditional ident string using autoconfig.
*
* Revision 1.5 2000/02/23 02:56:55 steve
* Macintosh compilers do not support ident.
*
* Revision 1.4 1999/06/15 03:44:53 steve
* Get rid of the STL vector template.
*
* Revision 1.3 1999/05/06 04:37:17 steve
* Get rid of list<lgate> types.
*
* Revision 1.2 1999/05/01 02:57:53 steve
* Handle much more complex event expressions.
*
* Revision 1.1 1999/04/29 02:16:26 steve
* Parse OR of event expressions.
*
*/
#endif