1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-19 19:45:08 +00:00
Commit graph

513 commits

Author SHA1 Message Date
AnotherTest
a6e4482080 AK+Everywhere: Make StdLibExtras templates less wrapper-y
This commit makes the user-facing StdLibExtras templates and utilities
arguably more nice-looking by removing the need to reach into the
wrapper structs generated by them to get the value/type needed.
The C++ standard library had to invent `_v` and `_t` variants (likely
because of backwards compat), but we don't need to cater to any codebase
except our own, so might as well have good things for free. :^)
2021-04-10 21:01:31 +02:00
Hendiadyoin1
e8ef10e2a6 Kernel/LibC: Make memset implementations the same
I dont know why we do a fast path in the Kernel, but not in Userspace

Also simplified the byte explosion in memset to "explode_byte"
it even seemed so, that we missed the highest byte when memseting something
2021-04-08 23:57:16 +02:00
Andreas Kling
ce80f0d552 LibC: Fix coding style in scanf helpers 2021-04-08 20:32:44 +02:00
Manuel Palenzuela
13315a6ef1 LibC: Added strtoimax() and strtoumax()
They are the same as strtol() and strtoul() but if there is
overflow/underflow then the maximum integer val/lower integer
val/maximum uint val will be returned while also setting errno to
ERANGE.
2021-04-04 16:14:23 +02:00
Jelle Raaijmakers
5e5f0245b6 LibC: Teach vsscanf() to consume the width specifier
Previously, `vsscanf()` would crash whenever it encountered a width
specification. Now, it consumes the width specification but does not
yet do anything with it.
2021-04-04 08:28:47 +02:00
Jelle Raaijmakers
7f1f6d96b4 LibC: Add NI_MAXHOST and NI_MAXSERV constants
These are not POSIX-defined but are almost always present in <netdb.h>.
2021-04-04 08:28:47 +02:00
AnotherTest
143c68755b LibC: Use 'long long' specialisations of scanf's read_element_concrete
...for 'long long' and 'unsigned long long', instead of reading them as
'long's and 'unsigned long's.
Also add a test for values that can only fit in (unsigned) long long.
Fixes #6096.
2021-04-04 00:40:41 +02:00
Andreas Kling
bf1ad16078 LibC: Fix FILE::flush() passing bogus arguments to lseek()
This was a regression from the 64-bit off_t changes.

When dropping buffered data after a flush, we would subtract the
buffered amount from zero to get the seek offset. This didn't work
right since the subtraction was done with a 32-bit size_t and we
ended up with e.g (i64)0xfffffffc as the offset.

