Mercurial > ecos
changeset 878:7a1e8e86fb43
Implement __cxa_pure_virtual() in eCos rather than rely on the one in
libsupc++
| author | bartv |
|---|---|
| date | Thu, 27 Mar 2003 17:49:41 +0000 |
| parents | a9d5a0fc1ce8 |
| children | 8122b0a3018b |
| files | packages/infra/current/ChangeLog packages/infra/current/cdl/infra.cdl packages/infra/current/src/pure.cxx |
| diffstat | 3 files changed, 73 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/infra/current/ChangeLog +++ b/packages/infra/current/ChangeLog @@ -1,3 +1,9 @@ +2003-03-27 Bart Veer <bartv@ecoscentric.com> + + * src/pure.cxx, cdl/infra.cdl: new function __cxa_pure_virtual(), + needed when building with g++ v3.x if the code uses pure + virtual functions. + 2003-01-18 Jonathan Larmour <jifl@eCosCentric.com> * include/cyg_ass.h (CYG_CHECK_FUNC_PTRC): Define with const pointer
--- a/packages/infra/current/cdl/infra.cdl +++ b/packages/infra/current/cdl/infra.cdl @@ -59,7 +59,8 @@ cdl_package CYGPKG_INFRA { compile startup.cxx prestart.cxx pkgstart.cxx userstart.cxx \ dummyxxmain.cxx null.cxx simple.cxx fancy.cxx buffer.cxx \ - diag.cxx tcdiag.cxx memcpy.c memset.c delete.cxx eprintf.c + diag.cxx tcdiag.cxx memcpy.c memset.c delete.cxx eprintf.c \ + pure.cxx # ====================================================================
new file mode 100644 --- /dev/null +++ b/packages/infra/current/src/pure.cxx @@ -0,0 +1,65 @@ +//========================================================================== +// +// pure.cxx +// +// g++ support +// +//========================================================================== +//####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 2003 Bart Veer +// +// eCos is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 2 or (at your option) any later version. +// +// eCos 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 eCos; if not, write to the Free Software Foundation, Inc., +// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. +// +// As a special exception, if other files instantiate templates or use macros +// or inline functions from this file, or you compile this file and link it +// with other works to produce a work based on this file, this file does not +// by itself cause the resulting work to be covered by the GNU General Public +// License. However the source code for this file must still be made available +// in accordance with section (3) of the GNU General Public License. +// +// This exception does not invalidate any other reasons why a work based on +// this file might be covered by the GNU General Public License. +// ------------------------------------------- +//####ECOSGPLCOPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): bartv +// Date: 2003-03-27 +// Purpose: provide a __cxa_pure_virtual() function +// Description: g++ v3.x generates references to a function __cxa_pure_virtual() +// whenever the code contains pure virtual functions. This is a +// placeholder used while constructing an object, and the function +// should never actually get called. There is a default +// implementation in libsupc++ but that has dependencies on I/O +// and so on, unwanted in a minimal eCos environment. Instead we +// want a minimal __cxa_pure_virtual(). +// +//####DESCRIPTIONEND#### +// +//========================================================================== + +#include <pkgconf/infra.h> +#include <cyg/infra/cyg_ass.h> + +extern "C" void +__cxa_pure_virtual(void) +{ + CYG_FAIL("attempt to use a virtual function before object has been constructed"); + for ( ; ; ); +} + +// EOF pure.cxx
