12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // Copyright (C) 2012-2022 Free Software Foundation, Inc.
- //
- // This file is part of GCC.
- //
- // GCC 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 3, or (at your option)
- // any later version.
- // GCC 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.
- // Under Section 7 of GPL version 3, you are granted additional
- // permissions described in the GCC Runtime Library Exception, version
- // 3.1, as published by the Free Software Foundation.
- // You should have received a copy of the GNU General Public License and
- // a copy of the GCC Runtime Library Exception along with this program;
- // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- // <http://www.gnu.org/licenses/>.
- #ifndef _VTV_FAIL_H
- #define _VTV_FAIL_H 1
- /* __vtv_really_fail prints a backtrace and a memory dump, then calls
- abort. It is here for programmers to call, presumably from
- __vtv_verify_fail, if they choose to overwrite the standard
- __vtv_verify_fail with one of their own. Programmers should NOT
- attempt to rewrite __vtv_really_fail. */
- extern void
- __vtv_really_fail (const char *fail_msg)
- __attribute__ ((visibility ("default"), noreturn, nothrow));
- /* __vtv_verify_fail is the function that gets called if the vtable
- verification code discovers a vtable pointer that it cannot verify
- as valid. Normally __vtv_verify_fail calls __vtv_really_fail.
- However programmers can write and link in their own version of
- __vtv_verify_fail, if they wish to do some kind of secondary
- verification, for example. The main verification code assumes that
- IF __vtv_verify_fail returns, then some kind of secondary
- verification was done AND that the secondary verification succeeded,
- i.e. that the vtable pointer is actually valid and ok to use. If
- the secondary verification fails, then __vtv_verify_fail should not
- return. */
- extern void
- __vtv_verify_fail (void **data_set_ptr, const void *vtbl_pointer)
- __attribute__((visibility ("default"), nothrow));
- extern void
- __vtv_verify_fail_debug (void **data_set_ptr, const void *vtbl_pointer,
- const char *debug_msg)
- __attribute__((visibility ("default"), nothrow));
- #endif /* _VTV_FAIL_H */
|