brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.0 KiB · 16c9129 Raw
151 lines · python
1import lldb2from lldbsuite.test.lldbtest import *3from lldbsuite.test.decorators import *4from lldbsuite.test.gdbclientutils import *5from lldbsuite.test.lldbgdbclient import *6 7images = """8{"images":[9    {"load_address":4370792448,10     "mod_date":0,11     "pathname":"/usr/lib/dyld",12     "uuid":"75627683-A780-32AD-AE34-CF86DD23A26B",13     "min_version_os_name":"macosx",14     "min_version_os_sdk":"12.5",15     "mach_header":{16         "magic":4277009103,17         "cputype":16777228,18         "cpusubtype":2,19         "filetype":7,20         "flags":133},21    "segments":[22        {"name":"__TEXT",23         "vmaddr":0,24         "vmsize":393216,25         "fileoff":0,26         "filesize":393216,27         "maxprot":5},28        {"name":"__DATA_CONST",29         "vmaddr":393216,30         "vmsize":98304,31         "fileoff":393216,32         "filesize":98304,33         "maxprot":3},34        {"name":"__DATA",35         "vmaddr":491520,36         "vmsize":16384,37         "fileoff":491520,38         "filesize":16384,39         "maxprot":3},40        {"name":"__LINKEDIT",41         "vmaddr":507904,42         "vmsize":229376,43         "fileoff":507904,44         "filesize":227520,45         "maxprot":1}46    ]47    },48    {"load_address":4369842176,49     "mod_date":0,50     "pathname":"/tmp/a.out",51     "uuid":"536A0A09-792A-377C-BEBA-FFB00A787C38",52     "min_version_os_name":"macosx",53     "min_version_os_sdk":"12.0",54     "mach_header":{55         "magic":4277009103,56         "cputype":16777228,57         "cpusubtype":%s,58         "filetype":2,59         "flags":209728560     },61     "segments":[62         {"name":"__PAGEZERO",63          "vmaddr":0,64          "vmsize":4294967296,65          "fileoff":0,66          "filesize":0,67          "maxprot":0},68         {"name":"__TEXT",69          "vmaddr":4294967296,70          "vmsize":16384,71          "fileoff":0,72          "filesize":16384,73          "maxprot":5},74         {"name":"__DATA_CONST",75          "vmaddr":4294983680,76          "vmsize":16384,77          "fileoff":16384,78          "filesize":16384,79          "maxprot":3},80         {"name":"__LINKEDIT",81          "vmaddr":4295000064,82          "vmsize":32768,83          "fileoff":32768,84          "filesize":19488,85          "maxprot":1}]86    }87]88}89"""90 91arm64_binary = "cffaedfe0c000001000000000200000010000000e8020000850020000000000019000000480000005f5f504147455a45524f00000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000019000000e80000005f5f54455854000000000000000000000000000001000000004000000000000000000000000000000040000000000000050000000500000002000000000000005f5f74657874000000000000000000005f5f5445585400000000000000000000b03f0000010000000800000000000000b03f0000020000000000000000000000000400800000000000000000000000005f5f756e77696e645f696e666f0000005f5f5445585400000000000000000000b83f0000010000004800000000000000b83f00000200000000000000000000000000000000000000000000000000000019000000480000005f5f4c494e4b45444954000000000000004000000100000000400000000000000040000000000000b8010000000000000100000001000000000000000000000034000080100000000040000038000000330000801000000038400000300000000200000018000000704000000100000080400000180000000b000000500000000000000000000000000000000100000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e000000200000000c0000002f7573722f6c69622f64796c64000000000000001b00000018000000a9981092eb3632f4afd9957e769160d932000000200000000100000000000c0000050c000100000003000000000633032a0000001000000000000000000000002800008018000000b03f00000000000000000000000000000c00000038000000180000000200000001781f05000001002f7573722f6c69622f6c696253797374656d2e422e64796c696200000000000026000000100000006840000008000000290000001000000070400000000000001d00000010000000a04000001801"92 93 94class TestDynamicLoaderDarwin(GDBRemoteTestBase):95    NO_DEBUG_INFO_TESTCASE = True96 97    class MyResponder(MockGDBServerResponder):98        def __init__(self, cpusubtype):99            self.cpusubtype = cpusubtype100            MockGDBServerResponder.__init__(self)101 102        def respond(self, packet):103            if packet == "qProcessInfo":104                return self.qProcessInfo()105            return MockGDBServerResponder.respond(self, packet)106 107        def qHostInfo(self):108            return "cputype:16777223;cpusubtype:2;ostype:macosx;vendor:apple;os_version:10.15.4;maccatalyst_version:13.4;endian:little;ptrsize:8;"109 110        def qProcessInfo(self):111            return "pid:a860;parent-pid:d2a0;real-uid:1f5;real-gid:14;effective-uid:1f5;effective-gid:14;cputype:100000c;cpusubtype:2;ptrsize:8;ostype:macosx;vendor:apple;endian:little;"112 113        def jGetLoadedDynamicLibrariesInfos(self, packet):114            if "fetch_all_solibs" in packet:115                return escape_binary(images % self.cpusubtype)116            return "OK"117 118        def vCont(self):119            return "vCont;"120 121        def readMemory(self, addr, length):122            vm_addr = 4369842176123            file_offset = addr - vm_addr124            if file_offset < 0:125                return None126            # arm64_binary is just a hex-encoded (hence the 2*) Mach-O127            # header, pad out the rest with NUL characters, it doesn't128            # matter for this test.129            memory = arm64_binary + "00" * (length - len(arm64_binary) << 1)130            return memory[2 * file_offset :]131 132        def setBreakpoint(self, packet):133            return ""134 135    @skipIfRemote136    def test(self):137        """Test that when attaching to an arm64 binary on an arm64e138        host, the target's arch is set to arm64, even though139        debugserver reports the process as being arm64e.140        """141        subtype_arm64e = 2142        self.server.responder = self.MyResponder(subtype_arm64e)143        if self.TraceOn():144            self.runCmd("log enable gdb-remote packets")145            self.addTearDownHook(lambda: self.runCmd("log disable gdb-remote packets"))146 147        target = self.dbg.CreateTargetWithFileAndArch(None, None)148        process = self.connect(target)149 150        self.assertEqual(target.GetTriple(), "arm64-apple-macosx-")151