summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-05-03Kernel: Remove UART::{print_num, print_hex} since they are unusedTimon Kruiper
2022-05-03Kernel: Modify UART::print_str() to also take into account the lengthTimon Kruiper
Previously in the aarch64 Kernel, this would cause dbgln() to actually print more characters of the next string in memory, because strings in the Kernel are not zero terminated by default. Prevent this by using the passed in length of the string.
2022-05-03Kernel: Remove aarch64/Utils.{cpp, h} since they are not used anymoreTimon Kruiper
2022-05-03Kernel: Replace calls to UART::print_str() with dbgln()Timon Kruiper
Since we can now use dbgln() in the aarch64 Kernel, lets use it! :^)
2022-05-03Kernel: Let Processor::is_initialized() of aarch64 return falseTimon Kruiper
When calling dbgln(), the formatting code in AK/Format.h calls Processor::is_initialized() to determine whether to add some text about the current processor to the debug output. Instead of crashing, we just return false, such that we can use dbgln() etc in the aarch64 Kernel.
2022-05-03Kernel: Add aarch64 version of kprintf.cppTimon Kruiper
This allows us to use the AK formatting functions in the aarch64 Kernel. Also add FIXME to make sure that this file will be removed when the proper abstractions are in place in the normal Kernel/kprintf.cpp.
2022-05-03Kernel: Fix aarch64 build by adding -Wno-nonnull flagTimon Kruiper
The compiler figured out that the MemoryManager is not initialised, and thus MemoryManager::the() cannot return a valid reference. Once the necesarry code is in place, this compiler flag can be removed.
2022-05-02base64: Replace char pointer with StringViewKenneth Myhra
2022-05-02base64: Use TRY() instead of VERIFY(!result.is_error())Kenneth Myhra
2022-05-02base64: Use Core::File standard_input() standard_output()Kenneth Myhra
2022-05-02Base: Add More Emojiselectrikmilk
Adds Cat face emojis U+1F63B, U+1F63C, U+1F63D, U+1F63E, U+1F639, U+1F640 Adds Party Popper emoji U+1F389 Adds Rocket Emoji U+1F680
2022-05-02Kernel: Stop requiring working malloc for syscall.h includesPatrick Meyer
Fixes #13869
2022-05-02PixelPaint: Set title of default image to 'Untitled'cflip
2022-05-02CI: Add x86_64 Clang Coverage pipeline in AzureAndrew Kaster
Add a job to the Azure pipelines to run tests with coverage enabled, and aggregate the test results in a folder of html pages showing the coverage results overall, and per-file. Future work is needed to take the published pipeline artifact for the coverage results and display them somewhere interesting.
2022-05-02Meta: Add script to analyze coverage data from an existing disk imageAndrew Kaster
The analyze-qemu-coverage.sh script cracks open the _disk_image for the given SERENITY_ARCH and SERENITY_TOOLCHAIN and extracts llvm profile data into a local directory owned by the current user. It then calls a coverage artifact script from llvm to create a nice html report for all the source files referenced by the profile data files. We currently grab a script from llvm via wget. In the future a custom script to call llvm-cov and llvm-profdata should probably be used.
2022-05-02Base: Set $LLVM_PROFILE_FILE before running run-testsAndrew Kaster
Set LLVM_PROFILE_FILE to a pattern that is easily extractable as "these are the profile data files we generated while running tests" for later post-processing.
2022-05-02Kernel: Don't check pledges or veil against code coverage data filesAndrew Kaster
Coverage tools like LLVM's source-based coverage or GNU's --coverage need to be able to write out coverage files from any binary, regardless of its security posture. Not ignoring these pledges and veils means we can't get our coverage data out without playing some serious tricks. However this is pretty terrible for normal exeuction, so only skip these checks when we explicitly configured userspace for coverage.
2022-05-02Meta+Userland: Add ENABLE_USERSPACE_COVERAGE_COLLECTION CMake optionAndrew Kaster
This option sets -fprofile-instr-generate -fcoverage-mapping for Clang builds only on almost all of Userland. Loader and LibTimeZone are exempt. This can be used for generating code coverage reports, or even PGO in the future.
2022-05-02Meta: Remove unused serenity_libc_static helper functionAndrew Kaster
2022-05-02LibM: Remove stale commented out CMake commandsAndrew Kaster
2022-05-02DynamicLoader: Remove stale FIXME for removing -nodefaultlibsAndrew Kaster
The FIXME says "Remove after next toolchain update" and I'm very certain we've had some :tool: :chain: in the last 7 months.
2022-05-02Toolchain: Enable LLVM Profile instrumentationAndrew Kaster
Add a patch to let llvm's InstrProfiling modules know serenity supports all the Unix-y features required to make -fprofile-instr-generate and -fcoverage-mapping work properly on target.
2022-05-02readelf: Don't error out on invalid interpreter pathAndrew Kaster
This lets us inspect ELF binaries with un-loadable program interpreters, same as binutils and llvm-readelf.
2022-05-02LibGfx: Fix typo in Color constructorCésar Torres
2022-05-01LibJS: Simplify Is{Accessor,Data,Generic}Descriptor AOsLinus Groh
This is an editorial change in the ECMA-262 spec. See: https://github.com/tc39/ecma262/commit/1c7ae4b
2022-05-01LibJS: Change "Record {}" to "Iterator Record {}" in commentsLinus Groh
This is an editorial change in the ECMA-262 spec. See: https://github.com/tc39/ecma262/commit/85d910c
2022-05-01LibJS: Change "Completion {}" to "Completion Record {}" in commentsLinus Groh
This is an editorial change in the ECMA-262 spec. See: https://github.com/tc39/ecma262/commit/15a7d8a
2022-05-01LibJS: Change "as [the] argument[s]" to "with arguments" in commentsLinus Groh
This is an editorial change in the ECMA-262 spec. See: https://github.com/tc39/ecma262/commit/e671b96
2022-05-01LibJS: Update outdated table reference in BoundFunctionCreateLinus Groh
2022-05-01LibJS: Rename some variables from "script body" to "script"Linus Groh
This is an editorial change in the ECMA-262 spec. See: https://github.com/tc39/ecma262/commit/38a2584
2022-05-01LibJS: Rename scope to environmentLinus Groh
This is an editorial change in the ECMA-262 spec. See: https://github.com/tc39/ecma262/commit/3246553
2022-05-01LibJS: Update spec comments testing presence of a fieldLinus Groh
This is an editorial change in the ECMA-262 spec. See: - https://github.com/tc39/ecma262/commit/497f99a - https://github.com/tc39/ecma262/commit/0b35749
2022-05-01LibJS: Update ValidateAndApplyPropertyDescriptor implementationLinus Groh
These are editorial changes in the ECMA-262 spec. See: - https://github.com/tc39/ecma262/commit/b9efa97 - https://github.com/tc39/ecma262/commit/6f4ff96 - https://github.com/tc39/ecma262/commit/3d18997 - https://github.com/tc39/ecma262/commit/b3c29fd
2022-05-01LibJS: Simplify Array.prototype.splice()Linus Groh
This is an editorial change in the ECMA-262 spec. See: https://github.com/tc39/ecma262/commit/193211a
2022-05-01LibJS: Update a couple of outdated spec commentsLinus Groh
These are editorial changes in the ECMA-262 spec. See: - https://github.com/tc39/ecma262/commit/e080a7f - https://github.com/tc39/ecma262/commit/c5a9094 - https://github.com/tc39/ecma262/commit/5091520 - https://github.com/tc39/ecma262/commit/1c6564b - https://github.com/tc39/ecma262/commit/e06c80c
2022-05-01LibJS: Remove assertions that are now part of structured headersLinus Groh
This is an editorial change in the ECMA-262 spec. See: https://github.com/tc39/ecma262/commit/4fde514
2022-05-01LibJS: Add missing comment in OrdinaryToPrimitiveLinus Groh
2022-05-01Documentation: Fix Typo in TransferringFiles.mdpython-69
Changed typo in command from Meta/serenity.run to Meta/serenity.sh run
2022-05-01Kernel: Stop exposing gateway fieldMaciej
It doesn't make sense after introduction of routing table which allows having multiple gateways for every interface, and isn't used by any of the userspace programs now.
2022-05-01ifconfig: Stop supporting setting/displaying default gatewayMaciej
The `route` command allows more sophiscated control over routing tables now, and supporting this in ifconfig is no longer meaningful.
2022-05-01LibC: Implement a faster memset routine for x86-64 in assemblyDaniel Bertalan
This commit addresses the following shortcomings of our current, simple and elegant memset function: - REP STOSB/STOSQ has considerable startup overhead, it's impractical to use for smaller sizes. - Up until very recently, AMD CPUs didn't have support for "Enhanced REP MOVSB/STOSB", so it performed pretty poorly on them. With this commit applied, I could measure a ~5% decrease in `test-js`'s runtime when I used qemu's TCG backend. The implementation is based on the following article from Microsoft: https://msrc-blog.microsoft.com/2021/01/11/building-faster-amd64-memset-routines Two versions of the routine are implemented: one that uses the ERMS extension mentioned above, and one that performs plain SSE stores. The version appropriate for the CPU is selected at load time using an IFUNC.
2022-05-01readelf: Add printing for STT_GNU_IFUNCDaniel Bertalan
2022-05-01LibELF: Fail gracefully when IFUNC resolver's object has textrelsDaniel Bertalan
.text sections of objects that contain textrels have to be writable during the relocation procedure. Because of this, we would segfault if we tried to execute IFUNC resolvers defined in them. Let's print a meaningful error message instead. Additionally, a warning is now printed when we load objects with textrels, as in the future, additional security mitigations might interfere with them being loaded.
2022-05-01LibELF: Add support for IFUNCsDaniel Bertalan
IFUNC is a GNU extension to the ELF standard that allows a function to have multiple implementations. A resolver function has to be called at load time to choose the right one to use. The PLT will contain the entry to the resolved function, so branching and more indirect jumps can be avoided at run-time. This mechanism is usually used when a routine can be made faster using CPU features that are available in only some models, and a fallback implementation has to exist for others. We will use this feature to have two separate memset implementations for CPUs with and without ERMS (Enhanced REP MOVSB/STOSB) support.
2022-05-01LibELF: Keep track of whether the PLT contains REL or RELA relocationsDaniel Bertalan
2022-05-01LibELF: Perform .relr.dyn relocations before .rel.dynDaniel Bertalan
IFUNC resolvers depend on the resolved function's address having been relocated by the time they are called. This means that relative relocations have to be done first. The linker is kind enough to put R_*_RELATIVE before R_*_IRELATIVE in .rel.dyn, but .relr.dyn contains relative relocations too.
2022-05-01LibELF: Relax restriction on allowed values of EI_OSABI to allow GNUAndrew Kaster
This check is here to make sure we only try to load serenity binaries. However, with -fprofile-instr-generate -fcoverage-mapping, clang sets the EI_OSABI field to 3, for GNU. The instrumentation uses a lot of retained COMDAT sections for coverage instrumentation that get the SHF_GNU_RETAINED section header flag set on them, forcing llvm to set the ABI to GNU.
2022-04-30LibJS: Stop fetching GlobalObject from target's realm in ArrayBufferIdan Horowitz
A function object's realm is not necessarily non-null (like when called via the Reflect API), so we can't blindly dereference it. Instead use the object's own GlobalObject.
2022-04-30LibJS: Reject -00000 as extended year in Date parsingIdan Horowitz
2022-04-30LibJS: Do not negate zero into negative zero in ToIntegerOrInfinityIdan Horowitz
When the input value was in the range of [-1, 0] we would incorrectly negate the resulting integer, resulting in -0 instead of the expected 0