-
Notifications
You must be signed in to change notification settings - Fork 12.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[libc] i386 support #93709
Comments
@llvm/issue-subscribers-libc Author: Nick Desaulniers (paternity leave) (nickdesaulniers)
In order to incorporate llvm-libc into Android, we MUST to support 32b x86.
Currently, the most immediate build failure with
This is because (There may be more build or runtime failures) cc @gchatelet @enh-google It will be less work for us to support 32b x86 then for Android to drop 32b x86 support. |
is that true? the example you show is a test suite dependency, not an actual libc one... |
The example above is LLVM libc failing to build with |
Looking at the remaining places where we have reference to
It seems we have additional work to do around |
Indeed, with #93790 applied, the next issue that I encounter is:
|
blocker: #110894 |
Going through some of the issues now:
|
Configured via: $ cmake ../runtimes -G Ninja -DLLVM_ENABLE_LLD=ON \ -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libc" \ -DLIBC_TARGET_TRIPLE=i386-linux-gnu -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ Link: llvm#93709
Configured via: $ cmake ../runtimes -G Ninja -DLLVM_ENABLE_LLD=ON \ -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libc" \ -DLIBC_TARGET_TRIPLE=i386-linux-gnu -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ Link: llvm#93709
Configured via: $ cmake ../runtimes -G Ninja -DLLVM_ENABLE_LLD=ON \ -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libc" \ -DLIBC_TARGET_TRIPLE=i386-linux-gnu -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ Link: #93709
Configured via: $ cmake ../runtimes -G Ninja -DLLVM_ENABLE_LLD=ON \ -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libc" \ -DLIBC_TARGET_TRIPLE=i386-linux-gnu -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ Link: llvm#93709
Configured via: $ cmake ../runtimes -G Ninja -DLLVM_ENABLE_LLD=ON \ -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libc" \ -DLIBC_TARGET_TRIPLE=i386-linux-gnu -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ Link: llvm#93709
Configured via: $ cmake ../runtimes -G Ninja -DLLVM_ENABLE_LLD=ON \ -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libc" \ -DLIBC_TARGET_TRIPLE=i386-linux-gnu -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ Link: llvm#93709
`long double` is haunted on most architectures, but it is especially so on i386-linux-gnu. While have 80b of significant data, on i386-linux-gnu this type has 96b of storage. Fixes for supporting printf family of conversions for `long double` on i386-linux-gnu. This allows the libc-stdlib-tests and libc_stdio_unittests ninja target tests to pass on i386-linux-gnu. Fixes: llvm#110894 Link: llvm#93709 Link: https://developer.android.com/ndk/guides/abis Co-authored-by: Michael Jones <michaelrj@google.com>
`long double` is haunted on most architectures, but it is especially so on i386-linux-gnu. While have 80b of significant data, on i386-linux-gnu this type has 96b of storage. Fixes for supporting printf family of conversions for `long double` on i386-linux-gnu. This allows the libc-stdlib-tests and libc_stdio_unittests ninja target tests to pass on i386-linux-gnu. Fixes: llvm#110894 Link: llvm#93709 Link: https://developer.android.com/ndk/guides/abis Co-authored-by: Michael Jones <michaelrj@google.com>
`long double` is haunted on most architectures, but it is especially so on i386-linux-gnu. While have 80b of significant data, on i386-linux-gnu this type has 96b of storage. Fixes for supporting printf family of conversions for `long double` on i386-linux-gnu. This allows the libc-stdlib-tests and libc_stdio_unittests ninja target tests to pass on i386-linux-gnu. Fixes: #110894 Link: #93709 Co-authored-by: Michael Jones <michaelrj@google.com>
`long double` is haunted on most architectures, but it is especially so on i386-linux-gnu. While have 80b of significant data, on i386-linux-gnu this type has 96b of storage. Fixes for supporting printf family of conversions for `long double` on i386-linux-gnu. This allows the libc-stdlib-tests and libc_stdio_unittests ninja target tests to pass on i386-linux-gnu. Fixes: llvm#110894 Link: llvm#93709 Link: https://developer.android.com/ndk/guides/abis Co-authored-by: Michael Jones <michaelrj@google.com>
In order to incorporate llvm-libc into Android, we MUST to support 32b x86.
Currently, the most immediate build failure with
-m32
is:This is because
x86::K_AVX
is only defined whenLIBC_TARGET_ARCH_IS_X86_64
is, which is 64b only. We probably need more preprocessor guards usingLIBC_TARGET_ARCH_IS_X86_64
(64b vs 32b).(There may be more build or runtime failures)
cc @gchatelet @enh-google
It will be less work for us to support 32b x86 then for Android to drop 32b x86 support.
The text was updated successfully, but these errors were encountered: