1*be691f3bSpatrick#!/usr/bin/env python 2061da546Spatrick#===-- x86_64_linux_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_linux_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 196061da546Spatrickx86_64_register_infos = [ 197061da546Spatrick {'name': 'rax', 198061da546Spatrick 'set': 0, 199061da546Spatrick 'bitsize': 64, 200061da546Spatrick 'encoding': eEncodingUint, 201061da546Spatrick 'format': eFormatAddressInfo}, 202061da546Spatrick {'name': 'rbx', 203061da546Spatrick 'set': 0, 204061da546Spatrick 'bitsize': 64, 205061da546Spatrick 'encoding': eEncodingUint, 206061da546Spatrick 'format': eFormatAddressInfo}, 207061da546Spatrick {'name': 'rcx', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 208061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'arg4'}, 209061da546Spatrick {'name': 'rdx', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 210061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'arg3'}, 211061da546Spatrick {'name': 'rsi', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 212061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'arg2'}, 213061da546Spatrick {'name': 'rdi', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 214061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'arg1'}, 215061da546Spatrick {'name': 'rbp', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 216061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'fp'}, 217061da546Spatrick {'name': 'rsp', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 218061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'sp'}, 219061da546Spatrick {'name': 'r8', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 220061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'arg5'}, 221061da546Spatrick {'name': 'r9', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 222061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'arg6'}, 223061da546Spatrick {'name': 'r10', 224061da546Spatrick 'set': 0, 225061da546Spatrick 'bitsize': 64, 226061da546Spatrick 'encoding': eEncodingUint, 227061da546Spatrick 'format': eFormatAddressInfo}, 228061da546Spatrick {'name': 'r11', 229061da546Spatrick 'set': 0, 230061da546Spatrick 'bitsize': 64, 231061da546Spatrick 'encoding': eEncodingUint, 232061da546Spatrick 'format': eFormatAddressInfo}, 233061da546Spatrick {'name': 'r12', 234061da546Spatrick 'set': 0, 235061da546Spatrick 'bitsize': 64, 236061da546Spatrick 'encoding': eEncodingUint, 237061da546Spatrick 'format': eFormatAddressInfo}, 238061da546Spatrick {'name': 'r13', 239061da546Spatrick 'set': 0, 240061da546Spatrick 'bitsize': 64, 241061da546Spatrick 'encoding': eEncodingUint, 242061da546Spatrick 'format': eFormatAddressInfo}, 243061da546Spatrick {'name': 'r14', 244061da546Spatrick 'set': 0, 245061da546Spatrick 'bitsize': 64, 246061da546Spatrick 'encoding': eEncodingUint, 247061da546Spatrick 'format': eFormatAddressInfo}, 248061da546Spatrick {'name': 'r15', 249061da546Spatrick 'set': 0, 250061da546Spatrick 'bitsize': 64, 251061da546Spatrick 'encoding': eEncodingUint, 252061da546Spatrick 'format': eFormatAddressInfo}, 253061da546Spatrick {'name': 'rip', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint, 254061da546Spatrick 'format': eFormatAddressInfo, 'alt-name': 'pc'}, 255061da546Spatrick {'name': 'rflags', 'set': 0, 'bitsize': 32, 256061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 257061da546Spatrick {'name': 'cs', 'set': 0, 'bitsize': 32, 258061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 259061da546Spatrick {'name': 'ss', 'set': 0, 'bitsize': 32, 260061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 261061da546Spatrick {'name': 'ds', 'set': 0, 'bitsize': 32, 262061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 263061da546Spatrick {'name': 'es', 'set': 0, 'bitsize': 32, 264061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 265061da546Spatrick {'name': 'fs', 'set': 0, 'bitsize': 32, 266061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 267061da546Spatrick {'name': 'gs', 'set': 0, 'bitsize': 32, 268061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 269061da546Spatrick {'name': 'stmm0', 270061da546Spatrick 'set': 1, 271061da546Spatrick 'bitsize': 80, 272061da546Spatrick 'encoding': eEncodingVector, 273061da546Spatrick 'format': eFormatVectorOfUInt8}, 274061da546Spatrick {'name': 'stmm1', 275061da546Spatrick 'set': 1, 276061da546Spatrick 'bitsize': 80, 277061da546Spatrick 'encoding': eEncodingVector, 278061da546Spatrick 'format': eFormatVectorOfUInt8}, 279061da546Spatrick {'name': 'stmm2', 280061da546Spatrick 'set': 1, 281061da546Spatrick 'bitsize': 80, 282061da546Spatrick 'encoding': eEncodingVector, 283061da546Spatrick 'format': eFormatVectorOfUInt8}, 284061da546Spatrick {'name': 'stmm3', 285061da546Spatrick 'set': 1, 286061da546Spatrick 'bitsize': 80, 287061da546Spatrick 'encoding': eEncodingVector, 288061da546Spatrick 'format': eFormatVectorOfUInt8}, 289061da546Spatrick {'name': 'stmm4', 290061da546Spatrick 'set': 1, 291061da546Spatrick 'bitsize': 80, 292061da546Spatrick 'encoding': eEncodingVector, 293061da546Spatrick 'format': eFormatVectorOfUInt8}, 294061da546Spatrick {'name': 'stmm5', 295061da546Spatrick 'set': 1, 296061da546Spatrick 'bitsize': 80, 297061da546Spatrick 'encoding': eEncodingVector, 298061da546Spatrick 'format': eFormatVectorOfUInt8}, 299061da546Spatrick {'name': 'stmm6', 300061da546Spatrick 'set': 1, 301061da546Spatrick 'bitsize': 80, 302061da546Spatrick 'encoding': eEncodingVector, 303061da546Spatrick 'format': eFormatVectorOfUInt8}, 304061da546Spatrick {'name': 'stmm7', 305061da546Spatrick 'set': 1, 306061da546Spatrick 'bitsize': 80, 307061da546Spatrick 'encoding': eEncodingVector, 308061da546Spatrick 'format': eFormatVectorOfUInt8}, 309061da546Spatrick {'name': 'fctrl', 'set': 1, 'bitsize': 32, 310061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 311061da546Spatrick {'name': 'fstat', 'set': 1, 'bitsize': 32, 312061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 313061da546Spatrick {'name': 'ftag', 'set': 1, 'bitsize': 32, 314061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 315061da546Spatrick {'name': 'fiseg', 'set': 1, 'bitsize': 32, 316061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 317061da546Spatrick {'name': 'fioff', 'set': 1, 'bitsize': 32, 318061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 319061da546Spatrick {'name': 'foseg', 'set': 1, 'bitsize': 32, 320061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 321061da546Spatrick {'name': 'fooff', 'set': 1, 'bitsize': 32, 322061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 323061da546Spatrick {'name': 'fop', 'set': 1, 'bitsize': 32, 324061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 325061da546Spatrick {'name': 'xmm0', 326061da546Spatrick 'set': 1, 327061da546Spatrick 'bitsize': 128, 328061da546Spatrick 'encoding': eEncodingVector, 329061da546Spatrick 'format': eFormatVectorOfUInt8}, 330061da546Spatrick {'name': 'xmm1', 331061da546Spatrick 'set': 1, 332061da546Spatrick 'bitsize': 128, 333061da546Spatrick 'encoding': eEncodingVector, 334061da546Spatrick 'format': eFormatVectorOfUInt8}, 335061da546Spatrick {'name': 'xmm2', 336061da546Spatrick 'set': 1, 337061da546Spatrick 'bitsize': 128, 338061da546Spatrick 'encoding': eEncodingVector, 339061da546Spatrick 'format': eFormatVectorOfUInt8}, 340061da546Spatrick {'name': 'xmm3', 341061da546Spatrick 'set': 1, 342061da546Spatrick 'bitsize': 128, 343061da546Spatrick 'encoding': eEncodingVector, 344061da546Spatrick 'format': eFormatVectorOfUInt8}, 345061da546Spatrick {'name': 'xmm4', 346061da546Spatrick 'set': 1, 347061da546Spatrick 'bitsize': 128, 348061da546Spatrick 'encoding': eEncodingVector, 349061da546Spatrick 'format': eFormatVectorOfUInt8}, 350061da546Spatrick {'name': 'xmm5', 351061da546Spatrick 'set': 1, 352061da546Spatrick 'bitsize': 128, 353061da546Spatrick 'encoding': eEncodingVector, 354061da546Spatrick 'format': eFormatVectorOfUInt8}, 355061da546Spatrick {'name': 'xmm6', 356061da546Spatrick 'set': 1, 357061da546Spatrick 'bitsize': 128, 358061da546Spatrick 'encoding': eEncodingVector, 359061da546Spatrick 'format': eFormatVectorOfUInt8}, 360061da546Spatrick {'name': 'xmm7', 361061da546Spatrick 'set': 1, 362061da546Spatrick 'bitsize': 128, 363061da546Spatrick 'encoding': eEncodingVector, 364061da546Spatrick 'format': eFormatVectorOfUInt8}, 365061da546Spatrick {'name': 'xmm8', 366061da546Spatrick 'set': 1, 367061da546Spatrick 'bitsize': 128, 368061da546Spatrick 'encoding': eEncodingVector, 369061da546Spatrick 'format': eFormatVectorOfUInt8}, 370061da546Spatrick {'name': 'xmm9', 371061da546Spatrick 'set': 1, 372061da546Spatrick 'bitsize': 128, 373061da546Spatrick 'encoding': eEncodingVector, 374061da546Spatrick 'format': eFormatVectorOfUInt8}, 375061da546Spatrick {'name': 'xmm10', 376061da546Spatrick 'set': 1, 377061da546Spatrick 'bitsize': 128, 378061da546Spatrick 'encoding': eEncodingVector, 379061da546Spatrick 'format': eFormatVectorOfUInt8}, 380061da546Spatrick {'name': 'xmm11', 381061da546Spatrick 'set': 1, 382061da546Spatrick 'bitsize': 128, 383061da546Spatrick 'encoding': eEncodingVector, 384061da546Spatrick 'format': eFormatVectorOfUInt8}, 385061da546Spatrick {'name': 'xmm12', 386061da546Spatrick 'set': 1, 387061da546Spatrick 'bitsize': 128, 388061da546Spatrick 'encoding': eEncodingVector, 389061da546Spatrick 'format': eFormatVectorOfUInt8}, 390061da546Spatrick {'name': 'xmm13', 391061da546Spatrick 'set': 1, 392061da546Spatrick 'bitsize': 128, 393061da546Spatrick 'encoding': eEncodingVector, 394061da546Spatrick 'format': eFormatVectorOfUInt8}, 395061da546Spatrick {'name': 'xmm14', 396061da546Spatrick 'set': 1, 397061da546Spatrick 'bitsize': 128, 398061da546Spatrick 'encoding': eEncodingVector, 399061da546Spatrick 'format': eFormatVectorOfUInt8}, 400061da546Spatrick {'name': 'xmm15', 401061da546Spatrick 'set': 1, 402061da546Spatrick 'bitsize': 128, 403061da546Spatrick 'encoding': eEncodingVector, 404061da546Spatrick 'format': eFormatVectorOfUInt8}, 405061da546Spatrick {'name': 'mxcsr', 'set': 1, 'bitsize': 32, 406061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 407061da546Spatrick {'name': 'orig_rax', 'set': 1, 'bitsize': 64, 408061da546Spatrick 'encoding': eEncodingUint, 'format': eFormatHex}, 409061da546Spatrick # Registers that are contained in or composed of one of more other 410061da546Spatrick # registers 411061da546Spatrick {'name': 'eax', 412061da546Spatrick 'set': 0, 413061da546Spatrick 'bitsize': 32, 414061da546Spatrick 'encoding': eEncodingUint, 415061da546Spatrick 'format': eFormatHex, 416061da546Spatrick 'slice': 'rax[31:0]'}, 417061da546Spatrick {'name': 'ebx', 418061da546Spatrick 'set': 0, 419061da546Spatrick 'bitsize': 32, 420061da546Spatrick 'encoding': eEncodingUint, 421061da546Spatrick 'format': eFormatHex, 422061da546Spatrick 'slice': 'rbx[31:0]'}, 423061da546Spatrick {'name': 'ecx', 424061da546Spatrick 'set': 0, 425061da546Spatrick 'bitsize': 32, 426061da546Spatrick 'encoding': eEncodingUint, 427061da546Spatrick 'format': eFormatHex, 428061da546Spatrick 'slice': 'rcx[31:0]'}, 429061da546Spatrick {'name': 'edx', 430061da546Spatrick 'set': 0, 431061da546Spatrick 'bitsize': 32, 432061da546Spatrick 'encoding': eEncodingUint, 433061da546Spatrick 'format': eFormatHex, 434061da546Spatrick 'slice': 'rdx[31:0]'}, 435061da546Spatrick {'name': 'edi', 436061da546Spatrick 'set': 0, 437061da546Spatrick 'bitsize': 32, 438061da546Spatrick 'encoding': eEncodingUint, 439061da546Spatrick 'format': eFormatHex, 440061da546Spatrick 'slice': 'rdi[31:0]'}, 441061da546Spatrick {'name': 'esi', 442061da546Spatrick 'set': 0, 443061da546Spatrick 'bitsize': 32, 444061da546Spatrick 'encoding': eEncodingUint, 445061da546Spatrick 'format': eFormatHex, 446061da546Spatrick 'slice': 'rsi[31:0]'}, 447061da546Spatrick {'name': 'ebp', 448061da546Spatrick 'set': 0, 449061da546Spatrick 'bitsize': 32, 450061da546Spatrick 'encoding': eEncodingUint, 451061da546Spatrick 'format': eFormatHex, 452061da546Spatrick 'slice': 'rbp[31:0]'}, 453061da546Spatrick {'name': 'esp', 454061da546Spatrick 'set': 0, 455061da546Spatrick 'bitsize': 32, 456061da546Spatrick 'encoding': eEncodingUint, 457061da546Spatrick 'format': eFormatHex, 458061da546Spatrick 'slice': 'rsp[31:0]'}, 459061da546Spatrick {'name': 'r8d', 460061da546Spatrick 'set': 0, 461061da546Spatrick 'bitsize': 32, 462061da546Spatrick 'encoding': eEncodingUint, 463061da546Spatrick 'format': eFormatHex, 464061da546Spatrick 'slice': 'r8[31:0]'}, 465061da546Spatrick {'name': 'r9d', 466061da546Spatrick 'set': 0, 467061da546Spatrick 'bitsize': 32, 468061da546Spatrick 'encoding': eEncodingUint, 469061da546Spatrick 'format': eFormatHex, 470061da546Spatrick 'slice': 'r9[31:0]'}, 471061da546Spatrick {'name': 'r10d', 472061da546Spatrick 'set': 0, 473061da546Spatrick 'bitsize': 32, 474061da546Spatrick 'encoding': eEncodingUint, 475061da546Spatrick 'format': eFormatHex, 476061da546Spatrick 'slice': 'r10[31:0]'}, 477061da546Spatrick {'name': 'r11d', 478061da546Spatrick 'set': 0, 479061da546Spatrick 'bitsize': 32, 480061da546Spatrick 'encoding': eEncodingUint, 481061da546Spatrick 'format': eFormatHex, 482061da546Spatrick 'slice': 'r11[31:0]'}, 483061da546Spatrick {'name': 'r12d', 484061da546Spatrick 'set': 0, 485061da546Spatrick 'bitsize': 32, 486061da546Spatrick 'encoding': eEncodingUint, 487061da546Spatrick 'format': eFormatHex, 488061da546Spatrick 'slice': 'r12[31:0]'}, 489061da546Spatrick {'name': 'r13d', 490061da546Spatrick 'set': 0, 491061da546Spatrick 'bitsize': 32, 492061da546Spatrick 'encoding': eEncodingUint, 493061da546Spatrick 'format': eFormatHex, 494061da546Spatrick 'slice': 'r13[31:0]'}, 495061da546Spatrick {'name': 'r14d', 496061da546Spatrick 'set': 0, 497061da546Spatrick 'bitsize': 32, 498061da546Spatrick 'encoding': eEncodingUint, 499061da546Spatrick 'format': eFormatHex, 500061da546Spatrick 'slice': 'r14[31:0]'}, 501061da546Spatrick {'name': 'r15d', 502061da546Spatrick 'set': 0, 503061da546Spatrick 'bitsize': 32, 504061da546Spatrick 'encoding': eEncodingUint, 505061da546Spatrick 'format': eFormatHex, 506061da546Spatrick 'slice': 'r15[31:0]'}, 507061da546Spatrick 508061da546Spatrick {'name': 'ax', 509061da546Spatrick 'set': 0, 510061da546Spatrick 'bitsize': 16, 511061da546Spatrick 'encoding': eEncodingUint, 512061da546Spatrick 'format': eFormatHex, 513061da546Spatrick 'slice': 'rax[15:0]'}, 514061da546Spatrick {'name': 'bx', 515061da546Spatrick 'set': 0, 516061da546Spatrick 'bitsize': 16, 517061da546Spatrick 'encoding': eEncodingUint, 518061da546Spatrick 'format': eFormatHex, 519061da546Spatrick 'slice': 'rbx[15:0]'}, 520061da546Spatrick {'name': 'cx', 521061da546Spatrick 'set': 0, 522061da546Spatrick 'bitsize': 16, 523061da546Spatrick 'encoding': eEncodingUint, 524061da546Spatrick 'format': eFormatHex, 525061da546Spatrick 'slice': 'rcx[15:0]'}, 526061da546Spatrick {'name': 'dx', 527061da546Spatrick 'set': 0, 528061da546Spatrick 'bitsize': 16, 529061da546Spatrick 'encoding': eEncodingUint, 530061da546Spatrick 'format': eFormatHex, 531061da546Spatrick 'slice': 'rdx[15:0]'}, 532061da546Spatrick {'name': 'di', 533061da546Spatrick 'set': 0, 534061da546Spatrick 'bitsize': 16, 535061da546Spatrick 'encoding': eEncodingUint, 536061da546Spatrick 'format': eFormatHex, 537061da546Spatrick 'slice': 'rdi[15:0]'}, 538061da546Spatrick {'name': 'si', 539061da546Spatrick 'set': 0, 540061da546Spatrick 'bitsize': 16, 541061da546Spatrick 'encoding': eEncodingUint, 542061da546Spatrick 'format': eFormatHex, 543061da546Spatrick 'slice': 'rsi[15:0]'}, 544061da546Spatrick {'name': 'bp', 545061da546Spatrick 'set': 0, 546061da546Spatrick 'bitsize': 16, 547061da546Spatrick 'encoding': eEncodingUint, 548061da546Spatrick 'format': eFormatHex, 549061da546Spatrick 'slice': 'rbp[15:0]'}, 550061da546Spatrick {'name': 'sp', 551061da546Spatrick 'set': 0, 552061da546Spatrick 'bitsize': 16, 553061da546Spatrick 'encoding': eEncodingUint, 554061da546Spatrick 'format': eFormatHex, 555061da546Spatrick 'slice': 'rsp[15:0]'}, 556061da546Spatrick {'name': 'r8w', 557061da546Spatrick 'set': 0, 558061da546Spatrick 'bitsize': 16, 559061da546Spatrick 'encoding': eEncodingUint, 560061da546Spatrick 'format': eFormatHex, 561061da546Spatrick 'slice': 'r8[15:0]'}, 562061da546Spatrick {'name': 'r9w', 563061da546Spatrick 'set': 0, 564061da546Spatrick 'bitsize': 16, 565061da546Spatrick 'encoding': eEncodingUint, 566061da546Spatrick 'format': eFormatHex, 567061da546Spatrick 'slice': 'r9[15:0]'}, 568061da546Spatrick {'name': 'r10w', 569061da546Spatrick 'set': 0, 570061da546Spatrick 'bitsize': 16, 571061da546Spatrick 'encoding': eEncodingUint, 572061da546Spatrick 'format': eFormatHex, 573061da546Spatrick 'slice': 'r10[15:0]'}, 574061da546Spatrick {'name': 'r11w', 575061da546Spatrick 'set': 0, 576061da546Spatrick 'bitsize': 16, 577061da546Spatrick 'encoding': eEncodingUint, 578061da546Spatrick 'format': eFormatHex, 579061da546Spatrick 'slice': 'r11[15:0]'}, 580061da546Spatrick {'name': 'r12w', 581061da546Spatrick 'set': 0, 582061da546Spatrick 'bitsize': 16, 583061da546Spatrick 'encoding': eEncodingUint, 584061da546Spatrick 'format': eFormatHex, 585061da546Spatrick 'slice': 'r12[15:0]'}, 586061da546Spatrick {'name': 'r13w', 587061da546Spatrick 'set': 0, 588061da546Spatrick 'bitsize': 16, 589061da546Spatrick 'encoding': eEncodingUint, 590061da546Spatrick 'format': eFormatHex, 591061da546Spatrick 'slice': 'r13[15:0]'}, 592061da546Spatrick {'name': 'r14w', 593061da546Spatrick 'set': 0, 594061da546Spatrick 'bitsize': 16, 595061da546Spatrick 'encoding': eEncodingUint, 596061da546Spatrick 'format': eFormatHex, 597061da546Spatrick 'slice': 'r14[15:0]'}, 598061da546Spatrick {'name': 'r15w', 599061da546Spatrick 'set': 0, 600061da546Spatrick 'bitsize': 16, 601061da546Spatrick 'encoding': eEncodingUint, 602061da546Spatrick 'format': eFormatHex, 603061da546Spatrick 'slice': 'r15[15:0]'}, 604061da546Spatrick 605061da546Spatrick {'name': 'ah', 606061da546Spatrick 'set': 0, 607061da546Spatrick 'bitsize': 8, 608061da546Spatrick 'encoding': eEncodingUint, 609061da546Spatrick 'format': eFormatHex, 610061da546Spatrick 'slice': 'rax[15:8]'}, 611061da546Spatrick {'name': 'bh', 612061da546Spatrick 'set': 0, 613061da546Spatrick 'bitsize': 8, 614061da546Spatrick 'encoding': eEncodingUint, 615061da546Spatrick 'format': eFormatHex, 616061da546Spatrick 'slice': 'rbx[15:8]'}, 617061da546Spatrick {'name': 'ch', 618061da546Spatrick 'set': 0, 619061da546Spatrick 'bitsize': 8, 620061da546Spatrick 'encoding': eEncodingUint, 621061da546Spatrick 'format': eFormatHex, 622061da546Spatrick 'slice': 'rcx[15:8]'}, 623061da546Spatrick {'name': 'dh', 624061da546Spatrick 'set': 0, 625061da546Spatrick 'bitsize': 8, 626061da546Spatrick 'encoding': eEncodingUint, 627061da546Spatrick 'format': eFormatHex, 628061da546Spatrick 'slice': 'rdx[15:8]'}, 629061da546Spatrick 630061da546Spatrick {'name': 'al', 631061da546Spatrick 'set': 0, 632061da546Spatrick 'bitsize': 8, 633061da546Spatrick 'encoding': eEncodingUint, 634061da546Spatrick 'format': eFormatHex, 635061da546Spatrick 'slice': 'rax[7:0]'}, 636061da546Spatrick {'name': 'bl', 637061da546Spatrick 'set': 0, 638061da546Spatrick 'bitsize': 8, 639061da546Spatrick 'encoding': eEncodingUint, 640061da546Spatrick 'format': eFormatHex, 641061da546Spatrick 'slice': 'rbx[7:0]'}, 642061da546Spatrick {'name': 'cl', 643061da546Spatrick 'set': 0, 644061da546Spatrick 'bitsize': 8, 645061da546Spatrick 'encoding': eEncodingUint, 646061da546Spatrick 'format': eFormatHex, 647061da546Spatrick 'slice': 'rcx[7:0]'}, 648061da546Spatrick {'name': 'dl', 649061da546Spatrick 'set': 0, 650061da546Spatrick 'bitsize': 8, 651061da546Spatrick 'encoding': eEncodingUint, 652061da546Spatrick 'format': eFormatHex, 653061da546Spatrick 'slice': 'rdx[7:0]'}, 654061da546Spatrick {'name': 'dil', 655061da546Spatrick 'set': 0, 656061da546Spatrick 'bitsize': 8, 657061da546Spatrick 'encoding': eEncodingUint, 658061da546Spatrick 'format': eFormatHex, 659061da546Spatrick 'slice': 'rdi[7:0]'}, 660061da546Spatrick {'name': 'sil', 661061da546Spatrick 'set': 0, 662061da546Spatrick 'bitsize': 8, 663061da546Spatrick 'encoding': eEncodingUint, 664061da546Spatrick 'format': eFormatHex, 665061da546Spatrick 'slice': 'rsi[7:0]'}, 666061da546Spatrick {'name': 'bpl', 667061da546Spatrick 'set': 0, 668061da546Spatrick 'bitsize': 8, 669061da546Spatrick 'encoding': eEncodingUint, 670061da546Spatrick 'format': eFormatHex, 671061da546Spatrick 'slice': 'rbp[7:0]'}, 672061da546Spatrick {'name': 'spl', 673061da546Spatrick 'set': 0, 674061da546Spatrick 'bitsize': 8, 675061da546Spatrick 'encoding': eEncodingUint, 676061da546Spatrick 'format': eFormatHex, 677061da546Spatrick 'slice': 'rsp[7:0]'}, 678061da546Spatrick {'name': 'r8l', 679061da546Spatrick 'set': 0, 680061da546Spatrick 'bitsize': 8, 681061da546Spatrick 'encoding': eEncodingUint, 682061da546Spatrick 'format': eFormatHex, 683061da546Spatrick 'slice': 'r8[7:0]'}, 684061da546Spatrick {'name': 'r9l', 685061da546Spatrick 'set': 0, 686061da546Spatrick 'bitsize': 8, 687061da546Spatrick 'encoding': eEncodingUint, 688061da546Spatrick 'format': eFormatHex, 689061da546Spatrick 'slice': 'r9[7:0]'}, 690061da546Spatrick {'name': 'r10l', 691061da546Spatrick 'set': 0, 692061da546Spatrick 'bitsize': 8, 693061da546Spatrick 'encoding': eEncodingUint, 694061da546Spatrick 'format': eFormatHex, 695061da546Spatrick 'slice': 'r10[7:0]'}, 696061da546Spatrick {'name': 'r11l', 697061da546Spatrick 'set': 0, 698061da546Spatrick 'bitsize': 8, 699061da546Spatrick 'encoding': eEncodingUint, 700061da546Spatrick 'format': eFormatHex, 701061da546Spatrick 'slice': 'r11[7:0]'}, 702061da546Spatrick {'name': 'r12l', 703061da546Spatrick 'set': 0, 704061da546Spatrick 'bitsize': 8, 705061da546Spatrick 'encoding': eEncodingUint, 706061da546Spatrick 'format': eFormatHex, 707061da546Spatrick 'slice': 'r12[7:0]'}, 708061da546Spatrick {'name': 'r13l', 709061da546Spatrick 'set': 0, 710061da546Spatrick 'bitsize': 8, 711061da546Spatrick 'encoding': eEncodingUint, 712061da546Spatrick 'format': eFormatHex, 713061da546Spatrick 'slice': 'r13[7:0]'}, 714061da546Spatrick {'name': 'r14l', 715061da546Spatrick 'set': 0, 716061da546Spatrick 'bitsize': 8, 717061da546Spatrick 'encoding': eEncodingUint, 718061da546Spatrick 'format': eFormatHex, 719061da546Spatrick 'slice': 'r14[7:0]'}, 720061da546Spatrick {'name': 'r15l', 721061da546Spatrick 'set': 0, 722061da546Spatrick 'bitsize': 8, 723061da546Spatrick 'encoding': eEncodingUint, 724061da546Spatrick 'format': eFormatHex, 725061da546Spatrick 'slice': 'r15[7:0]'}, 726061da546Spatrick] 727061da546Spatrick 728061da546Spatrickg_target_definition = None 729061da546Spatrick 730061da546Spatrick 731061da546Spatrickdef get_target_definition(): 732061da546Spatrick global g_target_definition 733061da546Spatrick if g_target_definition is None: 734061da546Spatrick g_target_definition = {} 735061da546Spatrick offset = 0 736061da546Spatrick for reg_info in x86_64_register_infos: 737061da546Spatrick reg_name = reg_info['name'] 738061da546Spatrick 739061da546Spatrick # Only fill in the offset if there is no 'slice' in the register 740061da546Spatrick # info 741061da546Spatrick if 'slice' not in reg_info and 'composite' not in reg_info: 742061da546Spatrick reg_info['offset'] = offset 743061da546Spatrick offset += reg_info['bitsize'] // 8 744061da546Spatrick 745061da546Spatrick # Set the GCC/DWARF register number for this register if it has one 746061da546Spatrick reg_num = get_reg_num(name_to_gcc_dwarf_regnum, reg_name) 747061da546Spatrick if reg_num != LLDB_INVALID_REGNUM: 748061da546Spatrick reg_info['gcc'] = reg_num 749061da546Spatrick reg_info['dwarf'] = reg_num 750061da546Spatrick 751061da546Spatrick # Set the generic register number for this register if it has one 752061da546Spatrick reg_num = get_reg_num(name_to_generic_regnum, reg_name) 753061da546Spatrick if reg_num != LLDB_INVALID_REGNUM: 754061da546Spatrick reg_info['generic'] = reg_num 755061da546Spatrick 756061da546Spatrick # Set the GDB register number for this register if it has one 757061da546Spatrick reg_num = get_reg_num(name_to_gdb_regnum, reg_name) 758061da546Spatrick if reg_num != LLDB_INVALID_REGNUM: 759061da546Spatrick reg_info['gdb'] = reg_num 760061da546Spatrick 761061da546Spatrick g_target_definition['sets'] = [ 762061da546Spatrick 'General Purpose Registers', 763061da546Spatrick 'Floating Point Registers'] 764061da546Spatrick g_target_definition['registers'] = x86_64_register_infos 765061da546Spatrick g_target_definition[ 766061da546Spatrick 'host-info'] = {'triple': 'x86_64-*-linux', 'endian': eByteOrderLittle} 767061da546Spatrick g_target_definition['g-packet-size'] = offset 768061da546Spatrick g_target_definition['breakpoint-pc-offset'] = -1 769061da546Spatrick return g_target_definition 770061da546Spatrick 771061da546Spatrick 772061da546Spatrickdef get_dynamic_setting(target, setting_name): 773061da546Spatrick if setting_name == 'gdb-server-target-definition': 774061da546Spatrick return get_target_definition() 775