1*be691f3bSpatrick#!/usr/bin/env python 2061da546Spatrick#===-- x86_64_target_definition.py -----------------------------*- C++ -*-===// 3061da546Spatrick# 4061da546Spatrick# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5061da546Spatrick# See https://llvm.org/LICENSE.txt for license information. 6061da546Spatrick# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7061da546Spatrick# 8061da546Spatrick#===----------------------------------------------------------------------===// 9061da546Spatrick 10061da546Spatrick#---------------------------------------------------------------------- 11061da546Spatrick# DESCRIPTION 12061da546Spatrick# 13061da546Spatrick# This file can be used with the following setting: 14061da546Spatrick# plugin.process.gdb-remote.target-definition-file 15061da546Spatrick# This setting should be used when you are trying to connect to a 16061da546Spatrick# remote GDB server that doesn't support any of the register discovery 17061da546Spatrick# packets that LLDB normally uses. 18061da546Spatrick# 19061da546Spatrick# Why is this necessary? LLDB doesn't require a new build of LLDB that 20061da546Spatrick# targets each new architecture you will debug with. Instead, all 21061da546Spatrick# architectures are supported and LLDB relies on extra GDB server 22061da546Spatrick# packets to discover the target we are connecting to so that is can 23061da546Spatrick# show the right registers for each target. This allows the GDB server 24061da546Spatrick# to change and add new registers without requiring a new LLDB build 25061da546Spatrick# just so we can see new registers. 26061da546Spatrick# 27061da546Spatrick# This file implements the x86_64 registers for the darwin version of 28061da546Spatrick# GDB and allows you to connect to servers that use this register set. 29061da546Spatrick# 30061da546Spatrick# USAGE 31061da546Spatrick# 32061da546Spatrick# (lldb) settings set plugin.process.gdb-remote.target-definition-file /path/to/x86_64_target_definition.py 33061da546Spatrick# (lldb) gdb-remote other.baz.com:1234 34061da546Spatrick# 35061da546Spatrick# The target definition file will get used if and only if the 36061da546Spatrick# qRegisterInfo packets are not supported when connecting to a remote 37061da546Spatrick# GDB server. 38061da546Spatrick#---------------------------------------------------------------------- 39061da546Spatrickfrom lldb import * 40061da546Spatrick 41061da546Spatrick# Compiler and DWARF register numbers 42061da546Spatrickname_to_gcc_dwarf_regnum = { 43061da546Spatrick 'rax': 0, 44061da546Spatrick 'rdx': 1, 45061da546Spatrick 'rcx': 2, 46061da546Spatrick 'rbx': 3, 47061da546Spatrick 'rsi': 4, 48061da546Spatrick 'rdi': 5, 49061da546Spatrick 'rbp': 6, 50061da546Spatrick 'rsp': 7, 51061da546Spatrick 'r8': 8, 52061da546Spatrick 'r9': 9, 53061da546Spatrick 'r10': 10, 54061da546Spatrick 'r11': 11, 55061da546Spatrick 'r12': 12, 56061da546Spatrick 'r13': 13, 57061da546Spatrick 'r14': 14, 58061da546Spatrick 'r15': 15, 59061da546Spatrick 'rip': 16, 60061da546Spatrick 'xmm0': 17, 61061da546Spatrick 'xmm1': 18, 62061da546Spatrick 'xmm2': 19, 63061da546Spatrick 'xmm3': 20, 64061da546Spatrick 'xmm4': 21, 65061da546Spatrick 'xmm5': 22, 66061da546Spatrick 'xmm6': 23, 67061da546Spatrick 'xmm7': 24, 68061da546Spatrick 'xmm8': 25, 69061da546Spatrick 'xmm9': 26, 70061da546Spatrick 'xmm10': 27, 71061da546Spatrick 'xmm11': 28, 72061da546Spatrick 'xmm12': 29, 73061da546Spatrick 'xmm13': 30, 74061da546Spatrick 'xmm14': 31, 75061da546Spatrick 'xmm15': 32, 76061da546Spatrick 'stmm0': 33, 77061da546Spatrick 'stmm1': 34, 78061da546Spatrick 'stmm2': 35, 79061da546Spatrick 'stmm3': 36, 80061da546Spatrick 'stmm4': 37, 81061da546Spatrick 'stmm5': 38, 82061da546Spatrick 'stmm6': 39, 83061da546Spatrick 'stmm7': 30, 84061da546Spatrick 'ymm0': 41, 85061da546Spatrick 'ymm1': 42, 86061da546Spatrick 'ymm2': 43, 87061da546Spatrick 'ymm3': 44, 88061da546Spatrick 'ymm4': 45, 89061da546Spatrick 'ymm5': 46, 90061da546Spatrick 'ymm6': 47, 91061da546Spatrick 'ymm7': 48, 92061da546Spatrick 'ymm8': 49, 93061da546Spatrick 'ymm9': 40, 94061da546Spatrick 'ymm10': 41, 95061da546Spatrick 'ymm11': 42, 96061da546Spatrick 'ymm12': 43, 97061da546Spatrick 'ymm13': 44, 98061da546Spatrick 'ymm14': 45, 99061da546Spatrick 'ymm15': 46 100061da546Spatrick} 101061da546Spatrick 102061da546Spatrickname_to_gdb_regnum = { 103061da546Spatrick 'rax': 0, 104061da546Spatrick 'rbx': 1, 105061da546Spatrick 'rcx': 2, 106061da546Spatrick 'rdx': 3, 107061da546Spatrick 'rsi': 4, 108061da546Spatrick 'rdi': 5, 109061da546Spatrick 'rbp': 6, 110061da546Spatrick 'rsp': 7, 111061da546Spatrick 'r8': 8, 112061da546Spatrick 'r9': 9, 113061da546Spatrick 'r10': 10, 114061da546Spatrick 'r11': 11, 115061da546Spatrick 'r12': 12, 116061da546Spatrick 'r13': 13, 117061da546Spatrick 'r14': 14, 118061da546Spatrick 'r15': 15, 119061da546Spatrick 'rip': 16, 120061da546Spatrick 'rflags': 17, 121061da546Spatrick 'cs': 18, 122061da546Spatrick 'ss': 19, 123061da546Spatrick 'ds': 20, 124061da546Spatrick 'es': 21, 125061da546Spatrick 'fs': 22, 126061da546Spatrick 'gs': 23, 127061da546Spatrick 'stmm0': 24, 128061da546Spatrick 'stmm1': 25, 129061da546Spatrick 'stmm2': 26, 130061da546Spatrick 'stmm3': 27, 131061da546Spatrick 'stmm4': 28, 132061da546Spatrick 'stmm5': 29, 133061da546Spatrick 'stmm6': 30, 134061da546Spatrick 'stmm7': 31, 135061da546Spatrick 'fctrl': 32, 136061da546Spatrick 'fstat': 33, 137061da546Spatrick 'ftag': 34, 138061da546Spatrick 'fiseg': 35, 139061da546Spatrick 'fioff': 36, 140061da546Spatrick 'foseg': 37, 141061da546Spatrick 'fooff': 38, 142061da546Spatrick 'fop': 39, 143061da546Spatrick 'xmm0': 40, 144061da546Spatrick 'xmm1': 41, 145061da546Spatrick 'xmm2': 42, 146061da546Spatrick 'xmm3': 43, 147061da546Spatrick 'xmm4': 44, 148061da546Spatrick 'xmm5': 45, 149061da546Spatrick 'xmm6': 46, 150061da546Spatrick 'xmm7': 47, 151061da546Spatrick 'xmm8': 48, 152061da546Spatrick 'xmm9': 49, 153061da546Spatrick 'xmm10': 50, 154061da546Spatrick 'xmm11': 51, 155061da546Spatrick 'xmm12': 52, 156061da546Spatrick 'xmm13': 53, 157061da546Spatrick 'xmm14': 54, 158061da546Spatrick 'xmm15': 55, 159061da546Spatrick 'mxcsr': 56, 160061da546Spatrick 'ymm0': 57, 161061da546Spatrick 'ymm1': 58, 162061da546Spatrick 'ymm2': 59, 163061da546Spatrick 'ymm3': 60, 164061da546Spatrick 'ymm4': 61, 165061da546Spatrick 'ymm5': 62, 166061da546Spatrick 'ymm6': 63, 167061da546Spatrick 'ymm7': 64, 168061da546Spatrick 'ymm8': 65, 169061da546Spatrick 'ymm9': 66, 170061da546Spatrick 'ymm10': 67, 171061da546Spatrick 'ymm11': 68, 172061da546Spatrick 'ymm12': 69, 173061da546Spatrick 'ymm13': 70, 174061da546Spatrick 'ymm14': 71, 175061da546Spatrick 'ymm15': 72 176061da546Spatrick} 177061da546Spatrick 178061da546Spatrickname_to_generic_regnum = { 179061da546Spatrick 'rip': LLDB_REGNUM_GENERIC_PC, 180061da546Spatrick 'rsp': LLDB_REGNUM_GENERIC_SP, 181061da546Spatrick 'rbp': LLDB_REGNUM_GENERIC_FP, 182061da546Spatrick 'rdi': LLDB_REGNUM_GENERIC_ARG1, 183061da546Spatrick 'rsi': LLDB_REGNUM_GENERIC_ARG2, 184061da546Spatrick 'rdx': LLDB_REGNUM_GENERIC_ARG3, 185061da546Spatrick 'rcx': LLDB_REGNUM_GENERIC_ARG4, 186061da546Spatrick 'r8': LLDB_REGNUM_GENERIC_ARG5, 187061da546Spatrick 'r9': LLDB_REGNUM_GENERIC_ARG6 188061da546Spatrick} 189061da546Spatrick 190061da546Spatrick 191061da546Spatrickdef get_reg_num(reg_num_dict, reg_name): 192061da546Spatrick if reg_name in reg_num_dict: 193061da546Spatrick return reg_num_dict[reg_name] 194061da546Spatrick return LLDB_INVALID_REGNUM 195061da546Spatrick 196061da546Spatrick 197061da546Spatrickdef get_reg_num(reg_num_dict, reg_name): 198061da546Spatrick if reg_name in reg_num_dict: 199061da546Spatrick return reg_num_dict[reg_name] 200061da546Spatrick return LLDB_INVALID_REGNUM 201061da546Spatrick 202061da546Spatrickx86_64_register_infos = [ 203061da546Spatrick {'name': 'rax', 204061da546Spatrick 'set': 0, 205061da546Spatrick 'bitsize': 64, 206061da546Spatrick 'encoding': eEncodingUint, 207061da546Spatrick 'format': eFormatAddressInfo}, 208061da546Spatrick {'name': 'rbx', 209061da546Spatrick 'set': 0, 210061da546Spatrick 'bitsize': 64, 211061da546Spatrick 'encoding': eEncodingUint, 212061da546Spatrick 'format': eFormatAddressInfo}, 213061da546Spatrick {'name': 'rcx', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 214061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'arg4'}, 215061da546Spatrick {'name': 'rdx', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 216061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'arg3'}, 217061da546Spatrick {'name': 'rsi', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 218061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'arg2'}, 219061da546Spatrick {'name': 'rdi', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 220061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'arg1'}, 221061da546Spatrick {'name': 'rbp', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 222061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'fp'}, 223061da546Spatrick {'name': 'rsp', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 224061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'sp'}, 225061da546Spatrick {'name': 'r8', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 226061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'arg5'}, 227061da546Spatrick {'name': 'r9', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 228061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'arg6'}, 229061da546Spatrick {'name': 'r10', 230061da546Spatrick 'set': 0, 231061da546Spatrick 'bitsize': 64, 232061da546Spatrick 'encoding': eEncodingUint, 233061da546Spatrick 'format': eFormatAddressInfo}, 234061da546Spatrick {'name': 'r11', 235061da546Spatrick 'set': 0, 236061da546Spatrick 'bitsize': 64, 237061da546Spatrick 'encoding': eEncodingUint, 238061da546Spatrick 'format': eFormatAddressInfo}, 239061da546Spatrick {'name': 'r12', 240061da546Spatrick 'set': 0, 241061da546Spatrick 'bitsize': 64, 242061da546Spatrick 'encoding': eEncodingUint, 243061da546Spatrick 'format': eFormatAddressInfo}, 244061da546Spatrick {'name': 'r13', 245061da546Spatrick 'set': 0, 246061da546Spatrick 'bitsize': 64, 247061da546Spatrick 'encoding': eEncodingUint, 248061da546Spatrick 'format': eFormatAddressInfo}, 249061da546Spatrick {'name': 'r14', 250061da546Spatrick 'set': 0, 251061da546Spatrick 'bitsize': 64, 252061da546Spatrick 'encoding': eEncodingUint, 253061da546Spatrick 'format': eFormatAddressInfo}, 254061da546Spatrick {'name': 'r15', 255061da546Spatrick 'set': 0, 256061da546Spatrick 'bitsize': 64, 257061da546Spatrick 'encoding': eEncodingUint, 258061da546Spatrick 'format': eFormatAddressInfo}, 259061da546Spatrick {'name': 'rip', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 260061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'pc'}, 261061da546Spatrick {'name': 'rflags', 'set': 0, 'bitsize': 32, 262061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 263061da546Spatrick {'name': 'cs', 'set': 0, 'bitsize': 32, 264061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 265061da546Spatrick {'name': 'ss', 'set': 0, 'bitsize': 32, 266061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 267061da546Spatrick {'name': 'ds', 'set': 0, 'bitsize': 32, 268061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 269061da546Spatrick {'name': 'es', 'set': 0, 'bitsize': 32, 270061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 271061da546Spatrick {'name': 'fs', 'set': 0, 'bitsize': 32, 272061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 273061da546Spatrick {'name': 'gs', 'set': 0, 'bitsize': 32, 274061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 275061da546Spatrick {'name': 'stmm0', 276061da546Spatrick 'set': 1, 277061da546Spatrick 'bitsize': 80, 278061da546Spatrick 'encoding': eEncodingVector, 279061da546Spatrick 'format': eFormatVectorOfUInt8}, 280061da546Spatrick {'name': 'stmm1', 281061da546Spatrick 'set': 1, 282061da546Spatrick 'bitsize': 80, 283061da546Spatrick 'encoding': eEncodingVector, 284061da546Spatrick 'format': eFormatVectorOfUInt8}, 285061da546Spatrick {'name': 'stmm2', 286061da546Spatrick 'set': 1, 287061da546Spatrick 'bitsize': 80, 288061da546Spatrick 'encoding': eEncodingVector, 289061da546Spatrick 'format': eFormatVectorOfUInt8}, 290061da546Spatrick {'name': 'stmm3', 291061da546Spatrick 'set': 1, 292061da546Spatrick 'bitsize': 80, 293061da546Spatrick 'encoding': eEncodingVector, 294061da546Spatrick 'format': eFormatVectorOfUInt8}, 295061da546Spatrick {'name': 'stmm4', 296061da546Spatrick 'set': 1, 297061da546Spatrick 'bitsize': 80, 298061da546Spatrick 'encoding': eEncodingVector, 299061da546Spatrick 'format': eFormatVectorOfUInt8}, 300061da546Spatrick {'name': 'stmm5', 301061da546Spatrick 'set': 1, 302061da546Spatrick 'bitsize': 80, 303061da546Spatrick 'encoding': eEncodingVector, 304061da546Spatrick 'format': eFormatVectorOfUInt8}, 305061da546Spatrick {'name': 'stmm6', 306061da546Spatrick 'set': 1, 307061da546Spatrick 'bitsize': 80, 308061da546Spatrick 'encoding': eEncodingVector, 309061da546Spatrick 'format': eFormatVectorOfUInt8}, 310061da546Spatrick {'name': 'stmm7', 311061da546Spatrick 'set': 1, 312061da546Spatrick 'bitsize': 80, 313061da546Spatrick 'encoding': eEncodingVector, 314061da546Spatrick 'format': eFormatVectorOfUInt8}, 315061da546Spatrick {'name': 'fctrl', 'set': 1, 'bitsize': 32, 316061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 317061da546Spatrick {'name': 'fstat', 'set': 1, 'bitsize': 32, 318061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 319061da546Spatrick {'name': 'ftag', 'set': 1, 'bitsize': 32, 320061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 321061da546Spatrick {'name': 'fiseg', 'set': 1, 'bitsize': 32, 322061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 323061da546Spatrick {'name': 'fioff', 'set': 1, 'bitsize': 32, 324061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 325061da546Spatrick {'name': 'foseg', 'set': 1, 'bitsize': 32, 326061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 327061da546Spatrick {'name': 'fooff', 'set': 1, 'bitsize': 32, 328061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 329061da546Spatrick {'name': 'fop', 'set': 1, 'bitsize': 32, 330061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 331061da546Spatrick {'name': 'xmm0', 332061da546Spatrick 'set': 1, 333061da546Spatrick 'bitsize': 128, 334061da546Spatrick 'encoding': eEncodingVector, 335061da546Spatrick 'format': eFormatVectorOfUInt8}, 336061da546Spatrick {'name': 'xmm1', 337061da546Spatrick 'set': 1, 338061da546Spatrick 'bitsize': 128, 339061da546Spatrick 'encoding': eEncodingVector, 340061da546Spatrick 'format': eFormatVectorOfUInt8}, 341061da546Spatrick {'name': 'xmm2', 342061da546Spatrick 'set': 1, 343061da546Spatrick 'bitsize': 128, 344061da546Spatrick 'encoding': eEncodingVector, 345061da546Spatrick 'format': eFormatVectorOfUInt8}, 346061da546Spatrick {'name': 'xmm3', 347061da546Spatrick 'set': 1, 348061da546Spatrick 'bitsize': 128, 349061da546Spatrick 'encoding': eEncodingVector, 350061da546Spatrick 'format': eFormatVectorOfUInt8}, 351061da546Spatrick {'name': 'xmm4', 352061da546Spatrick 'set': 1, 353061da546Spatrick 'bitsize': 128, 354061da546Spatrick 'encoding': eEncodingVector, 355061da546Spatrick 'format': eFormatVectorOfUInt8}, 356061da546Spatrick {'name': 'xmm5', 357061da546Spatrick 'set': 1, 358061da546Spatrick 'bitsize': 128, 359061da546Spatrick 'encoding': eEncodingVector, 360061da546Spatrick 'format': eFormatVectorOfUInt8}, 361061da546Spatrick {'name': 'xmm6', 362061da546Spatrick 'set': 1, 363061da546Spatrick 'bitsize': 128, 364061da546Spatrick 'encoding': eEncodingVector, 365061da546Spatrick 'format': eFormatVectorOfUInt8}, 366061da546Spatrick {'name': 'xmm7', 367061da546Spatrick 'set': 1, 368061da546Spatrick 'bitsize': 128, 369061da546Spatrick 'encoding': eEncodingVector, 370061da546Spatrick 'format': eFormatVectorOfUInt8}, 371061da546Spatrick {'name': 'xmm8', 372061da546Spatrick 'set': 1, 373061da546Spatrick 'bitsize': 128, 374061da546Spatrick 'encoding': eEncodingVector, 375061da546Spatrick 'format': eFormatVectorOfUInt8}, 376061da546Spatrick {'name': 'xmm9', 377061da546Spatrick 'set': 1, 378061da546Spatrick 'bitsize': 128, 379061da546Spatrick 'encoding': eEncodingVector, 380061da546Spatrick 'format': eFormatVectorOfUInt8}, 381061da546Spatrick {'name': 'xmm10', 382061da546Spatrick 'set': 1, 383061da546Spatrick 'bitsize': 128, 384061da546Spatrick 'encoding': eEncodingVector, 385061da546Spatrick 'format': eFormatVectorOfUInt8}, 386061da546Spatrick {'name': 'xmm11', 387061da546Spatrick 'set': 1, 388061da546Spatrick 'bitsize': 128, 389061da546Spatrick 'encoding': eEncodingVector, 390061da546Spatrick 'format': eFormatVectorOfUInt8}, 391061da546Spatrick {'name': 'xmm12', 392061da546Spatrick 'set': 1, 393061da546Spatrick 'bitsize': 128, 394061da546Spatrick 'encoding': eEncodingVector, 395061da546Spatrick 'format': eFormatVectorOfUInt8}, 396061da546Spatrick {'name': 'xmm13', 397061da546Spatrick 'set': 1, 398061da546Spatrick 'bitsize': 128, 399061da546Spatrick 'encoding': eEncodingVector, 400061da546Spatrick 'format': eFormatVectorOfUInt8}, 401061da546Spatrick {'name': 'xmm14', 402061da546Spatrick 'set': 1, 403061da546Spatrick 'bitsize': 128, 404061da546Spatrick 'encoding': eEncodingVector, 405061da546Spatrick 'format': eFormatVectorOfUInt8}, 406061da546Spatrick {'name': 'xmm15', 407061da546Spatrick 'set': 1, 408061da546Spatrick 'bitsize': 128, 409061da546Spatrick 'encoding': eEncodingVector, 410061da546Spatrick 'format': eFormatVectorOfUInt8}, 411061da546Spatrick {'name': 'mxcsr', 'set': 1, 'bitsize': 32, 412061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 413061da546Spatrick # Registers that are contained in or composed of one of more other 414061da546Spatrick # registers 415061da546Spatrick {'name': 'eax', 416061da546Spatrick 'set': 0, 417061da546Spatrick 'bitsize': 32, 418061da546Spatrick 'encoding': eEncodingUint, 419061da546Spatrick 'format': eFormatHex, 420061da546Spatrick 'slice': 'rax[31:0]'}, 421061da546Spatrick {'name': 'ebx', 422061da546Spatrick 'set': 0, 423061da546Spatrick 'bitsize': 32, 424061da546Spatrick 'encoding': eEncodingUint, 425061da546Spatrick 'format': eFormatHex, 426061da546Spatrick 'slice': 'rbx[31:0]'}, 427061da546Spatrick {'name': 'ecx', 428061da546Spatrick 'set': 0, 429061da546Spatrick 'bitsize': 32, 430061da546Spatrick 'encoding': eEncodingUint, 431061da546Spatrick 'format': eFormatHex, 432061da546Spatrick 'slice': 'rcx[31:0]'}, 433061da546Spatrick {'name': 'edx', 434061da546Spatrick 'set': 0, 435061da546Spatrick 'bitsize': 32, 436061da546Spatrick 'encoding': eEncodingUint, 437061da546Spatrick 'format': eFormatHex, 438061da546Spatrick 'slice': 'rdx[31:0]'}, 439061da546Spatrick {'name': 'edi', 440061da546Spatrick 'set': 0, 441061da546Spatrick 'bitsize': 32, 442061da546Spatrick 'encoding': eEncodingUint, 443061da546Spatrick 'format': eFormatHex, 444061da546Spatrick 'slice': 'rdi[31:0]'}, 445061da546Spatrick {'name': 'esi', 446061da546Spatrick 'set': 0, 447061da546Spatrick 'bitsize': 32, 448061da546Spatrick 'encoding': eEncodingUint, 449061da546Spatrick 'format': eFormatHex, 450061da546Spatrick 'slice': 'rsi[31:0]'}, 451061da546Spatrick {'name': 'ebp', 452061da546Spatrick 'set': 0, 453061da546Spatrick 'bitsize': 32, 454061da546Spatrick 'encoding': eEncodingUint, 455061da546Spatrick 'format': eFormatHex, 456061da546Spatrick 'slice': 'rbp[31:0]'}, 457061da546Spatrick {'name': 'esp', 458061da546Spatrick 'set': 0, 459061da546Spatrick 'bitsize': 32, 460061da546Spatrick 'encoding': eEncodingUint, 461061da546Spatrick 'format': eFormatHex, 462061da546Spatrick 'slice': 'rsp[31:0]'}, 463061da546Spatrick {'name': 'r8d', 464061da546Spatrick 'set': 0, 465061da546Spatrick 'bitsize': 32, 466061da546Spatrick 'encoding': eEncodingUint, 467061da546Spatrick 'format': eFormatHex, 468061da546Spatrick 'slice': 'r8[31:0]'}, 469061da546Spatrick {'name': 'r9d', 470061da546Spatrick 'set': 0, 471061da546Spatrick 'bitsize': 32, 472061da546Spatrick 'encoding': eEncodingUint, 473061da546Spatrick 'format': eFormatHex, 474061da546Spatrick 'slice': 'r9[31:0]'}, 475061da546Spatrick {'name': 'r10d', 476061da546Spatrick 'set': 0, 477061da546Spatrick 'bitsize': 32, 478061da546Spatrick 'encoding': eEncodingUint, 479061da546Spatrick 'format': eFormatHex, 480061da546Spatrick 'slice': 'r10[31:0]'}, 481061da546Spatrick {'name': 'r11d', 482061da546Spatrick 'set': 0, 483061da546Spatrick 'bitsize': 32, 484061da546Spatrick 'encoding': eEncodingUint, 485061da546Spatrick 'format': eFormatHex, 486061da546Spatrick 'slice': 'r11[31:0]'}, 487061da546Spatrick {'name': 'r12d', 488061da546Spatrick 'set': 0, 489061da546Spatrick 'bitsize': 32, 490061da546Spatrick 'encoding': eEncodingUint, 491061da546Spatrick 'format': eFormatHex, 492061da546Spatrick 'slice': 'r12[31:0]'}, 493061da546Spatrick {'name': 'r13d', 494061da546Spatrick 'set': 0, 495061da546Spatrick 'bitsize': 32, 496061da546Spatrick 'encoding': eEncodingUint, 497061da546Spatrick 'format': eFormatHex, 498061da546Spatrick 'slice': 'r13[31:0]'}, 499061da546Spatrick {'name': 'r14d', 500061da546Spatrick 'set': 0, 501061da546Spatrick 'bitsize': 32, 502061da546Spatrick 'encoding': eEncodingUint, 503061da546Spatrick 'format': eFormatHex, 504061da546Spatrick 'slice': 'r14[31:0]'}, 505061da546Spatrick {'name': 'r15d', 506061da546Spatrick 'set': 0, 507061da546Spatrick 'bitsize': 32, 508061da546Spatrick 'encoding': eEncodingUint, 509061da546Spatrick 'format': eFormatHex, 510061da546Spatrick 'slice': 'r15[31:0]'}, 511061da546Spatrick 512061da546Spatrick {'name': 'ax', 513061da546Spatrick 'set': 0, 514061da546Spatrick 'bitsize': 16, 515061da546Spatrick 'encoding': eEncodingUint, 516061da546Spatrick 'format': eFormatHex, 517061da546Spatrick 'slice': 'rax[15:0]'}, 518061da546Spatrick {'name': 'bx', 519061da546Spatrick 'set': 0, 520061da546Spatrick 'bitsize': 16, 521061da546Spatrick 'encoding': eEncodingUint, 522061da546Spatrick 'format': eFormatHex, 523061da546Spatrick 'slice': 'rbx[15:0]'}, 524061da546Spatrick {'name': 'cx', 525061da546Spatrick 'set': 0, 526061da546Spatrick 'bitsize': 16, 527061da546Spatrick 'encoding': eEncodingUint, 528061da546Spatrick 'format': eFormatHex, 529061da546Spatrick 'slice': 'rcx[15:0]'}, 530061da546Spatrick {'name': 'dx', 531061da546Spatrick 'set': 0, 532061da546Spatrick 'bitsize': 16, 533061da546Spatrick 'encoding': eEncodingUint, 534061da546Spatrick 'format': eFormatHex, 535061da546Spatrick 'slice': 'rdx[15:0]'}, 536061da546Spatrick {'name': 'di', 537061da546Spatrick 'set': 0, 538061da546Spatrick 'bitsize': 16, 539061da546Spatrick 'encoding': eEncodingUint, 540061da546Spatrick 'format': eFormatHex, 541061da546Spatrick 'slice': 'rdi[15:0]'}, 542061da546Spatrick {'name': 'si', 543061da546Spatrick 'set': 0, 544061da546Spatrick 'bitsize': 16, 545061da546Spatrick 'encoding': eEncodingUint, 546061da546Spatrick 'format': eFormatHex, 547061da546Spatrick 'slice': 'rsi[15:0]'}, 548061da546Spatrick {'name': 'bp', 549061da546Spatrick 'set': 0, 550061da546Spatrick 'bitsize': 16, 551061da546Spatrick 'encoding': eEncodingUint, 552061da546Spatrick 'format': eFormatHex, 553061da546Spatrick 'slice': 'rbp[15:0]'}, 554061da546Spatrick {'name': 'sp', 555061da546Spatrick 'set': 0, 556061da546Spatrick 'bitsize': 16, 557061da546Spatrick 'encoding': eEncodingUint, 558061da546Spatrick 'format': eFormatHex, 559061da546Spatrick 'slice': 'rsp[15:0]'}, 560061da546Spatrick {'name': 'r8w', 561061da546Spatrick 'set': 0, 562061da546Spatrick 'bitsize': 16, 563061da546Spatrick 'encoding': eEncodingUint, 564061da546Spatrick 'format': eFormatHex, 565061da546Spatrick 'slice': 'r8[15:0]'}, 566061da546Spatrick {'name': 'r9w', 567061da546Spatrick 'set': 0, 568061da546Spatrick 'bitsize': 16, 569061da546Spatrick 'encoding': eEncodingUint, 570061da546Spatrick 'format': eFormatHex, 571061da546Spatrick 'slice': 'r9[15:0]'}, 572061da546Spatrick {'name': 'r10w', 573061da546Spatrick 'set': 0, 574061da546Spatrick 'bitsize': 16, 575061da546Spatrick 'encoding': eEncodingUint, 576061da546Spatrick 'format': eFormatHex, 577061da546Spatrick 'slice': 'r10[15:0]'}, 578061da546Spatrick {'name': 'r11w', 579061da546Spatrick 'set': 0, 580061da546Spatrick 'bitsize': 16, 581061da546Spatrick 'encoding': eEncodingUint, 582061da546Spatrick 'format': eFormatHex, 583061da546Spatrick 'slice': 'r11[15:0]'}, 584061da546Spatrick {'name': 'r12w', 585061da546Spatrick 'set': 0, 586061da546Spatrick 'bitsize': 16, 587061da546Spatrick 'encoding': eEncodingUint, 588061da546Spatrick 'format': eFormatHex, 589061da546Spatrick 'slice': 'r12[15:0]'}, 590061da546Spatrick {'name': 'r13w', 591061da546Spatrick 'set': 0, 592061da546Spatrick 'bitsize': 16, 593061da546Spatrick 'encoding': eEncodingUint, 594061da546Spatrick 'format': eFormatHex, 595061da546Spatrick 'slice': 'r13[15:0]'}, 596061da546Spatrick {'name': 'r14w', 597061da546Spatrick 'set': 0, 598061da546Spatrick 'bitsize': 16, 599061da546Spatrick 'encoding': eEncodingUint, 600061da546Spatrick 'format': eFormatHex, 601061da546Spatrick 'slice': 'r14[15:0]'}, 602061da546Spatrick {'name': 'r15w', 603061da546Spatrick 'set': 0, 604061da546Spatrick 'bitsize': 16, 605061da546Spatrick 'encoding': eEncodingUint, 606061da546Spatrick 'format': eFormatHex, 607061da546Spatrick 'slice': 'r15[15:0]'}, 608061da546Spatrick 609061da546Spatrick {'name': 'ah', 610061da546Spatrick 'set': 0, 611061da546Spatrick 'bitsize': 8, 612061da546Spatrick 'encoding': eEncodingUint, 613061da546Spatrick 'format': eFormatHex, 614061da546Spatrick 'slice': 'rax[15:8]'}, 615061da546Spatrick {'name': 'bh', 616061da546Spatrick 'set': 0, 617061da546Spatrick 'bitsize': 8, 618061da546Spatrick 'encoding': eEncodingUint, 619061da546Spatrick 'format': eFormatHex, 620061da546Spatrick 'slice': 'rbx[15:8]'}, 621061da546Spatrick {'name': 'ch', 622061da546Spatrick 'set': 0, 623061da546Spatrick 'bitsize': 8, 624061da546Spatrick 'encoding': eEncodingUint, 625061da546Spatrick 'format': eFormatHex, 626061da546Spatrick 'slice': 'rcx[15:8]'}, 627061da546Spatrick {'name': 'dh', 628061da546Spatrick 'set': 0, 629061da546Spatrick 'bitsize': 8, 630061da546Spatrick 'encoding': eEncodingUint, 631061da546Spatrick 'format': eFormatHex, 632061da546Spatrick 'slice': 'rdx[15:8]'}, 633061da546Spatrick 634061da546Spatrick {'name': 'al', 635061da546Spatrick 'set': 0, 636061da546Spatrick 'bitsize': 8, 637061da546Spatrick 'encoding': eEncodingUint, 638061da546Spatrick 'format': eFormatHex, 639061da546Spatrick 'slice': 'rax[7:0]'}, 640061da546Spatrick {'name': 'bl', 641061da546Spatrick 'set': 0, 642061da546Spatrick 'bitsize': 8, 643061da546Spatrick 'encoding': eEncodingUint, 644061da546Spatrick 'format': eFormatHex, 645061da546Spatrick 'slice': 'rbx[7:0]'}, 646061da546Spatrick {'name': 'cl', 647061da546Spatrick 'set': 0, 648061da546Spatrick 'bitsize': 8, 649061da546Spatrick 'encoding': eEncodingUint, 650061da546Spatrick 'format': eFormatHex, 651061da546Spatrick 'slice': 'rcx[7:0]'}, 652061da546Spatrick {'name': 'dl', 653061da546Spatrick 'set': 0, 654061da546Spatrick 'bitsize': 8, 655061da546Spatrick 'encoding': eEncodingUint, 656061da546Spatrick 'format': eFormatHex, 657061da546Spatrick 'slice': 'rdx[7:0]'}, 658061da546Spatrick {'name': 'dil', 659061da546Spatrick 'set': 0, 660061da546Spatrick 'bitsize': 8, 661061da546Spatrick 'encoding': eEncodingUint, 662061da546Spatrick 'format': eFormatHex, 663061da546Spatrick 'slice': 'rdi[7:0]'}, 664061da546Spatrick {'name': 'sil', 665061da546Spatrick 'set': 0, 666061da546Spatrick 'bitsize': 8, 667061da546Spatrick 'encoding': eEncodingUint, 668061da546Spatrick 'format': eFormatHex, 669061da546Spatrick 'slice': 'rsi[7:0]'}, 670061da546Spatrick {'name': 'bpl', 671061da546Spatrick 'set': 0, 672061da546Spatrick 'bitsize': 8, 673061da546Spatrick 'encoding': eEncodingUint, 674061da546Spatrick 'format': eFormatHex, 675061da546Spatrick 'slice': 'rbp[7:0]'}, 676061da546Spatrick {'name': 'spl', 677061da546Spatrick 'set': 0, 678061da546Spatrick 'bitsize': 8, 679061da546Spatrick 'encoding': eEncodingUint, 680061da546Spatrick 'format': eFormatHex, 681061da546Spatrick 'slice': 'rsp[7:0]'}, 682061da546Spatrick {'name': 'r8l', 683061da546Spatrick 'set': 0, 684061da546Spatrick 'bitsize': 8, 685061da546Spatrick 'encoding': eEncodingUint, 686061da546Spatrick 'format': eFormatHex, 687061da546Spatrick 'slice': 'r8[7:0]'}, 688061da546Spatrick {'name': 'r9l', 689061da546Spatrick 'set': 0, 690061da546Spatrick 'bitsize': 8, 691061da546Spatrick 'encoding': eEncodingUint, 692061da546Spatrick 'format': eFormatHex, 693061da546Spatrick 'slice': 'r9[7:0]'}, 694061da546Spatrick {'name': 'r10l', 695061da546Spatrick 'set': 0, 696061da546Spatrick 'bitsize': 8, 697061da546Spatrick 'encoding': eEncodingUint, 698061da546Spatrick 'format': eFormatHex, 699061da546Spatrick 'slice': 'r10[7:0]'}, 700061da546Spatrick {'name': 'r11l', 701061da546Spatrick 'set': 0, 702061da546Spatrick 'bitsize': 8, 703061da546Spatrick 'encoding': eEncodingUint, 704061da546Spatrick 'format': eFormatHex, 705061da546Spatrick 'slice': 'r11[7:0]'}, 706061da546Spatrick {'name': 'r12l', 707061da546Spatrick 'set': 0, 708061da546Spatrick 'bitsize': 8, 709061da546Spatrick 'encoding': eEncodingUint, 710061da546Spatrick 'format': eFormatHex, 711061da546Spatrick 'slice': 'r12[7:0]'}, 712061da546Spatrick {'name': 'r13l', 713061da546Spatrick 'set': 0, 714061da546Spatrick 'bitsize': 8, 715061da546Spatrick 'encoding': eEncodingUint, 716061da546Spatrick 'format': eFormatHex, 717061da546Spatrick 'slice': 'r13[7:0]'}, 718061da546Spatrick {'name': 'r14l', 719061da546Spatrick 'set': 0, 720061da546Spatrick 'bitsize': 8, 721061da546Spatrick 'encoding': eEncodingUint, 722061da546Spatrick 'format': eFormatHex, 723061da546Spatrick 'slice': 'r14[7:0]'}, 724061da546Spatrick {'name': 'r15l', 725061da546Spatrick 'set': 0, 726061da546Spatrick 'bitsize': 8, 727061da546Spatrick 'encoding': eEncodingUint, 728061da546Spatrick 'format': eFormatHex, 729061da546Spatrick 'slice': 'r15[7:0]'}, 730061da546Spatrick] 731061da546Spatrick 732061da546Spatrickg_target_definition = None 733061da546Spatrick 734061da546Spatrick 735061da546Spatrickdef get_target_definition(): 736061da546Spatrick global g_target_definition 737061da546Spatrick if g_target_definition is None: 738061da546Spatrick g_target_definition = {} 739061da546Spatrick offset = 0 740061da546Spatrick for reg_info in x86_64_register_infos: 741061da546Spatrick reg_name = reg_info['name'] 742061da546Spatrick 743061da546Spatrick # Only fill in the offset if there is no 'slice' in the register 744061da546Spatrick # info 745061da546Spatrick if 'slice' not in reg_info and 'composite' not in reg_info: 746061da546Spatrick reg_info['offset'] = offset 747061da546Spatrick offset += reg_info['bitsize'] // 8 748061da546Spatrick 749061da546Spatrick # Set the GCC/DWARF register number for this register if it has one 750061da546Spatrick reg_num = get_reg_num(name_to_gcc_dwarf_regnum, reg_name) 751061da546Spatrick if reg_num != LLDB_INVALID_REGNUM: 752061da546Spatrick reg_info['gcc'] = reg_num 753061da546Spatrick reg_info['dwarf'] = reg_num 754061da546Spatrick 755061da546Spatrick # Set the generic register number for this register if it has one 756061da546Spatrick reg_num = get_reg_num(name_to_generic_regnum, reg_name) 757061da546Spatrick if reg_num != LLDB_INVALID_REGNUM: 758061da546Spatrick reg_info['generic'] = reg_num 759061da546Spatrick 760061da546Spatrick # Set the GDB register number for this register if it has one 761061da546Spatrick reg_num = get_reg_num(name_to_gdb_regnum, reg_name) 762061da546Spatrick if reg_num != LLDB_INVALID_REGNUM: 763061da546Spatrick reg_info['gdb'] = reg_num 764061da546Spatrick 765061da546Spatrick g_target_definition['sets'] = [ 766061da546Spatrick 'General Purpose Registers', 767061da546Spatrick 'Floating Point Registers'] 768061da546Spatrick g_target_definition['registers'] = x86_64_register_infos 769061da546Spatrick g_target_definition[ 770061da546Spatrick 'host-info'] = {'triple': 'x86_64-apple-macosx', 'endian': eByteOrderLittle} 771061da546Spatrick g_target_definition['g-packet-size'] = offset 772061da546Spatrick return g_target_definition 773061da546Spatrick 774061da546Spatrick 775061da546Spatrickdef get_dynamic_setting(target, setting_name): 776061da546Spatrick if setting_name == 'gdb-server-target-definition': 777061da546Spatrick return get_target_definition() 778