Commit Graph
28 Commits
Author SHA1 Message Date
Kacper Kasper 17c18c1b0d unittests: fix x86_gcc2 build issues 2026-01-24 12:02:56 +01:00
Augustin Cavalier 194f7cff83 legacy stdc++: Delete all unused protected streambuf APIs that use IO_FILE directly.
Unfortunately there are some marked "public" that also use it,
so we can't just move the remainder to an internal file and then
drop libio.h from public consumption.

Delete all the unused portions of the public libio.h while at it.
2025-03-13 18:22:33 -04:00
Augustin Cavalier aa3a5e7698 headers: Drop _G_config.h from public headers.
Adjust the two legacy stdc++ headers that still included it;
it seems they didn't themselves depend on any of the definitions it
contained. However, streambuf.h actually did, so put that definition in
libio.h so that it's always present.

(The stdc++ implementation will get the 'real' _G_config.h from
libroot glibc.)
2025-03-13 17:23:44 -04:00
Augustin Cavalier 1799deddfd legacy stdc++: Drop <iostdio.h>.
It couldn't have been used anywhere, because "iolibio.h" is
available only in glibc includes in libroot, not in the
"headers" directories.
2025-03-13 16:36:09 -04:00
Augustin Cavalier 01a481d470 legacy stdc++: Make sure MTSAFE_IO is always enabled.
It's set in _G_config.h, but this file doesn't include that,
so in many cases the "unlocked" function was called instead.
(Most of the stdc++ .cc files did have it set, though.)
2025-03-13 16:35:23 -04:00
Augustin Cavalier 9769edfa33 headers: Get glibc <libio.h> out of the default include path.
It's needed by GCC2 stdc++, but we shouldn't be including it
for all consumers of <stdio.h>, which we were. Drop it,
and adjust all the things that were relying on <stdio_pre.h>'s
definition of __PRINTFLIKE to use the _PRINTFLIKE defined
in BeBuild.h instead.

Hopefully should not cause any breakage; the libroot
implementation of __freading depended on this, but
I didn't see anything else which did.
2025-03-13 15:57:25 -04:00
PulkoMandy 899e0ef82b userlandfs: use std::bitset for FSCapabilities
gcc 13 is confused by the custom bitset implementation, so use the C++
standard one instead.

However, this results in including the C++ <string> header in kernel
code. This doesn't work for gcc2, because of two problems:

- That header includes a declaration of atomic_add that doesn't match
the one in SupportsDefs.h (which can in some cases replace the function
with a #define for an inline version). Adjust the header to use the
be a problem because it creates a risk of circular inclusions.
Standard C++ headers shouldn't depend on BeAPI ones.
- It also leads to the inclusion of iostream which defined lock and
unlock functions in the global namespace. We don't want these, and they
are not part of the C++ standard, so just remove them.

Ideally we could use std::hash for the GetHashCode implementation, but
that doesn't work because it depends on an helper function that's in
libstdc++, and we can't link that from kernel add-ons.

Change-Id: Iee07280beb4dddf7a9b6160e37f3b816e4de89ae
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6663
Reviewed-by: Niels Sascha Reedijk <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2023-07-10 06:27:18 +00:00
Adrien Destugues 691e517bbd build fix.
* can't use min here, this header is not supposed to #include
  <algorithm>.
2015-11-12 22:24:16 +01:00
Adrien Destugues 4e3137c085 Add another missing string::compare method
* Makes our gcc2 slightly more C++98 compliant...
2015-11-12 22:08:23 +01:00
Adrien Destugues 4c7f391f32 Add a <limits> header for gcc2.
Hacked from the gcc4 version. There may be wrong values returned in some
cases.

Fixes #6701.
2014-11-27 12:14:39 +01:00
Adrien Destugues 56abf4aa37 Fix std::isnan and friends for gcc2.
gcc2 was relying on the c99 functions being there, but they are not in
the std namespace.
* Disable the C99 functions and macros in C++ mode
* Redefine them as inline functions in cmath in the std namespace.

Fixes #7396.
2014-11-27 10:58:49 +01:00
Adrien Destugues 850f2d1e58 Add the at() method to C++ vectors.
* There is no reason not to have this.
2014-10-26 20:28:21 +01:00
Adrien Destugues e1caa56b1e Add another mssing string::compare prototype.
Matches buildtools change 8b70c20ed25f905e7e217376c9e2f65a8dee6729.
2014-01-17 10:00:32 +01:00
Pawel Dziepak 73ad2473e7 Remove remaining unnecessary 'volatile' qualifiers 2013-11-06 00:03:07 +01:00
Adrien Destugues - PulkoMandy 100db087dc Allow use of c_str() on wstring. 2012-10-27 17:14:55 +02:00
Adrien Destugues - PulkoMandy 7ee53ed3bd Add tan(), tanh(), log10() to std::complex
Keep the haiku/ version of the headers in sync with buildtools
(see btrev43041)

I'm curious: why do we have a copy of these headers in haiku/ tree ?
2012-10-27 15:44:59 +02:00
Adrien Destugues 837b16251d Fix #7948: add correct prototype for String::compare alongside the wrong one
for BeOS compatibility.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43023 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-31 09:56:00 +00:00
Axel Dörfler 481f986b59 * Added missing clear() method.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37924 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-05 11:23:01 +00:00
Ingo Weinhold 2222d0559d * Introduced new header directory "config", which ATM contains HaikuConfig.h
and types.h. The idea is to provide a basic architecture/compiler
  abstraction by defining types and macros that allow the posix/ and os/
  headers to be mostly architecture/compiler agnostic. 
* Adjusted the posix/ and os/ headers accordingly.
* <SupportDefs.h>: Introduced B_PRI* and B_SCN* macros similar to the PRI*
  and SCN* macros defined in <inttypes.h>, just for the BeOS/Haiku [u]int*
  types and some POSIX types (e.g. off_t, dev_t, ino_t) that don't have POSIX
  macros. Also the B_PRI* and B_SCN* macros are available unconditionally,
  unlike the <inttypes.h> macros, which require __STDC_FORMAT_MACROS to be
  defined in C++ mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34214 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-24 19:44:07 +00:00
Rene Gollent 9fba8251e9 Since wchar support now works, the wstring typedef should now also be safe.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31909 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-29 14:09:43 +00:00
Ingo Weinhold 64ccb6b58a Synced the different definitions of BUFSIZ with the internal one. What a mess...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31776 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-26 15:28:33 +00:00
Oliver Tappe da82d38f42 * Removed hack used by BeOS to trick stl allocator into using malloc/free for
all allocations, instead we now directly request the use of malloc/free in
  stl_config.h. This avoids warnings about 'arrays of size 0' when building
  any stl-code with -pedantic (like e.g. ICU does).
  Alternatively, we could active pthread-type threading support, but since in
  some small tests, I have not been able to see any advantage, I've just added
  a respective comment.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31609 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-16 21:27:21 +00:00
Oliver Tappe 967294dbd8 * Turns out that the "upper" half of the old (gcc2) libio - the C++ classes -
keeps its own idea about what a wchar_t is and that was still a short.
  This of course made the data structure of a streambuf incompatible with the
  "lower" half - the glibc part - causing (potentially all sorts of) crashes
  when these classes were used.
  This should fix the crash of gensyscalls when building haiku natively
  on a gcc2-haiku.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31462 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-08 16:31:01 +00:00
Oliver Tappe d157bf8522 [the first commit of this fix was applied to the 32bit-wchar_t-branch instead
of trunk]
Fixed a bug exposed by changes in the locale kit branch:
* the signature of stringbuf::setbuf() wasn't matching the one from streambuf,
  which caused the base version to be hidden instead of overridden - leading
  to crashes during cleanup of stringstream objects

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31262 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-26 21:54:46 +00:00
Ingo Weinhold bc3955fea5 Preparations for removing __BEOS__ from the compiler defines.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28305 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-23 21:46:26 +00:00
Ingo Weinhold cbe35e2031 GCC 4 fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15494 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-12-11 16:22:51 +00:00
Jérôme Duval d67f94ca9d commented out hypot prototype : it conflicts with glibc signature when building libstdc++ which uses glibc headers
zooey agreed when discussing this (and we hope this don't break anything)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11660 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-10 19:56:11 +00:00
Oliver Tappe f2ced752a0 - added implementation of stdc++ for haiku
- this differs slightly from the one that lives in buildtools/gcc as it
  has been "ported" to the newer libio that haiku uses as part of its own
  libroot


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9906 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-10 20:33:33 +00:00