Fixes #6003.
2021-04-03 23:01:14 +02:00
Idan Horowitz
aa6547492e LibC+ping: Move internet_checksum to serenity header
This will be useful for traceroute and any other packet related
application, so this will reduce code duplication.
2021-03-31 23:42:24 +02:00
Baitinq
19c578024b
Kernel: Added TIOCSTI ioctl placeholder (#6037)
Added a dummy TIOCSTI ioctl placeholder. This is a dangerous ioctl that
can be used to inject input into a tty. Added for compatibility. Always
fails with EIO.
2021-03-31 22:58:41 +02:00
Jelle Raaijmakers
3c390d65e4 LibC: Implement utimes function 2021-03-29 19:58:12 +02:00
Itamar
9eaa6527f7 LibC: Mark atexit() entries as 'called' before calling them
This guards as from recursing into an atexit callback if exit() is called
from within it.
2021-03-29 19:56:54 +02:00
Andreas Kling
fdd01a0a07 LibC: Implement asprintf() and vasprintf()
These simply use StringBuilder::appendvf() internally which is not
optimal in terms of heap allocations, but simple enough and I don't
think they are performance sensitive functions anyway.
2021-03-28 18:39:32 +02:00
Andreas Kling
5f71bf0cc7 Kernel+LibC: Implement sys$ioctl() FIONBIO
This is another (older) way of making a file descriptor non-blocking.
2021-03-28 17:50:08 +02:00
Andreas Kling
c91bb72964 LibC: Add vfork() as a simple wrapper around fork()
I don't know if we should implement optimized vfork(). I'm adding it
here since SDL2 uses it.
2021-03-28 00:05:29 +01:00
Jelle Raaijmakers
2fb3c98429 LibC: Define F_GETLK 2021-03-27 19:43:14 +01:00
Andreas Kling
5bd8a416ea LibC: Add AF_INET6, PF_INET6 and IPPROTO_IPV6 macros 2021-03-27 18:58:38 +01:00
Andreas Kling
67f89fdc87 LibC: Add POSIX macros for the ai_flags field in struct addrinfo 2021-03-27 18:57:30 +01:00
Andreas Kling
6d99345811 LibC: Add S_I{READ,WRITE,EXEC} macro aliases for BSD compatibility
These map as follows:

S_IREAD -> S_IRUSR
S_IWRITE -> S_IWUSR
S_IEXEC -> S_IXUSR
2021-03-27 18:00:41 +01:00
Hendiadyoin1
009b196a04 LibC: Add x86_64 Registers 2021-03-21 09:35:23 +01:00
Itamar
ae67cabe11 CMake: Make libc.a self-contained
Previously, libc.a contained undefined symbols from ssp and libsystem,
which caused static compilation to fail.

We now generate libc.a with a custom CMake rule that combines all
object files from libc, ssp and libsystem to form libc.a

Closes #5758.
2021-03-19 22:55:53 +01:00
Jean-Baptiste Boric
7a079f7780 LibC+Kernel: Switch off_t to 64 bits 2021-03-17 23:22:42 +01:00
thatdutchguy
10e3e8f6d4 Kernel: Add _SC_CLK_TCK to sysconf.
Unbreaks the hatari port.
2021-03-16 21:56:47 +01:00
Ben Wiederhake
430e7fb181 LibC: Rename feclearexcept{s,}
This will also help with making ports compile again :D
https://github.com/SerenityOS/serenity/pull/5762#issuecomment-798779561
2021-03-14 11:30:38 +01:00
Andreas Kling
ef1e5db1d0 Everywhere: Remove klog(), dbg() and purge all LogStream usage :^)
Good-bye LogStream. Long live AK::Format!
2021-03-12 17:29:37 +01:00
Ben Wiederhake
bceb98e2df Userland: Remove superfluous headers
Userland has no reason to access 'kmalloc'.
2021-03-11 12:32:53 +01:00
Andreas Kling
9588f01739 UserspaceEmulator+LibC: Use sys$emuctl() to pass malloc info to UE
Get rid of the awkward secret handshake sequence between malloc and UE
and simply use sys$emuctl() to notify UE of malloc, free and realloc.
2021-03-09 11:31:18 +01:00
Andreas Kling
4faeaf101c LibC: Don't scrub memory in malloc/free when running in UE
Since UE is keeping track of the heap anyway, we can skip the scrubbing
and drastically improve the speed of malloc and free when emulating.
2021-03-09 08:59:10 +01:00
Mițca Dumitru
a13f2b7df3 LibC: Add defines to float.h
This doesn't define FLT_EVAL_METHOD as I'm not sure what I should actually use for that
2021-03-09 07:28:06 +01:00
Mițca Dumitru
857b0e1dc3 LibC: Add imaxdiv and lldiv 2021-03-09 07:28:06 +01:00
Mițca Dumitru
5265a2d23e LibC: Remove stdbool.h as it is provided by the compiler 2021-03-08 08:56:15 +01:00
Mițca Dumitru
35829304d6 LibC: Define static_assert in assert.h when it's being used in C 2021-03-08 08:56:15 +01:00
Mițca Dumitru
a13e8d49cf LibC: Fix typo in fenv.h
`FE_TOWARDSZERO` is actually spelled `FE_TOWARDZERO` (without the 'S')
2021-03-04 19:40:40 +01:00
William McPherson
2479ead718 Everywhere: Remove unnecessary clang-format offs
Mostly due to the fact that clang-format allows aligned comments via
AlignTrailingComments.

