source: mainline/uspace/lib/cpp/src/internal/runtime.cpp@ 4c58668

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 4c58668 was 4c58668, checked in by Dzejrou <dzejrou@…>, 7 years ago

cpp: misc modifications

  • Property mode set to 100644
File size: 3.2 KB
Line 
1/*
2 * Copyright (c) 2017 Jaroslav Jindrak
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#include <internal/abi.hpp>
30
31namespace __cxxabiv1
32{
33
34 /**
35 * No need for a body, this function is called when a virtual
36 * call of a pure virtual function cannot be made.
37 */
38 // TODO: terminate in this
39 extern "C" void __cxa_pure_call()
40 { /* DUMMY BODY */ }
41
42 __fundamental_type_info::~__fundamental_type_info()
43 { /* DUMMY BODY */ }
44
45 __array_type_info::~__array_type_info()
46 { /* DUMMY BODY */ }
47
48 __function_type_info::~__function_type_info()
49 { /* DUMMY BODY */ }
50
51 __enum_type_info::~__enum_type_info()
52 { /* DUMMY BODY */ }
53
54 __class_type_info::~__class_type_info()
55 { /* DUMMY BODY */ }
56
57 __si_class_type_info::~__si_class_type_info()
58 { /* DUMMY BODY */ }
59
60 __vmi_class_type_info::~__vmi_class_type_info()
61 { /* DUMMY BODY */ }
62
63 __pbase_type_info::~__pbase_type_info()
64 { /* DUMMY BODY */ }
65
66 __pointer_type_info::~__pointer_type_info()
67 { /* DUMMY BODY */ }
68
69 __pointer_to_member_type_info::~__pointer_to_member_type_info()
70 { /* DUMMY BODY */ }
71
72 /**
73 * This structure represents part of the vtable segment
74 * that contains data related to dynamic_cast.
75 */
76 struct vtable
77 {
78 // Unimportant to us.
79
80 std::ptrdiff_t offset_to_top;
81 std::type_info* tinfo;
82
83 // Actual vtable.
84 };
85 extern "C" void* __dynamic_cast(const void* sub, const __class_type_info* src,
86 const __class_type_info* dst, std::ptrdiff_t offset)
87 {
88 // TODO: implement
89 // NOTE: as far as I understand it, we get vtable prefix from sub, get the type_info
90 // ptr from that and then climb the inheritance hierarchy upwards till we either
91 // fint dst or fail and return nullptr
92 return nullptr;
93 }
94}
Note: See TracBrowser for help on using the repository browser.