ELF Binary Comparison
Overview
Binaries ↩
old: ../../tests/x86_64/libelf_diff_test2_debug_old.a (debug)
new: ../../tests/x86_64/libelf_diff_test2_debug_new.a (debug)
Statistics ↩
Symbol Classes
|
Symbol Selection
|
Symbols ↩
Persisting Symbols ↩
Symbol | Type | Old Size/bytes | New Size/bytes | Delta/bytes |
---|---|---|---|---|
implementationChanged(int) ⓘ | T | 98 | 106 | 8 |
g() ⓘ | T | 11 | 11 | 0 |
fIStay(double) ⓘ | T | 30 | 30 | 0 |
cIStayButDiffer | r | 4 | 4 | 0 |
cIStay | r | 4 | 4 | 0 |
Test::smvIStayButDiffer | D | 4 | 4 | 0 |
Test::smvIStay | D | 4 | 4 | 0 |
g()::lsvIStayButDiffer | d | 4 | 4 | 0 |
g()::lsvIStay | d | 4 | 4 | 0 |
vIStay | D | 4 | 4 | 0 |
vIStayButDiffer | D | 4 | 4 | 0 |
Columns
Symbol | The symbol name (possibly mangled) |
Type | The symbol type (see the documentation of binutils tool nm for more information) |
Old Size | The old symbol size either in RAM or program memory |
New Size | The new symbol size either in RAM or program memory |
Delta | The change to symbol size |
Disappeared Symbols ↩
Symbol | Type | Size/bytes |
---|---|---|
fIStayButDiffer(float) ⓘ | T | 20 |
fIAmGone(int) ⓘ | T | 16 |
cIAmGone | r | 4 |
Test::smvIAmGone | D | 4 |
g()::lsvIAmGone | d | 4 |
vIAmGone | D | 4 |
Columns
Symbol | The symbol name (possibly demangled) |
Type | The symbol type (see the documentation of binutils tool nm for more information) |
Size | The symbol size either in RAM or program memory |
New Symbols ↩
Symbol | Type | Size/bytes |
---|---|---|
fIAmNew(short) ⓘ | T | 20 |
fIStayButDiffer(char) ⓘ | T | 19 |
cIAmNew | r | 4 |
Test::smvIAmNew | D | 4 |
g()::lsvIAmNew | d | 4 |
vIAmNew | D | 4 |
Columns
Symbol | The symbol name (possibly demangled) |
Type | The symbol type (see the documentation of binutils tool nm for more information) |
Size | The symbol size either in RAM or program memory |
Similar Symbols ↩
Id | Symbols | Types | Sizes/bytes | Deltas/bytes | Sig. Sim./% | Instr. Sim./% |
---|---|---|---|---|---|---|
0 ⓘ |
fIStayButDiffer(float)
fIStayButDiffer(char) |
T
T |
20
19 |
-1 | 95.0 | 84.3 |
1 |
fIStayButDiffer(float)
cIStayButDiffer |
T
r |
20
4 |
-16 | 90.0 | 0.0 |
2 |
Test::smvIAmGone
Test::smvIAmNew |
D
D |
4
4 |
0 | 80.0 | 100.0 |
3 |
fIStayButDiffer(float)
vIStayButDiffer |
T
D |
20
4 |
-16 | 80.0 | 0.0 |
4 |
g()::lsvIAmGone
g()::lsvIAmNew |
d
d |
4
4 |
0 | 77.8 | 100.0 |
5 |
fIStayButDiffer(float)
g()::lsvIStayButDiffer |
T
d |
20
4 |
-16 | 73.9 | 0.0 |
6 |
fIStayButDiffer(float)
Test::smvIStayButDiffer |
T
D |
20
4 |
-16 | 70.8 | 0.0 |
7 |
cIAmGone
cIAmNew |
r
r |
4
4 |
0 | 69.6 | 100.0 |
8 |
Test::smvIAmGone
Test::smvIStay |
D
D |
4
4 |
0 | 66.7 | 100.0 |
9 |
vIAmGone
vIAmNew |
D
D |
4
4 |
0 | 66.7 | 100.0 |
10 |
g()::lsvIAmGone
g()::lsvIStay |
d
d |
4
4 |
0 | 62.9 | 100.0 |
11 |
Test::smvIAmGone
Test::smvIStayButDiffer |
D
D |
4
4 |
0 | 61.2 | 100.0 |
12 ⓘ |
fIAmGone(int)
fIAmNew(short) |
T
T |
16
20 |
4 | 60.9 | 89.7 |
13 |
g()::lsvIAmGone
g()::lsvIStayButDiffer |
d
d |
4
4 |
0 | 57.8 | 100.0 |
14 |
cIAmGone
fIAmNew(short) |
r
T |
4
20 |
16 | 52.2 | 0.0 |
15 |
fIAmGone(int)
cIAmNew |
T
r |
16
4 |
-12 | 52.2 | 0.0 |
Columns
ID | Integer id assigned to each symbol pair |
Symbols | The two similar symbol names (possibly mangled) |
Types | The symbol types (see the documentation of binutils tool nm for more information) |
Sizes | The sizes of the symbols either in RAM or program memory |
Deltas | The difference in symbol size |
Sig. Sim. | Lexicographic symbol signature similarity |
Instr. Sim. | Instruction similarity of the symbols' assembly code |
Migrated Symbols ↩
Symbol | Old Source Location | New Source Location |
---|---|---|
g() ⓘ | old/test2.cpp:32(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp) | new/test2.cpp:32(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp) |
fIStay(double) ⓘ | old/test2.cpp:21(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp) | new/test2.cpp:20(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp) |
vIStay | old/test2.cpp:25(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp) | new/test2.cpp:24(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp) |
vIStayButDiffer | old/test2.cpp:26(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp) | new/test2.cpp:25(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp) |
implementationChanged(int) ⓘ | old/test2.cpp:68(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp) | new/test2.cpp:68(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp) |
Please Note: Use the settings source_prefix, old_source_prefix or new_source_prefix to eliminate false positives by removing path prefix from source file paths.
Columns
Symbol | The symbol name (possibly mangled) |
Old Source Location | The old source file location [file:line] |
New Source Location | The new source file location [file:line] |
Symbol Details ↩
Persisting Symbols ↩
Persisting symbol g() : old size: 11 bytes, new size: 11 bytes, delta: 0 bytes
Old source: old/test2.cpp:32(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)
New source: new/test2.cpp:32(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)
Persisting symbol implementationChanged(int) : old size: 98 bytes, new size: 106 bytes, delta: 8 bytes
Old source: old/test2.cpp:68(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)
New source: new/test2.cpp:68(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)
Old | New | ||||
---|---|---|---|---|---|
f | 1 | endbr64 | f | 1 | endbr64 |
2 | push %rbp | 2 | push %rbp | ||
3 | mov %rsp,%rbp | 3 | mov %rsp,%rbp | ||
4 | mov %edi,-0x14(%rbp) | 4 | mov %edi,-0x14(%rbp) | ||
5 | mov -0x14(%rbp),%eax | 5 | mov -0x14(%rbp),%eax | ||
n | n | 6 | lea 0x1(%rax),%edx | ||
7 | mov %edx,%eax | ||||
6 | add %eax,%eax | 8 | add %eax,%eax | ||
n | 7 | add $0x3,%eax | n | 9 | add %edx,%eax |
8 | mov %eax,-0x8(%rbp) | 10 | mov %eax,-0x8(%rbp) | ||
9 | movl $0x0,-0x4(%rbp) | 11 | movl $0x0,-0x4(%rbp) | ||
10 | mov -0x4(%rbp),%eax | 12 | mov -0x4(%rbp),%eax | ||
11 | cmp -0x14(%rbp),%eax | 13 | cmp -0x14(%rbp),%eax | ||
n | 12 | jge aa <_Z21implementationChangedi+0x5d> | n | 14 | jge b1 <_Z21implementationChangedi+0x61> |
13 | mov -0x8(%rbp),%edx | 15 | mov -0x8(%rbp),%eax | ||
14 | mov -0x4(%rbp),%eax | 16 | sub -0x4(%rbp),%eax | ||
15 | add %edx,%eax | ||||
16 | movslq %eax,%rdx | 17 | movslq %eax,%rdx | ||
n | 17 | imul $0x78787879,%rdx,%rdx | n | 18 | imul $0xffffffff88888889,%rdx,%rdx |
18 | shr $0x20,%rdx | 19 | shr $0x20,%rdx | ||
n | n | 20 | add %eax,%edx | ||
19 | sar $0x3,%edx | 21 | sar $0x3,%edx | ||
20 | mov %eax,%ecx | 22 | mov %eax,%ecx | ||
21 | sar $0x1f,%ecx | 23 | sar $0x1f,%ecx | ||
22 | sub %ecx,%edx | 24 | sub %ecx,%edx | ||
23 | mov %edx,-0x8(%rbp) | 25 | mov %edx,-0x8(%rbp) | ||
24 | mov -0x8(%rbp),%ecx | 26 | mov -0x8(%rbp),%ecx | ||
25 | mov %ecx,%edx | 27 | mov %ecx,%edx | ||
26 | shl $0x4,%edx | 28 | shl $0x4,%edx | ||
n | 27 | add %ecx,%edx | n | 29 | sub %ecx,%edx |
28 | sub %edx,%eax | 30 | sub %edx,%eax | ||
29 | mov %eax,-0x8(%rbp) | 31 | mov %eax,-0x8(%rbp) | ||
30 | addl $0x1,-0x4(%rbp) | 32 | addl $0x1,-0x4(%rbp) | ||
t | 31 | jmp 6a <_Z21implementationChangedi+0x1d> | t | 33 | jmp 71 <_Z21implementationChangedi+0x21> |
34 | addl $0x1,-0x8(%rbp) | ||||
32 | mov -0x8(%rbp),%eax | 35 | mov -0x8(%rbp),%eax | ||
33 | pop %rbp | 36 | pop %rbp | ||
34 | ret | 37 | ret | ||
35 | 38 |
Persisting symbol fIStay(double) : old size: 30 bytes, new size: 30 bytes, delta: 0 bytes
Old source: old/test2.cpp:21(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)
New source: new/test2.cpp:20(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)
Disappeared Symbols ↩
Disappeared symbol fIStayButDiffer(float) : size: 20 bytes
Source: old/test2.cpp:22(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)
endbr64 push %rbp mov %rsp,%rbp movss %xmm0,-0x4(%rbp) movss -0x4(%rbp),%xmm0 pop %rbp ret
Disappeared symbol fIAmGone(int) : size: 16 bytes
Source: old/test2.cpp:20(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)
endbr64 push %rbp mov %rsp,%rbp mov %edi,-0x4(%rbp) mov -0x4(%rbp),%eax pop %rbp ret
New Symbols ↩
Appeared symbol fIStayButDiffer(char) : size: 19 bytes
Source: new/test2.cpp:21(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)
endbr64 push %rbp mov %rsp,%rbp mov %edi,%eax mov %al,-0x4(%rbp) movzbl -0x4(%rbp),%eax pop %rbp ret
Appeared symbol fIAmNew(short) : size: 20 bytes
Source: new/test2.cpp:22(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)
endbr64 push %rbp mov %rsp,%rbp mov %edi,%eax mov %ax,-0x4(%rbp) movzwl -0x4(%rbp),%eax pop %rbp ret
Similar Symbols ↩
Similar pair 0 : old size: 20 bytes, new size: 19 bytes, delta: -1 bytes, sig. sim.: 95.0 %, instr. sim.: 84.3 %
Old: fIStayButDiffer(float) [old/test2.cpp:22(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)]
New: fIStayButDiffer(char) [new/test2.cpp:21(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)]
Old | New | ||||
---|---|---|---|---|---|
f | 1 | endbr64 | f | 1 | endbr64 |
2 | push %rbp | 2 | push %rbp | ||
3 | mov %rsp,%rbp | 3 | mov %rsp,%rbp | ||
t | t | 4 | mov %edi,%eax | ||
4 | movss %xmm0,-0x4(%rbp) | 5 | mov %al,-0x4(%rbp) | ||
5 | movss -0x4(%rbp),%xmm0 | 6 | movzbl -0x4(%rbp),%eax | ||
6 | pop %rbp | 7 | pop %rbp | ||
7 | ret | 8 | ret | ||
8 | 9 |
Similar pair 12 : old size: 16 bytes, new size: 20 bytes, delta: 4 bytes, sig. sim.: 60.9 %, instr. sim.: 89.7 %
Old: fIAmGone(int) [old/test2.cpp:20(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)]
New: fIAmNew(short) [new/test2.cpp:22(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)]
Old | New | ||||
---|---|---|---|---|---|
f | 1 | endbr64 | f | 1 | endbr64 |
2 | push %rbp | 2 | push %rbp | ||
3 | mov %rsp,%rbp | 3 | mov %rsp,%rbp | ||
t | t | 4 | mov %edi,%eax | ||
4 | mov %edi,-0x4(%rbp) | 5 | mov %ax,-0x4(%rbp) | ||
5 | mov -0x4(%rbp),%eax | 6 | movzwl -0x4(%rbp),%eax | ||
6 | pop %rbp | 7 | pop %rbp | ||
7 | ret | 8 | ret | ||
8 | 9 |
Migrated Symbols ↩
Migrated symbol g() : old size: 11 bytes, new size: 11 bytes, delta: 0 bytes
Old source: old/test2.cpp:32(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)
New source: new/test2.cpp:32(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)
Migrated symbol implementationChanged(int) : old size: 98 bytes, new size: 106 bytes, delta: 8 bytes
Old source: old/test2.cpp:68(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)
New source: new/test2.cpp:68(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)
Migrated symbol fIStay(double) : old size: 30 bytes, new size: 30 bytes, delta: 0 bytes
Old source: old/test2.cpp:21(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)
New source: new/test2.cpp:20(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)