Skip to content

Instantly share code, notes, and snippets.

@splatch
Last active March 29, 2024 21:27
Show Gist options
  • Save splatch/2d04b1ee4bc5267d99a16354837d831f to your computer and use it in GitHub Desktop.
Save splatch/2d04b1ee4bc5267d99a16354837d831f to your computer and use it in GitHub Desktop.
sh-5.2# ldd bin/java
linux-vdso.so.1 (0x0000007f92b5a000)
libz.so.1 => /usr/lib/libz.so.1 (0x0000007f92ab0000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x0000007f92a80000)
libjli.so => /usr/lib/amazon-corretto-11.0.22.7.1/bin/../lib/jli/libjli.so (0x0000007f92a50000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x0000007f92a20000)
libc.so.6 => /usr/lib/libc.so.6 (0x0000007f92870000)
/lib/ld-linux-aarch64.so.1 => /usr/lib/ld-linux-aarch64.so.1 (0x0000007f92b1d000)
sh-5.2# strace bin/java
execve("bin/java", ["bin/java"], 0x7fe33d70b0 /* 6 vars */) = 0
brk(NULL) = 0x5593a91000
readlinkat(AT_FDCWD, "/proc/self/exe", 0x7fdab839a0, 4096) = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa064b000
faccessat(AT_FDCWD, "/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=6835, ...}) = 0
mmap(NULL, 6835, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fa0649000
close(3) = 0
openat(AT_FDCWD, "/usr/lib/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=133096, ...}) = 0
mmap(NULL, 262160, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_DENYWRITE, -1, 0) = 0x7fa05d1000
mmap(0x7fa05e0000, 196624, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x7fa05e0000
munmap(0x7fa05d1000, 61440) = 0
munmap(0x7fa0611000, 16) = 0
mprotect(0x7fa05f4000, 110592, PROT_NONE) = 0
mmap(0x7fa060f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1f000) = 0x7fa060f000
close(3) = 0
openat(AT_FDCWD, "/usr/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=67488, ...}) = 0
mmap(NULL, 196624, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_DENYWRITE, -1, 0) = 0x7fa05af000
mmap(0x7fa05b0000, 131088, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x7fa05b0000
munmap(0x7fa05af000, 4096) = 0
munmap(0x7fa05d1000, 57360) = 0
mprotect(0x7fa05b1000, 122880, PROT_NONE) = 0
mmap(0x7fa05cf000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xf000) = 0x7fa05cf000
close(3) = 0
openat(AT_FDCWD, "/usr/lib/libjli.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib/", {st_mode=S_IFDIR|0755, st_size=16384, ...}, 0) = 0
writev(2, [{iov_base="bin/java", iov_len=8}, {iov_base=": ", iov_len=2}, {iov_base="error while loading shared libra"..., iov_len=36}, {iov_base=": ", iov_len=2}, {iov_base="libjli.so", iov_len=9}, {iov_base=":y
) = 117
exit_group(127) = ?
+++ exited with 127 +++
sh-5.2# objdump -p bin/java
bin/java: file format elf64-littleaarch64
Program Header:
PHDR off 0x0000000000000040 vaddr 0x0000000000000040 paddr 0x0000000000000040 align 2**3
filesz 0x00000000000001f8 memsz 0x00000000000001f8 flags r--
INTERP off 0x0000000000000238 vaddr 0x0000000000000238 paddr 0x0000000000000238 align 2**0
filesz 0x000000000000001b memsz 0x000000000000001b flags r--
LOAD off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**16
filesz 0x0000000000001050 memsz 0x0000000000001050 flags r-x
LOAD off 0x000000000000fcc0 vaddr 0x000000000001fcc0 paddr 0x000000000001fcc0 align 2**16
filesz 0x0000000000000350 memsz 0x0000000000000351 flags rw-
DYNAMIC off 0x000000000000fcd8 vaddr 0x000000000001fcd8 paddr 0x000000000001fcd8 align 2**3
filesz 0x0000000000000260 memsz 0x0000000000000260 flags rw-
NOTE off 0x0000000000000254 vaddr 0x0000000000000254 paddr 0x0000000000000254 align 2**2
filesz 0x0000000000000044 memsz 0x0000000000000044 flags r--
EH_FRAME off 0x000000000000100c vaddr 0x000000000000100c paddr 0x000000000000100c align 2**2
filesz 0x0000000000000044 memsz 0x0000000000000044 flags r--
STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4
filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw-
RELRO off 0x000000000000fcc0 vaddr 0x000000000001fcc0 paddr 0x000000000001fcc0 align 2**3
filesz 0x0000000000000340 memsz 0x0000000000000340 flags rw-
Dynamic Section:
PLTGOT 0x000000000001ff78
PLTRELSZ 0x0000000000000150
JMPREL 0x0000000000000868
PLTREL 0x0000000000000007
RELA 0x0000000000000760
RELASZ 0x0000000000000108
RELAENT 0x0000000000000018
RELACOUNT 0x0000000000000007
DEBUG 0x0000000000000000
SYMTAB 0x0000000000000298
SYMENT 0x0000000000000018
STRTAB 0x00000000000004a8
STRSZ 0x000000000000018d
GNU_HASH 0x0000000000000638
HASH 0x0000000000000670
NEEDED libz.so.1
NEEDED libpthread.so.0
NEEDED libjli.so
NEEDED libdl.so.2
NEEDED libc.so.6
INIT 0x00000000000009b8
FINI 0x0000000000000e44
FINI_ARRAY 0x000000000001fcc8
FINI_ARRAYSZ 0x0000000000000008
INIT_ARRAY 0x000000000001fcd0
INIT_ARRAYSZ 0x0000000000000008
RUNPATH $ORIGIN/../lib/jli:$ORIGIN/../lib
FLAGS 0x0000000000000008
FLAGS_1 0x0000000008000001
VERSYM 0x0000000000000714
VERNEED 0x0000000000000740
VERNEEDNUM 0x0000000000000001
Version References:
required from libc.so.6:
0x06969197 0x00 02 GLIBC_2.17
private flags = 0x0:
sh-5.2# objdump -p lib/jli/libjli.so
lib/jli/libjli.so: file format elf64-littleaarch64
Program Header:
PHDR off 0x0000000000000040 vaddr 0x0000000000000040 paddr 0x0000000000000040 align 2**3
filesz 0x00000000000001c0 memsz 0x00000000000001c0 flags r--
LOAD off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**16
filesz 0x000000000000e550 memsz 0x000000000000e550 flags r-x
LOAD off 0x000000000000f9f0 vaddr 0x000000000001f9f0 paddr 0x000000000001f9f0 align 2**16
filesz 0x0000000000000620 memsz 0x0000000000000728 flags rw-
DYNAMIC off 0x000000000000fa38 vaddr 0x000000000001fa38 paddr 0x000000000001fa38 align 2**3
filesz 0x0000000000000280 memsz 0x0000000000000280 flags rw-
NOTE off 0x0000000000000200 vaddr 0x0000000000000200 paddr 0x0000000000000200 align 2**2
filesz 0x0000000000000024 memsz 0x0000000000000024 flags r--
EH_FRAME off 0x000000000000e204 vaddr 0x000000000000e204 paddr 0x000000000000e204 align 2**2
filesz 0x000000000000034c memsz 0x000000000000034c flags r--
STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4
filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw-
RELRO off 0x000000000000f9f0 vaddr 0x000000000001f9f0 paddr 0x000000000001f9f0 align 2**4
filesz 0x0000000000000610 memsz 0x0000000000000610 flags rw-
Dynamic Section:
PLTGOT 0x000000000001fd00
PLTRELSZ 0x00000000000008a0
JMPREL 0x0000000000001890
PLTREL 0x0000000000000007
RELA 0x0000000000001710
RELASZ 0x0000000000000180
RELAENT 0x0000000000000018
RELACOUNT 0x0000000000000008
SYMTAB 0x0000000000000228
SYMENT 0x0000000000000018
STRTAB 0x0000000000000c78
STRSZ 0x0000000000000516
GNU_HASH 0x0000000000001190
HASH 0x0000000000001250
NEEDED libz.so.1
NEEDED libdl.so.2
NEEDED libpthread.so.0
NEEDED libc.so.6
NEEDED ld-linux-aarch64.so.1
SONAME libjli.so
INIT 0x0000000000002130
FINI 0x000000000000ae3c
FINI_ARRAY 0x000000000001fa28
FINI_ARRAYSZ 0x0000000000000008
INIT_ARRAY 0x000000000001fa30
INIT_ARRAYSZ 0x0000000000000008
RUNPATH $ORIGIN:$ORIGIN/..
FLAGS 0x0000000000000009
FLAGS_1 0x0000000000000081
VERSYM 0x0000000000001594
VERDEF 0x0000000000001670
VERDEFNUM 0x0000000000000001
VERNEED 0x000000000000168c
VERNEEDNUM 0x0000000000000004
Version definitions:
1 0x01 0x0912d76f libjli.so
Version References:
required from libc.so.6:
0x06969197 0x00 02 GLIBC_2.17
required from libdl.so.2:
0x06969197 0x00 03 GLIBC_2.17
required from libpthread.so.0:
0x06969197 0x00 04 GLIBC_2.17
required from ld-linux-aarch64.so.1:
0x06969197 0x00 05 GLIBC_2.17
private flags = 0x0:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment