[Bug]: proot fails to build
Problem description
proot fails to build. Here are the logs:
GEN build.h 1 warning generated. LD loader/loader-m32 CC cli/cli.o CC cli/proot.o CC execve/aoxp.o CC syscall/seccomp.o CC path/path.o CC tracee/mem.o CC extension/extension.o readelf -s loader/loader | awk -f loader/loader-info.awk > loader/loader-info.c CC loader/loader-info.o ./cli/cli.c:572:14: warning: unused variable 'pointers' [-Wunused-variable] 572 | void *const pointers[] = { this_function, call_site }; | ^~~~~~~~ 2 warnings generated. 1 warning generated. LD proot rm .check_seccomp_filter.o .check_process_vm.o .check_seccomp_filter .check_process_vm make: Leaving directory '/home/builder/.termux-build/proot/src/src' make: Entering directory '/home/builder/.termux-build/proot/src/src' INSTALL proot install -D loader/loader /data/data/com.example.app/files/usr/libexec/proot/loader install -D loader/loader-m32 /data/data/com.example.app/files/usr/libexec/proot/loader32 make: Leaving directory '/home/builder/.termux-build/proot/src/src' llvm-strip: error: './libexec/proot/loader': failed to allocate memory buffer of 1fffe006d8 bytes
What steps will reproduce the bug?
build-package.a all proot
What is the expected behavior?
No response
System information
Ubuntu
@abdirahmandev6 for some reason I don't really understand, the linking and stripping steps of package proot sometimes take an extremely long time and use an insanely huge amount of RAM, but on some computers, they are able to complete despite that, and on some other computers (one of which is GitHub Actions) the problem does not occur for some reason.
This problem can affect both on-device building and cross-compiling. Here is a screenshot of what it looks like on my computer where it is using almost 150 GB of RAM and Swap.
When I wait for 10 minutes, my computer is eventually able to complete a build of proot successfully despite being affected by this problem, but I agree that this problem is not good and it is preventing some computers from being able to compile proot.
Hopefully, it is possible to somehow figure out what the difference is between computers that proot is unaffected by this problem on (like GitHub Actions) and computers that proot is affected by this problem on (like yours and mine) and get proot to behave in the low memory use codepath during building on all computers.
Also, this problem has been reproducible on some devices for at least 1 month and probably longer, and did not start recently. I was aware of this problem, but you are the first person to open the bug report for it, thank you.
There is a particularly weird phenomenon that, a while ago when I tested this problem during on-device building on two devices, these were the results:
- Samsung Galaxy A70 SM-A705FN - this device is affected by the problem, and it cannot compile
proot - Samsung Galaxy S III SPH-L710 - this device is one of the devices that does not get affected, similar to GitHub Actions, so it does not take too long to compile
prootand it does not require a huge amount of RAM to do so. This is particularly surprising on a surface level because Samsung Galaxy S III is an extremely slow device, so the naive expectation would be that it wouldn't be able to compile this. This result seemed to confirm that there is an unknown factor causing the problem that is only affecting some devices, and device performance and memory specifications are not a direct factor when the problem is not affecting a device.
1fffe006d8 bytes is 137 GB. that number is so astronomical compared to what it should be that it is shocking. I can't think of any other software that I have seen have this problem before and I don't know what to do about it.
I am rebuilding it right now. Temporarily gave myself close to 300 gb of swap file. It is using over 150gb right now.
It looks like it also needs over 100 gb of storage space in addition to the 150gb of swap
I am planning on killing docker as soon as it uses those 100gb of storage and then check the contents of the build to try and find out why it needs so much space. The large storage space requirements and the large ram requirements are probably related so it should provide a clue on what is going on.
I made a miscalculation. It was actually using around 240gb of storage space.
It seems like the file at /data/data/package_name/files/usr/libexec/proot/loader file is the culprit. Its size is 137gb on my computer and it would have been larger had I not killed the build process early
The large ram and storage issue only affects arm64 builds. The generated deb file is also abnormally large(20 mb when other archs are 150kb). Arm 32 bit and x86 32 bit builds successfully but x86 64 bit fails. Here are the logs
Ignoring -i option to download dependencies since repo package name (com.termux) does not equal app package name (com.example.app) termux - building proot for arch x86_64... Downloading https://github.com/termux/termux-elf-cleaner/releases/download/v3.0.1/termux-elf-cleaner % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 175k 100 175k 0 0 442k 0 --:--:-- --:--:-- --:--:-- 442k Building dependency libtalloc if necessary... Ignoring -i option to download dependencies since repo package name (com.termux) does not equal app package name (com.example.app) termux - building libtalloc for arch x86_64... Downloading [email protected] source from 'https://www.samba.org/ftp/talloc/talloc-2.4.3.tar.gz' if necessary... Downloading https://www.samba.org/ftp/talloc/talloc-2.4.3.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
32 668k 32 218k 0 0 840k 0 --:--:-- --:--:-- --:--:-- 838k
100 668k 100 668k 0 0 2094k 0 --:--:-- --:--:-- --:--:-- 2094k
Applying ndk-patch: bits-struct_file.h.patch
Applying ndk-patch: dirent.h.patch
Applying ndk-patch: fcntl.h.patch
Applying ndk-patch: grp.h.patch
Applying ndk-patch: linux-fcntl.h.patch
Applying ndk-patch: paths.h.patch
Applying ndk-patch: pwd.h.patch
Applying ndk-patch: redefine-TCSAFLUSH.patch
Applying ndk-patch: semaphore.h.patch
Applying ndk-patch: stdio.h.patch
Applying ndk-patch: stdlib.h.patch
Applying ndk-patch: sys-cdefs.h.patch
Applying ndk-patch: syslog.patch
Applying ndk-patch: sys-time.h.patch
Applying ndk-patch: time.h.patch
Applying ndk-patch: unistd.h.patch
Applying ndk-patch: utmp.h.patch
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/21/libandroid.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/21/libc.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/21/libdl.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/21/libEGL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/21/libGLESv1_CM.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/21/libGLESv2.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/21/libGLESv3.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/21/libjnigraphics.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/21/liblog.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/21/libmediandk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/21/libm.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/21/libOpenMAXAL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/21/libOpenSLES.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/21/libstdc++.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/21/libz.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/22/libandroid.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/22/libc.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/22/libdl.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/22/libEGL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/22/libGLESv1_CM.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/22/libGLESv2.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/22/libGLESv3.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/22/libjnigraphics.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/22/liblog.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/22/libmediandk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/22/libm.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/22/libOpenMAXAL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/22/libOpenSLES.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/22/libstdc++.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/22/libz.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/23/libandroid.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/23/libc.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/23/libdl.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/23/libEGL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/23/libGLESv1_CM.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/23/libGLESv2.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/23/libGLESv3.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/23/libjnigraphics.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/23/liblog.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/23/libmediandk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/23/libm.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/23/libOpenMAXAL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/23/libOpenSLES.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/23/libstdc++.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/23/libz.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/libandroid.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/libcamera2ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/libc.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/libdl.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/libEGL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/libGLESv1_CM.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/libGLESv2.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/libGLESv3.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/libjnigraphics.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/liblog.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/libmediandk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/libm.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/libOpenMAXAL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/libOpenSLES.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/libstdc++.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/libvulkan.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/24/libz.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/libandroid.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/libcamera2ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/libc.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/libdl.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/libEGL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/libGLESv1_CM.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/libGLESv2.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/libGLESv3.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/libjnigraphics.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/liblog.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/libmediandk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/libm.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/libOpenMAXAL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/libOpenSLES.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/libstdc++.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/libvulkan.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/25/libz.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libaaudio.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libandroid.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libcamera2ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libc.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libdl.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libEGL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libGLESv1_CM.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libGLESv2.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libGLESv3.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libjnigraphics.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/liblog.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libmediandk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libm.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libnativewindow.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libOpenMAXAL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libOpenSLES.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libstdc++.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libsync.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libvulkan.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/26/libz.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libaaudio.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libandroid.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libcamera2ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libc.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libdl.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libEGL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libGLESv1_CM.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libGLESv2.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libGLESv3.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libjnigraphics.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/liblog.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libmediandk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libm.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libnativewindow.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libneuralnetworks.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libOpenMAXAL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libOpenSLES.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libstdc++.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libsync.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libvulkan.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/27/libz.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libaaudio.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libandroid.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libcamera2ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libc.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libdl.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libEGL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libGLESv1_CM.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libGLESv2.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libGLESv3.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libjnigraphics.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/liblog.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libmediandk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libm.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libnativewindow.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libneuralnetworks.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libOpenMAXAL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libOpenSLES.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libstdc++.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libsync.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libvulkan.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/28/libz.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libaaudio.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libamidi.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libandroid.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libbinder_ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libcamera2ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libdl.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libc.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libEGL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libGLESv1_CM.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libGLESv2.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libGLESv3.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libjnigraphics.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/liblog.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libmediandk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libm.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libnativewindow.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libneuralnetworks.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libOpenMAXAL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libOpenSLES.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libstdc++.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libsync.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libvulkan.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/29/libz.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libaaudio.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libamidi.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libandroid.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libbinder_ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libcamera2ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libc.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libdl.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libEGL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libGLESv1_CM.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libGLESv2.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libGLESv3.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libjnigraphics.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/liblog.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libmediandk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libm.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libnativewindow.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libneuralnetworks.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libOpenMAXAL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libOpenSLES.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libstdc++.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libsync.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libvulkan.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/30/libz.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libaaudio.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libamidi.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libandroid.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libbinder_ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libcamera2ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libc.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libdl.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libEGL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libGLESv1_CM.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libGLESv2.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libGLESv3.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libicu.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libjnigraphics.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/liblog.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libmediandk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libm.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libnativehelper.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libnativewindow.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libneuralnetworks.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libOpenMAXAL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libOpenSLES.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libstdc++.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libsync.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libvulkan.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/31/libz.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libaaudio.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libamidi.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libandroid.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libbinder_ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libcamera2ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libc.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libdl.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libEGL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libGLESv1_CM.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libGLESv2.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libGLESv3.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libicu.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libjnigraphics.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/liblog.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libmediandk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libm.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libnativehelper.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libnativewindow.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libneuralnetworks.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libOpenMAXAL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libOpenSLES.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libstdc++.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libsync.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libvulkan.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/32/libz.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libaaudio.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libamidi.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libandroid.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libbinder_ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libcamera2ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libc.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libdl.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libEGL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libGLESv1_CM.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libGLESv2.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libGLESv3.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libicu.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libjnigraphics.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/liblog.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libmediandk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libm.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libnativehelper.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libnativewindow.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libneuralnetworks.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libOpenMAXAL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libOpenSLES.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libstdc++.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libsync.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libvulkan.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/33/libz.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libaaudio.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libamidi.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libandroid.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libbinder_ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libcamera2ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libc.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libdl.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libEGL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libGLESv1_CM.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libGLESv2.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libGLESv3.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libicu.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libjnigraphics.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/liblog.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libmediandk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libm.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libnativehelper.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libnativewindow.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libneuralnetworks.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libOpenMAXAL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libOpenSLES.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libstdc++.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libsync.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libvulkan.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/34/libz.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libaaudio.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libamidi.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libandroid.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libbinder_ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libcamera2ndk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libc.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libdl.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libEGL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libGLESv1_CM.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libGLESv2.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libGLESv3.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libicu.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libjnigraphics.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/liblog.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libmediandk.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libm.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libnativehelper.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libnativewindow.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libneuralnetworks.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libOpenMAXAL.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libOpenSLES.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libstdc++.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libsync.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libvulkan.so'
termux-elf-cleaner: Removing the DT_AARCH64_BTI_PLT dynamic section entry from 'usr/lib/aarch64-linux-android/35/libz.so'
rm: cannot remove '/data/data/com.example.app/files/usr/lib/libtalloc*': No such file or directory
Setting top to : /home/builder/.termux-build/libtalloc/src
Setting out to : /home/builder/.termux-build/libtalloc/src/bin
Checking for 'gcc' (C compiler) : not found
Checking for 'clang' (C compiler) : x86_64-linux-android-clang
Checking for program 'git' : /usr/bin/git
Checking for c flags '-MMD' : yes
Checking for program 'gdb' : not found
Checking for header sys/utsname.h : yes
Checking uname sysname type : Linux
Checking uname machine type : dontcare
Checking uname release type : dontcare
Checking uname version type : dontcare
Checking for header stdio.h : yes
Checking simple C program : ok
Checking compiler accepts ['-Werror'] : yes
Checking linker accepts ['-Wl,-rpath,.'] : yes
Checking for rpath library support : yes
Checking for -Wl,--version-script support : not found
Checking compiler accepts ['-fvisibility=hidden'] : yes
Checking for HAVE_VISIBILITY_ATTR : ok
Checking for library constructor support : ok
Checking for library destructor support : ok
Checking for attribute : ok
Checking compiler accepts ['-fPIC'] : yes
Checking for inline : inline
Checking for program 'pkg-config' : /home/builder/.termux-build/cache/android-r29-api-24-v2/bin/pkg-config
Checking for pkg-config version >= '0.0.0' : yes
Checking compiler accepts ['-D__STDC_WANT_LIB_EXT1_=1'] : yes
Checking compiler accepts [''] : yes
Checking for header sys/types.h : yes
Checking for header sys/stat.h : yes
Checking for header stdlib.h : yes
Checking for header stddef.h : yes
Checking for header memory.h : yes
Checking for header string.h : yes
Checking for header strings.h : yes
Checking for header inttypes.h : yes
Checking for header stdint.h : yes
Checking for header unistd.h : yes
Checking for header minix/config.h : no
Checking for header ctype.h : yes
Checking for header standards.h : no
Checking for header stdbool.h : yes
Checking for header stdarg.h : yes
Checking for header vararg.h : no
Checking for header limits.h : yes
Checking for header assert.h : yes
Checking getconf LFS_CFLAGS : not found
Checking getconf large file support flags work : ok
Checking for large file support without additional flags : ok
Checking for header sys/time.h : yes
Checking for header time.h : yes
Checking for header endian.h : yes
Checking for header sys/endian.h : yes
Checking for HAVE_LITTLE_ENDIAN : ok
Checking for HAVE_BIG_ENDIAN : not found
Checking for header signal.h : yes
Checking if signal handlers return int : not found
Checking for variable FUNCTION : ok
Checking for va_copy : ok
Checking for header linux/types.h : yes
Checking for header crypt.h : no
Checking for header locale.h : yes
Checking for header acl/libacl.h : no
Checking for header compat.h : no
Checking for header attr/xattr.h : no
Checking for header dustat.h : no
Checking for header fcntl.h : yes
Checking for header fnmatch.h : yes
Checking for header glob.h : no
Checking for header history.h : no
Checking for header krb5.h : no
Checking for header langinfo.h : yes
Checking for header ndir.h : no
Checking for header pwd.h : yes
Checking for header shadow.h : no
Checking for header sys/acl.h : no
Checking for header sys/attributes.h : no
Checking for header attr/attributes.h : no
Checking for header sys/capability.h : no
Checking for header sys/dir.h : no
Checking for header sys/epoll.h : yes
Checking for header sys/fcntl.h : yes
Checking for header sys/filio.h : no
Checking for header sys/filsys.h : no
Checking for header sys/fs/s5param.h : no
Checking for header sys/id.h : no
Checking for header sys/ioctl.h : yes
Checking for header sys/ipc.h : yes
Checking for header sys/mman.h : yes
Checking for header sys/mode.h : no
Checking for header sys/ndir.h : no
Checking for header sys/priv.h : no
Checking for header sys/resource.h : yes
Checking for header sys/security.h : no
Checking for header sys/shm.h : no
Checking for header sys/statfs.h : yes
Checking for header sys/statvfs.h : yes
Checking for header sys/termio.h : no
Checking for header sys/vfs.h : yes
Checking for header sys/xattr.h : yes
Checking for header termio.h : yes
Checking for header termios.h : yes
Checking for header sys/file.h : yes
Checking for header sys/ucontext.h : yes
Checking for header sys/wait.h : yes
Checking for declaration of malloc : ok
Checking for header grp.h : yes
Checking for header sys/select.h : yes
Checking for header setjmp.h : yes
Checking for header utime.h : yes
Checking for header sys/syslog.h : yes
Checking for header syslog.h : yes
Checking for header sys/mount.h : yes
Checking for header mntent.h : yes
Checking for header stropts.h : no
Checking for header unix.h : no
Checking for header sys/param.h : yes
Checking for header sys/socket.h : yes
Checking for header netinet/in.h : yes
Checking for header netdb.h : yes
Checking for header arpa/inet.h : yes
Checking for header netinet/in_systm.h : yes
Checking for header netinet/ip.h : yes
Checking for header netinet/tcp.h : yes
Checking for header netinet/in_ip.h : no
Checking for header sys/sockio.h : no
Checking for header sys/un.h : yes
Checking for header sys/uio.h : yes
Checking for header ifaddrs.h : yes
Checking for header direct.h : no
Checking for header dirent.h : yes
Checking for header windows.h : no
Checking for header winsock2.h : no
Checking for header ws2tcpip.h : no
Checking for header errno.h : yes
Checking for header getopt.h : yes
Checking for header iconv.h : no
Checking for header nss.h : no
Checking for header sasl/sasl.h : no
Checking for header linux/openat2.h : yes
Checking for inotify_init : ok
Checking for header security/pam_appl.h : no
Checking for header zlib.h : no
Checking for header asm/unistd.h : yes
Checking for header sys/unistd.h : yes
Checking for header alloca.h : yes
Checking for header float.h : yes
Checking for header rpc/rpc.h : no
Checking for header rpc/nettype.h : no
Checking for tirpc rpc headers in default system path : not found
Checking for libtirpc headers : not found
Checking for libntirpc headers : not found
No rpc/rpc.h header found, tirpc or libntirpc missing?
Checking for header sys/sysctl.h : not found
Checking for header sys/fileio.h : no
Checking for header sys/filesys.h : no
Checking for header sys/dustat.h : no
Checking for header sys/sysmacros.h : yes
Checking for header xfs/libxfs.h : no
Checking for header netgroup.h : no
Checking for header valgrind.h : no
Checking for header valgrind/valgrind.h : no
Checking for header valgrind/memcheck.h : no
Checking for header valgrind/helgrind.h : no
Checking for header valgrind/callgrind.h : no
Checking for header nss_common.h : no
Checking for header nsswitch.h : no
Checking for header ns_api.h : no
Checking for header sys/extattr.h : no
Checking for header sys/ea.h : no
Checking for header sys/proplist.h : no
Checking for header sys/cdefs.h : yes
Checking for header utmp.h : yes
Checking for header utmpx.h : yes
Checking for header lastlog.h : yes
Checking for header syscall.h : yes
Checking for header sys/syscall.h : yes
Checking for header sys/atomic.h : no
Checking for header stdatomic.h : yes
Checking for header libgen.h : yes
Checking compiler accepts -Wno-format-truncation : yes
Checking compiler accepts -Wno-unused-function : yes
Checking compiler accepts -Wno-strict-overflow : yes
Checking compiler accepts -Wno-unused-but-set-variable : yes
Checking compiler accepts -Wuse-after-free=1 : no
Checking for header sys/prctl.h : yes
Checking for prctl syscall : ok
Checking for O_DIRECT flag to open(2) : ok
Checking for long long : ok
Checking for intptr_t : ok
Checking for uintptr_t : ok
Checking for ptrdiff_t : ok
Checking for comparison_fn_t : not found
Checking for bool : ok
Checking for int8_t : ok
Checking for uint8_t : ok
Checking for int16_t : ok
Checking for uint16_t : ok
Checking for int32_t : ok
Checking for uint32_t : ok
Checking for int64_t : ok
Checking for uint64_t : ok
Checking for size_t : ok
Checking for ssize_t : ok
Checking for ino_t : ok
Checking for loff_t : ok
Checking for offset_t : not found
Checking for volatile int : ok
Checking for uint_t : ok
Checking for blksize_t : ok
Checking for blkcnt_t : ok
Checking if size of bool == 1 : ok
Checking if size of char == 1 : ok
Checking if size of int == 1 : not found
Checking if size of int == 2 : not found
Checking if size of int == 4 : ok
Checking if size of long long == 1 : not found
Checking if size of long long == 2 : not found
Checking if size of long long == 4 : not found
Checking if size of long long == 8 : ok
Checking if size of long == 1 : not found
Checking if size of long == 2 : not found
Checking if size of long == 4 : not found
Checking if size of long == 8 : ok
Checking if size of short == 1 : not found
Checking if size of short == 2 : ok
Checking if size of size_t == 1 : not found
Checking if size of size_t == 2 : not found
Checking if size of size_t == 4 : not found
Checking if size of size_t == 8 : ok
Checking if size of ssize_t == 1 : not found
Checking if size of ssize_t == 2 : not found
Checking if size of ssize_t == 4 : not found
Checking if size of ssize_t == 8 : ok
Checking if size of int8_t == 1 : ok
Checking if size of uint8_t == 1 : ok
Checking if size of int16_t == 1 : not found
Checking if size of int16_t == 2 : ok
Checking if size of uint16_t == 1 : not found
Checking if size of uint16_t == 2 : ok
Checking if size of int32_t == 1 : not found
Checking if size of int32_t == 2 : not found
Checking if size of int32_t == 4 : ok
Checking if size of uint32_t == 1 : not found
Checking if size of uint32_t == 2 : not found
Checking if size of uint32_t == 4 : ok
Checking if size of int64_t == 1 : not found
Checking if size of int64_t == 2 : not found
Checking if size of int64_t == 4 : not found
Checking if size of int64_t == 8 : ok
Checking if size of uint64_t == 1 : not found
Checking if size of uint64_t == 2 : not found
Checking if size of uint64_t == 4 : not found
Checking if size of uint64_t == 8 : ok
Checking if size of void* == 1 : not found
Checking if size of void* == 2 : not found
Checking if size of void* == 4 : not found
Checking if size of void* == 8 : ok
Checking if size of off_t == 1 : not found
Checking if size of off_t == 2 : not found
Checking if size of off_t == 4 : not found
Checking if size of off_t == 8 : ok
Checking if size of dev_t == 1 : not found
Checking if size of dev_t == 2 : not found
Checking if size of dev_t == 4 : not found
Checking if size of dev_t == 8 : ok
Checking if size of ino_t == 1 : not found
Checking if size of ino_t == 2 : not found
Checking if size of ino_t == 4 : not found
Checking if size of ino_t == 8 : ok
Checking if size of time_t == 1 : not found
Checking if size of time_t == 2 : not found
Checking if size of time_t == 4 : not found
Checking if size of time_t == 8 : ok
Checking for socklen_t : ok
Checking for struct ifaddrs : ok
Checking for struct addrinfo : ok
Checking for struct sockaddr : ok
Checking for HAVE_STRUCT_SOCKADDR_IN6 : ok
Checking for struct sockaddr_storage : ok
Checking for sa_family_t : ok
Checking for sig_atomic_t : ok
Checking for sigsetmask : ok
Checking for siggetmask : not found
Checking for sigprocmask : ok
Checking for sigblock : ok
Checking for sigaction : ok
Checking for sigset : not found
Checking for inet_ntoa : ok
Checking for inet_aton : ok
Checking for inet_ntop : ok
Checking for inet_pton : ok
Checking for connect : ok
Checking for gethostbyname : ok
Checking for getaddrinfo : ok
Checking for getnameinfo : ok
Checking for freeaddrinfo : ok
Checking for gai_strerror : ok
Checking for socketpair : ok
Checking for memset_s : not found
Checking for memset_explicit : not found
Checking for volatile memory protection : ok
Checking for variable IPV6_V6ONLY : ok
Checking for header net/if.h : yes
Checking for HAVE_IPV6 : ok
Checking whether we have ucontext_t : ok
Checking for __sync_fetch_and_add compiler builtin : ok
Checking for __sync_add_and_fetch compiler builtin : ok
Checking for atomic_add_32 compiler builtin : not found
Checking for __atomic_add_fetch compiler builtin : ok
Checking for __atomic_load compiler builtin : ok
Checking for atomic_thread_fence(memory_order_seq_cst) in stdatomic.h : ok
Checking for fallthrough attribute : ok
Checking for strdup : ok
Checking for memmem : ok
Checking for printf : ok
Checking for memcpy : ok
Checking for memmove : ok
Checking for strcpy : ok
Checking for strncpy : ok
Checking for shl_load : not found
Checking for shl_unload : not found
Checking for shl_findsym : not found
Checking for pipe : ok
Checking for strftime : ok
Checking for srandom : ok
Checking for random : ok
Checking for srand : ok
Checking for rand : ok
Checking for usleep : ok
Checking for setbuffer : ok
Checking for lstat : ok
Checking for getpgrp : ok
Checking for utime : ok
Checking for utimes : ok
Checking for setuid : ok
Checking for seteuid : ok
Checking for setreuid : ok
Checking for setresuid : ok
Checking for setgid : ok
Checking for setegid : ok
Checking for setregid : ok
Checking for setresgid : ok
Checking for chroot : ok
Checking for strerror : ok
Checking for vsyslog : ok
Checking for setlinebuf : ok
Checking for mktime : ok
Checking for ftruncate : ok
Checking for chsize : not found
Checking for rename : ok
Checking for waitpid : ok
Checking for wait4 : ok
Checking for initgroups : ok
Checking for pread : ok
Checking for pwrite : ok
Checking for strndup : ok
Checking for strcasestr : ok
Checking for strsep : ok
Checking for strtok_r : ok
Checking for mkdtemp : ok
Checking for dup2 : ok
Checking for dprintf : ok
Checking for vdprintf : ok
Checking for isatty : ok
Checking for chown : ok
Checking for lchown : ok
Checking for link : ok
Checking for readlink : ok
Checking for symlink : ok
Checking for realpath : ok
Checking for snprintf : ok
Checking for vsnprintf : ok
Checking for asprintf : ok
Checking for vasprintf : ok
Checking for setenv : ok
Checking for unsetenv : ok
Checking for strnlen : ok
Checking for strtoull : ok
Checking for __strtoull : not found
Checking for strtouq : not found
Checking for strtoll : ok
Checking for __strtoll : not found
Checking for strtoq : not found
Checking for memalign : ok
Checking for posix_memalign : ok
Checking for fmemopen : ok
Checking for renameat2 : not found
Checking for header malloc.h : yes
Checking for declaration of memalign : ok
Checking for posix_fallocate-capable libc : ok
Checking for posix_fallocate : ok
Checking for prctl : ok
Checking for dirname : ok
Checking for basename : ok
Checking for strlcpy : ok
Checking for strlcat : ok
Checking for getpeereid : not found
Checking for library bsd : no
Checking for getpeereid : not found
Checking for library setproctitle : no
Checking for setproctitle : not found
Checking for library bsd : no
Checking for setproctitle : not found
Checking for setproctitle_init : not found
Checking for library bsd : no
Checking for setproctitle_init : not found
Checking for closefrom : not found
Checking for library bsd : no
Checking for closefrom : not found
Checking whether we can use SO_PEERCRED to get socket credentials : ok
Checking correct behavior of strtoll : ok
Checking for if_nameindex : ok
Checking for if_nametoindex : ok
Checking for strerror_r : ok
Checking for syslog : ok
Checking for gai_strerror : ok
Checking for get_current_dir_name : not found
Checking for timegm : ok
Checking for getifaddrs : ok
Checking for freeifaddrs : ok
Checking for mmap : ok
Checking for setgroups : ok
Checking for syscall : ok
Checking for setsid : ok
Checking for getgrent_r : not found
Checking for getgrgid_r : ok
Checking for getgrnam_r : ok
Checking for getgrouplist : ok
Checking for getpagesize : ok
Checking for getpwent_r : not found
Checking for getpwnam_r : ok
Checking for getpwuid_r : ok
Checking for epoll_create1 : ok
Checking for getprogname : ok
Checking for copy_file_range : not found
Checking whether we have copy_file_range system call : ok
Checking for getxattr : ok
Checking whether xattr interface takes additional options : not found
Checking for dlopen : ok
Checking for dlsym : ok
Checking for dlerror : ok
Checking for dlclose : ok
Checking for declaration of dlopen : ok
Checking C prototype for dlopen : not found
Checking for fdatasync : ok
Checking for declaration of fdatasync : ok
Checking for clock_gettime : ok
Checking whether the clock_gettime clock ID CLOCK_MONOTONIC is available : ok
Checking whether the clock_gettime clock ID CLOCK_PROCESS_CPUTIME_ID is available : ok
Checking whether the clock_gettime clock ID CLOCK_REALTIME is available : ok
Checking for struct timespec : ok
Checking for header arpa/nameser.h : yes
Checking for header resolv.h : yes
Checking for res_search : ok
Checking for header libintl.h : yes
Checking for library intl : no
Checking for declaration of dgettext : ok
Checking for declaration of gettext : ok
Checking for declaration of bindtextdomain : ok
Checking for declaration of textdomain : ok
Checking for declaration of bind_textdomain_codeset : ok
Checking for bindtextdomain : ok
Checking for textdomain : ok
Checking for bind_textdomain_codeset : ok
Checking for dgettext : ok
Checking for gettext : ok
Checking for pthread_create : ok
Checking for pthread_attr_init : ok
Checking for pthread_mutexattr_setrobust : not found
Checking for library pthread : yes
Checking for pthread_mutexattr_setrobust in pthread : not found
Checking for pthread_mutexattr_setrobust_np : not found
Checking for pthread_mutexattr_setrobust_np in pthread : not found
Checking for declaration of PTHREAD_MUTEX_ROBUST : not found
Checking for declaration of PTHREAD_MUTEX_ROBUST (as enum) : not found
Checking for declaration of PTHREAD_MUTEX_ROBUST_NP : not found
Checking for declaration of PTHREAD_MUTEX_ROBUST_NP (as enum) : not found
Checking for pthread_mutex_consistent : not found
Checking for pthread_mutex_consistent in pthread : not found
Checking for pthread_mutex_consistent_np : not found
Checking for pthread_mutex_consistent_np in pthread : not found
Checking for __thread local storage : ok
Checking for crypt : not found
Checking for library crypt : no
Checking for crypt : not found
Checking for crypt_r : not found
Checking for library crypt : no
Checking for crypt_r : not found
Checking for crypt_rn : not found
Checking for library crypt : no
Checking for crypt_rn : not found
Checking for header readline.h : no
Checking for header readline/readline.h : no
Checking for header readline/history.h : no
Checking for variable rl_event_hook : not found
Checking for variable program_invocation_short_name : not found
Checking for declaration of snprintf : ok
Checking for declaration of vsnprintf : ok
Checking for declaration of asprintf : ok
Checking for declaration of vasprintf : ok
Checking for declaration of errno : ok
Checking for declaration of EWOULDBLOCK : ok
Checking for declaration of environ : ok
Checking for declaration of getgrent_r : not found
Checking for declaration of getgrent_r (as enum) : not found
Checking for declaration of getpwent_r : not found
Checking for declaration of getpwent_r (as enum) : not found
Checking for declaration of pread : ok
Checking for declaration of pwrite : ok
Checking for declaration of setenv : ok
Checking for declaration of setresgid : ok
Checking for declaration of setresuid : ok
Checking for eventfd : ok
Checking for header poll.h : yes
Checking for poll : ok
Checking for strptime : ok
Checking for declaration of strptime : ok
Checking for working strptime : ok
Checking for declaration of gettimeofday : ok
Checking C prototype for gettimeofday : ok
Checking C prototype for gettimeofday : not found
Checking for C99 vsnprintf : ok
Checking for HAVE_SHARED_MMAP : ok
Checking for HAVE_MREMAP : ok
Checking for HAVE_INCOHERENT_MMAP : ok
Checking for HAVE_IMMEDIATE_STRUCTURES : ok
Checking for HAVE_MKDIR_MODE : ok
Checking for member st_rdev in struct stat : ok
Checking for member st_rdev in struct stat : ok
Checking for member ss_family in struct sockaddr_storage : ok
Checking for member __ss_family in struct sockaddr_storage : not found
Checking for member sa_len in struct sockaddr : not found
Checking for member sin_len in struct sockaddr_in : not found
Checking for member sin6_len in struct sockaddr_in6 : not found
Checking for HAVE_UNIXSOCKET : ok
Checking for HAVE_SECURE_MKSTEMP : ok
Checking for HAVE_IFACE_GETIFADDRS : not found
Checking for HAVE_IFACE_AIX : not found
Checking for HAVE_IFACE_IFCONF : not found
Checking for HAVE_IFACE_IFREQ : not found
Checking for declaration of getpwent_r : not found
Checking for declaration of getpwent_r (as enum) : not found
Checking for declaration of getgrent_r : not found
Checking for declaration of getgrent_r (as enum) : not found
Checking for declaration of getpwent_r : not found
Checking for declaration of getpwent_r (as enum) : not found
Checking for declaration of getgrent_r : not found
Checking for declaration of getgrent_r (as enum) : not found
Checking for strerror_r : ok
Checking for XSI (rather than GNU) prototype for strerror_r : not found
Checking for program 'xsltproc' : /usr/bin/xsltproc
Checking for stylesheet http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl : ok
Checking for header sys/auxv.h : yes
Checking for getauxval : ok
Checking if compiler accepts -fstack-protector-strong : yes
Checking if compiler accepts -fstack-clash-protection : yes
Checking linker accepts -Wl,-no-undefined : yes
Checking linker accepts ['-undefined', 'dynamic_lookup'] : yes
Checking for program 'python3' : /usr/bin/python3
Checking for program 'python' : /usr/bin/python3
Checking for program 'python3' : /usr/bin/python3
Checking for python version >= 3.6.0 : 3.12.3
python headers : Check disabled due to --disable-python
'configure' finished successfully (24.746s)
PYTHONHASHSEED=1 WAF_MAKE=1 PATH=buildtools/bin:../../buildtools/bin:$PATH which waf build
Waf: Entering directory `/home/builder/.termux-build/libtalloc/src/bin/default'
Checking project rules ...
Project rules pass
[1/2] Creating bin/default/lib/replace/replace.empty.c
[2/2] Compiling talloc.pc.in
[3/4] Compiling lib/replace/closefrom.c
[4/4] Compiling lib/replace/replace.c
[5/6] Compiling lib/replace/closefrom.c
[6/6] Compiling lib/replace/replace.c
[ 7/22] Compiling talloc.c
[ 8/22] Compiling lib/replace/tests/strptime.c
[ 9/22] Compiling lib/replace/tests/getifaddrs.c
[10/22] Compiling lib/replace/tests/testsuite.c
[11/22] Compiling lib/replace/tests/os2_delete.c
[12/22] Compiling lib/replace/tests/main.c
[13/22] Compiling testsuite_main.c
[14/22] Compiling testsuite.c
[15/22] Compiling test_magic_differs_helper.c
[16/22] Compiling bin/default/lib/replace/replace.empty.c
[17/22] Compiling talloc.c
[18/22] Linking bin/default/libtalloc.so
[19/22] Linking bin/default/talloc_test_magic_differs_helper
../../testsuite.c:1334:6: warning: 'talloc_autofree_context' is deprecated [-Wdeprecated-declarations]
1334 | p = talloc_autofree_context();
| ^
../../talloc.h:1084:46: note: 'talloc_autofree_context' has been explicitly marked deprecated here
1084 | PUBLIC void *talloc_autofree_context(void) DEPRECATED;
| ^
../../lib/replace/replace.h:465:38: note: expanded from macro 'DEPRECATED'
465 | #define DEPRECATED attribute ((deprecated))
| ^
../../testsuite.c:1337:6: warning: 'talloc_autofree_context' is deprecated [-Wdeprecated-declarations]
1337 | p = talloc_autofree_context();
| ^
../../talloc.h:1084:46: note: 'talloc_autofree_context' has been explicitly marked deprecated here
1084 | PUBLIC void *talloc_autofree_context(void) DEPRECATED;
| ^
../../lib/replace/replace.h:465:38: note: expanded from macro 'DEPRECATED'
465 | #define DEPRECATED attribute ((deprecated))
| ^
../../testsuite.c:1680:29: warning: 'talloc_set_memlimit' is deprecated [-Wdeprecated-declarations]
1680 | torture_assert("memlimit", talloc_set_memlimit(l1, 2048) == 0,
| ^
../../talloc.h:1951:68: note: 'talloc_set_memlimit' has been explicitly marked deprecated here
1951 | PUBLIC int talloc_set_memlimit(const void *ctx, size_t max_size) DEPRECATED;
| ^
../../lib/replace/replace.h:465:38: note: expanded from macro 'DEPRECATED'
465 | #define DEPRECATED attribute ((deprecated))
| ^
../../testsuite.c:1740:29: warning: 'talloc_set_memlimit' is deprecated [-Wdeprecated-declarations]
1740 | torture_assert("memlimit", talloc_set_memlimit(l3, 1024) == 0,
| ^
../../talloc.h:1951:68: note: 'talloc_set_memlimit' has been explicitly marked deprecated here
1951 | PUBLIC int talloc_set_memlimit(const void *ctx, size_t max_size) DEPRECATED;
| ^
../../lib/replace/replace.h:465:38: note: expanded from macro 'DEPRECATED'
465 | #define DEPRECATED attribute ((deprecated))
| ^
../../testsuite.c:1753:29: warning: 'talloc_set_memlimit' is deprecated [-Wdeprecated-declarations]
1753 | torture_assert("memlimit", talloc_set_memlimit(l4, 512) == 0,
| ^
../../talloc.h:1951:68: note: 'talloc_set_memlimit' has been explicitly marked deprecated here
1951 | PUBLIC int talloc_set_memlimit(const void *ctx, size_t max_size) DEPRECATED;
| ^
../../lib/replace/replace.h:465:38: note: expanded from macro 'DEPRECATED'
465 | #define DEPRECATED attribute ((deprecated))
| ^
../../testsuite.c:1787:29: warning: 'talloc_set_memlimit' is deprecated [-Wdeprecated-declarations]
1787 | torture_assert("memlimit", talloc_set_memlimit(l4, 512) == 0,
| ^
../../talloc.h:1951:68: note: 'talloc_set_memlimit' has been explicitly marked deprecated here
1951 | PUBLIC int talloc_set_memlimit(const void ctx, size_t max_size) DEPRECATED;
| ^
../../lib/replace/replace.h:465:38: note: expanded from macro 'DEPRECATED'
465 | #define DEPRECATED attribute ((deprecated))
| ^
../../testsuite.c:1820:2: warning: 'talloc_set_memlimit' is deprecated [-Wdeprecated-declarations]
1820 | talloc_set_memlimit(pool, 101024);
| ^
../../talloc.h:1951:68: note: 'talloc_set_memlimit' has been explicitly marked deprecated here
1951 | PUBLIC int talloc_set_memlimit(const void ctx, size_t max_size) DEPRECATED;
| ^
../../lib/replace/replace.h:465:38: note: expanded from macro 'DEPRECATED'
465 | #define DEPRECATED attribute ((deprecated))
| ^
../../testsuite.c:1873:2: warning: 'talloc_set_memlimit' is deprecated [-Wdeprecated-declarations]
1873 | talloc_set_memlimit(pool, 111024);
| ^
../../talloc.h:1951:68: note: 'talloc_set_memlimit' has been explicitly marked deprecated here
1951 | PUBLIC int talloc_set_memlimit(const void ctx, size_t max_size) DEPRECATED;
| ^
../../lib/replace/replace.h:465:38: note: expanded from macro 'DEPRECATED'
465 | #define DEPRECATED attribute ((deprecated))
| ^
../../testsuite.c:1885:2: warning: 'talloc_set_memlimit' is deprecated [-Wdeprecated-declarations]
1885 | talloc_set_memlimit(pool, 211024);
| ^
../../talloc.h:1951:68: note: 'talloc_set_memlimit' has been explicitly marked deprecated here
1951 | PUBLIC int talloc_set_memlimit(const void *ctx, size_t max_size) DEPRECATED;
| ^
../../lib/replace/replace.h:465:38: note: expanded from macro 'DEPRECATED'
465 | #define DEPRECATED attribute ((deprecated))
| ^
../../testsuite.c:1923:2: warning: 'talloc_set_memlimit' is deprecated [-Wdeprecated-declarations]
1923 | talloc_set_memlimit(pool, 1024);
| ^
../../talloc.h:1951:68: note: 'talloc_set_memlimit' has been explicitly marked deprecated here
1951 | PUBLIC int talloc_set_memlimit(const void ctx, size_t max_size) DEPRECATED;
| ^
../../lib/replace/replace.h:465:38: note: expanded from macro 'DEPRECATED'
465 | #define DEPRECATED attribute ((deprecated))
| ^
../../testsuite.c:1944:2: warning: 'talloc_set_memlimit' is deprecated [-Wdeprecated-declarations]
1944 | talloc_set_memlimit(pool, 101024);
| ^
../../talloc.h:1951:68: note: 'talloc_set_memlimit' has been explicitly marked deprecated here
1951 | PUBLIC int talloc_set_memlimit(const void *ctx, size_t max_size) DEPRECATED;
| ^
../../lib/replace/replace.h:465:38: note: expanded from macro 'DEPRECATED'
465 | #define DEPRECATED attribute ((deprecated))
| ^
11 warnings generated.
[20/22] Linking bin/default/talloc_testsuite [21/22] Linking bin/default/lib/replace/replace_testsuite [22/22] Symlinking bin/default/libtalloc.so [23/23] Compiling man/talloc.3.xml Note: Writing talloc.3
Waf: Leaving directory /home/builder/.termux-build/libtalloc/src/bin/default' Build commands will be stored in bin/default/compile_commands.json 'build' finished successfully (0.708s) PYTHONHASHSEED=1 WAF_MAKE=1 PATH=buildtools/bin:../../buildtools/bin:$PATH which wafinstall Waf: Entering directory/home/builder/.termux-build/libtalloc/src/bin/default'
-
install /data/data/com.example.app/files/usr/lib/pkgconfig/talloc.pc (from bin/default/talloc.pc) [ 9/26] Linking bin/default/libtalloc.so
-
symlink /data/data/com.example.app/files/usr/lib/libtalloc.so.2 (to libtalloc.so.2.4.3)
-
symlink /data/data/com.example.app/files/usr/lib/libtalloc.so (to libtalloc.so.2.4.3)
-
install /data/data/com.example.app/files/usr/lib/libtalloc.so.2.4.3 (from bin/default/libtalloc.so)
-
install /data/data/com.example.app/files/usr/include/talloc.h (from talloc.h)
-
install /data/data/com.example.app/files/usr/share/man/man3/talloc.3 (from bin/default/man/talloc.3) Waf: Leaving directory `/home/builder/.termux-build/libtalloc/src/bin/default' 'install' finished successfully (0.049s) INFO: READELF=llvm-readelf ... /home/builder/.termux-build/_cache/android-r29-api-24-v2/bin/llvm-readelf INFO: Generating undefined symbols regex to /tmp/tmp.Pivx3mXoPD INFO: Done ... 0s INFO: Total symbols 2241 INFO: Generating OpenMP symbols regex to /tmp/tmp.ujCvbLcLQs INFO: Done ... 0s INFO: Total OpenMP symbols 2762 INFO: Identifying files with nproc=16 INFO: Done ... 0s INFO: Found 2 / 2 files INFO: Running symbol checks on 2 files with nproc=16 INFO: Done ... 1s INFO: Found files with undefined symbols INFO: Showing result SKIP: ./lib/libtalloc.a INFO: Done ... 0s INFO: Found 0 files with undefined symbols after exclusion INFO: Processing 'update-alternatives' entries: termux - build of 'libtalloc' done Downloading [email protected] source from 'https://github.com/termux/proot/archive/228a5f28b078f4e2504de46758ce17948f73f507.zip' if necessary... Downloading https://github.com/termux/proot/archive/228a5f28b078f4e2504de46758ce17948f73f507.zip % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 436k 0 436k 0 0 600k 0 --:--:-- --:--:-- --:--:-- 600k
make: Entering directory '/home/builder/.termux-build/proot/src/src'
CC cli/note.o
CC execve/enter.o
CC execve/exit.o
CC execve/shebang.o
CC execve/elf.o
CC execve/ldso.o
CC execve/auxv.o
CC path/binding.o
CC path/glue.o
CC path/canon.o
CC path/f2fs-bug.o
CC path/proc.o
CC path/temp.o
CC syscall/syscall.o
CC syscall/chain.o
CC syscall/enter.o
./execve/ldso.c:108:8: warning: variable 'is_known' set but not used [-Wunused-but-set-variable]
108 | bool is_known = false;
| ^
CC syscall/exit.o
./path/temp.c:37:33: warning: 'talloc_autofree_context' is deprecated [-Wdeprecated-declarations]
37 | temp_directory = talloc_strdup(talloc_autofree_context(), tmp);
| ^
/data/data/com.example.app/files/usr/include/talloc.h:1084:46: note: 'talloc_autofree_context' has been explicitly marked deprecated here
1084 | PUBLIC void *talloc_autofree_context(void) DEPRECATED;
| ^
/data/data/com.example.app/files/usr/include/talloc.h:119:38: note: expanded from macro 'DEPRECATED'
119 | #define DEPRECATED attribute ((deprecated))
| ^
./path/glue.c:76:14: warning: 'talloc_autofree_context' is deprecated [-Wdeprecated-declarations]
76 | autofreed = talloc_autofree_context();
| ^
/data/data/com.example.app/files/usr/include/talloc.h:1084:46: note: 'talloc_autofree_context' has been explicitly marked deprecated here
1084 | PUBLIC void talloc_autofree_context(void) DEPRECATED;
| ^
/data/data/com.example.app/files/usr/include/talloc.h:119:38: note: expanded from macro 'DEPRECATED'
119 | #define DEPRECATED attribute ((deprecated))
| ^
./path/temp.c:266:13: warning: 'talloc_autofree_context' is deprecated [-Wdeprecated-declarations]
266 | context = talloc_autofree_context();
| ^
/data/data/com.example.app/files/usr/include/talloc.h:1084:46: note: 'talloc_autofree_context' has been explicitly marked deprecated here
1084 | PUBLIC void talloc_autofree_context(void) DEPRECATED;
| ^
/data/data/com.example.app/files/usr/include/talloc.h:119:38: note: expanded from macro 'DEPRECATED'
119 | #define DEPRECATED attribute ((deprecated))
| ^
CC syscall/sysnum.o
CC syscall/socket.o
CC syscall/heap.o
1 warning generated.
CC syscall/rlimit.o
CC tracee/tracee.o
2 warnings generated.
CC tracee/event.o
CC tracee/reg.o
CC tracee/seccomp.o
CC tracee/statx.o
CC ptrace/ptrace.o
CC ptrace/user.o
./syscall/socket.c:123:10: warning: 'mktemp' is deprecated: mktemp is unsafe, use mkstemp or tmpfile instead [-Wdeprecated-declarations]
123 | (void) mktemp(shorter_host_path);
| ^
/home/builder/.termux-build/_cache/android-r29-api-24-v2/bin/../sysroot/usr/include/stdlib.h:64:66: note: 'mktemp' has been explicitly marked deprecated here
64 | char _Nullable mktemp(char Nonnull template) attribute((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
| ^
./tracee/reg.c:291:45: warning: unused parameter 'including_sysnum' [-Wunused-parameter]
291 | int push_specific_regs(Tracee *tracee, bool including_sysnum)
| ^
1 warning generated.
CC ptrace/wait.o
CC extension/ashmem_memfd/ashmem_memfd.o
CC extension/kompat/kompat.o
./tracee/seccomp.c:243:7: warning: variable 'status' set but not used [-Wunused-but-set-variable]
243 | int status;
| ^
CC extension/fake_id0/chown.o
CC extension/fake_id0/chroot.o
./tracee/seccomp.c:551:29: warning: comparison of integers of different signs: 'gid_t' (aka 'unsigned int') and 'int' [-Wsign-compare]
551 | if (rxid != rxid && rxid != -1)
| ~~~~ ^ ~~
./tracee/seccomp.c:553:29: warning: comparison of integers of different signs: 'gid_t' (aka 'unsigned int') and 'int' [-Wsign-compare]
553 | if (exid != exid && exid != -1)
| ~~~~ ^ ~~
./tracee/seccomp.c:555:29: warning: comparison of integers of different signs: 'gid_t' (aka 'unsigned int') and 'int' [-Wsign-compare]
555 | if (sxid != sxid && sxid != -1)
| ~~~~ ^ ~~
1 warning generated.
CC extension/fake_id0/getsockopt.o
./tracee/seccomp.c:544:12: warning: variable 'ret' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
544 | else if (sysnum == PR_setresgid)
| ^~~~~~~~~~~~~~~~~~~~~~
./tracee/seccomp.c:546:7: note: uninitialized use occurs here
546 | if (ret) { // EFAULT = address outside address space
| ^~~
./tracee/seccomp.c:544:8: note: remove the 'if' if its condition is always true
544 | else if (sysnum == PR_setresgid)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
545 | ret = getresgid(&rxid_, &exid_, &sxid_);
./tracee/seccomp.c:120:9: note: initialize the variable 'ret' to silence this warning
120 | int ret;
| ^
| = 0
CC extension/fake_id0/sendmsg.o
CC extension/fake_id0/open.o
1 warning generated.
CC extension/fake_id0/socket.o
./tracee/event.c:658:95: warning: comparison of integers of different signs: 'int' and 'word_t' (aka 'unsigned long') [-Wsign-compare]
658 | if (tracee->skip_next_seccomp_signal || (seccomp_after_ptrace_enter && siginfo.si_syscall == SYSCALL_AVOIDER)) {
| ~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~
CC extension/fake_id0/unlink.o
CC extension/fake_id0/rename.o
CC extension/fake_id0/chmod.o
./extension/ashmem_memfd/ashmem_memfd.c:170:96: warning: unused parameter 'data2' [-Wunused-parameter]
170 | int ashmem_memfd_callback(Extension *extension, ExtensionEvent event, intptr_t data1, intptr_t data2)
| ^
CC extension/fake_id0/utimensat.o
CC extension/fake_id0/access.o
5 warnings generated.
CC extension/fake_id0/exec.o
CC extension/fake_id0/link.o
./extension/fake_id0/chroot.c:54:2: warning: ignoring return value of function declared with 'warn_unused_result' attribute [-Wunused-result]
54 | realpath(path, path_host_absolute);
| ^~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~
CC extension/fake_id0/symlink.o
CC extension/fake_id0/mk.o
CC extension/fake_id0/stat.o
1 warning generated.
1 warning generated.
CC extension/fake_id0/helper_functions.o
CC extension/fake_id0/fake_id0.o
CC extension/hidden_files/hidden_files.o
CC extension/mountinfo/mountinfo.o
CC extension/port_switch/port_switch.o
CC extension/sysvipc/sysvipc.o
CC extension/sysvipc/sysvipc_msg.o
1 warning generated.
CC extension/sysvipc/sysvipc_sem.o
CC extension/sysvipc/sysvipc_shm.o
CC extension/fix_symlink_size/fix_symlink_size.o
CC extension/link2symlink/link2symlink.o
CC loader/loader.o
CC loader/assembly.o
CC loader/loader-m32.o
./extension/fake_id0/helper_functions.c:185:3: warning: misleading indentation; statement is not part of the previous 'else' [-Wmisleading-indentation]
185 | emulated_gid = config->egid;
| ^
./extension/fake_id0/helper_functions.c:183:2: note: previous statement is here
183 | else
| ^
./extension/port_switch/port_switch.c:174:100: warning: sizeof on array function parameter will return size of 'long *' instead of 'long[]' [-Wsizeof-array-argument]
174 | write_data(tracee, peek_reg(tracee, CURRENT, SYSARG_2), socketcall_arg2, sizeof(socketcall_arg2));
| ^
./extension/port_switch/port_switch.c:145:121: note: declared here
145 | void mod_port(Tracee *tracee, bool is_socketcall, bool is_bind, bool is_udp, struct sockaddr_storage *my_sockaddr, long socketcall_arg2[]) {
| ^
./extension/port_switch/port_switch.c:182:100: warning: sizeof on array function parameter will return size of 'long *' instead of 'long[]' [-Wsizeof-array-argument]
182 | write_data(tracee, peek_reg(tracee, CURRENT, SYSARG_2), socketcall_arg2, sizeof(socketcall_arg2));
| ^
./extension/port_switch/port_switch.c:145:121: note: declared here
145 | void mod_port(Tracee *tracee, bool is_socketcall, bool is_bind, bool is_udp, struct sockaddr_storage *my_sockaddr, long socketcall_arg2[]) {
| ^
./extension/port_switch/port_switch.c:204:100: warning: sizeof on array function parameter will return size of 'long *' instead of 'long[]' [-Wsizeof-array-argument]
204 | write_data(tracee, peek_reg(tracee, CURRENT, SYSARG_2), socketcall_arg2, sizeof(socketcall_arg2));
| ^
./extension/port_switch/port_switch.c:145:121: note: declared here
145 | void mod_port(Tracee *tracee, bool is_socketcall, bool is_bind, bool is_udp, struct sockaddr_storage *my_sockaddr, long socketcall_arg2[]) {
| ^
./extension/port_switch/port_switch.c:212:100: warning: sizeof on array function parameter will return size of 'long *' instead of 'long[]' [-Wsizeof-array-argument]
212 | write_data(tracee, peek_reg(tracee, CURRENT, SYSARG_2), socketcall_arg2, sizeof(socketcall_arg2));
| ^
./extension/port_switch/port_switch.c:145:121: note: declared here
145 | void mod_port(Tracee tracee, bool is_socketcall, bool is_bind, bool is_udp, struct sockaddr_storage my_sockaddr, long socketcall_arg2[]) {
| ^
CC loader/assembly-m32.o
4 warnings generated.
./extension/sysvipc/sysvipc_shm.c:481:9: warning: variable 'shm_index' set but not used [-Wunused-but-set-variable]
481 | size_t shm_index;
| ^
./extension/sysvipc/sysvipc_shm.c:654:10: warning: 'mktemp' is deprecated: mktemp is unsafe, use mkstemp or tmpfile instead [-Wdeprecated-declarations]
654 | (void) mktemp(path);
| ^
/home/builder/.termux-build/_cache/android-r29-api-24-v2/bin/../sysroot/usr/include/stdlib.h:64:66: note: 'mktemp' has been explicitly marked deprecated here
64 | char _Nullable mktemp(char _Nonnull __template) attribute((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
| ^
LD loader/loader
1 warning generated.
LD loader/loader-m32
GEN build.h
ld.lld: error: failed to open loader/loader: File too large
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [GNUmakefile:231: loader/loader] Error 1
make: *** Waiting for unfinished jobs....
CC cli/cli.o
./cli/cli.c:572:14: warning: unused variable 'pointers' [-Wunused-variable]
572 | void *const pointers[] = { this_function, call_site };
| ^~~~~~~~
2 warnings generated.
1 warning generated.
rm .check_seccomp_filter.o .check_process_vm.o .check_seccomp_filter .check_process_vm
make: Leaving directory '/home/builder/.termux-build/proot/src/src'
I tested multiple versions of the packages and it seems the issue isn't proot itself but how its being built. The termux build system is maybe statically linking against too many libraries or something when creating proot's loader file making it balloon into a hundred gb file. It then tries to strip the loader of debug symbols but since its now a 100gb executable, stripping it now also requires a tremendous amount of ram.
This bug is present in the latest release github automatically generated on 2025.11.30(two days ago) But its not present in the one before that (2025.11.23), that one builds fine for me.
One difference I noticed between the two versions is the ndk. The old version complains of missing ndk if you dont first call setup-android-sdk.sh first which then installs ndk-r28c. The newer one uses the already installed ndk-r29 so perhaps proot requires the old ndk version(r28c)?
builder@309ae3122d93:~/termux-packages$ ls -lah /data/data/com.termux/files/usr/libexec/proot/loader
-rwxr-xr-x 1 builder builder 128G Dec 2 07:27 /data/data/com.termux/files/usr/libexec/proot/loader
builder@309ae3122d93:~/termux-packages$ ls -lah /data/data/com.termux/files/usr/libexec/proot/loader32
-rwxr-xr-x 1 builder builder 512M Dec 2 07:27 /data/data/com.termux/files/usr/libexec/proot/loader32
builder@309ae3122d93:~/termux-packages$
loader32 is also huge, but not as much. why are they so big 🤦 I will try to figure out why
I noticed that the Loaders are fully statically linked binaries, this means that Android NDK might not be required to compile them, so I tried compiling them with normal GCCs,
that approach does bypass the problem, preventing the huge RAM use, and works successfully for the 64-bit x86 architecture. I tested proot-distro install debian in 64-bit x86 Android after installing a proot which had loader compiled with x86_64-linux-gnu-gcc, and it worked.
It should be noted that in my custom build, loader and loader32 were compiled with GCC, but $TERMUX_PREFIX/bin/proot was still compiled with Android NDK r29, that implies that such a configuration is viable for at least 64-bit x86 Android.
however, unfortunately it didn't work for 64-bit ARM architecture. I tried to do the same thing for ARM by just going to arm.com and downloading this aarch64-none-linux-gnu-gcc I found there.
https://developer.arm.com/-/media/Files/downloads/gnu/14.3.rel1/binrel/arm-gnu-toolchain-14.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz
It also compiled successfully and did not use any large amount of RAM, but when I tried to run the resulting proot package on a 64-bit ARM Android device, this error occurred, which for some reason did not occur for almost the identical setup on 64-bit x86 Android:
~ $ proot-distro login debian
proot info: vpid 1: terminated with signal 7
~ $
so, this attempt is a failure and I don't know what else to try right now if I can't think of a way to find a compiler that works for 64-bit ARM.
I can provide my build.sh for such an attempt if someone thinks that idea is viable by finding the right compiler to make the ARM architectures work for the idea, otherwise I assume the idea isn't correct.
I haven't been able to figure out how to actually fix this properly, but I have found that as a workaround, it does work to take the loader and loader32 automatically from the current package which was built successfully last with NDK r28c, and install them into the package proot during a build otherwise with NDK r29, and even though the Loaders are built separately from the $TERMUX_PREFIX/bin/proot, they still work combined with it,
and @abdirahmandev6 you can also use this workaround successfully while building with a changed $TERMUX_APP__PACKAGE_NAME, because it seems that unlike the $TERMUX_PREFIX/bin/proot executable, the Loaders don't contain any hardcoded instances of $TERMUX_PREFIX, so they just work when installed in any app like F-Droid Termux with a changed $TERMUX_APP__PACKAGE_NAME, even when precompiled.
This is my workaround currently:
--- a/packages/proot/build.sh
+++ b/packages/proot/build.sh
@@ -19,6 +19,18 @@ TERMUX_PKG_EXTRA_MAKE_ARGS="-C src"
export PROOT_UNBUNDLE_LOADER=$TERMUX_PREFIX/libexec/proot
termux_step_pre_configure() {
+ # work around https://github.com/termux/termux-packages/issues/27475
+ termux_download "https://packages.termux.dev/apt/termux-main/pool/main/p/proot/proot_${TERMUX_PKG_VERSION}-${TERMUX_PKG_REVISION}_${TERMUX_ARCH}.deb" \
+ "$TERMUX_PKG_TMPDIR/proot.deb" SKIP_CHECKSUM
+ mkdir -p "$TERMUX_PKG_TMPDIR/proot"
+ ar x "$TERMUX_PKG_TMPDIR/proot.deb" --output="$TERMUX_PKG_TMPDIR/proot"
+ tar xf "$TERMUX_PKG_TMPDIR/proot/data.tar.xz" -C "$TERMUX_PKG_TMPDIR/proot"
+ local loader_dir="$TERMUX_PKG_TMPDIR/proot/data/data/com.termux/files/usr/libexec/proot"
+ install -Dm700 "$loader_dir/loader" -t "$PROOT_UNBUNDLE_LOADER"
+ if [[ -f "$loader_dir/loader32" ]]; then
+ install -Dm700 "$loader_dir/loader32" -t "$PROOT_UNBUNDLE_LOADER"
+ fi
+
CPPFLAGS+=" -DARG_MAX=131072"
}
diff --git a/packages/proot/skip-building-loader.patch b/packages/proot/skip-building-loader.patch
new file mode 100644
index 0000000..7c320ec
--- /dev/null
+++ b/packages/proot/skip-building-loader.patch
@@ -0,0 +1,22 @@
+--- a/src/GNUmakefile
++++ b/src/GNUmakefile
+@@ -94,9 +94,7 @@ $(eval $(call define_from_arch.h,,HAS_POKEDATA_WORKAROUND))
+
+ ifdef PROOT_UNBUNDLE_LOADER
+ CFLAGS += "-DPROOT_UNBUNDLE_LOADER=\"$(PROOT_UNBUNDLE_LOADER)\""
+-proot: | loader/loader
+ ifdef HAS_LOADER_32BIT
+-proot: | loader/loader-m32
+ endif
+ else
+ OBJECTS += loader/loader-wrapped.o
+@@ -260,9 +258,7 @@ clean distclean:
+ install: proot
+ $($(quiet)INSTALL) -D $< $(DESTDIR)$(BINDIR)/$<
+ ifdef PROOT_UNBUNDLE_LOADER
+- $(INSTALL) -D loader/loader $(PROOT_UNBUNDLE_LOADER)/loader
+ ifdef HAS_LOADER_32BIT
+- $(INSTALL) -D loader/loader-m32 $(PROOT_UNBUNDLE_LOADER)/loader32
+ endif
+ endif
+
but hopefully someone can still figure out how to build the loader and loader32 properly with NDK r29 in the future.
From what I'm seeing, the root cause is specific NDK version?
Now I'm trying to build proot myself, with the previous version of the NDK
can I just checkout d6ce60a, setup environment locally let's say ubuntu using scripts/setup-ubuntu.sh and possibly scripts/setup-android-sdk.sh, using that checked out commit within that point of time, I should be able to use NDK r28c and build proot there from scratch?
From what I'm seeing, the root cause is specific NDK version?
Yes, it seems like the problem does not happen when building using NDK r28c, it only happens when building using NDK r29.
Now I'm trying to build proot myself, with the previous version of the NDK
You can try other workarounds, like the one you suggested, but assuming that you want a workaround that allows building the entire code (and not, for example, the workaround I showed above that involves reusing some binaries from the current package), I recommend this script, which uses Docker to make sure that your computer does not get messed up by anything.
docker container kill termux-package-builder
docker container rm termux-package-builder
docker image prune -a
rm -rf termux-packages
git clone https://github.com/termux/termux-packages
cd termux-packages
git checkout 2de2878d08bd90ec345d1d37b61f79885cf16c4d
docker build -t ghcr.io/termux/package-builder scripts
scripts/run-docker.sh ./build-package.sh -I -f proot
I think there's probably going to be more issues than just building errors, it seems proot with the latest NDK simply doesn't also behave as expected for some scenarios
r29 compiled proot
Here is when I'm using from-source on-device compile of proot from master, assuming what we're using here is NDK sysroot from r29, there are also edge cases with some distributions where it just fails to load (in this case Ubuntu 16.04/14.04 and possibly 18.04 and beyond) complaining about locale errors.
r28c compiled proot
However if we're using the version of proot we have right now from the repos (which I assume this was built on r28c before the incident), the same distro loads fine
Although we don't know for sure what other issues would arise when using r29 ndk compiled proot I'm not sure what changed with the NDK
@robertkirkman would it make sense to rename the issue title beyond from failing build? the problem seems to be buggy loader
I have changed the issue title to be more descriptive of the problem