Estou executando o mesmo binário de 32 bits, de terceiros e de código fechado desde 2018. Esta semana, em trixie/testing
servidores Debian (possivelmente devido a uma libc6
transição?), o programa começou a travar na inicialização. Infelizmente, não consigo fazer com que o fornecedor original o recompile para mim.
A única dica que tenho são estas linhas impressas no stdout:
Start of process LocalCtrl...
SL - error in dlopen(libDSS_Operator.so):
LocalCtrl initialization failed...
Ou preciso fazer isso funcionar ou preciso me comprometer a dar suporte ao Deb12 para sempre.
Qual é a melhor maneira de solucionar/consertar isso?
Posso reproduzir isso em um ambiente mais estéril com este programa de exemplo:
#include <stdio.h>
#include <dlfcn.h>
int main() {
void* so = dlopen(
"/opt/<package>/Cots/OPERATOR/libDSS_Operator.so",
RTLD_NOW
);
if (so == NULL) {
printf("dlopen() failed: %s\n", dlerror());
return 1;
}
printf("Success\n");
dlclose(so);
return 0;
}
Dei uma olhada em ldd
, strace
, LD_DEBUG=libs
, e readelf
.
Em uma máquina Deb11, onde o processo está funcionando bem, obtenho:
$ dpkg --print-foreign-architectures
i386
$ sudo apt install gcc-multilib
$ gcc main.c -m32 -ldl
$ file a.out
a.out: ELF 32-bit LSB pie executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=eabedb331eafcdef4e2f839f71df7fc7330069d2, for GNU/Linux 3.2.0, not stripped
$ ./a.out
Success
$ ldd /opt/<package>/Cots/OPERATOR/libDSS_Operator.so
linux-gate.so.1 (0xf7f25000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7d1b000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7c17000)
/lib/ld-linux.so.2 (0xf7f27000)
$ file /opt/<pacakge>/Cots/OPERATOR/libDSS_Operator.so
/opt/<package>/Cots/OPERATOR/libDSS_Operator.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped
$ strace ./a.out
execve("./a.out", ["./a.out"], 0x7ffeb7d8e5b0 /* 22 vars */) = 0
[ Process PID=13616 runs in 32 bit mode. ]
brk(NULL) = 0x5851f000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf7f78000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=102958, ...}) = 0
mmap2(NULL, 102958, PROT_READ, MAP_PRIVATE, 3, 0) = 0xf7f5e000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/i386-linux-gnu/libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\21\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=17924, ...}) = 0
mmap2(NULL, 20596, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xf7f58000
mmap2(0xf7f59000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0xf7f59000
mmap2(0xf7f5b000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0xf7f5b000
mmap2(0xf7f5c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0xf7f5c000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\260\1\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1987668, ...}) = 0
mmap2(NULL, 1996648, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xf7d70000
mprotect(0xf7d89000, 1871872, PROT_NONE) = 0
mmap2(0xf7d89000, 1392640, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0xf7d89000
mmap2(0xf7edd000, 475136, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16d000) = 0xf7edd000
mmap2(0xf7f52000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e1000) = 0xf7f52000
mmap2(0xf7f55000, 10088, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xf7f55000
close(3) = 0
set_thread_area({entry_number=-1, base_addr=0xf7f794c0, limit=0x0fffff, seg_32bit=1, contents=0, read_exec_only=0, limit_in_pages=1, seg_not_present=0, useable=1}) = 0 (entry_number=12)
mprotect(0xf7f52000, 8192, PROT_READ) = 0
mprotect(0xf7f5c000, 4096, PROT_READ) = 0
mprotect(0x56648000, 4096, PROT_READ) = 0
mprotect(0xf7faa000, 4096, PROT_READ) = 0
munmap(0xf7f5e000, 102958) = 0
brk(NULL) = 0x5851f000
brk(0x58540000) = 0x58540000
brk(0x58541000) = 0x58541000
openat(AT_FDCWD, "/opt/<package>/Cots/OPERATOR/libDSS_Operator.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0X\6\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=4398, ...}) = 0
mmap2(NULL, 6844, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xf7f76000
mmap2(0xf7f77000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xf7f77000
mprotect(0xf7faa000, 2636, PROT_READ|PROT_WRITE) = 0
mprotect(0xf7faa000, 2636, PROT_READ) = 0
mprotect(0xffa54000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC|PROT_GROWSDOWN) = 0
close(3) = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=102958, ...}) = 0
mmap2(NULL, 102958, PROT_READ, MAP_PRIVATE, 3, 0) = 0xf7d56000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/i386-linux-gnu/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\241\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=1058344, ...}) = 0
mmap2(NULL, 1060976, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xf7c52000
mmap2(0xf7c5c000, 790528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa000) = 0xf7c5c000
mmap2(0xf7d1d000, 225280, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xcb000) = 0xf7d1d000
mmap2(0xf7d54000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x101000) = 0xf7d54000
close(3) = 0
mprotect(0xf7d54000, 4096, PROT_READ) = 0
mprotect(0xf7f76000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mprotect(0xf7f76000, 4096, PROT_READ|PROT_EXEC) = 0
munmap(0xf7d56000, 102958) = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0x4), ...}) = 0
write(1, "Success\n", 8Success
) = 8
munmap(0xf7f76000, 6844) = 0
munmap(0xf7c52000, 1060976) = 0
exit_group(0) = ?
+++ exited with 0 +++
$ LD_DEBUG=libs ./a.out
13617: find library=libdl.so.2 [0]; searching
13617: search cache=/etc/ld.so.cache
13617: trying file=/lib/i386-linux-gnu/libdl.so.2
13617:
13617: find library=libc.so.6 [0]; searching
13617: search cache=/etc/ld.so.cache
13617: trying file=/lib/i386-linux-gnu/libc.so.6
13617:
13617:
13617: calling init: /lib/i386-linux-gnu/libc.so.6
13617:
13617:
13617: calling init: /lib/i386-linux-gnu/libdl.so.2
13617:
13617:
13617: initialize program: ./a.out
13617:
13617:
13617: transferring control: ./a.out
13617:
13617: find library=libm.so.6 [0]; searching
13617: search cache=/etc/ld.so.cache
13617: trying file=/lib/i386-linux-gnu/libm.so.6
13617:
13617:
13617: calling init: /lib/i386-linux-gnu/libm.so.6
13617:
Success
13617:
13617: calling fini: /opt/<package>/Cots/OPERATOR/libDSS_Operator.so [0]
13617:
13617:
13617: calling fini: /lib/i386-linux-gnu/libm.so.6 [0]
13617:
13617:
13617: calling fini: ./a.out [0]
13617:
13617:
13617: calling fini: /lib/i386-linux-gnu/libdl.so.2 [0]
13617:
Nos servidores Deb13, onde estou enfrentando o problema, as saídas são muito mais curtas:
$ dpkg --print-foreign-architectures
i386
$ sudo apt install gcc-multilib
$ gcc main.c -m32 -ldl
$ file a.out
a.out: ELF 32-bit LSB pie executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=ab5677099dd8d392861f817ee098264a76a16792, for GNU/Linux 3.2.0, not stripped
$ ./a.out
dlopen() failed: /opt/<package>/Cots/OPERATOR/libDSS_Operator.so: cannot enable executable stack as shared object requires: Invalid argument
$ ldd /opt/<package>/Cots/OPERATOR/libDSS_Operator.so
linux-gate.so.1 (0xf7ed4000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7c70000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7b53000)
/lib/ld-linux.so.2 (0xf7ed6000)
$ file /opt/<pacakge>/Cots/OPERATOR/libDSS_Operator.so
.../libDSS_Operator.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped
$ strace ./a.out
execve("./a.out", ["./a.out"], 0x7ffccb5bca20 /* 24 vars */) = 0
[ Process PID=8276 runs in 32 bit mode. ]
brk(NULL) = 0x57fac000
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf7f4a000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=122402, ...}) = 0
mmap2(NULL, 122402, PROT_READ, MAP_PRIVATE, 3, 0) = 0xf7f2c000
close(3) = 0
openat(AT_FDCWD, "/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0O\2\0004\0\0\0"..., 512) = 512
statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=2315004, ...}) = 0
mmap2(NULL, 2349360, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xf7cee000
mmap2(0xf7d11000, 1609728, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23000) = 0xf7d11000
mmap2(0xf7e9a000, 544768, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1ac000) = 0xf7e9a000
mmap2(0xf7f1f000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x231000) = 0xf7f1f000
mmap2(0xf7f22000, 39216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xf7f22000
close(3) = 0
set_thread_area({entry_number=-1, base_addr=0xf7f4b500, limit=0x0fffff, seg_32bit=1, contents=0, read_exec_only=0, limit_in_pages=1, seg_not_present=0, useable=1}) = 0 (entry_number=12)
set_tid_address(0xf7f4b568) = 8276
set_robust_list(0xf7f4b56c, 12) = 0
rseq(0xf7f4b480, 0x20, 0, 0x53053053) = 0
mprotect(0xf7f1f000, 8192, PROT_READ) = 0
mprotect(0x56575000, 4096, PROT_READ) = 0
mprotect(0xf7f86000, 8192, PROT_READ) = 0
ugetrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
munmap(0xf7f2c000, 122402) = 0
getrandom("\x81\x4a\xa4\xb7", 4, GRND_NONBLOCK) = 4
brk(NULL) = 0x57fac000
brk(0x57fcd000) = 0x57fcd000
brk(0x57fce000) = 0x57fce000
openat(AT_FDCWD, "/opt/<package>/Cots/OPERATOR/libDSS_Operator.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0X\6\0\0004\0\0\0"..., 512) = 512
statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=4398, ...}) = 0
mmap2(NULL, 6844, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xf7f48000
mmap2(0xf7f49000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xf7f49000
close(3) = 0
munmap(0xf7f48000, 6844) = 0
statx(1, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFCHR|0620, stx_size=0, ...}) = 0
write(1, "dlopen() failed: /opt/..."..., 153dlopen() failed: /opt/<package>/Cots/OPERATOR/libDSS_Operator.so: cannot enable executable stack as shared object requires: Invalid argument
) = 153
exit_group(1) = ?
+++ exited with 1 +++
$ LD_DEBUG=libs ./a.out
8277: find library=libc.so.6 [0]; searching
8277: search cache=/etc/ld.so.cache
8277: trying file=/lib/i386-linux-gnu/libc.so.6
8277:
8277:
8277: calling init: /lib/ld-linux.so.2
8277:
8277:
8277: calling init: /lib/i386-linux-gnu/libc.so.6
8277:
8277:
8277: initialize program: ./a.out
8277:
8277:
8277: transferring control: ./a.out
8277:
dlopen() failed: /opt/<package>/Cots/OPERATOR/libDSS_Operator.so: cannot enable executable stack as shared object requires: Invalid argument
8277:
8277: calling fini: [0]
8277:
8277:
8277: calling fini: /lib/i386-linux-gnu/libc.so.6 [0]
8277:
8277:
8277: calling fini: /lib/ld-linux.so.2 [0]
8277:
O patchelf --print-needed
, objdump -p
, o readelf -a
da biblioteca em ambas as máquinas é quase idêntico e surpreendentemente sucinto. Eu fiz um diff
e a única diferença entre a saída deb11 e deb13 foi que readelf
as entradas LOCAL da tabela de símbolos de têm apenas uma coluna "Nome" preenchida em deb13. Isso pode não ser muito interessante. Aqui está a saída deb13:
$ patchelf --print-needed /opt/<package>/Cots/OPERATOR/libDSS_Operator.so
libc.so.6
libm.so.6
$ objdump -p /opt/<package>/Cots/OPERATOR/libDSS_Operator.so
/opt/<package>/Cots/OPERATOR/libDSS_Operator.so: file format elf32-i386
Program Header:
LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12
filesz 0x000009e0 memsz 0x000009e0 flags r-x
LOAD off 0x000009e0 vaddr 0x000019e0 paddr 0x000019e0 align 2**12
filesz 0x000000dc memsz 0x000000dc flags rw-
DYNAMIC off 0x00000a2c vaddr 0x00001a2c paddr 0x00001a2c align 2**2
filesz 0x00000090 memsz 0x00000090 flags rw-
Dynamic Section:
NEEDED libc.so.6
NEEDED libm.so.6
HASH 0x00000094
STRTAB 0x0000034c
SYMTAB 0x0000015c
STRSZ 0x00000121
SYMENT 0x00000010
REL 0x00000470
RELSZ 0x000001e8
RELENT 0x00000008
TEXTREL 0x00000000
RELCOUNT 0x0000003c
$ readelf -a /opt/<package>/Cots/OPERATOR/libDSS_Operator.so
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: DYN (Shared object file)
Machine: Intel 80386
Version: 0x1
Entry point address: 0x658
Start of program headers: 52 (bytes into file)
Start of section headers: 2940 (bytes into file)
Flags: 0x0
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 3
Size of section headers: 40 (bytes)
Number of section headers: 17
Section header string table index: 14
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .hash HASH 00000094 000094 0000c8 04 A 2 0 4
[ 2] .dynsym DYNSYM 0000015c 00015c 0001f0 10 A 3 14 4
[ 3] .dynstr STRTAB 0000034c 00034c 000121 00 A 0 0 1
[ 4] .rel.dyn REL 00000470 000470 0001e8 08 A 2 0 4
[ 5] .text PROGBITS 00000658 000658 000244 00 AX 0 0 4
[ 6] .rodata PROGBITS 000008a0 0008a0 000140 00 A 0 0 16
[ 7] .data PROGBITS 000019e0 0009e0 000040 00 WA 0 0 32
[ 8] .got PROGBITS 00001a20 000a20 00000c 04 WA 0 0 4
[ 9] .dynamic DYNAMIC 00001a2c 000a2c 000090 08 WA 3 0 4
[10] .sbss PROGBITS 00001abc 000abc 000000 00 W 0 0 1
[11] .bss NOBITS 00001abc 000abc 000000 00 WA 0 0 4
[12] .comment PROGBITS 00000000 000abc 000036 00 0 0 1
[13] .note NOTE 00000000 000af2 000014 00 0 0 1
[14] .shstrtab STRTAB 00000000 000b06 000076 00 0 0 1
[15] .symtab SYMTAB 00000000 000e24 000240 10 16 19 4
[16] .strtab STRTAB 00000000 001064 0000ca 00 0 0 1
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
L (link order), O (extra OS processing required), G (group), T (TLS),
C (compressed), x (unknown), o (OS specific), E (exclude),
D (mbind), p (processor specific)
There are no section groups in this file.
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
LOAD 0x000000 0x00000000 0x00000000 0x009e0 0x009e0 R E 0x1000
LOAD 0x0009e0 0x000019e0 0x000019e0 0x000dc 0x000dc RW 0x1000
DYNAMIC 0x000a2c 0x00001a2c 0x00001a2c 0x00090 0x00090 RW 0x4
Section to Segment mapping:
Segment Sections...
00 .hash .dynsym .dynstr .rel.dyn .text .rodata
01 .data .got .dynamic
02 .dynamic
Dynamic section at offset 0xa2c contains 13 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libc.so.6]
0x00000001 (NEEDED) Shared library: [libm.so.6]
0x00000004 (HASH) 0x94
0x00000005 (STRTAB) 0x34c
0x00000006 (SYMTAB) 0x15c
0x0000000a (STRSZ) 289 (bytes)
0x0000000b (SYMENT) 16 (bytes)
0x00000011 (REL) 0x470
0x00000012 (RELSZ) 488 (bytes)
0x00000013 (RELENT) 8 (bytes)
0x00000016 (TEXTREL) 0x0
0x6ffffffa (RELCOUNT) 60
0x00000000 (NULL) 0x0
Relocation section '.rel.dyn' at offset 0x470 contains 61 entries:
Offset Info Type Sym.Value Sym. Name
0000068f 00000008 R_386_RELATIVE
0000069f 00000008 R_386_RELATIVE
000006cb 00000008 R_386_RELATIVE
000006db 00000008 R_386_RELATIVE
000006f6 00000008 R_386_RELATIVE
00000736 00000008 R_386_RELATIVE
00000772 00000008 R_386_RELATIVE
000007a7 00000008 R_386_RELATIVE
000007b7 00000008 R_386_RELATIVE
000007e3 00000008 R_386_RELATIVE
000007f3 00000008 R_386_RELATIVE
0000080e 00000008 R_386_RELATIVE
0000084e 00000008 R_386_RELATIVE
0000088a 00000008 R_386_RELATIVE
000008a0 00000008 R_386_RELATIVE
000008a4 00000008 R_386_RELATIVE
000008a8 00000008 R_386_RELATIVE
000008ac 00000008 R_386_RELATIVE
000008b0 00000008 R_386_RELATIVE
000008b4 00000008 R_386_RELATIVE
000008c0 00000008 R_386_RELATIVE
000008c4 00000008 R_386_RELATIVE
000008c8 00000008 R_386_RELATIVE
000008cc 00000008 R_386_RELATIVE
000008d0 00000008 R_386_RELATIVE
000008d4 00000008 R_386_RELATIVE
000008e0 00000008 R_386_RELATIVE
000008e4 00000008 R_386_RELATIVE
000008e8 00000008 R_386_RELATIVE
000008ec 00000008 R_386_RELATIVE
000008f0 00000008 R_386_RELATIVE
000008f4 00000008 R_386_RELATIVE
00000900 00000008 R_386_RELATIVE
00000904 00000008 R_386_RELATIVE
00000908 00000008 R_386_RELATIVE
0000090c 00000008 R_386_RELATIVE
00000910 00000008 R_386_RELATIVE
00000914 00000008 R_386_RELATIVE
00000920 00000008 R_386_RELATIVE
00000924 00000008 R_386_RELATIVE
00000928 00000008 R_386_RELATIVE
0000092c 00000008 R_386_RELATIVE
00000930 00000008 R_386_RELATIVE
00000934 00000008 R_386_RELATIVE
00000940 00000008 R_386_RELATIVE
00000944 00000008 R_386_RELATIVE
00000948 00000008 R_386_RELATIVE
0000094c 00000008 R_386_RELATIVE
00000950 00000008 R_386_RELATIVE
00000954 00000008 R_386_RELATIVE
000019e0 00000008 R_386_RELATIVE
000019e4 00000008 R_386_RELATIVE
000019e8 00000008 R_386_RELATIVE
000019ec 00000008 R_386_RELATIVE
000019f0 00000008 R_386_RELATIVE
000019f4 00000008 R_386_RELATIVE
000019f8 00000008 R_386_RELATIVE
000019fc 00000008 R_386_RELATIVE
00001a00 00000008 R_386_RELATIVE
00001a04 00000008 R_386_RELATIVE
00000665 00000f01 R_386_32 000019e0 listOperators
No processor specific unwind information to decode
Symbol table '.dynsym' contains 31 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000094 0 SECTION LOCAL DEFAULT 1 .hash
2: 0000015c 0 SECTION LOCAL DEFAULT 2 .dynsym
3: 0000034c 0 SECTION LOCAL DEFAULT 3 .dynstr
4: 00000470 0 SECTION LOCAL DEFAULT 4 .rel.dyn
5: 00000658 0 SECTION LOCAL DEFAULT 5 .text
6: 000008a0 0 SECTION LOCAL DEFAULT 6 .rodata
7: 000019e0 0 SECTION LOCAL DEFAULT 7 .data
8: 00001a20 0 SECTION LOCAL DEFAULT 8 .got
9: 00001a2c 0 SECTION LOCAL DEFAULT 9 .dynamic
10: 00001abc 0 SECTION LOCAL DEFAULT 10 .sbss
11: 00001abc 0 SECTION LOCAL DEFAULT 11 .bss
12: 00000000 0 SECTION LOCAL DEFAULT 12 .comment
13: 00000000 0 SECTION LOCAL DEFAULT 13 .note
14: 000007fc 61 FUNC GLOBAL DEFAULT 5 op_inv_rev
15: 000019e0 40 OBJECT GLOBAL DEFAULT 7 listOperators
16: 00001a2c 0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC
17: 000007c0 59 FUNC GLOBAL DEFAULT 5 op10_rev
18: 00000658 19 FUNC GLOBAL DEFAULT 5 getListOperator
19: 0000083c 57 FUNC GLOBAL DEFAULT 5 op_inv2_rev
20: 000006e4 61 FUNC GLOBAL DEFAULT 5 op_inv
21: 00000784 59 FUNC GLOBAL DEFAULT 5 op3_rev
22: 00001abc 0 OBJECT GLOBAL DEFAULT ABS __bss_start
23: 00000724 57 FUNC GLOBAL DEFAULT 5 op_inv2
24: 00000760 35 FUNC GLOBAL DEFAULT 5 op_refresh
25: 000006a8 59 FUNC GLOBAL DEFAULT 5 op10
26: 0000066c 59 FUNC GLOBAL DEFAULT 5 op3
27: 00000878 35 FUNC GLOBAL DEFAULT 5 op_refresh_rev
28: 00001abc 0 OBJECT GLOBAL DEFAULT ABS _edata
29: 00001a20 0 OBJECT GLOBAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
30: 00001abc 0 OBJECT GLOBAL DEFAULT ABS _end
Symbol table '.symtab' contains 36 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000094 0 SECTION LOCAL DEFAULT 1 .hash
2: 0000015c 0 SECTION LOCAL DEFAULT 2 .dynsym
3: 0000034c 0 SECTION LOCAL DEFAULT 3 .dynstr
4: 00000470 0 SECTION LOCAL DEFAULT 4 .rel.dyn
5: 00000658 0 SECTION LOCAL DEFAULT 5 .text
6: 000008a0 0 SECTION LOCAL DEFAULT 6 .rodata
7: 000019e0 0 SECTION LOCAL DEFAULT 7 .data
8: 00001a20 0 SECTION LOCAL DEFAULT 8 .got
9: 00001a2c 0 SECTION LOCAL DEFAULT 9 .dynamic
10: 00001abc 0 SECTION LOCAL DEFAULT 10 .sbss
11: 00001abc 0 SECTION LOCAL DEFAULT 11 .bss
12: 00000000 0 SECTION LOCAL DEFAULT 12 .comment
13: 00000000 0 SECTION LOCAL DEFAULT 13 .note
14: 00000000 0 SECTION LOCAL DEFAULT 14 .shstrtab
15: 00000000 0 SECTION LOCAL DEFAULT 15 .symtab
16: 00000000 0 SECTION LOCAL DEFAULT 16 .strtab
17: 00000000 0 FILE LOCAL DEFAULT ABS operator.c
18: 00000658 0 NOTYPE LOCAL DEFAULT 5 gcc2_compiled.
19: 000007fc 61 FUNC GLOBAL DEFAULT 5 op_inv_rev
20: 000019e0 40 OBJECT GLOBAL DEFAULT 7 listOperators
21: 00001a2c 0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC
22: 000007c0 59 FUNC GLOBAL DEFAULT 5 op10_rev
23: 00000658 19 FUNC GLOBAL DEFAULT 5 getListOperator
24: 0000083c 57 FUNC GLOBAL DEFAULT 5 op_inv2_rev
25: 000006e4 61 FUNC GLOBAL DEFAULT 5 op_inv
26: 00000784 59 FUNC GLOBAL DEFAULT 5 op3_rev
27: 00001abc 0 OBJECT GLOBAL DEFAULT ABS __bss_start
28: 00000724 57 FUNC GLOBAL DEFAULT 5 op_inv2
29: 00000760 35 FUNC GLOBAL DEFAULT 5 op_refresh
30: 000006a8 59 FUNC GLOBAL DEFAULT 5 op10
31: 0000066c 59 FUNC GLOBAL DEFAULT 5 op3
32: 00000878 35 FUNC GLOBAL DEFAULT 5 op_refresh_rev
33: 00001abc 0 OBJECT GLOBAL DEFAULT ABS _edata
34: 00001a20 0 OBJECT GLOBAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
35: 00001abc 0 OBJECT GLOBAL DEFAULT ABS _end
Histogram for bucket list length (total of 17 buckets):
Length Number % of total Coverage
0 7 ( 41.2%)
1 4 ( 23.5%) 23.5%
2 5 ( 29.4%) 82.4%
3 1 ( 5.9%) 100.0%
No version information found in this file.
Displaying notes found in: .note
Owner Data size Description
01.01 0x00000000 NT_VERSION (version)
Reduzi um pouco a verbosidade patchelf --remove-rpath
para remover pesquisas desnecessárias, mas não houve nenhuma alteração em nenhuma das máquinas.