-
Notifications
You must be signed in to change notification settings - Fork 13.3k
[libc] i386 support #93709
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
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 |
Found while investigating #93709
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
`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 <[email protected]>
`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 <[email protected]>
`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 <[email protected]>
`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 <[email protected]>
I spoke with @lntue today about where I will leave this off.
Which looks like it's taking that function and diving "min denormal" by "max normal" then checking for FE_UNDERFLOW | FE_INEXACT. Wasn't sure if it was an issue in my fpe save/restore code or what. |
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: