History log of /haiku/src/system/kernel/util/kernel_cpp.cpp
Revision Date Author Comments
# 97739603 12-Oct-2022 Axel Dörfler <axeld@pinc-software.de>

kernel: Added operator delete(ptr, nothrow_t)

* This seems to be required when building the DriveEncryption kernel
driver with gcc 11.2 on x86-64, at least.

Change-Id: Ie1ae09435dd912021957e64d4b9a3e7b05913c33
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5742
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 47472aae 29-Oct-2020 Jérôme Duval <jerome.duval@gmail.com>

kernel: fix gcc2 build


# d56df58f 14-Oct-2020 Murai Takashi <tmurai01@gmail.com>

kernel: Fix -Wformat-security

Change-Id: Ie07933315c055ba1e6896e0bf69b12bb6bec62f9
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3343
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# d0e1eb7a 03-May-2020 Adrien Destugues <pulkomandy@pulkomandy.tk>

mark abort() function as noreturn.

It was not specified as such before C11, but that's only because there
was no C standard way to do it until then.

Fixes #15955.

Change-Id: Ied7b7fd94988ed7724460917aebc859b74eaa585
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2558
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 46bca9bd 15-Jun-2019 Augustin Cavalier <waddlesplash@gmail.com>

kernel: Make exit() stub truly non-returning.


# edb6d3b1 01-Aug-2018 Augustin Cavalier <waddlesplash@gmail.com>

kernel_cpp: Move the C++14 operator delete out of the header.

It seems not all of the kernel includes this, but some use new/delete
anyway. Further, operator delete[] was not implemented at all.

Possibly fixes the ARM build.


# 9ac30627 18-Jun-2018 Augustin Cavalier <waddlesplash@gmail.com>

kernel: Small fixes for Clang.


# 9e75e900 28-May-2018 Jérôme Duval <jerome.duval@gmail.com>

kernel: use non-deprecated signatures for new/delete operators.

add posix_memalign(), needed for c++17.


# 172c944a 20-May-2018 Alexander von Gluck IV <kallisti5@unixzen.com>

kernel/kernel_cpp: Change nothrow_t syntax for gcc6+

* Fix for explicit constructor change.
https://github.com/gcc-mirror/gcc/commit/a3f25f0f

Change-Id: I330ad9c3bff1d7f3e0284f3dcda86e17d974c57d


# 71e03249 07-Nov-2015 Jonathan Schleifer <js@webkeks.org>

Move new / delete kernel_cpp.h -> kernel_cpp.cpp

new and delete may not be defined as inline, as Clang loudly complains.
The same is true for static.


# 586995da 30-Aug-2014 Ithamar R. Adema <ithamar@upgrade-android.com>

ARM: make ARM C++ unwind stubs panic

As suggested by Francois, thanks for paying attention!


# cbe5cf64 30-Aug-2014 Ithamar R. Adema <ithamar@upgrade-android.com>

ARM: add a couple of ARM specific stubs

These are ARM EABI specific exception handling functions, referenced
from the gcc c++ libraries.


# e81d40a7 17-Aug-2014 Oliver Tappe <zooey@hirschkaefer.de>

Fix debug build.

* Restore missing definitions of std::nothrow and mynothrow that are
required for the debug build.
* Additionally, cleanup function overrides provided by kernel_cpp,
such that any exceptions in kernel, bootloader or runtime_loader will
trigger a panic.


# 220d0402 31-Jul-2014 Oliver Tappe <zooey@hirschkaefer.de>

Use libstdc++, libsupc++ and libgcc from gcc_syslibs.

* Instead of faking libstdc++.so from libstdc++.a, use libstdc++.so
from the gcc_syslibs build feature for everything except x86_gcc2.
* Use libgcc_s.so from the gcc_syslibs build feature for everything but
x86_gcc2 (which still carries libgcc as part of libroot.so).
* Drop filtering of libgcc objects for libroot, as that is no longer
necessary since we're only using libgcc-as-single-object for libroot
with x86_gcc2, where the filtered object file doesn't exist. Should
the objects that used to be filtered cause any problems as part of
libgcc_s.so, we can always filter them as part of the gcc build.
* Use libsupc++.so from the gcc_syslibs build feature for everything but
x86_gcc2.
* Adjust all Jamfiles accordingly.
* Deactivate building of faked libstdc++.so for non-x86-gcc2. For
x86_gcc2, we still build libstdc++.so from the sources in the Haiku
source tree as part of the Haiku build .
* Put gcc_syslibs package onto the image, when needed.


# ffd53936 01-Oct-2013 Pawel Dziepak <pdziepak@quarnos.org>

kernel/util: Make exit() available in bootloader as well


# 7aecb0b2 01-Oct-2013 Pawel Dziepak <pdziepak@quarnos.org>

kernel/util: Make exit() available in kernel mode

Since we are using libraries originally intendent for user mode in kernel
mode providing them with some userland functions is inevitable. This
particular patch is to make zlib happy and able to call exit() when
its debug assertions fails.


# fb8e0889 04-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Added dummy __cxa_atexit() and __cxa_finalize() to the kernel. We might
actually implement those, if we decide to support global
constructors/destructors in kernel add-ons.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39300 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 74a36670 25-Jan-2009 Michael Lotz <mmlr@mlotz.ch>

When linking against libgcc already don't include these symbols. Otherwise we
get multiple definitions of them when building with GCC4 on a GCC4 host.
With that we can now build completely on a GCC4 host with native GCC 4.3.3.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29020 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 56eb43e3 03-Nov-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Made kernel_cpp.h usable in the runtime loader.
* Added new(mynothrow) operators which avoid clashes when also linking
against libgcc.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28474 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 71ec907e 28-Jul-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

Build fix for GCC 4


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21731 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 74c0424a 26-Jul-2007 Axel Dörfler <axeld@pinc-software.de>

* Added a mechanism to retrieve a BMessage with eventual error descriptions
for _kern_load_image().
* Added KMessage to the runtime_loader (a bit hacky, though) - it will use
it to deliver the above mentioned functionality.
* load_dependencies() did return the wrong status code in case a library
was missing; now it returns B_MISSING_LIBRARY.
* load_dependencies() will now try to load all dependencies when a report
message is requested; therefore, all missing libraries are listed.
* Renamed uspace_program_args to user_space_program_args.
* The kernel filled in various members of the user_space_program_args structure
unsafely, ie. was not using user_memcpy().
* Renamed some local variables in team.c to better fit our style guide (ie.
uargs to userArgs).
* Changed Tracker to use the new _kern_load_image() variant on Haiku to retrieve
and report all missing libraries. This fixes bug #1324.
* Adapted kernel_cpp.cpp to the runtime loader as well; the latter will now
compile with _LOADER_MODE defined.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21715 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0de38aa0 23-Sep-2006 Jérôme Duval <korli@users.berlios.de>

added needed symbols for gcc4 linking


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18910 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 20e1d3e5 16-Sep-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

added _Unwind_* to make the gcc 4 linker happy, but I'm not sure if this is the correct way.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18870 a95241bf-73f2-0310-859d-f6bbb57e9c96


# aeef8a10 16-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Reverted to the previous version. I was too quick; the boot loader
doesn't link against libsupc++ and still needs the symbol.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14972 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9b2e7612 16-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

No need to define __cxa_pure_virtual. We're linking against libsupc++ anyway.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14967 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6d865282 16-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Link the kernel against libsupc++.a -- we're using RTTI after all. Added
missing symbols to kernel_cpp.cpp.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14965 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 758b1d0e 12-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixes that make Haiku build with gcc 4. Mainly out of the following
categories:
* Missing includes (like <stdlib.h> and <string.h>).
* Linking against $(TARGET_LIBSTDC++) instead of libstdc++.r4.so.
* Local variables shadowing parameters.
* Default parameters in function definitions (as opposed to function
declarations).
* All C++ stuff (nothrow, map, set, vector, min, max,...) must be imported
explicitly from the std:: namespace now.
* "new (sometype)[...]" must read "new sometype[...]", even if sometype is
something like "const char *".
* __FUNCTION__ is no longer a string literal (but a string expression), i.e.
'printf(__FUNCTION__ ": ...\n")' is invalid code.
* A type cast results in a non-lvalue. E.g. "(char *)buffer += bytes"
is an invalid expression.
* "friend class SomeClass" only works when SomeClass is known before.
Otherwise the an inner class with that name is considered as friend.
gcc 4 is much pickier about scopes.
* gcc 4 is generally stricter with respect to type conversions in C.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14878 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2d690920 13-Apr-2005 Axel Dörfler <axeld@pinc-software.de>

Renamed system/core to system/kernel.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12360 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 586995da4728f10831c45615b43139c0d7b36a24 30-Aug-2014 Ithamar R. Adema <ithamar@upgrade-android.com>

ARM: make ARM C++ unwind stubs panic

As suggested by Francois, thanks for paying attention!


# cbe5cf641defde6be1dfa2a173e071958b0edbf5 30-Aug-2014 Ithamar R. Adema <ithamar@upgrade-android.com>

ARM: add a couple of ARM specific stubs

These are ARM EABI specific exception handling functions, referenced
from the gcc c++ libraries.


# e81d40a7c85f19ac767c347a326a316348b7144e 17-Aug-2014 Oliver Tappe <zooey@hirschkaefer.de>

Fix debug build.

* Restore missing definitions of std::nothrow and mynothrow that are
required for the debug build.
* Additionally, cleanup function overrides provided by kernel_cpp,
such that any exceptions in kernel, bootloader or runtime_loader will
trigger a panic.


# 220d04022750f40f8bac8f01fa551211e28d04f2 31-Jul-2014 Oliver Tappe <zooey@hirschkaefer.de>

Use libstdc++, libsupc++ and libgcc from gcc_syslibs.

* Instead of faking libstdc++.so from libstdc++.a, use libstdc++.so
from the gcc_syslibs build feature for everything except x86_gcc2.
* Use libgcc_s.so from the gcc_syslibs build feature for everything but
x86_gcc2 (which still carries libgcc as part of libroot.so).
* Drop filtering of libgcc objects for libroot, as that is no longer
necessary since we're only using libgcc-as-single-object for libroot
with x86_gcc2, where the filtered object file doesn't exist. Should
the objects that used to be filtered cause any problems as part of
libgcc_s.so, we can always filter them as part of the gcc build.
* Use libsupc++.so from the gcc_syslibs build feature for everything but
x86_gcc2.
* Adjust all Jamfiles accordingly.
* Deactivate building of faked libstdc++.so for non-x86-gcc2. For
x86_gcc2, we still build libstdc++.so from the sources in the Haiku
source tree as part of the Haiku build .
* Put gcc_syslibs package onto the image, when needed.


# ffd539362046a9ba5922cf234be872fd7278212a 01-Oct-2013 Pawel Dziepak <pdziepak@quarnos.org>

kernel/util: Make exit() available in bootloader as well


# 7aecb0b276462f84b4fa6ef94357b9bef74a6e21 01-Oct-2013 Pawel Dziepak <pdziepak@quarnos.org>

kernel/util: Make exit() available in kernel mode

Since we are using libraries originally intendent for user mode in kernel
mode providing them with some userland functions is inevitable. This
particular patch is to make zlib happy and able to call exit() when
its debug assertions fails.


# fb8e088927324a570475577fac5041883f0045a6 04-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Added dummy __cxa_atexit() and __cxa_finalize() to the kernel. We might
actually implement those, if we decide to support global
constructors/destructors in kernel add-ons.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39300 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 74a366707fd27fa6590d0e6e22aebfa339b4b5c7 25-Jan-2009 Michael Lotz <mmlr@mlotz.ch>

