[AArch64] Fix SDNode type mismatches between *.td files and ISel (#116523)
[llvm-project.git] / lldb / examples / python / x86_64_qemu_target_definition.py
blob75a8000033181c84d727e6aafbc3daf49855987c
1 #!/usr/bin/env python
2 # ===-- x86_64_qemu_target_definition.py -----------------------------*- C++ -*-===//
4 # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 # See https://llvm.org/LICENSE.txt for license information.
6 # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8 # ===----------------------------------------------------------------------===//
10 # ----------------------------------------------------------------------
11 # DESCRIPTION
13 # This file can be used with the following setting:
14 # plugin.process.gdb-remote.target-definition-file
15 # This setting should be used when you are trying to connect to a
16 # remote GDB server that doesn't support any of the register discovery
17 # packets that LLDB normally uses.
19 # Why is this necessary? LLDB doesn't require a new build of LLDB that
20 # targets each new architecture you will debug with. Instead, all
21 # architectures are supported and LLDB relies on extra GDB server
22 # packets to discover the target we are connecting to so that is can
23 # show the right registers for each target. This allows the remote stub
24 # to change and add new registers without requiring a new LLDB build
25 # just so we can see new registers.
27 # This file implements the x86_64 registers for the user mode qemu on linux.
28 # The only difference with the Linux file is the absense of orig_rax register.
30 # USAGE
32 # (lldb) settings set plugin.process.gdb-remote.target-definition-file /path/to/x86_64_qemu_target_definition.py
33 # (lldb) gdb-remote other.baz.com:1234
35 # The target definition file will get used if and only if the
36 # qRegisterInfo packets are not supported when connecting to a remote
37 # GDB stub.
38 # ----------------------------------------------------------------------
39 from lldb import *
41 # Compiler and DWARF register numbers
42 name_to_gcc_dwarf_regnum = {
43 "rax": 0,
44 "rdx": 1,
45 "rcx": 2,
46 "rbx": 3,
47 "rsi": 4,
48 "rdi": 5,
49 "rbp": 6,
50 "rsp": 7,
51 "r8": 8,
52 "r9": 9,
53 "r10": 10,
54 "r11": 11,
55 "r12": 12,
56 "r13": 13,
57 "r14": 14,
58 "r15": 15,
59 "rip": 16,
60 "xmm0": 17,
61 "xmm1": 18,
62 "xmm2": 19,
63 "xmm3": 20,
64 "xmm4": 21,
65 "xmm5": 22,
66 "xmm6": 23,
67 "xmm7": 24,
68 "xmm8": 25,
69 "xmm9": 26,
70 "xmm10": 27,
71 "xmm11": 28,
72 "xmm12": 29,
73 "xmm13": 30,
74 "xmm14": 31,
75 "xmm15": 32,
76 "stmm0": 33,
77 "stmm1": 34,
78 "stmm2": 35,
79 "stmm3": 36,
80 "stmm4": 37,
81 "stmm5": 38,
82 "stmm6": 39,
83 "stmm7": 30,
84 "ymm0": 41,
85 "ymm1": 42,
86 "ymm2": 43,
87 "ymm3": 44,
88 "ymm4": 45,
89 "ymm5": 46,
90 "ymm6": 47,
91 "ymm7": 48,
92 "ymm8": 49,
93 "ymm9": 40,
94 "ymm10": 41,
95 "ymm11": 42,
96 "ymm12": 43,
97 "ymm13": 44,
98 "ymm14": 45,
99 "ymm15": 46,
102 name_to_gdb_regnum = {
103 "rax": 0,
104 "rbx": 1,
105 "rcx": 2,
106 "rdx": 3,
107 "rsi": 4,
108 "rdi": 5,
109 "rbp": 6,
110 "rsp": 7,
111 "r8": 8,
112 "r9": 9,
113 "r10": 10,
114 "r11": 11,
115 "r12": 12,
116 "r13": 13,
117 "r14": 14,
118 "r15": 15,
119 "rip": 16,
120 "rflags": 17,
121 "cs": 18,
122 "ss": 19,
123 "ds": 20,
124 "es": 21,
125 "fs": 22,
126 "gs": 23,
127 "stmm0": 24,
128 "stmm1": 25,
129 "stmm2": 26,
130 "stmm3": 27,
131 "stmm4": 28,
132 "stmm5": 29,
133 "stmm6": 30,
134 "stmm7": 31,
135 "fctrl": 32,
136 "fstat": 33,
137 "ftag": 34,
138 "fiseg": 35,
139 "fioff": 36,
140 "foseg": 37,
141 "fooff": 38,
142 "fop": 39,
143 "xmm0": 40,
144 "xmm1": 41,
145 "xmm2": 42,
146 "xmm3": 43,
147 "xmm4": 44,
148 "xmm5": 45,
149 "xmm6": 46,
150 "xmm7": 47,
151 "xmm8": 48,
152 "xmm9": 49,
153 "xmm10": 50,
154 "xmm11": 51,
155 "xmm12": 52,
156 "xmm13": 53,
157 "xmm14": 54,
158 "xmm15": 55,
159 "mxcsr": 56,
160 "ymm0": 57,
161 "ymm1": 58,
162 "ymm2": 59,
163 "ymm3": 60,
164 "ymm4": 61,
165 "ymm5": 62,
166 "ymm6": 63,
167 "ymm7": 64,
168 "ymm8": 65,
169 "ymm9": 66,
170 "ymm10": 67,
171 "ymm11": 68,
172 "ymm12": 69,
173 "ymm13": 70,
174 "ymm14": 71,
175 "ymm15": 72,
178 name_to_generic_regnum = {
179 "rip": LLDB_REGNUM_GENERIC_PC,
180 "rsp": LLDB_REGNUM_GENERIC_SP,
181 "rbp": LLDB_REGNUM_GENERIC_FP,
182 "rdi": LLDB_REGNUM_GENERIC_ARG1,
183 "rsi": LLDB_REGNUM_GENERIC_ARG2,
184 "rdx": LLDB_REGNUM_GENERIC_ARG3,
185 "rcx": LLDB_REGNUM_GENERIC_ARG4,
186 "r8": LLDB_REGNUM_GENERIC_ARG5,
187 "r9": LLDB_REGNUM_GENERIC_ARG6,
191 def get_reg_num(reg_num_dict, reg_name):
192 if reg_name in reg_num_dict:
193 return reg_num_dict[reg_name]
194 return LLDB_INVALID_REGNUM
197 x86_64_register_infos = [
199 "name": "rax",
200 "set": 0,
201 "bitsize": 64,
202 "encoding": eEncodingUint,
203 "format": eFormatAddressInfo,
206 "name": "rbx",
207 "set": 0,
208 "bitsize": 64,
209 "encoding": eEncodingUint,
210 "format": eFormatAddressInfo,
213 "name": "rcx",
214 "set": 0,
215 "bitsize": 64,
216 "encoding": eEncodingUint,
217 "format": eFormatAddressInfo,
218 "alt-name": "arg4",
221 "name": "rdx",
222 "set": 0,
223 "bitsize": 64,
224 "encoding": eEncodingUint,
225 "format": eFormatAddressInfo,
226 "alt-name": "arg3",
229 "name": "rsi",
230 "set": 0,
231 "bitsize": 64,
232 "encoding": eEncodingUint,
233 "format": eFormatAddressInfo,
234 "alt-name": "arg2",
237 "name": "rdi",
238 "set": 0,
239 "bitsize": 64,
240 "encoding": eEncodingUint,
241 "format": eFormatAddressInfo,
242 "alt-name": "arg1",
245 "name": "rbp",
246 "set": 0,
247 "bitsize": 64,
248 "encoding": eEncodingUint,
249 "format": eFormatAddressInfo,
250 "alt-name": "fp",
253 "name": "rsp",
254 "set": 0,
255 "bitsize": 64,
256 "encoding": eEncodingUint,
257 "format": eFormatAddressInfo,
258 "alt-name": "sp",
261 "name": "r8",
262 "set": 0,
263 "bitsize": 64,
264 "encoding": eEncodingUint,
265 "format": eFormatAddressInfo,
266 "alt-name": "arg5",
269 "name": "r9",
270 "set": 0,
271 "bitsize": 64,
272 "encoding": eEncodingUint,
273 "format": eFormatAddressInfo,
274 "alt-name": "arg6",
277 "name": "r10",
278 "set": 0,
279 "bitsize": 64,
280 "encoding": eEncodingUint,
281 "format": eFormatAddressInfo,
284 "name": "r11",
285 "set": 0,
286 "bitsize": 64,
287 "encoding": eEncodingUint,
288 "format": eFormatAddressInfo,
291 "name": "r12",
292 "set": 0,
293 "bitsize": 64,
294 "encoding": eEncodingUint,
295 "format": eFormatAddressInfo,
298 "name": "r13",
299 "set": 0,
300 "bitsize": 64,
301 "encoding": eEncodingUint,
302 "format": eFormatAddressInfo,
305 "name": "r14",
306 "set": 0,
307 "bitsize": 64,
308 "encoding": eEncodingUint,
309 "format": eFormatAddressInfo,
312 "name": "r15",
313 "set": 0,
314 "bitsize": 64,
315 "encoding": eEncodingUint,
316 "format": eFormatAddressInfo,
319 "name": "rip",
320 "set": 0,
321 "bitsize": 64,
322 "encoding": eEncodingUint,
323 "format": eFormatAddressInfo,
324 "alt-name": "pc",
327 "name": "rflags",
328 "set": 0,
329 "bitsize": 32,
330 "encoding": eEncodingUint,
331 "format": eFormatHex,
334 "name": "cs",
335 "set": 0,
336 "bitsize": 32,
337 "encoding": eEncodingUint,
338 "format": eFormatHex,
341 "name": "ss",
342 "set": 0,
343 "bitsize": 32,
344 "encoding": eEncodingUint,
345 "format": eFormatHex,
348 "name": "ds",
349 "set": 0,
350 "bitsize": 32,
351 "encoding": eEncodingUint,
352 "format": eFormatHex,
355 "name": "es",
356 "set": 0,
357 "bitsize": 32,
358 "encoding": eEncodingUint,
359 "format": eFormatHex,
362 "name": "fs",
363 "set": 0,
364 "bitsize": 32,
365 "encoding": eEncodingUint,
366 "format": eFormatHex,
369 "name": "gs",
370 "set": 0,
371 "bitsize": 32,
372 "encoding": eEncodingUint,
373 "format": eFormatHex,
376 "name": "stmm0",
377 "set": 1,
378 "bitsize": 80,
379 "encoding": eEncodingVector,
380 "format": eFormatVectorOfUInt8,
383 "name": "stmm1",
384 "set": 1,
385 "bitsize": 80,
386 "encoding": eEncodingVector,
387 "format": eFormatVectorOfUInt8,
390 "name": "stmm2",
391 "set": 1,
392 "bitsize": 80,
393 "encoding": eEncodingVector,
394 "format": eFormatVectorOfUInt8,
397 "name": "stmm3",
398 "set": 1,
399 "bitsize": 80,
400 "encoding": eEncodingVector,
401 "format": eFormatVectorOfUInt8,
404 "name": "stmm4",
405 "set": 1,
406 "bitsize": 80,
407 "encoding": eEncodingVector,
408 "format": eFormatVectorOfUInt8,
411 "name": "stmm5",
412 "set": 1,
413 "bitsize": 80,
414 "encoding": eEncodingVector,
415 "format": eFormatVectorOfUInt8,
418 "name": "stmm6",
419 "set": 1,
420 "bitsize": 80,
421 "encoding": eEncodingVector,
422 "format": eFormatVectorOfUInt8,
425 "name": "stmm7",
426 "set": 1,
427 "bitsize": 80,
428 "encoding": eEncodingVector,
429 "format": eFormatVectorOfUInt8,
432 "name": "fctrl",
433 "set": 1,
434 "bitsize": 32,
435 "encoding": eEncodingUint,
436 "format": eFormatHex,
439 "name": "fstat",
440 "set": 1,
441 "bitsize": 32,
442 "encoding": eEncodingUint,
443 "format": eFormatHex,
446 "name": "ftag",
447 "set": 1,
448 "bitsize": 32,
449 "encoding": eEncodingUint,
450 "format": eFormatHex,
453 "name": "fiseg",
454 "set": 1,
455 "bitsize": 32,
456 "encoding": eEncodingUint,
457 "format": eFormatHex,
460 "name": "fioff",
461 "set": 1,
462 "bitsize": 32,
463 "encoding": eEncodingUint,
464 "format": eFormatHex,
467 "name": "foseg",
468 "set": 1,
469 "bitsize": 32,
470 "encoding": eEncodingUint,
471 "format": eFormatHex,
474 "name": "fooff",
475 "set": 1,
476 "bitsize": 32,
477 "encoding": eEncodingUint,
478 "format": eFormatHex,
481 "name": "fop",
482 "set": 1,
483 "bitsize": 32,
484 "encoding": eEncodingUint,
485 "format": eFormatHex,
488 "name": "xmm0",
489 "set": 1,
490 "bitsize": 128,
491 "encoding": eEncodingVector,
492 "format": eFormatVectorOfUInt8,
495 "name": "xmm1",
496 "set": 1,
497 "bitsize": 128,
498 "encoding": eEncodingVector,
499 "format": eFormatVectorOfUInt8,
502 "name": "xmm2",
503 "set": 1,
504 "bitsize": 128,
505 "encoding": eEncodingVector,
506 "format": eFormatVectorOfUInt8,
509 "name": "xmm3",
510 "set": 1,
511 "bitsize": 128,
512 "encoding": eEncodingVector,
513 "format": eFormatVectorOfUInt8,
516 "name": "xmm4",
517 "set": 1,
518 "bitsize": 128,
519 "encoding": eEncodingVector,
520 "format": eFormatVectorOfUInt8,
523 "name": "xmm5",
524 "set": 1,
525 "bitsize": 128,
526 "encoding": eEncodingVector,
527 "format": eFormatVectorOfUInt8,
530 "name": "xmm6",
531 "set": 1,
532 "bitsize": 128,
533 "encoding": eEncodingVector,
534 "format": eFormatVectorOfUInt8,
537 "name": "xmm7",
538 "set": 1,
539 "bitsize": 128,
540 "encoding": eEncodingVector,
541 "format": eFormatVectorOfUInt8,
544 "name": "xmm8",
545 "set": 1,
546 "bitsize": 128,
547 "encoding": eEncodingVector,
548 "format": eFormatVectorOfUInt8,
551 "name": "xmm9",
552 "set": 1,
553 "bitsize": 128,
554 "encoding": eEncodingVector,
555 "format": eFormatVectorOfUInt8,
558 "name": "xmm10",
559 "set": 1,
560 "bitsize": 128,
561 "encoding": eEncodingVector,
562 "format": eFormatVectorOfUInt8,
565 "name": "xmm11",
566 "set": 1,
567 "bitsize": 128,
568 "encoding": eEncodingVector,
569 "format": eFormatVectorOfUInt8,
572 "name": "xmm12",
573 "set": 1,
574 "bitsize": 128,
575 "encoding": eEncodingVector,
576 "format": eFormatVectorOfUInt8,
579 "name": "xmm13",
580 "set": 1,
581 "bitsize": 128,
582 "encoding": eEncodingVector,
583 "format": eFormatVectorOfUInt8,
586 "name": "xmm14",
587 "set": 1,
588 "bitsize": 128,
589 "encoding": eEncodingVector,
590 "format": eFormatVectorOfUInt8,
593 "name": "xmm15",
594 "set": 1,
595 "bitsize": 128,
596 "encoding": eEncodingVector,
597 "format": eFormatVectorOfUInt8,
600 "name": "mxcsr",
601 "set": 1,
602 "bitsize": 32,
603 "encoding": eEncodingUint,
604 "format": eFormatHex,
606 # Registers that are contained in or composed of one of more other
607 # registers
609 "name": "eax",
610 "set": 0,
611 "bitsize": 32,
612 "encoding": eEncodingUint,
613 "format": eFormatHex,
614 "slice": "rax[31:0]",
617 "name": "ebx",
618 "set": 0,
619 "bitsize": 32,
620 "encoding": eEncodingUint,
621 "format": eFormatHex,
622 "slice": "rbx[31:0]",
625 "name": "ecx",
626 "set": 0,
627 "bitsize": 32,
628 "encoding": eEncodingUint,
629 "format": eFormatHex,
630 "slice": "rcx[31:0]",
633 "name": "edx",
634 "set": 0,
635 "bitsize": 32,
636 "encoding": eEncodingUint,
637 "format": eFormatHex,
638 "slice": "rdx[31:0]",
641 "name": "edi",
642 "set": 0,
643 "bitsize": 32,
644 "encoding": eEncodingUint,
645 "format": eFormatHex,
646 "slice": "rdi[31:0]",
649 "name": "esi",
650 "set": 0,
651 "bitsize": 32,
652 "encoding": eEncodingUint,
653 "format": eFormatHex,
654 "slice": "rsi[31:0]",
657 "name": "ebp",
658 "set": 0,
659 "bitsize": 32,
660 "encoding": eEncodingUint,
661 "format": eFormatHex,
662 "slice": "rbp[31:0]",
665 "name": "esp",
666 "set": 0,
667 "bitsize": 32,
668 "encoding": eEncodingUint,
669 "format": eFormatHex,
670 "slice": "rsp[31:0]",
673 "name": "r8d",
674 "set": 0,
675 "bitsize": 32,
676 "encoding": eEncodingUint,
677 "format": eFormatHex,
678 "slice": "r8[31:0]",
681 "name": "r9d",
682 "set": 0,
683 "bitsize": 32,
684 "encoding": eEncodingUint,
685 "format": eFormatHex,
686 "slice": "r9[31:0]",
689 "name": "r10d",
690 "set": 0,
691 "bitsize": 32,
692 "encoding": eEncodingUint,
693 "format": eFormatHex,
694 "slice": "r10[31:0]",
697 "name": "r11d",
698 "set": 0,
699 "bitsize": 32,
700 "encoding": eEncodingUint,
701 "format": eFormatHex,
702 "slice": "r11[31:0]",
705 "name": "r12d",
706 "set": 0,
707 "bitsize": 32,
708 "encoding": eEncodingUint,
709 "format": eFormatHex,
710 "slice": "r12[31:0]",
713 "name": "r13d",
714 "set": 0,
715 "bitsize": 32,
716 "encoding": eEncodingUint,
717 "format": eFormatHex,
718 "slice": "r13[31:0]",
721 "name": "r14d",
722 "set": 0,
723 "bitsize": 32,
724 "encoding": eEncodingUint,
725 "format": eFormatHex,
726 "slice": "r14[31:0]",
729 "name": "r15d",
730 "set": 0,
731 "bitsize": 32,
732 "encoding": eEncodingUint,
733 "format": eFormatHex,
734 "slice": "r15[31:0]",
737 "name": "ax",
738 "set": 0,
739 "bitsize": 16,
740 "encoding": eEncodingUint,
741 "format": eFormatHex,
742 "slice": "rax[15:0]",
745 "name": "bx",
746 "set": 0,
747 "bitsize": 16,
748 "encoding": eEncodingUint,
749 "format": eFormatHex,
750 "slice": "rbx[15:0]",
753 "name": "cx",
754 "set": 0,
755 "bitsize": 16,
756 "encoding": eEncodingUint,
757 "format": eFormatHex,
758 "slice": "rcx[15:0]",
761 "name": "dx",
762 "set": 0,
763 "bitsize": 16,
764 "encoding": eEncodingUint,
765 "format": eFormatHex,
766 "slice": "rdx[15:0]",
769 "name": "di",
770 "set": 0,
771 "bitsize": 16,
772 "encoding": eEncodingUint,
773 "format": eFormatHex,
774 "slice": "rdi[15:0]",
777 "name": "si",
778 "set": 0,
779 "bitsize": 16,
780 "encoding": eEncodingUint,
781 "format": eFormatHex,
782 "slice": "rsi[15:0]",
785 "name": "bp",
786 "set": 0,
787 "bitsize": 16,
788 "encoding": eEncodingUint,
789 "format": eFormatHex,
790 "slice": "rbp[15:0]",
793 "name": "sp",
794 "set": 0,
795 "bitsize": 16,
796 "encoding": eEncodingUint,
797 "format": eFormatHex,
798 "slice": "rsp[15:0]",
801 "name": "r8w",
802 "set": 0,
803 "bitsize": 16,
804 "encoding": eEncodingUint,
805 "format": eFormatHex,
806 "slice": "r8[15:0]",
809 "name": "r9w",
810 "set": 0,
811 "bitsize": 16,
812 "encoding": eEncodingUint,
813 "format": eFormatHex,
814 "slice": "r9[15:0]",
817 "name": "r10w",
818 "set": 0,
819 "bitsize": 16,
820 "encoding": eEncodingUint,
821 "format": eFormatHex,
822 "slice": "r10[15:0]",
825 "name": "r11w",
826 "set": 0,
827 "bitsize": 16,
828 "encoding": eEncodingUint,
829 "format": eFormatHex,
830 "slice": "r11[15:0]",
833 "name": "r12w",
834 "set": 0,
835 "bitsize": 16,
836 "encoding": eEncodingUint,
837 "format": eFormatHex,
838 "slice": "r12[15:0]",
841 "name": "r13w",
842 "set": 0,
843 "bitsize": 16,
844 "encoding": eEncodingUint,
845 "format": eFormatHex,
846 "slice": "r13[15:0]",
849 "name": "r14w",
850 "set": 0,
851 "bitsize": 16,
852 "encoding": eEncodingUint,
853 "format": eFormatHex,
854 "slice": "r14[15:0]",
857 "name": "r15w",
858 "set": 0,
859 "bitsize": 16,
860 "encoding": eEncodingUint,
861 "format": eFormatHex,
862 "slice": "r15[15:0]",
865 "name": "ah",
866 "set": 0,
867 "bitsize": 8,
868 "encoding": eEncodingUint,
869 "format": eFormatHex,
870 "slice": "rax[15:8]",
873 "name": "bh",
874 "set": 0,
875 "bitsize": 8,
876 "encoding": eEncodingUint,
877 "format": eFormatHex,
878 "slice": "rbx[15:8]",
881 "name": "ch",
882 "set": 0,
883 "bitsize": 8,
884 "encoding": eEncodingUint,
885 "format": eFormatHex,
886 "slice": "rcx[15:8]",
889 "name": "dh",
890 "set": 0,
891 "bitsize": 8,
892 "encoding": eEncodingUint,
893 "format": eFormatHex,
894 "slice": "rdx[15:8]",
897 "name": "al",
898 "set": 0,
899 "bitsize": 8,
900 "encoding": eEncodingUint,
901 "format": eFormatHex,
902 "slice": "rax[7:0]",
905 "name": "bl",
906 "set": 0,
907 "bitsize": 8,
908 "encoding": eEncodingUint,
909 "format": eFormatHex,
910 "slice": "rbx[7:0]",
913 "name": "cl",
914 "set": 0,
915 "bitsize": 8,
916 "encoding": eEncodingUint,
917 "format": eFormatHex,
918 "slice": "rcx[7:0]",
921 "name": "dl",
922 "set": 0,
923 "bitsize": 8,
924 "encoding": eEncodingUint,
925 "format": eFormatHex,
926 "slice": "rdx[7:0]",
929 "name": "dil",
930 "set": 0,
931 "bitsize": 8,
932 "encoding": eEncodingUint,
933 "format": eFormatHex,
934 "slice": "rdi[7:0]",
937 "name": "sil",
938 "set": 0,
939 "bitsize": 8,
940 "encoding": eEncodingUint,
941 "format": eFormatHex,
942 "slice": "rsi[7:0]",
945 "name": "bpl",
946 "set": 0,
947 "bitsize": 8,
948 "encoding": eEncodingUint,
949 "format": eFormatHex,
950 "slice": "rbp[7:0]",
953 "name": "spl",
954 "set": 0,
955 "bitsize": 8,
956 "encoding": eEncodingUint,
957 "format": eFormatHex,
958 "slice": "rsp[7:0]",
961 "name": "r8l",
962 "set": 0,
963 "bitsize": 8,
964 "encoding": eEncodingUint,
965 "format": eFormatHex,
966 "slice": "r8[7:0]",
969 "name": "r9l",
970 "set": 0,
971 "bitsize": 8,
972 "encoding": eEncodingUint,
973 "format": eFormatHex,
974 "slice": "r9[7:0]",
977 "name": "r10l",
978 "set": 0,
979 "bitsize": 8,
980 "encoding": eEncodingUint,
981 "format": eFormatHex,
982 "slice": "r10[7:0]",
985 "name": "r11l",
986 "set": 0,
987 "bitsize": 8,
988 "encoding": eEncodingUint,
989 "format": eFormatHex,
990 "slice": "r11[7:0]",
993 "name": "r12l",
994 "set": 0,
995 "bitsize": 8,
996 "encoding": eEncodingUint,
997 "format": eFormatHex,
998 "slice": "r12[7:0]",
1001 "name": "r13l",
1002 "set": 0,
1003 "bitsize": 8,
1004 "encoding": eEncodingUint,
1005 "format": eFormatHex,
1006 "slice": "r13[7:0]",
1009 "name": "r14l",
1010 "set": 0,
1011 "bitsize": 8,
1012 "encoding": eEncodingUint,
1013 "format": eFormatHex,
1014 "slice": "r14[7:0]",
1017 "name": "r15l",
1018 "set": 0,
1019 "bitsize": 8,
1020 "encoding": eEncodingUint,
1021 "format": eFormatHex,
1022 "slice": "r15[7:0]",
1026 g_target_definition = None
1029 def get_target_definition():
1030 global g_target_definition
1031 if g_target_definition is None:
1032 g_target_definition = {}
1033 offset = 0
1034 for reg_info in x86_64_register_infos:
1035 reg_name = reg_info["name"]
1037 # Only fill in the offset if there is no 'slice' in the register
1038 # info
1039 if "slice" not in reg_info and "composite" not in reg_info:
1040 reg_info["offset"] = offset
1041 offset += reg_info["bitsize"] // 8
1043 # Set the GCC/DWARF register number for this register if it has one
1044 reg_num = get_reg_num(name_to_gcc_dwarf_regnum, reg_name)
1045 if reg_num != LLDB_INVALID_REGNUM:
1046 reg_info["gcc"] = reg_num
1047 reg_info["dwarf"] = reg_num
1049 # Set the generic register number for this register if it has one
1050 reg_num = get_reg_num(name_to_generic_regnum, reg_name)
1051 if reg_num != LLDB_INVALID_REGNUM:
1052 reg_info["generic"] = reg_num
1054 # Set the GDB register number for this register if it has one
1055 reg_num = get_reg_num(name_to_gdb_regnum, reg_name)
1056 if reg_num != LLDB_INVALID_REGNUM:
1057 reg_info["gdb"] = reg_num
1059 g_target_definition["sets"] = [
1060 "General Purpose Registers",
1061 "Floating Point Registers",
1063 g_target_definition["registers"] = x86_64_register_infos
1064 g_target_definition["host-info"] = {
1065 "triple": "x86_64-*-linux",
1066 "endian": eByteOrderLittle,
1068 g_target_definition["g-packet-size"] = offset
1069 g_target_definition["breakpoint-pc-offset"] = -1
1070 return g_target_definition
1073 def get_dynamic_setting(target, setting_name):
1074 if setting_name == "gdb-server-target-definition":
1075 return get_target_definition()