FastArduino v1.10
C++ library to build fast but small Arduino/AVR projects
Loading...
Searching...
No Matches
abi.cpp
1// Copyright 2016-2023 Jean-Francois Poilpret
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#include "defines.h"
16
17// Interesting and complete description here (C++ wise, not AVR specific)
18// https://itanium-cxx-abi.github.io/cxx-abi/abi.html
19// Default GCC 11.1.0 ABI header
20// https://gcc.gnu.org/onlinedocs/gcc-11.1.0/libstdc++/api/a00026.html
21namespace __cxxabiv1
22{
23 typedef int __guard;
24
25 void* __dso_handle = nullptr;
26
27 extern "C"
28 {
29 // https://itanium-cxx-abi.github.io/cxx-abi/abi.html#guards
30 // https://itanium-cxx-abi.github.io/cxx-abi/abi.html#once-ctor
31 int __cxa_guard_acquire(__guard* g UNUSED)
32 {
33 return 0;
34 }
35
36 void __cxa_guard_release(__guard* g UNUSED) {}
37
38 void __cxa_guard_abort(__guard* g UNUSED) {}
39
40 // https://itanium-cxx-abi.github.io/cxx-abi/abi.html#pure-virtual
41 void __cxa_pure_virtual(void) {}
42
43 // https://itanium-cxx-abi.github.io/cxx-abi/abi.html#dso-dtor
44 int __cxa_atexit(void (*destructor)(void*) UNUSED, void* arg UNUSED, void* dso UNUSED)
45 {
46 return 0;
47 }
48
49 void __cxa_finalize(void* f UNUSED) {}
50 }
51}
Useful defines GCC specific attributes.
#define UNUSED
Specific GCC attribute to declare an argument or variable unused, so that the compiler does not emit ...
Definition: defines.h:45