asar coverage - build #


src/asar/
Coverage:
low: ≥ 0%
medium: ≥ 75.0%
high: ≥ 90.0%
Lines:
26 of 26, 0 excluded
100.0%
Functions:
3 of 3, 0 excluded
100.0%
Branches:
23 of 49, 0 excluded
46.9%

addr2line.cpp
Line Branch Exec Source
1 #include "addr2line.h"
2 #include "crc32.h"
3
4 //////////////////////////////////////////////////////////////////////////
5 // Class to store address-to-line mappings for richer symbolic information
6 //
7 // During assembly, included files and information about generated asm
8 // should be added to this, and then read back during symbol file
9 // generation
10
11 853 void AddressToLineMapping::reset()
12 {
13 853 m_fileList.reset();
14 853 m_file_indices_map.clear();
15 853 m_addrToLineInfo.reset();
16 853 }
17
18 // Adds information of what source file and line number an output rom address is at
19 5528 void AddressToLineMapping::includeMapping(const char* filename, int line, int addr)
20 {
21 2779 AddrToLineInfo newInfo;
22
2/4
✓ Branch 2 → 3 taken 2749 times.
✗ Branch 2 → 5 not taken.
✓ Branch 4 → 5 taken 2779 times.
✗ Branch 4 → 11 not taken.
5528 newInfo.fileIdx = getFileIndex(filename);
23 5528 newInfo.line = line;
24 5528 newInfo.addr = addr;
25
26
2/4
✓ Branch 3 → 4 taken 2749 times.
✗ Branch 3 → 5 not taken.
✓ Branch 8 → 9 taken 2779 times.
✗ Branch 8 → 11 not taken.
5528 m_addrToLineInfo.append(newInfo);
27 5528 }
28
29 // Helper to add file to list, and get the index of that file
30 5528 int AddressToLineMapping::getFileIndex(const char* filename)
31 {
32 // check if the file exists first
33
7/11
✓ Branch 2 → 3 taken 2749 times.
✗ Branch 2 → 24 not taken.
✓ Branch 3 → 4 taken 2749 times.
✗ Branch 3 → 22 not taken.
✓ Branch 7 → 8 taken 5428 times.
✓ Branch 7 → 10 taken 100 times.
✗ Branch 7 → 55 not taken.
✓ Branch 9 → 10 taken 2779 times.
✗ Branch 9 → 53 not taken.
✓ Branch 20 → 21 taken 2658 times.
✓ Branch 20 → 25 taken 121 times.
5528 if(auto it = m_file_indices_map.find(filename); it != m_file_indices_map.end()) {
34 5307 return it->second;
35 }
36
37 // file doesn't exist, so start tracking it
38 221 char* data = nullptr;
39 221 int len = 0;
40 221 uint32_t fileCrc = 0;
41
4/9
✓ Branch 10 → 12 taken 100 times.
✗ Branch 10 → 32 not taken.
✗ Branch 10 → 33 not taken.
✓ Branch 12 → 13 taken 100 times.
✗ Branch 12 → 15 not taken.
✓ Branch 30 → 31 taken 121 times.
✗ Branch 30 → 66 not taken.
✓ Branch 31 → 32 taken 121 times.
✗ Branch 31 → 34 not taken.
221 if (readfile(filename, "", &data, &len))
42 {
43
2/5
✓ Branch 13 → 14 taken 100 times.
✗ Branch 13 → 32 not taken.
✗ Branch 13 → 33 not taken.
✓ Branch 32 → 33 taken 121 times.
✗ Branch 32 → 66 not taken.
221 fileCrc = crc32((const uint8_t*)data, (unsigned int)len);
44 }
45 221 free(data);
46
47 221 int result = m_fileList.count;
48
1/2
✓ Branch 41 → 42 taken 121 times.
✗ Branch 41 → 59 not taken.
342 m_fileList.append({ string(filename), fileCrc });
49
2/4
✓ Branch 18 → 19 taken 100 times.
✗ Branch 18 → 32 not taken.
✓ Branch 47 → 48 taken 121 times.
✗ Branch 47 → 66 not taken.
221 m_file_indices_map.emplace(filename, result);
50
51 221 return result;
52
3/10
✓ Branch 15 → 16 taken 100 times.
✗ Branch 15 → 31 not taken.
✓ Branch 16 → 17 taken 100 times.
✗ Branch 16 → 26 not taken.
✗ Branch 28 → 29 not taken.
✗ Branch 28 → 30 not taken.
✓ Branch 39 → 40 taken 121 times.
✗ Branch 39 → 64 not taken.
✗ Branch 61 → 62 not taken.
✗ Branch 61 → 63 not taken.
221 }
53