ELF Binary Comparison
Overview
Binaries ↩
old: ../../tests/x86_64/libelf_diff_test_debug_old.a (debug)
new: ../../tests/x86_64/libelf_diff_test_debug_new.a (debug)
Statistics ↩
Symbol Classes
|
Symbol Selection
|
Symbols ↩
Persisting Symbols ↩
Symbol | Type | Old Size/bytes | New Size/bytes | Delta/bytes |
---|---|---|---|---|
persisting1(int) ⓘ | T | 18 | 18 | 0 |
persisting2(int) ⓘ | T | 18 | 18 | 0 |
var | 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 |
---|---|---|
Test::g(float, float) ⓘ | T | 29 |
Test::f(int, int) ⓘ | T | 21 |
func(int) ⓘ | T | 18 |
Test::m_ | 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 |
---|---|---|
Test1::g(float, float) ⓘ | T | 29 |
Test1::f(int, int) ⓘ | T | 21 |
func(double) ⓘ | T | 20 |
Test1::m_ | 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 ⓘ |
Test::f(int, int)
Test1::f(int, int) |
T
T |
21
21 |
0 | 88.9 | 100.0 |
1 ⓘ |
Test::g(float, float)
Test1::g(float, float) |
T
T |
29
29 |
0 | 88.9 | 100.0 |
2 |
Test::m_
Test1::m_ |
D
D |
4
4 |
0 | 88.0 | 100.0 |
3 ⓘ |
func(int)
func(double) |
T
T |
18
20 |
2 | 87.5 | 93.1 |
4 |
Test::f(int, int)
Test1::m_ |
T
D |
21
4 |
-17 | 69.2 | 0.0 |
5 |
Test::g(float, float)
Test1::m_ |
T
D |
29
4 |
-25 | 69.2 | 0.0 |
6 ⓘ |
Test::f(int, int)
Test1::g(float, float) |
T
T |
21
29 |
8 | 66.7 | 81.4 |
7 ⓘ |
Test::g(float, float)
Test1::f(int, int) |
T
T |
29
21 |
-8 | 66.7 | 81.4 |
8 |
Test::m_
Test1::g(float, float) |
D
T |
4
29 |
25 | 61.5 | 0.0 |
9 |
Test::m_
Test1::f(int, int) |
D
T |
4
21 |
17 | 61.5 | 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 |
---|---|---|
persisting1(int) ⓘ | /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:42 | /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:42 |
persisting2(int) ⓘ | /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:43 | /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:43 |
var | /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:24 | /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:24 |
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 persisting1(int) : old size: 18 bytes, new size: 18 bytes, delta: 0 bytes
Old source: /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:42
New source: /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:42
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,-0x4(%rbp) | 4 | mov %edi,-0x4(%rbp) | ||
t | 5 | mov $0x2b,%eax | t | 5 | mov $0x2a,%eax |
6 | pop %rbp | 6 | pop %rbp | ||
7 | ret | 7 | ret | ||
8 | 8 |
Persisting symbol persisting2(int) : old size: 18 bytes, new size: 18 bytes, delta: 0 bytes
Old source: /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:43
New source: /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:43
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,-0x4(%rbp) | 4 | mov %edi,-0x4(%rbp) | ||
t | 5 | mov $0x2b,%eax | t | 5 | mov $0x2a,%eax |
6 | pop %rbp | 6 | pop %rbp | ||
7 | ret | 7 | ret | ||
8 | 8 |
Disappeared Symbols ↩
Disappeared symbol func(int) : size: 18 bytes
Source: /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:20
endbr64 push %rbp mov %rsp,%rbp mov %edi,-0x4(%rbp) mov $0x2a,%eax pop %rbp ret
Disappeared symbol Test::f(int, int) : size: 21 bytes
Source: /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:37
endbr64 push %rbp mov %rsp,%rbp mov %edi,-0x4(%rbp) mov %esi,-0x8(%rbp) mov $0x2a,%eax pop %rbp ret nop
Disappeared symbol Test::g(float, float) : size: 29 bytes
Source: /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:38
endbr64 push %rbp mov %rsp,%rbp mov %rdi,-0x8(%rbp) movss %xmm0,-0xc(%rbp) movss %xmm1,-0x10(%rbp) mov $0x1,%eax pop %rbp ret
New Symbols ↩
Appeared symbol func(double) : size: 20 bytes
Source: /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:20
endbr64 push %rbp mov %rsp,%rbp movsd %xmm0,-0x8(%rbp) mov $0x2a,%eax pop %rbp ret
Appeared symbol Test1::f(int, int) : size: 21 bytes
Source: /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:37
endbr64 push %rbp mov %rsp,%rbp mov %edi,-0x4(%rbp) mov %esi,-0x8(%rbp) mov $0x2a,%eax pop %rbp ret nop
Appeared symbol Test1::g(float, float) : size: 29 bytes
Source: /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:38
endbr64 push %rbp mov %rsp,%rbp mov %rdi,-0x8(%rbp) movss %xmm0,-0xc(%rbp) movss %xmm1,-0x10(%rbp) mov $0x1,%eax pop %rbp ret
Similar Symbols ↩
Similar pair 0 : old size: 21 bytes, new size: 21 bytes, delta: 0 bytes, sig. sim.: 88.9 %, instr. sim.: 100.0 %
Old: Test::f(int, int) [/home/flo/Tmp/elf_diff/testing/src/old/test.cpp:37]
New: Test1::f(int, int) [/home/flo/Tmp/elf_diff/testing/src/new/test.cpp:37]
Similar pair 1 : old size: 29 bytes, new size: 29 bytes, delta: 0 bytes, sig. sim.: 88.9 %, instr. sim.: 100.0 %
Old: Test::g(float, float) [/home/flo/Tmp/elf_diff/testing/src/old/test.cpp:38]
New: Test1::g(float, float) [/home/flo/Tmp/elf_diff/testing/src/new/test.cpp:38]
Similar pair 3 : old size: 18 bytes, new size: 20 bytes, delta: 2 bytes, sig. sim.: 87.5 %, instr. sim.: 93.1 %
Old: func(int) [/home/flo/Tmp/elf_diff/testing/src/old/test.cpp:20]
New: func(double) [/home/flo/Tmp/elf_diff/testing/src/new/test.cpp:20]
Old | New | ||||
---|---|---|---|---|---|
f | 1 | endbr64 | f | 1 | endbr64 |
2 | push %rbp | 2 | push %rbp | ||
3 | mov %rsp,%rbp | 3 | mov %rsp,%rbp | ||
t | 4 | mov %edi,-0x4(%rbp) | t | 4 | movsd %xmm0,-0x8(%rbp) |
5 | mov $0x2a,%eax | 5 | mov $0x2a,%eax | ||
6 | pop %rbp | 6 | pop %rbp | ||
7 | ret | 7 | ret | ||
8 | 8 |
Similar pair 6 : old size: 21 bytes, new size: 29 bytes, delta: 8 bytes, sig. sim.: 66.7 %, instr. sim.: 81.4 %
Old: Test::f(int, int) [/home/flo/Tmp/elf_diff/testing/src/old/test.cpp:37]
New: Test1::g(float, float) [/home/flo/Tmp/elf_diff/testing/src/new/test.cpp:38]
Old | New | ||||
---|---|---|---|---|---|
f | 1 | endbr64 | f | 1 | endbr64 |
2 | push %rbp | 2 | push %rbp | ||
3 | mov %rsp,%rbp | 3 | mov %rsp,%rbp | ||
n | 4 | mov %edi,-0x4(%rbp) | n | 4 | mov %rdi,-0x8(%rbp) |
5 | mov %esi,-0x8(%rbp) | 5 | movss %xmm0,-0xc(%rbp) | ||
6 | movss %xmm1,-0x10(%rbp) | ||||
6 | mov $0x2a,%eax | 7 | mov $0x1,%eax | ||
7 | pop %rbp | 8 | pop %rbp | ||
8 | ret | 9 | ret | ||
t | 9 | nop | t | ||
10 | 10 |
Similar pair 7 : old size: 29 bytes, new size: 21 bytes, delta: -8 bytes, sig. sim.: 66.7 %, instr. sim.: 81.4 %
Old: Test::g(float, float) [/home/flo/Tmp/elf_diff/testing/src/old/test.cpp:38]
New: Test1::f(int, int) [/home/flo/Tmp/elf_diff/testing/src/new/test.cpp:37]
Old | New | ||||
---|---|---|---|---|---|
f | 1 | endbr64 | f | 1 | endbr64 |
2 | push %rbp | 2 | push %rbp | ||
3 | mov %rsp,%rbp | 3 | mov %rsp,%rbp | ||
n | 4 | mov %rdi,-0x8(%rbp) | n | 4 | mov %edi,-0x4(%rbp) |
5 | movss %xmm0,-0xc(%rbp) | 5 | mov %esi,-0x8(%rbp) | ||
6 | movss %xmm1,-0x10(%rbp) | ||||
7 | mov $0x1,%eax | 6 | mov $0x2a,%eax | ||
8 | pop %rbp | 7 | pop %rbp | ||
9 | ret | 8 | ret | ||
t | t | 9 | nop | ||
10 | 10 |
Migrated Symbols ↩
Migrated symbol persisting1(int) : old size: 18 bytes, new size: 18 bytes, delta: 0 bytes
Old source: /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:42
New source: /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:42
Migrated symbol persisting2(int) : old size: 18 bytes, new size: 18 bytes, delta: 0 bytes
Old source: /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:43
New source: /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:43