1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-11 02:13:56 +09:00
ladybird/Userland/Libraries
Daniel Bertalan ad9e674fa0 LibC+LibELF: Support loading shared libraries compiled with dynamic TLS
This is a prerequisite for upstreaming our LLVM patches, as our current
hack forcing `-ftls-model=initial-exec` in the Clang driver is not
acceptable upstream.

Currently, our kernel-managed TLS implementation limits us to only
having a single block of storage for all thread-local variables that's
initialized at load time. This PR merely implements the dynamic TLS
interface (`__tls_get_addr` and TLSDESC) on top of our static TLS
infrastructure. The current model's limitations still stand:
- a single static TLS block is reserved at load time, `dlopen()`-ing
  shared libraries that define thread-local variables might cause us to
  run out of space.
- the initial TLS image is not changeable post-load, so `dlopen()`-ing
  libraries with non-zero-initialized TLS variables is not supported.

The way we repurpose `ti_module` to mean "offset within static TLS
block" instead of "module index" is not ABI-compliant.
2023-08-18 16:20:13 +02:00
..
LibArchive LibArchive: Extract logic for calculating ZIP statistics 2023-07-30 22:16:40 +01:00
LibAudio LibAudio: Write final FLAC audio data instead of discarding it 2023-08-16 01:10:35 +02:00
LibC LibC+LibELF: Support loading shared libraries compiled with dynamic TLS 2023-08-18 16:20:13 +02:00
LibCards AK: Make "foo"_string infallible 2023-08-07 16:03:27 +02:00
LibChess Userland: Prefer _string over _short_string 2023-08-08 07:37:21 +02:00
LibCMake
LibCodeComprehension AK: Make "foo"_string infallible 2023-08-07 16:03:27 +02:00
LibCompress LibCompress/Brotli: Remove CanonicalCode::clear() 2023-07-22 07:10:47 +02:00
LibConfig
LibCore LibGfx/ILBM: Add an IFF-ILBM decoder :) 2023-08-15 18:36:11 +01:00
LibCoredump
LibCpp Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibCrypt
LibCrypto LibCrypto: Implement a generic 16-bit CRC 2023-08-12 12:25:26 -06:00
LibDebug
LibDesktop
LibDeviceTree
LibDiff LibDiff+patch: Support multiple patches in a single patch file 2023-07-30 07:47:22 +01:00
LibDNS
LibDSP Userland: Prefer _string over _short_string 2023-08-08 07:37:21 +02:00
LibEDID AK: Change standard casting method of FixedPoint to truncation 2023-08-14 14:20:45 -06:00
LibELF LibC+LibELF: Support loading shared libraries compiled with dynamic TLS 2023-08-18 16:20:13 +02:00
LibFileSystem LibFileSystem: Add FileSystem::is_regular_file 2023-07-13 10:29:30 +01:00
LibFileSystemAccessClient
LibGemini Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibGfx LibGfx: Add Point::scaled(T) and Rect::scaled(T) 2023-08-17 09:57:30 -04:00
LibGL Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibGLSL LibGLSL: Add tests for GLSL parser 2023-08-18 15:29:48 +02:00
LibGPU
LibGUI LibGUI: Replace DeprecatedString usage in Widget 2023-08-18 10:43:37 +01:00
LibHTTP AK: Port URL::m_query from DeprecatedString to String 2023-08-13 15:03:53 -06:00
LibIDL
LibImageDecoderClient
LibIMAP LibIMAP: Fix Parser::parse_disposition() 2023-08-12 11:45:52 -06:00
LibIPC Userland: Rename Core::Object to Core::EventReceiver 2023-08-06 20:39:51 +02:00
LibJS LibJS: Add GC graph dumper 2023-08-17 18:27:02 +02:00
LibKeyboard Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibLine LibLine: Refresh the line after case-change operations 2023-08-07 22:51:49 +03:30
LibLocale
LibMain
LibManual Userland: Prefer _string over _short_string 2023-08-08 07:37:21 +02:00
LibMarkdown LibMarkdown: Add render_for_raw_print methods to Node derived classes 2023-08-07 13:24:25 -06:00
LibPartition Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibPCIDB Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibPDF LibPDF: Add FIXME for CIDFontType2 creation 2023-08-14 16:26:09 +02:00
LibProtocol Ladybird: Add WebSocket server for use by Lagom networking 2023-08-03 09:55:20 +02:00
LibPublicSuffix LibPublicSuffix: Add Library and Generators 2023-08-17 15:30:23 +01:00
LibRegex LibRegex: Treat backwards jumps to IP 0 as normal backwards jumps too 2023-08-16 22:20:24 +03:30
LibSanitizer LibSanitizer: Add _abort variants of UBSan handlers 2023-08-13 05:14:07 +02:00
LibSoftGPU
LibSQL LibSQL: Remove Core::EventReceiver parent from SQL::Relation 2023-08-07 14:38:38 -04:00
LibSymbolication
LibSyntax Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibSystem
LibTest LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
LibTextCodec
LibThreading LibThreading: Make Thread keep itself alive while its action is running 2023-08-07 10:40:34 -06:00
LibTimeZone
LibTLS LibTLS: Allow applications to provide a custom default CA Cert path 2023-08-02 05:44:43 +02:00
LibUnicode LibUnicode: Perform code point case conversion lookups in constant time 2023-07-28 05:28:50 +02:00
LibUSBDB Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibVideo LibGfx+Userland: Rename Size::scaled_by to Size::scaled 2023-08-17 09:57:30 -04:00
LibVirtGPU Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibVT LibGUI: Add deprecated suffix to {set_,}tooltip in Widget 2023-08-18 10:43:37 +01:00
LibWasm LibJS: Make Value::to_string_without_side_effects() infallible 2023-08-09 17:09:16 +02:00
LibWeb LibWeb: Make HTML::SharedImageRequest GC allocated 2023-08-18 15:42:44 +02:00
LibWebSocket AK: Port URL scheme from DeprecatedString to String 2023-08-13 15:03:53 -06:00
LibWebView Ladybird+LibWebView+Browser: Remove ability to run with AST interpreter 2023-08-08 13:07:13 +02:00
LibX86
LibXML LibXML: Set parents for text and comment nodes 2023-08-18 08:58:51 +03:30
CMakeLists.txt LibPublicSuffix: Add Library and Generators 2023-08-17 15:30:23 +01:00