]> git.proxmox.com Git - mirror_edk2.git/blob - EmulatorPkg/Unix/GdbRun
b2d6dccccb7c1210f83c1803541a1b5fcdccbec3
[mirror_edk2.git] / EmulatorPkg / Unix / GdbRun
1 ## @file
2 # GDB startup script
3 #
4 # Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
5 #
6 # This program and the accompanying materials
7 # are licensed and made available under the terms and conditions of the BSD License
8 # which accompanies this distribution. The full text of the license may be found at
9 # http://opensource.org/licenses/bsd-license.php
10 #
11 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 #
14 ##
15
16 #
17 # Gdb will set $_exitcode when the program exits. Pre-init it to an unlikely
18 # return value.
19 #
20 set $_exitcode = 42
21
22 #
23 # Gdb will call hook-stop on each break. Check to see if $_exitcode was
24 # changed from the value we pre-initialized it to. If so, the program
25 # had exited, so gdb should now quit.
26 #
27 define hook-stop
28 if $_exitcode != 42
29 quit
30 else
31 source Host.gdb
32 end
33 end
34
35 #
36 # We keep track of the number of symbol files we have loaded via gdb
37 # scripts in the $SymbolFilesAdded variable
38 #
39 set $SymbolFileChangesCount = 0
40
41 #
42 # This macro adds a symbols file for gdb
43 #
44 # @param $arg0 - Symbol file changes number
45 # @param $arg1 - Symbol file name
46 # @param $arg2 - Image address
47 #
48 define AddFirmwareSymbolFile
49 if $SymbolFileChangesCount < $arg0
50 add-symbol-file $arg1 $arg2
51 set $SymbolFileChangesCount = $arg0
52 end
53 end
54
55 #
56 # This macro removes a symbols file for gdb
57 #
58 # @param $arg0 - Symbol file changes number
59 # @param $arg1 - Symbol file name
60 #
61 define RemoveFirmwareSymbolFile
62 if $SymbolFileChangesCount < $arg0
63 #
64 # Currently there is not a method to remove a single symbol file
65 #
66 set $SymbolFileChangesCount = $arg0
67 end
68 end
69
70 if gInXcode == 1
71 # in Xcode the program is already runing. Issuing a run command
72 # will cause a fatal debugger error. The break point sciprt that
73 # is used to source this script sets gInCode to 1.
74 else
75 #
76 # Start the program running
77 #
78 run
79 end