When linking against libgcc already don't include these symbols. Otherwise we
get multiple definitions of them when building with GCC4 on a GCC4 host.
With that we can now build completely on a GCC4 host with native GCC 4.3.3.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29020 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 56eb43e3ca9e1274a5b39bf4e2bd266bd8cb525a 03-Nov-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Made kernel_cpp.h usable in the runtime loader.
* Added new(mynothrow) operators which avoid clashes when also linking
against libgcc.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28474 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 71ec907eaa172992c819c58fd547980054dd84b3 28-Jul-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

Build fix for GCC 4


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21731 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 74c0424a43b550536d4b55b8fc13631ca4edfcb0 26-Jul-2007 Axel Dörfler <axeld@pinc-software.de>

* Added a mechanism to retrieve a BMessage with eventual error descriptions
for _kern_load_image().
* Added KMessage to the runtime_loader (a bit hacky, though) - it will use
it to deliver the above mentioned functionality.
* load_dependencies() did return the wrong status code in case a library
was missing; now it returns B_MISSING_LIBRARY.
* load_dependencies() will now try to load all dependencies when a report
message is requested; therefore, all missing libraries are listed.
* Renamed uspace_program_args to user_space_program_args.
* The kernel filled in various members of the user_space_program_args structure
unsafely, ie. was not using user_memcpy().
* Renamed some local variables in team.c to better fit our style guide (ie.
uargs to userArgs).
* Changed Tracker to use the new _kern_load_image() variant on Haiku to retrieve
and report all missing libraries. This fixes bug #1324.
* Adapted kernel_cpp.cpp to the runtime loader as well; the latter will now
compile with _LOADER_MODE defined.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21715 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0de38aa00b83748c5dba477404abd233fb3339f2 23-Sep-2006 Jérôme Duval <korli@users.berlios.de>

added needed symbols for gcc4 linking


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18910 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 20e1d3e5e2006a4039814ff1da3274006a491d8f 16-Sep-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

added _Unwind_* to make the gcc 4 linker happy, but I'm not sure if this is the correct way.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18870 a95241bf-73f2-0310-859d-f6bbb57e9c96


# aeef8a1098ad83bd5e5dda658cccfc7105e4b8af 16-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Reverted to the previous version. I was too quick; the boot loader
doesn't link against libsupc++ and still needs the symbol.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14972 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9b2e76121bb49112dfeae279669792ae24970902 16-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

No need to define __cxa_pure_virtual. We're linking against libsupc++ anyway.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14967 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6d865282d4c0348555ab6a2402caea72f8895b2e 16-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Link the kernel against libsupc++.a -- we're using RTTI after all. Added
missing symbols to kernel_cpp.cpp.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14965 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 758b1d0e05fe1042cce6e00d194a147802d4f9be 12-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixes that make Haiku build with gcc 4. Mainly out of the following
categories:
* Missing includes (like <stdlib.h> and <string.h>).
* Linking against $(TARGET_LIBSTDC++) instead of libstdc++.r4.so.
* Local variables shadowing parameters.
* Default parameters in function definitions (as opposed to function
declarations).
* All C++ stuff (nothrow, map, set, vector, min, max,...) must be imported
explicitly from the std:: namespace now.
* "new (sometype)[...]" must read "new sometype[...]", even if sometype is
something like "const char *".
* __FUNCTION__ is no longer a string literal (but a string expression), i.e.
'printf(__FUNCTION__ ": ...\n")' is invalid code.
* A type cast results in a non-lvalue. E.g. "(char *)buffer += bytes"
is an invalid expression.
* "friend class SomeClass" only works when SomeClass is known before.
Otherwise the an inner class with that name is considered as friend.
gcc 4 is much pickier about scopes.
* gcc 4 is generally stricter with respect to type conversions in C.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14878 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2d690920ac4d0cd27eb3c118fb2b0862615869e0 13-Apr-2005 Axel Dörfler <axeld@pinc-software.de>

Renamed system/core to system/kernel.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12360 a95241bf-73f2-0310-859d-f6bbb57e9c96