少年修仙传客户端基础资源
hch
2024-04-01 d01413b00ef631ac20347716b23818b0b811f65f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#if ENABLE_UNIT_TESTS
 
#include "../../../external/Catch/catch.hpp"
 
#include "../../Clang/ClangMapFileParser.h"
#include <sstream>
 
using namespace mapfileparser;
 
static const char* mockMapFile = "# Path: /var/folders/8v/wyyvr8zd5rn3l9nfxz1dv4pw0000gn/T/il2cpp tests/csharp/SourceAssembly/GeneratedSources/_test.exe\n\
# Arch: i386\n\
# Object files:\n\
[0] linker synthesized\n\
[1] /usr/lib/libSystem.dylib\n\
[2] /usr/lib/libc++.dylib\n\
[3] /var/folders/8v/wyyvr8zd5rn3l9nfxz1dv4pw0000gn/T/il2cpp_cache/F14BC2A7F7430F841ABE66A030997030.o\n\
[4] /var/folders/8v/wyyvr8zd5rn3l9nfxz1dv4pw0000gn/T/il2cpp_cache/51181665DE4ABD7FD9F780396E0CD80A.o\n\
# Sections:\n\
# Address\tSize\t\tSegment\tSection\n\
0x00001F40\t0x00DDC22F\t__TEXT\t__text\n\
0x00DDE170\t0x000009C6\t__TEXT\t__symbol_stub\n\
0x00DDEB38\t0x0000098A\t__TEXT\t__stub_helper\n\
0x00DDF4C4\t0x000FFD68\t__TEXT\t__gcc_except_tab\n\
0x00EDF230\t0x0004CF94\t__TEXT\t__const\n\
0x00F2C1C4\t0x00053A85\t__TEXT\t__cstring\n\
0x00F7FC49\t0x00029CA8\t__TEXT\t__unwind_info\n\
0x00FA98F8\t0x000AF708\t__TEXT\t__eh_frame\n\
0x01059000\t0x00015ABC\t__DATA\t__nl_symbol_ptr\n\
0x0106EABC\t0x00000684\t__DATA\t__la_symbol_ptr\n\
0x0106F140\t0x0000006C\t__DATA\t__mod_init_func\n\
0x0106F1B0\t0x0023B008\t__DATA\t__data\n\
0x012AA1B8\t0x0005D044\t__DATA\t__const\n\
0x01307200\t0x00020454\t__DATA\t__common\n\
0x01327658\t0x0000AB48\t__DATA\t__bss\n\
# Symbols:\n\
# Address\tSize\t\tFile  Name\n\
0x00DDE170\t0x00000006[1] __NSGetEnviron2\n\
0x00001F40\t0x000000D0 [  3] _U3CRegisterObjectU3Ec__AnonStorey2__ctor_m12113\n\
0x00002010\t0x00000020 [  3] __ZL37il2cpp_codegen_method_info_from_indexj\n\
0x00DDE170\t0x00000006[1] __NSGetEnviron\n\
0x00DDE176\t0x00000006[1] __Unwind_Resume\n\
0x00002030\t0x00000120 [  4] _U3CRegisterObjectU3Ec__AnonStorey2_U3CU3Em__1_m12114\n\
# Dead Stripped Symbols:\n\
<<dead>> \t0x00000060\t[  2] l_OBJC_PROTOCOL_$_NSObject\n\
<<dead>> \t0x00000008\t[  2] l_OBJC_LABEL_PROTOCOL_$_NSObject\n\
";
 
TEST_CASE("Parsing_Clang_MapFile_ContainsExpectedSectionsAndSymbols")
{
    std::stringstream ss(mockMapFile);
    ClangMapFileParser parser;
    MapFile mapFile = parser.Parse(ss);
    REQUIRE(15 == mapFile.sections.size());
 
    Section section = mapFile.sections[0];
    REQUIRE(0x00001F40 == section.start);
    REQUIRE(0x00DDC22F == section.length);
    REQUIRE("__text" == section.name);
    REQUIRE("__TEXT" == section.segmentName);
 
    section = mapFile.sections[14];
    REQUIRE(0x01327658 == section.start);
    REQUIRE(0x0000AB48 == section.length);
    REQUIRE("__bss" == section.name);
    REQUIRE("__DATA" == section.segmentName);
 
    REQUIRE(3 == mapFile.symbols.size());
 
    Symbol symbol = mapFile.symbols[0];
    REQUIRE(0x00001F40 == symbol.start);
    REQUIRE(0x000000D0 == symbol.length);
    REQUIRE("_U3CRegisterObjectU3Ec__AnonStorey2__ctor_m12113" == symbol.name);
    REQUIRE(kSegmentTypeCode == symbol.segmentType);
    REQUIRE("/var/folders/8v/wyyvr8zd5rn3l9nfxz1dv4pw0000gn/T/il2cpp_cache/F14BC2A7F7430F841ABE66A030997030.o" == symbol.objectFile);
 
    symbol = mapFile.symbols[2];
    REQUIRE(0x00002030 == symbol.start);
    REQUIRE(0x00000120 == symbol.length);
    REQUIRE("_U3CRegisterObjectU3Ec__AnonStorey2_U3CU3Em__1_m12114" == symbol.name);
    REQUIRE(kSegmentTypeCode == symbol.segmentType);
    REQUIRE("/var/folders/8v/wyyvr8zd5rn3l9nfxz1dv4pw0000gn/T/il2cpp_cache/51181665DE4ABD7FD9F780396E0CD80A.o" == symbol.objectFile);
}
 
#endif // ENABLE_UNIT_TESTS