Skip to content

Bump external/termux-elf-cleaner from ee5385e to 3da3eea#11583

Open
dependabot[bot] wants to merge 6 commits into
mainfrom
dependabot/submodules/external/termux-elf-cleaner-3da3eea
Open

Bump external/termux-elf-cleaner from ee5385e to 3da3eea#11583
dependabot[bot] wants to merge 6 commits into
mainfrom
dependabot/submodules/external/termux-elf-cleaner-3da3eea

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jun 5, 2026

Copy link
Copy Markdown
Contributor

Bumps external/termux-elf-cleaner from ee5385e to 3da3eea (~65 commits, pre-1.10 → past 2.2.1).

This bump required accompanying updates to tools/fastdev/elfcleaner/CMakeLists.txt to stay in sync with upstream changes:

  • Updated the source path from termux-elf-cleaner.cpp to elf-cleaner.cpp (file renamed upstream).
  • Bumped the C++ standard from C++17 to C++20 (the source now uses std::counting_semaphore).
  • Added the PACKAGE_NAME, PACKAGE_VERSION, and COPYRIGHT compile definitions now required by the source, with the version extracted into an ELFCLEANER_VERSION variable.

What we gain

Correctness / runtime fixes

  • TLS segment alignment fix on API < 29 — ports the well-known align_fix.py patch. Prevents TLS-alignment crashes when running on older Android (and tools like Valgrind).
  • DT_GNU_HASH removal extended to API < 23 (was <= 21). It isn't supported on API 22 either, so the previous range left bad entries on API 22 binaries.
  • DT_VERNEEDED typo → DT_VERNEED when refreshing elf.h from glibc; aligns the cleaner with the actual ELF spec name.
  • AArch64 entries from NDK 23 are now recognized/handled.
  • --dry-run no longer modifies the binary (it actually did before — straight-up bug).
  • Proper file-handle cleanup on error paths (no leaked fds on failure).
  • EI_CLASS-related errors now go to stderr instead of being swallowed.

Performance

  • Multithreaded cleaning using std::counting_semaphore (this is why the C++20 bump is needed). Faster across many native libs in an app build.

Usability / build-system

  • New runtime flags: --api-level NN, --quiet, --dry-run, --version, plus getopt-based arg parsing (order no longer matters).
  • Upstream switched from autotools → CMake, which is why our tools/fastdev/elfcleaner/CMakeLists.txt is updated.
  • Upstream now ships a real test suite (curl + Valgrind fixture binaries) — not consumed by us, but reduces regression risk in future bumps.

