Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. // -*- C++ -*-
  2. // Copyright (C) 2000-2013 Free Software Foundation, Inc.
  3. //
  4. // This file is part of GCC.
  5. //
  6. // GCC is free software; you can redistribute it and/or modify
  7. // it under the terms of the GNU General Public License as published by
  8. // the Free Software Foundation; either version 3, or (at your option)
  9. // any later version.
  10. //
  11. // GCC is distributed in the hope that it will be useful,
  12. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. // GNU General Public License for more details.
  15. //
  16. // Under Section 7 of GPL version 3, you are granted additional
  17. // permissions described in the GCC Runtime Library Exception, version
  18. // 3.1, as published by the Free Software Foundation.
  19.  
  20. // You should have received a copy of the GNU General Public License and
  21. // a copy of the GCC Runtime Library Exception along with this program;
  22. // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  23. // <http://www.gnu.org/licenses/>.
  24.  
  25. #include <bits/c++config.h>
  26. #include <cxxabi.h>
  27. #include "unwind-cxx.h"
  28.  
  29. #if _GLIBCXX_HOSTED && _GLIBCXX_VERBOSE
  30. #ifdef _GLIBCXX_HAVE_UNISTD_H
  31. # include <unistd.h>
  32. # define writestr(str)  write(2, str, sizeof(str) - 1)
  33. # ifdef __GNU_LIBRARY__
  34.   /* Avoid forcing the library's meaning of `write' on the user program
  35.      by using the "internal" name (for use within the library).  */
  36. /*#  define write(fd, buf, n)   __write((fd), (buf), (n))*/
  37. # endif
  38. #else
  39. # include <cstdio>
  40. # define writestr(str)  std::fputs(str, stderr)
  41. #endif
  42. #else
  43. # define writestr(str) /* Empty */
  44. #endif
  45.  
  46. extern "C" void
  47. __cxxabiv1::__cxa_pure_virtual (void)
  48. {
  49.   writestr ("pure virtual method called\n");
  50.   std::terminate ();
  51. }
  52.  
  53. extern "C" void
  54. __cxxabiv1::__cxa_deleted_virtual (void)
  55. {
  56.   writestr ("deleted virtual method called\n");
  57.   std::terminate ();
  58. }
  59.