Revert "[llvm] Improve llvm.objectsize computation by computing GEP, alloca and mallo...
[llvm-project.git] / libc / docs / index.rst
blob6f759aa215b62cc52a0b63449af49f4a410ead14
1 ==================
2 The LLVM C Library
3 ==================
5 .. note::
6   LLVM-libc is not fully complete right now. Some programs may fail to build due
7   to missing functions (especially C++ ones). If you would like to help us
8   finish LLVM-libc, check out "Contributing to the libc project" in the sidebar
9   or ask on discord.
11 Introduction
12 ============
14 LLVM-libc aspires to a unique place in the software ecosystem.  The goals are:
16 - Fully compliant with current C standards (C17 and upcoming C2x) and POSIX.
17 - Easily decomposed and embedded: Supplement or replace system C library
18   functionality easily.  This is useful to get consistent math precision across
19   systems, or updated memory operations for newer microarchitectures.  These
20   pieces will work on Linux, MacOS, Windows, and Fuchsia.
21 - The creation of fully static binaries without license implications.
22 - Increase whole program optimization opportunities for static binaries through
23   ability to inline math and memory operations.
24 - Reduce coding errors by coding in modern C++ through the use of lightweight
25   containers during coding that can be optimized away at runtime.
26 - Permit fuzzing and sanitizer instrumentation of user binaries including the
27   libc functions.
28 - A complete testsuite that tests both the public interface and internal
29   algorithms.
30 - `Fuzzing`__
32 .. __: https://github.com/llvm/llvm-project/tree/main/libc/fuzzing
34 Platform Support
35 ================
37 Most development is currently targeting Linux on x86_64, aarch64, arm, and
38 RISC-V. Embedded/baremetal targets are supported on arm and RISC-V, and Windows
39 and MacOS have limited support (may be broken).  The Fuchsia platform is
40 slowly replacing functions from its bundled libc with functions from this
41 project.
43 ABI Compatibility
44 =================
46 The libc is written to be ABI independent.  Interfaces are generated using
47 headergen, so supporting arbitrary ABIs is possible.  In it's initial
48 stages there is no ABI stability in any form.
50 .. toctree::
51    :hidden:
52    :maxdepth: 2
53    :caption: Using
55    usage_modes
56    overlay_mode
57    fullbuild_mode
58    configure
59    gpu/index.rst
61 .. toctree::
62    :hidden:
63    :maxdepth: 1
64    :caption: Status
66    compiler_support
67    date_and_time
68    math/index.rst
69    strings
70    stdio
71    stdbit
72    fenv
73    libc_search
74    c23
75    ctype
76    complex
77    signal
78    threads
79    setjmp
81 .. toctree::
82    :hidden:
83    :maxdepth: 1
84    :caption: Development
86    build_and_test
87    dev/index.rst
88    porting
89    contributing
90    talks
92 .. toctree::
93    :hidden:
94    :maxdepth: 1
95    :caption: External Links
97    Source Code <https://github.com/llvm/llvm-project/tree/main/libc>
98    Bug Reports <https://github.com/llvm/llvm-project/labels/libc>
99    Discourse <https://discourse.llvm.org/c/runtimes/libc>
100    Join the Discord <https://discord.gg/xS7Z362>
101    Discord Channel <https://discord.com/channels/636084430946959380/636732994891284500>
102    Buildbot <https://lab.llvm.org/buildbot/#/builders?tags=libc>