The headline items for shipping apps are the TLS alignment fix and the DT_GNU_HASH API-22 fix; the rest is hygiene + a nice perf bump.



Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Bumps [external/termux-elf-cleaner](https://github.com/termux/termux-elf-cleaner) from `ee5385e` to `3da3eea`.
- [Release notes](https://github.com/termux/termux-elf-cleaner/releases)
- [Commits](termux/termux-elf-cleaner@ee5385e...3da3eea)

---
updated-dependencies:
- dependency-name: external/termux-elf-cleaner
  dependency-version: 3da3eeab96e57fa794c5ea0feb2eed4903545dec
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file. submodules Pull requests that update Submodules code labels Jun 5, 2026
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file. submodules Pull requests that update Submodules code labels Jun 5, 2026
@jonathanpeppers

Copy link
Copy Markdown
Member

@copilot can you fix:

         CMake Error at CMakeLists.txt:32 (add_executable):
           Cannot find source file:
         
             ../../../external/termux-elf-cleaner/termux-elf-cleaner.cpp
         
           Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .ixx .cppm
           .ccm .cxxm .c++m .h .hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90
           .f95 .f03 .hip .ispc
         
         
         CMake Error at CMakeLists.txt:32 (add_executable):
           No SOURCES given to target: elfcleaner

Copilot AI and others added 2 commits June 5, 2026 13:36
Co-authored-by: jonathanpeppers <840039+jonathanpeppers@users.noreply.github.com>
Co-authored-by: jonathanpeppers <840039+jonathanpeppers@users.noreply.github.com>

Copilot AI commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

@copilot can you fix:

         CMake Error at CMakeLists.txt:32 (add_executable):

...

Fixed in 482571e (and follow-ups). The upstream submodule renamed termux-elf-cleaner.cppelf-cleaner.cpp, so I updated the source path in tools/fastdev/elfcleaner/CMakeLists.txt. The new source also requires C++20 (std::counting_semaphore) and the PACKAGE_NAME/PACKAGE_VERSION/COPYRIGHT compile definitions, which I added. Verified elfcleaner now configures, builds, and runs (--version reports termux-elf-cleaner 3.0.1).

@jonathanpeppers

Copy link
Copy Markdown
Member

@copilot more code changes required?

       (_PrepareElfCleaner target) -> 
         /mnt/vss/_work/1/s/android/external/termux-elf-cleaner/elf-cleaner.cpp(382,7): error G6BC5FD48: ‘counting_semaphore’ is not a member of ‘std’ [/mnt/vss/_work/1/s/android/tools/fastdev/fastdevtools.csproj]
         /mnt/vss/_work/1/s/android/external/termux-elf-cleaner/elf-cleaner.cpp(385,3): error GCF423A55: ‘sem’ was not declared in this scope [/mnt/vss/_work/1/s/android/tools/fastdev/fastdevtools.csproj]
         /mnt/vss/_work/1/s/android/external/termux-elf-cleaner/elf-cleaner.cpp(389,4): error G6402F897: ‘sem’ is not captured [/mnt/vss/_work/1/s/android/tools/fastdev/fastdevtools.csproj]
         /mnt/vss/_work/1/s/android/tools/fastdev/fastdevtools.targets(38,5): error MSB3073: The command ""/usr/local/lib/android/sdk/cmake/3.30.3/bin/ninja"" exited with code 1. [/mnt/vss/_work/1/s/android/tools/fastdev/fastdevtools.csproj]

    750 Warning(s)
    4 Error(s)

Co-authored-by: jonathanpeppers <840039+jonathanpeppers@users.noreply.github.com>

Copilot AI commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

@copilot more code changes required?

...

Yes — fixed in bbcbedd. The error means the -std=c++20 flag wasn't reaching the compiler (I reproduced the identical counting_semaphore is not a member of std locally by compiling without it). With cmake_minimum_required(VERSION 3.5), policy CMP0128 is OLD, where CMake (including the SDK's cmake 3.30.3) can omit the standard flag based on the compiler's detected default. I bumped the minimum to 3.20 so CMP0128 is NEW and the C++20 flag is always emitted. Verified locally that configure now emits -std=gnu++20 and elfcleaner builds and runs.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the vendored external/termux-elf-cleaner dependency (from ee5385e to 3da3eea / v3.0.1) and adjusts the FastDev elfcleaner host-build CMake configuration so it continues to build against upstream’s renamed source file and new C++20 requirements.

Changes:

  • Update cmake_minimum_required() to 3.20 and bump the C++ standard to C++20 for std::counting_semaphore.
  • Update the source file path to the upstream-renamed elf-cleaner.cpp.
  • Add required compile definitions (PACKAGE_NAME, PACKAGE_VERSION, COPYRIGHT) and introduce ELFCLEANER_VERSION.

Comment thread tools/fastdev/elfcleaner/CMakeLists.txt Outdated
- Narrow the 'Keep in sync' comment to call out exactly which settings
  we mirror from external/termux-elf-cleaner/CMakeLists.txt
  (ELFCLEANER_VERSION, CMAKE_CXX_STANDARD, and the
  PACKAGE_NAME/PACKAGE_VERSION/COPYRIGHT compile definitions),
  acknowledging that the rest of this file legitimately diverges.
- Flip CMAKE_CXX_EXTENSIONS from ON to OFF to match upstream, so we
  build elf-cleaner as strict c++20 instead of gnu++20.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jonathanpeppers

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file. submodules Pull requests that update Submodules code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants