#!/usr/bin/python
#===-- x86_64_qemu_target_definition.py -----------------------------*- C++ -*-===//
#
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
#===----------------------------------------------------------------------===//

#----------------------------------------------------------------------
# DESCRIPTION
#
# This file can be used with the following setting:
#   plugin.process.gdb-remote.target-definition-file
# This setting should be used when you are trying to connect to a
# remote GDB server that doesn't support any of the register discovery
# packets that LLDB normally uses.
#
# Why is this necessary? LLDB doesn't require a new build of LLDB that
# targets each new architecture you will debug with. Instead, all
# architectures are supported and LLDB relies on extra GDB server
# packets to discover the target we are connecting to so that is can
# show the right registers for each target. This allows the remote stub
# to change and add new registers without requiring a new LLDB build
# just so we can see new registers.
#
# This file implements the x86_64 registers for the user mode qemu on linux.
# The only difference with the Linux file is the absense of orig_rax register.
#
# USAGE
#
# (lldb) settings set plugin.process.gdb-remote.target-definition-file /path/to/x86_64_qemu_target_definition.py
# (lldb) gdb-remote other.baz.com:1234
#
# The target definition file will get used if and only if the
# qRegisterInfo packets are not supported when connecting to a remote
# GDB stub.
#----------------------------------------------------------------------
from lldb import *

# Compiler and DWARF register numbers
name_to_gcc_dwarf_regnum = {
    'rax': 0,
    'rdx': 1,
    'rcx': 2,
    'rbx': 3,
    'rsi': 4,
    'rdi': 5,
    'rbp': 6,
    'rsp': 7,
    'r8': 8,
    'r9': 9,
    'r10': 10,
    'r11': 11,
    'r12': 12,
    'r13': 13,
    'r14': 14,
    'r15': 15,
    'rip': 16,
    'xmm0': 17,
    'xmm1': 18,
    'xmm2': 19,
    'xmm3': 20,
    'xmm4': 21,
    'xmm5': 22,
    'xmm6': 23,
    'xmm7': 24,
    'xmm8': 25,
    'xmm9': 26,
    'xmm10': 27,
    'xmm11': 28,
    'xmm12': 29,
    'xmm13': 30,
    'xmm14': 31,
    'xmm15': 32,
    'stmm0': 33,
    'stmm1': 34,
    'stmm2': 35,
    'stmm3': 36,
    'stmm4': 37,
    'stmm5': 38,
    'stmm6': 39,
    'stmm7': 30,
    'ymm0': 41,
    'ymm1': 42,
    'ymm2': 43,
    'ymm3': 44,
    'ymm4': 45,
    'ymm5': 46,
    'ymm6': 47,
    'ymm7': 48,
    'ymm8': 49,
    'ymm9': 40,
    'ymm10': 41,
    'ymm11': 42,
    'ymm12': 43,
    'ymm13': 44,
    'ymm14': 45,
    'ymm15': 46
}

name_to_gdb_regnum = {
    'rax': 0,
    'rbx': 1,
    'rcx': 2,
    'rdx': 3,
    'rsi': 4,
    'rdi': 5,
    'rbp': 6,
    'rsp': 7,
    'r8': 8,
    'r9': 9,
    'r10': 10,
    'r11': 11,
    'r12': 12,
    'r13': 13,
    'r14': 14,
    'r15': 15,
    'rip': 16,
    'rflags': 17,
    'cs': 18,
    'ss': 19,
    'ds': 20,
    'es': 21,
    'fs': 22,
    'gs': 23,
    'stmm0': 24,
    'stmm1': 25,
    'stmm2': 26,
    'stmm3': 27,
    'stmm4': 28,
    'stmm5': 29,
    'stmm6': 30,
    'stmm7': 31,
    'fctrl': 32,
    'fstat': 33,
    'ftag': 34,
    'fiseg': 35,
    'fioff': 36,
    'foseg': 37,
    'fooff': 38,
    'fop': 39,
    'xmm0': 40,
    'xmm1': 41,
    'xmm2': 42,
    'xmm3': 43,
    'xmm4': 44,
    'xmm5': 45,
    'xmm6': 46,
    'xmm7': 47,
    'xmm8': 48,
    'xmm9': 49,
    'xmm10': 50,
    'xmm11': 51,
    'xmm12': 52,
    'xmm13': 53,
    'xmm14': 54,
    'xmm15': 55,
    'mxcsr': 56,
    'ymm0': 57,
    'ymm1': 58,
    'ymm2': 59,
    'ymm3': 60,
    'ymm4': 61,
    'ymm5': 62,
    'ymm6': 63,
    'ymm7': 64,
    'ymm8': 65,
    'ymm9': 66,
    'ymm10': 67,
    'ymm11': 68,
    'ymm12': 69,
    'ymm13': 70,
    'ymm14': 71,
    'ymm15': 72
}

