You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
r26 armeabi-v7a libc++ probably not built as thumb #1953
I did set minSdk 21 in build.gradle, but my Application.mk (accidently) contained APP_PLATFORM := android-19, so I'm not entirely sure which SDK was configured for the NDK build. It should be noted that mylib.so is built in a project which depends on an .AAR (where APP_STRIP_MODE was set to none). Otherwise, no fancy settings.
Tentatively triaging to r26c. These are often quite difficult to diagnose when they weren't the result of something we did on purpose, and they're generally caused by upstream LLVM changes, and that can be anything from a change in optimization behavior to a correctness fix.
@pirama-arumuga-nainar could one of you have a look and see if you can come up with an explanation?
This is drastic enough that I'd bet the LLVM build doesn't build the runtimes as thumb... @rprichard
(the other architectures grew, but considering we were quite behind on libc++, it's not surprising that they've added more code to libc++ in that time)
He is a detailed breakdown of the symbols if anyone is interested in doing further analysis. It will take a while to find specific symbols but if the bug author is super interested, these files have sufficient information.
changed the title [-]r26 produces larger .so file for arm64-v8a (and libc++_shared.so larger for all ABIs)[/-][+]r26 armeabi-v7a libc++ probably not built as thumb[/+]on Nov 1, 2023
The toolchain folks say that the size increase for arm64 is within the expected range (new compiler means new behavior, different optimization decisions, and this size difference is within what we expect for that).
The arm32 libc++ size increase does look like it wasn't built as thumb though (libc++ moved from the NDK to being part of the toolchain in r26, so the build process was redone). That's a thing we ought to fix.
That alone won't be the trigger for r26c, but we'll pick up that fix in r26c when something else inevitably does.
This is drastic enough that I'd bet the LLVM build doesn't build the runtimes as thumb... @rprichard
(the other architectures grew, but considering we were quite behind on libc++, it's not surprising that they've added more code to libc++ in that time)
You know this better than me. But in our AAR project, we do set LOCAL_ARM_MODE := arm when building the library from prefabs. When the AAR is consumed by the app project, we do the same. Maybe this is related?
Activity
DanAlbert commentedon Oct 23, 2023
Tentatively triaging to r26c. These are often quite difficult to diagnose when they weren't the result of something we did on purpose, and they're generally caused by upstream LLVM changes, and that can be anything from a change in optimization behavior to a correctness fix.
@pirama-arumuga-nainar could one of you have a look and see if you can come up with an explanation?
appujee commentedon Oct 24, 2023
the libc++_shared.so in r26 has more symbols.
only_in_r25.txt
only_in_r26.txt
DanAlbert commentedon Oct 24, 2023
Is that the reason for mylib.so growing though?
This is drastic enough that I'd bet the LLVM build doesn't build the runtimes as thumb... @rprichard
(the other architectures grew, but considering we were quite behind on libc++, it's not surprising that they've added more code to libc++ in that time)
appujee commentedon Oct 24, 2023
For the specific binary liborxDemo.so shared in the bug report. the biggest contributors are .text and .ehframe
appujee commentedon Oct 24, 2023
He is a detailed breakdown of the symbols if anyone is interested in doing further analysis. It will take a while to find specific symbols but if the bug author is super interested, these files have sufficient information.
r25.csv
r26.csv
[-]r26 produces larger .so file for arm64-v8a (and libc++_shared.so larger for all ABIs)[/-][+]r26 armeabi-v7a libc++ probably not built as thumb[/+]DanAlbert commentedon Nov 1, 2023
The toolchain folks say that the size increase for arm64 is within the expected range (new compiler means new behavior, different optimization decisions, and this size difference is within what we expect for that).
The arm32 libc++ size increase does look like it wasn't built as thumb though (libc++ moved from the NDK to being part of the toolchain in r26, so the build process was redone). That's a thing we ought to fix.
That alone won't be the trigger for r26c, but we'll pick up that fix in r26c when something else inevitably does.
pirama-arumuga-nainar commentedon Nov 7, 2023
With https://android-review.googlesource.com/c/toolchain/llvm_android/+/2814878, the size of the arm libc++.so is 888K - it's still larger than r25 but it is expected with new compiler and libc++ (and in line with the rest of the platforms.)
znakeeye commentedon Dec 1, 2023
You know this better than me. But in our AAR project, we do set
LOCAL_ARM_MODE := armwhen building the library from prefabs. When the AAR is consumed by the app project, we do the same. Maybe this is related?9 remaining items
Build arm32 libc++ for the NDK with -mthumb
Bump NDK to r26c (#8732)
Build arm32 libc++ for the NDK with -mthumb
Note r26c LLVM fixes in the changelog.
Update LLVM to r522817.
Build arm32 libc++ for the NDK with -mthumb