We could also use raw string literals in inline asm, which clang-format
deals with properly (and would be nicer in a lot of places).
2021-03-04 11:01:48 +01:00
Mițca Dumitru
00ef931f79 LibC: Implement fenv.h 2021-03-01 09:14:26 +01:00
AnotherTest
f05e518cbc LibRegex: Implement section B.1.4. of the ECMA262 spec
This allows the parser to deal with crazy patterns like the one
in #5517.
2021-02-27 07:31:01 +01:00
Andreas Kling
eb08a0edd5 LibC: Make it compile on 64-bit
It won't actually work on 64-bit yet, but let's do our future selves
a favor and make it compile.
2021-02-25 16:27:12 +01:00
Andreas Kling
8714f389f9 LibC: Add x86_64 implementation of setjmp() and longjmp() 2021-02-25 16:27:12 +01:00
Andreas Kling
bb9cf083c4 LibC: Avoid double memory clearing in calloc()
calloc() was internally calling malloc_impl() which would scrub out
all the allocated memory with the scrub byte (0xdc). We would then
immediately zero-fill the memory.

This was obviously a waste of time, and our hash tables were doing
it all the time. :^)
2021-02-24 23:03:38 +01:00
Andreas Kling
7db8ccc0e4 LibC+DynamicLoader: Move "transactional memory" GCC stubs to LibC
Instead of having a special case in the dynamic loader where we ignore
TM-related GCC symbols, just stub them out in LibC like we already do
for various other things we don't support.
2021-02-24 14:54:26 +01:00
Andreas Kling
679cc154e6 Everywhere: Remove unused RELEASE_ASSERT macro 2021-02-23 21:11:53 +01:00
Andreas Kling
5d180d1f99 Everywhere: Rename ASSERT => VERIFY
(...and ASSERT_NOT_REACHED => VERIFY_NOT_REACHED)

Since all of these checks are done in release builds as well,
let's rename them to VERIFY to prevent confusion, as everyone is
used to assertions being compiled out in release.

We can introduce a new ASSERT macro that is specifically for debug
checks, but I'm doing this wholesale conversion first since we've
accumulated thousands of these already, and it's not immediately
obvious which ones are suitable for ASSERT.
2021-02-23 20:56:54 +01:00
AnotherTest
43948aee51 LibC: Don't #define away __{BEGIN,END}_DECLS in stdarg.h
That would force anything that includes this to have language-specific
linkage, and absolutely break `sys/cdefs.h`.

Fixes #5452.
2021-02-21 18:27:50 +01:00
Andreas Kling
8d98051551 AK+LibC: Remove dbgprintf() :^)
Everything has been moved to dbgln() or other AK::Format-based APIs.
We can finally get rid of this old thing.
2021-02-20 17:17:30 +01:00
Linus Groh
edec5e29a3 LibC: Remove serenity.h.rej 2021-02-18 09:23:11 +01:00
jonno85uk
83d880180e
LibC: Use "static inline" for inline functions in arpa/inet.h (#5392)
This makes it work when compiling as C.
2021-02-18 00:02:47 +01:00
Andreas Kling
403b34d38e LibC: Convert dbgprintf() => dbgln() in SSP handler 2021-02-17 15:48:55 +01:00
Andreas Kling
dffab4e034 LibC: Convert dbgprintf() => dbgln() 2021-02-17 15:39:32 +01:00
AnotherTest
e438dd3c9b LibC: Teach scanf how to read "%lu" and "%llu" (unsigned long{, long})
This makes the gcc port work again.
2021-02-16 10:38:52 +01:00
Ben Wiederhake
b3f0a5c917 LibC: Fix typo in comment 2021-02-15 22:09:01 +01:00