name_to_generic_regnum = {
    'rip': LLDB_REGNUM_GENERIC_PC,
    'rsp': LLDB_REGNUM_GENERIC_SP,
    'rbp': LLDB_REGNUM_GENERIC_FP,
    'rdi': LLDB_REGNUM_GENERIC_ARG1,
    'rsi': LLDB_REGNUM_GENERIC_ARG2,
    'rdx': LLDB_REGNUM_GENERIC_ARG3,
    'rcx': LLDB_REGNUM_GENERIC_ARG4,
    'r8': LLDB_REGNUM_GENERIC_ARG5,
    'r9': LLDB_REGNUM_GENERIC_ARG6
}


def get_reg_num(reg_num_dict, reg_name):
    if reg_name in reg_num_dict:
        return reg_num_dict[reg_name]
    return LLDB_INVALID_REGNUM

x86_64_register_infos = [
    {'name': 'rax',
     'set': 0,
     'bitsize': 64,
     'encoding': eEncodingUint,
     'format': eFormatAddressInfo},
    {'name': 'rbx',
     'set': 0,
     'bitsize': 64,
     'encoding': eEncodingUint,
     'format': eFormatAddressInfo},
    {'name': 'rcx', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
        'format': eFormatAddressInfo, 'alt-name': 'arg4'},
    {'name': 'rdx', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
        'format': eFormatAddressInfo, 'alt-name': 'arg3'},
    {'name': 'rsi', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
        'format': eFormatAddressInfo, 'alt-name': 'arg2'},
    {'name': 'rdi', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
        'format': eFormatAddressInfo, 'alt-name': 'arg1'},
    {'name': 'rbp', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
        'format': eFormatAddressInfo, 'alt-name': 'fp'},
    {'name': 'rsp', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
        'format': eFormatAddressInfo, 'alt-name': 'sp'},
    {'name': 'r8', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
        'format': eFormatAddressInfo, 'alt-name': 'arg5'},
    {'name': 'r9', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
        'format': eFormatAddressInfo, 'alt-name': 'arg6'},
    {'name': 'r10',
     'set': 0,
     'bitsize': 64,
     'encoding': eEncodingUint,
     'format': eFormatAddressInfo},
    {'name': 'r11',
     'set': 0,
     'bitsize': 64,
     'encoding': eEncodingUint,
     'format': eFormatAddressInfo},
    {'name': 'r12',
     'set': 0,
     'bitsize': 64,
     'encoding': eEncodingUint,
     'format': eFormatAddressInfo},
    {'name': 'r13',
     'set': 0,
     'bitsize': 64,
     'encoding': eEncodingUint,
     'format': eFormatAddressInfo},
    {'name': 'r14',
     'set': 0,
     'bitsize': 64,
     'encoding': eEncodingUint,
     'format': eFormatAddressInfo},
    {'name': 'r15',
     'set': 0,
     'bitsize': 64,
     'encoding': eEncodingUint,
     'format': eFormatAddressInfo},
    {'name': 'rip', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
        'format': eFormatAddressInfo, 'alt-name': 'pc'},
    {'name': 'rflags', 'set': 0, 'bitsize': 32,
        'encoding': eEncodingUint, 'format': eFormatHex},
    {'name': 'cs', 'set': 0, 'bitsize': 32,
        'encoding': eEncodingUint, 'format': eFormatHex},
    {'name': 'ss', 'set': 0, 'bitsize': 32,
        'encoding': eEncodingUint, 'format': eFormatHex},
    {'name': 'ds', 'set': 0, 'bitsize': 32,
        'encoding': eEncodingUint, 'format': eFormatHex},
    {'name': 'es', 'set': 0, 'bitsize': 32,
        'encoding': eEncodingUint, 'format': eFormatHex},
    {'name': 'fs', 'set': 0, 'bitsize': 32,
        'encoding': eEncodingUint, 'format': eFormatHex},
    {'name': 'gs', 'set': 0, 'bitsize': 32,
        'encoding': eEncodingUint, 'format': eFormatHex},
    {'name': 'stmm0',
     'set': 1,
     'bitsize': 80,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'stmm1',
     'set': 1,
     'bitsize': 80,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'stmm2',
     'set': 1,
     'bitsize': 80,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'stmm3',
     'set': 1,
     'bitsize': 80,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'stmm4',
     'set': 1,
     'bitsize': 80,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'stmm5',
     'set': 1,
     'bitsize': 80,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'stmm6',
     'set': 1,
     'bitsize': 80,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'stmm7',
     'set': 1,
     'bitsize': 80,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'fctrl', 'set': 1, 'bitsize': 32,
        'encoding': eEncodingUint, 'format': eFormatHex},
    {'name': 'fstat', 'set': 1, 'bitsize': 32,
        'encoding': eEncodingUint, 'format': eFormatHex},
    {'name': 'ftag', 'set': 1, 'bitsize': 32,
        'encoding': eEncodingUint, 'format': eFormatHex},
    {'name': 'fiseg', 'set': 1, 'bitsize': 32,
        'encoding': eEncodingUint, 'format': eFormatHex},
    {'name': 'fioff', 'set': 1, 'bitsize': 32,
        'encoding': eEncodingUint, 'format': eFormatHex},
    {'name': 'foseg', 'set': 1, 'bitsize': 32,
        'encoding': eEncodingUint, 'format': eFormatHex},
    {'name': 'fooff', 'set': 1, 'bitsize': 32,
        'encoding': eEncodingUint, 'format': eFormatHex},
    {'name': 'fop', 'set': 1, 'bitsize': 32,
        'encoding': eEncodingUint, 'format': eFormatHex},
    {'name': 'xmm0',
     'set': 1,
     'bitsize': 128,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'xmm1',
     'set': 1,
     'bitsize': 128,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'xmm2',
     'set': 1,
     'bitsize': 128,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'xmm3',
     'set': 1,
     'bitsize': 128,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'xmm4',
     'set': 1,
     'bitsize': 128,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'xmm5',
     'set': 1,
     'bitsize': 128,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'xmm6',
     'set': 1,
     'bitsize': 128,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'xmm7',
     'set': 1,
     'bitsize': 128,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'xmm8',
     'set': 1,
     'bitsize': 128,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'xmm9',
     'set': 1,
     'bitsize': 128,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'xmm10',
     'set': 1,
     'bitsize': 128,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'xmm11',
     'set': 1,
     'bitsize': 128,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'xmm12',
     'set': 1,
     'bitsize': 128,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'xmm13',
     'set': 1,
     'bitsize': 128,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'xmm14',
     'set': 1,
     'bitsize': 128,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'xmm15',
     'set': 1,
     'bitsize': 128,
     'encoding': eEncodingVector,
     'format': eFormatVectorOfUInt8},
    {'name': 'mxcsr', 'set': 1, 'bitsize': 32,
        'encoding': eEncodingUint, 'format': eFormatHex},
    # Registers that are contained in or composed of one of more other
    # registers
    {'name': 'eax',
     'set': 0,
     'bitsize': 32,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rax[31:0]'},
    {'name': 'ebx',
     'set': 0,
     'bitsize': 32,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rbx[31:0]'},
    {'name': 'ecx',
     'set': 0,
     'bitsize': 32,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rcx[31:0]'},
    {'name': 'edx',
     'set': 0,
     'bitsize': 32,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rdx[31:0]'},
    {'name': 'edi',
     'set': 0,
     'bitsize': 32,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rdi[31:0]'},
    {'name': 'esi',
     'set': 0,
     'bitsize': 32,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rsi[31:0]'},
    {'name': 'ebp',
     'set': 0,
     'bitsize': 32,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rbp[31:0]'},
    {'name': 'esp',
     'set': 0,
     'bitsize': 32,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rsp[31:0]'},
    {'name': 'r8d',
     'set': 0,
     'bitsize': 32,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r8[31:0]'},
    {'name': 'r9d',
     'set': 0,
     'bitsize': 32,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r9[31:0]'},
    {'name': 'r10d',
     'set': 0,
     'bitsize': 32,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r10[31:0]'},
    {'name': 'r11d',
     'set': 0,
     'bitsize': 32,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r11[31:0]'},
    {'name': 'r12d',
     'set': 0,
     'bitsize': 32,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r12[31:0]'},
    {'name': 'r13d',
     'set': 0,
     'bitsize': 32,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r13[31:0]'},
    {'name': 'r14d',
     'set': 0,
     'bitsize': 32,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r14[31:0]'},
    {'name': 'r15d',
     'set': 0,
     'bitsize': 32,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r15[31:0]'},

    {'name': 'ax',
     'set': 0,
     'bitsize': 16,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rax[15:0]'},
    {'name': 'bx',
     'set': 0,
     'bitsize': 16,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rbx[15:0]'},
    {'name': 'cx',
     'set': 0,
     'bitsize': 16,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rcx[15:0]'},
    {'name': 'dx',
     'set': 0,
     'bitsize': 16,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rdx[15:0]'},
    {'name': 'di',
     'set': 0,
     'bitsize': 16,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rdi[15:0]'},
    {'name': 'si',
     'set': 0,
     'bitsize': 16,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rsi[15:0]'},
    {'name': 'bp',
     'set': 0,
     'bitsize': 16,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rbp[15:0]'},
    {'name': 'sp',
     'set': 0,
     'bitsize': 16,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rsp[15:0]'},
    {'name': 'r8w',
     'set': 0,
     'bitsize': 16,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r8[15:0]'},
    {'name': 'r9w',
     'set': 0,
     'bitsize': 16,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r9[15:0]'},
    {'name': 'r10w',
     'set': 0,
     'bitsize': 16,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r10[15:0]'},
    {'name': 'r11w',
     'set': 0,
     'bitsize': 16,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r11[15:0]'},
    {'name': 'r12w',
     'set': 0,
     'bitsize': 16,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r12[15:0]'},
    {'name': 'r13w',
     'set': 0,
     'bitsize': 16,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r13[15:0]'},
    {'name': 'r14w',
     'set': 0,
     'bitsize': 16,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r14[15:0]'},
    {'name': 'r15w',
     'set': 0,
     'bitsize': 16,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r15[15:0]'},

    {'name': 'ah',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rax[15:8]'},
    {'name': 'bh',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rbx[15:8]'},
    {'name': 'ch',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rcx[15:8]'},
    {'name': 'dh',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rdx[15:8]'},

    {'name': 'al',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rax[7:0]'},
    {'name': 'bl',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rbx[7:0]'},
    {'name': 'cl',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rcx[7:0]'},
    {'name': 'dl',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rdx[7:0]'},
    {'name': 'dil',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rdi[7:0]'},
    {'name': 'sil',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rsi[7:0]'},
    {'name': 'bpl',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rbp[7:0]'},
    {'name': 'spl',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'rsp[7:0]'},
    {'name': 'r8l',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r8[7:0]'},
    {'name': 'r9l',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r9[7:0]'},
    {'name': 'r10l',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r10[7:0]'},
    {'name': 'r11l',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r11[7:0]'},
    {'name': 'r12l',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r12[7:0]'},
    {'name': 'r13l',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r13[7:0]'},
    {'name': 'r14l',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r14[7:0]'},
    {'name': 'r15l',
     'set': 0,
     'bitsize': 8,
     'encoding': eEncodingUint,
     'format': eFormatHex,
     'slice': 'r15[7:0]'},
]

g_target_definition = None


def get_target_definition():
    global g_target_definition
    if g_target_definition is None:
        g_target_definition = {}
        offset = 0
        for reg_info in x86_64_register_infos:
            reg_name = reg_info['name']

            # Only fill in the offset if there is no 'slice' in the register
            # info
            if 'slice' not in reg_info and 'composite' not in reg_info:
                reg_info['offset'] = offset
                offset += reg_info['bitsize'] // 8

            # Set the GCC/DWARF register number for this register if it has one
            reg_num = get_reg_num(name_to_gcc_dwarf_regnum, reg_name)
            if reg_num != LLDB_INVALID_REGNUM:
                reg_info['gcc'] = reg_num
                reg_info['dwarf'] = reg_num

            # Set the generic register number for this register if it has one
            reg_num = get_reg_num(name_to_generic_regnum, reg_name)
            if reg_num != LLDB_INVALID_REGNUM:
                reg_info['generic'] = reg_num

            # Set the GDB register number for this register if it has one
            reg_num = get_reg_num(name_to_gdb_regnum, reg_name)
            if reg_num != LLDB_INVALID_REGNUM:
                reg_info['gdb'] = reg_num

        g_target_definition['sets'] = [
            'General Purpose Registers',
            'Floating Point Registers']
        g_target_definition['registers'] = x86_64_register_infos
        g_target_definition[
            'host-info'] = {'triple': 'x86_64-*-linux', 'endian': eByteOrderLittle}
        g_target_definition['g-packet-size'] = offset
        g_target_definition['breakpoint-pc-offset'] = -1
    return g_target_definition


def get_dynamic_setting(target, setting_name):
    if setting_name == 'gdb-server-target-definition':
        return get_target_definition()
