ladybird/Userland/Libraries
Andrew Kaster e687e5ba74 LibCrypt: Link the SHA2 hash implementation into LibCrypt privately
Previously, we linked LibCrypt against LibCrypto. This creates a
circular symbol dependency between LibCore, LibCrypto and LibCrypt.
LibCrypto uses Core::DateTime, LibCrypt uses Crypto::SHA2, and LibCore
uses crypt in Core::Account. The GNU toolchain massages the DT_NEEDED
lines of each library and applications that use each library such that
the Loader finds all the symbols as necessary. However, when using the
Clang toolchain, the circular library dependency is not as tolerated.
We get a symbol not found error in the Loader at runtime, and the app in
question crashes.

Now, we build the SHA2.cpp implementation file into LibCrypt using an
object library and `-fvisibility=hidden -fvisibility-hidden-inlines`.
This adds the implementation in a way that only creates STB_LOCAL
symbols and should avoid nasty ODR problems in the future.

An alternative approach to resolving this dependency would be to move
Core::DateTime to AK, or to make Crypto::ASN1::parse_utc_date return a
struct tm instead of a Core::DateTime. One of those approaches to
remove the LibCore dependency from LibCrypto should probabably be
investigated further in the future.

The net effect of removing this circular library dependency is that one
can now build and run the python3 port with the Clang toolchain :^)
2022-01-08 18:56:29 +01:00
..
LibArchive LibArchive: Limit all Tar header fields to their buffer length 2021-11-24 19:09:00 +02:00
LibAudio Everywhere: Fix many spelling errors 2022-01-07 10:56:59 +01:00
LibC LibC: Fix up a few copy-pasted INTMAX parameter names 2022-01-08 00:46:30 +01:00
LibCards AK: Convert AK::Format formatting helpers to returning ErrorOr<void> 2021-11-17 00:21:13 +01:00
LibChess Everywhere: Fix -Winconsistent-missing-override warnings from Clang 2021-12-11 13:14:15 -08:00
LibCompress Everywhere: Fix many spelling errors 2022-01-07 10:56:59 +01:00
LibConfig LibConfig: Add list methods for groups and keys 2021-11-18 09:08:51 +01:00
LibCore LibCore: Change a west const to an east const 2022-01-08 06:21:20 -08:00
LibCoredump LibCore+AK: Move MappedFile from AK to LibCore 2021-11-23 11:33:36 +01:00
LibCpp LibCpp: Cast unused smart-pointer return values to void 2021-12-05 15:31:03 +01:00
LibCrypt LibCrypt: Link the SHA2 hash implementation into LibCrypt privately 2022-01-08 18:56:29 +01:00
LibCrypto Everywhere: Fix spelling mistakes 2022-01-07 15:44:42 +01:00
LibDebug Everywhere: Fix spelling mistakes 2022-01-07 15:44:42 +01:00
LibDesktop LibDesktop: Make allowlist APIs return ErrorOr<void> 2021-11-24 00:25:23 +01:00
LibDeviceTree Libraries: Add LibDeviceTree for manipulating OpenFirmware Device Trees 2021-10-21 19:20:03 -07:00
LibDiff LibDiff: Fix error when parsing a 'new' hunk location 2021-12-31 14:12:54 +01:00
LibDl Toolchain+Userland: Enable TLS for x86_64 2021-07-04 01:07:28 +02:00
LibDSP LibDSP: Cast unused smart-pointer return value to void 2021-12-05 15:31:03 +01:00
LibELF LibELF: Add LD_LIBRARY_PATH envvar support :^) 2022-01-05 15:01:14 +02:00
LibFileSystemAccessClient LibFileSystemAccessClient: Allow custom access rights for open/save 2021-12-23 23:25:47 -08:00
LibGemini LibGemini: Avoid implicitly copying ByteBuffer 2021-12-08 09:46:13 -08:00
LibGfx PixelPaint+LibGfx: Add sepia color filter 2022-01-08 12:31:11 +01:00
LibGL LibGL+LibSoftGPU: Implement texture coordinate generation 2021-12-30 14:24:29 +01:00
LibGUI LibGUI: Add missing altgr() modifier key 2022-01-08 11:50:26 +01:00
LibHTTP LibHTTP: Avoid implicitly copying ByteBuffer 2021-12-08 09:46:13 -08:00
LibImageDecoderClient Everywhere: Pass AK::ReadonlyBytes by value 2021-11-11 01:27:46 +01:00
LibIMAP Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
LibIPC LibIPC: Add IPC::take_over_accepted_client_from_system_server<Client>() 2021-12-06 19:22:16 +01:00
LibJS LibJS: Remove duplicate assignment step from parse_iso_date_time() 2022-01-08 00:31:28 +01:00
LibKeyboard LibKeyboard: Change some Optional<T> returns to ErrorOr<T> 2022-01-06 17:54:03 +01:00
LibLine LibLine: Replace call to vfork() with fork() 2022-01-07 11:02:30 +01:00
LibM LibM: Count fractions when exponent < -1 with mantissa == 0 2022-01-02 12:44:31 +03:30
LibMain LibMain: Make "Runtime error" warnln red 2021-12-23 12:41:13 -08:00
LibMarkdown Everywhere: Fix spelling mistakes 2022-01-07 15:44:42 +01:00
LibPCIDB LibCore+AK: Move MappedFile from AK to LibCore 2021-11-23 11:33:36 +01:00
LibPDF AK: Convert AK::Format formatting helpers to returning ErrorOr<void> 2021-11-17 00:21:13 +01:00
LibProtocol RequestServer+LibProtocol: Add an 'EnsureConnection' IPC endpoint 2021-09-28 22:32:31 +02:00
LibPthread LibPthread: Remove bad spec link for pthread_{get/set}name_np APIs 2022-01-07 01:18:57 -08:00
LibRegex LibRegex: Make FailForks fail all forks up to the last save point 2021-12-25 18:41:10 +01:00
LibSanitizer LibSanitizer: Log UBSAN errors in red text to the debug console 2021-12-15 10:30:32 -08:00
LibSoftGPU Everywhere: Fix spelling mistakes 2022-01-07 15:44:42 +01:00
LibSQL LibSQL: Implement LIKE SQL expressions 2022-01-07 10:50:39 +03:30
LibSymbolication LibCore+AK: Move MappedFile from AK to LibCore 2021-11-23 11:33:36 +01:00
LibSyntax LibWeb: Implement first draft of CSS syntax highlighting :^) 2021-10-23 19:07:44 +02:00
LibSystem LibCore+LibSystem: Move syscall wrappers from LibSystem to LibCore 2021-11-23 11:33:36 +01:00
LibTest LibTest: Use Array instead of fold expression in __testjs_last() 2022-01-07 10:26:18 +03:30
LibTextCodec LibTextCodec: Add alternate Cyrillic (aka Koi8-r) encoding 2021-12-16 22:44:45 +01:00
LibThreading LibThreading: Remove redundant method 2021-11-02 11:07:26 +01:00
LibTimeZone LibTimeZone: Parse ZONE entries from the TZDB and generate their names 2022-01-08 12:45:34 +01:00
LibTLS LibTLS: Mark the socket as idle after a TLS-level disconnection 2022-01-08 13:41:31 +03:30
LibUnicode LibUnicode: Use LibTimeZone's list of time zone names 2022-01-08 12:45:34 +01:00
LibUSBDB LibCore+AK: Move MappedFile from AK to LibCore 2021-11-23 11:33:36 +01:00
LibVideo LibVideo/VP9: Do not null guard calls to free 2022-01-01 17:30:25 +00:00
LibVT Kernel+LibVT: Use MUST + try_prepend / try_append 2022-01-05 14:04:18 +01:00
LibWasm Everywhere: Fix many spelling errors 2022-01-07 10:56:59 +01:00
LibWeb Everywhere: Fix spelling mistakes 2022-01-07 15:44:42 +01:00
LibWebSocket Userland: Resolve tautological-constant-out-of-range-compare warnings 2022-01-04 07:51:31 +00:00
LibX86 Everywhere: Fix spelling mistakes 2022-01-07 15:44:42 +01:00
CMakeLists.txt LibTimeZone+Meta: Add plumbing for an IANA Time Zone Database generator 2022-01-08 12:45:34 +01:00