termux / termux-packages

A package build system for Termux.
https://termux.dev
Other
13.15k stars 3.02k forks source link

[Bug]: ldd readelf: Error: '/data/data/com.termux/files/home/echo': No such file #21099

Closed mast3rz3ro closed 2 months ago

mast3rz3ro commented 2 months ago

Problem description

Hi there,

Trying to run ldd command results in this error msg which seems to be a bug for me.

~ $ ldd echo                                                  readelf: Error: '/data/data/com.termux/files/home/echo': No such file
readelf: Error: '/data/data/com.termux/files/home/echo': No such file
~ $ ldd sudo
readelf: Error: '/data/data/com.termux/files/home/sudo': No such file
readelf: Error: '/data/data/com.termux/files/home/sudo': No such file
~ $

What steps will reproduce the bug?

pkg install ldd then try to use ldd

What is the expected behavior?

Getting ldd work as expected.

System information

Termux Variables:
TERMUX_APK_RELEASE=F_DROID
TERMUX_APP_PACKAGE_MANAGER=apt
TERMUX_APP_PID=26693
TERMUX_IS_DEBUGGABLE_BUILD=0
TERMUX_MAIN_PACKAGE_FORMAT=debian
TERMUX_VERSION=0.118.0
TERMUX__USER_ID=0
Packages CPU architecture:
aarch64                                                       Subscribed repositories:
# sources.list
deb https://mirrors.hust.edu.cn/termux/apt/termux-main stable main
# root-repo (sources.list.d/root.list)
deb https://mirrors.hust.edu.cn/termux/apt/termux-root root stable
Updatable packages:
apt/stable 2.8.1 aarch64 [upgradable from: 2.7.14]
bash/stable 5.2.32 aarch64 [upgradable from: 5.2.26-1]
ca-certificates/stable 1:2024.07.02 all [upgradable from: 1:2024.03.11-2]
cmake/stable 3.30.2 aarch64 [upgradable from: 3.30.0]
command-not-found/stable 2.4.0-37 aarch64 [upgradable from: 2.4.0-31]
curl/stable 8.9.1 aarch64 [upgradable from: 8.8.0]
debianutils/stable 5.20 aarch64 [upgradable from: 5.19]
git/stable 2.46.0 aarch64 [upgradable from: 2.45.2]
glib/stable 2.80.4 aarch64 [upgradable from: 2.80.3]
libc++/stable 27 aarch64 [upgradable from: 26b]
libcurl/stable 8.9.1 aarch64 [upgradable from: 8.8.0]
liblua54/stable 5.4.7 aarch64 [upgradable from: 5.4.6-1]      liblz4/stable 1.10.0 aarch64 [upgradable from: 1.9.4]         libtirpc/stable 1.3.5 aarch64 [upgradable from: 1.3.4-1]
libunbound/stable 1.20.0-1 aarch64 [upgradable from: 1.20.0]
libxml2/stable 2.13.3 aarch64 [upgradable from: 2.13.1-1]
ncurses/stable 6.4.20231001-5 aarch64 [upgradable from: 6.4.20231001-4]
ndk-sysroot/stable 27-1 aarch64 [upgradable from: 26b-3]
openssh-sftp-server/stable 9.8p1-4 aarch64 [upgradable from: 9.8p1-1]
openssh/stable 9.8p1-4 aarch64 [upgradable from: 9.8p1-1]
openssl/stable 1:3.3.1 aarch64 [upgradable from: 1:3.2.1-1]
patch/stable 2.7.6-4 aarch64 [upgradable from: 2.7.6-3]
readline/stable 8.2.13 aarch64 [upgradable from: 8.2.10]
termux-keyring/stable 3.12-1 all [upgradable from: 3.12]
termux-tools/stable 1.43.3 all [upgradable from: 1.42.4]
unbound/stable 1.20.0-1 aarch64 [upgradable from: 1.20.0]
termux-tools version:                                         1.42.4
Android version:
35
Kernel build information:
Linux localhost 4.14.336-perf-gbd8f1c4cdb06-dirty #2 SMP PREEMPT Tue Mar 12 13:01:34 UTC 2024 aarch64 Android
Device manufacturer:
Unknown                                                        Device model:
Unknown
LD Variables:
LD_LIBRARY_PATH=
LD_PRELOAD=/data/data/com.termux/files/usr/lib/libtermux-exec.so
Installed termux plugins:
com.termux.tasker versionCode:6
licy183 commented 2 months ago

ldd $(which echo)

sudo is a wrapper of su in Termux and cannot use ldd.

mast3rz3ro commented 2 months ago

Yes, I confirm using which I can get it to work normally.

Here's my output:

~ $ ldd $(which echo)                                           
        libandroid-support.so => /data/data/com.termux/files/usr/lib/libandroid-support.so
        libgmp.so => /data/data/com.termux/files/usr/lib/libgmp.so                                                                  
        libiconv.so => /data/data/com.termux/files/usr/lib/libiconv.so                                                              
        libc.so => /system/lib64/libc.so                              
        ld-android.so => /system/lib64/ld-android.so                  
        libdl.so => /system/lib64/libdl.so
~ $ ldd $(which sudo)                                         
        readelf: Error: Not an ELF file - it has the wrong magic bytes at the start                                                 
        readelf: Error: Not an ELF file - it has the wrong magic bytes at the start

I wonder why ldd does not work normally?

twaik commented 2 months ago

It works normally. Ldd does not get binary path from $PATH, it works with absolute and/or relative path.

twaik commented 2 months ago

There is no bug, just a misunderstanding of how ldd works.