Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
btwise
OpenCorePKG_MOD
提交
a2b556d6
O
OpenCorePKG_MOD
项目概览
btwise
/
OpenCorePKG_MOD
通知
26
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
OpenCorePKG_MOD
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a2b556d6
编写于
8月 24, 2022
作者:
V
vit9696
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Debug: Fix lldb and gdb support borked by
d40fe9af
上级
2908a9d8
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
13 addition
and
14 deletion
+13
-14
Debug/Scripts/common_uefi.py
Debug/Scripts/common_uefi.py
+1
-1
Debug/Scripts/gdb_uefi.py
Debug/Scripts/gdb_uefi.py
+11
-11
Debug/Scripts/lldb_uefi.py
Debug/Scripts/lldb_uefi.py
+1
-2
未找到文件。
Debug/Scripts/common_uefi.py
浏览文件 @
a2b556d6
...
...
@@ -168,5 +168,5 @@ class UefiMisc():
# Returns a UTF16 string corresponding to a (CHAR16 *) value in EFI.
@
classmethod
def
parse_guid
(
cls
,
value
):
guid
=
f
"<
{
value
[
'Data1'
]:
08
X
}
-
{
value
[
'Data2'
]:
04
X
}
-
{
value
[
'Data3'
]:
04
X
}
-
{
value
[
'Data4'
][
0
]:
02
X
}{
value
[
'Data4'
][
1
]:
02
X
}
-
{
value
[
'Data4'
][
2
]:
02
X
}{
value
[
'Data4'
][
3
]:
02
X
}{
value
[
'Data4'
][
4
]:
02
X
}{
value
[
'Data4'
][
5
]:
02
X
}{
value
[
'Data4'
][
6
]:
02
X
}{
value
[
'Data4'
][
7
]
:
02
X
}
>"
guid
=
f
"<
{
int
(
value
[
'Data1'
]):
08
X
}
-
{
int
(
value
[
'Data2'
]):
04
X
}
-
{
int
(
value
[
'Data3'
]):
04
X
}
-
{
int
(
value
[
'Data4'
][
0
]):
02
X
}{
int
(
value
[
'Data4'
][
1
]):
02
X
}
-
{
int
(
value
[
'Data4'
][
2
]):
02
X
}{
int
(
value
[
'Data4'
][
3
]):
02
X
}{
int
(
value
[
'Data4'
][
4
]):
02
X
}{
int
(
value
[
'Data4'
][
5
]):
02
X
}{
int
(
value
[
'Data4'
][
6
]):
02
X
}{
int
(
value
[
'Data4'
][
7
])
:
02
X
}
>"
return
guid
Debug/Scripts/gdb_uefi.py
浏览文件 @
a2b556d6
...
...
@@ -31,10 +31,10 @@ import re
import
sys
import
os
import
subprocess
from
common_uefi
import
UefiMisc
sys
.
path
.
append
(
os
.
path
.
dirname
(
__file__
))
from
common_uefi
import
UefiMisc
__license__
=
'BSD'
__version__
=
'1.0.0'
...
...
@@ -77,7 +77,7 @@ class ReloadUefi(gdb.Command):
# Returns gdb.Type for a type.
#
def
lookup_
type
(
self
,
typename
):
def
type
(
self
,
typename
):
return
gdb
.
lookup_type
(
typename
)
#
...
...
@@ -103,7 +103,7 @@ class ReloadUefi(gdb.Command):
#
def
set_field
(
self
,
value
,
field_name
,
data
):
gdb
.
execute
(
f
'set *(
{
str
(
value
[
field_name
].
type
)
}
*) 0x
{
int
(
value
[
field_name
].
address
):
x
}
= 0x
{
data
}
'
)
gdb
.
execute
(
f
'set *(
{
str
(
value
[
field_name
].
type
)
}
*) 0x
{
int
(
value
[
field_name
].
address
):
x
}
= 0x
{
data
:
x
}
'
)
#
# Returns data backing a gdb.Value as an array.
...
...
@@ -262,7 +262,7 @@ class ReloadUefi(gdb.Command):
cmd
+=
f
' 0x
{
fallack_base
:
x
}
'
return
cmd
cmd
+=
f
" 0x
{
int
(
orgbase
)
:
x
}{
sections
[
'.text'
]
}
"
cmd
+=
f
" 0x
{
int
(
orgbase
)
+
sections
[
'.text'
]:
x
}
"
if
not
macho
or
not
os
.
path
.
exists
(
file
):
# Another fallback, try to load data at least.
...
...
@@ -310,9 +310,9 @@ class ReloadUefi(gdb.Command):
}
# 3. Rebase.
for
entry
in
mapping
.
items
():
if
machsections
.
get
(
entry
):
cmd
+=
f
' -s
{
mapping
[
entry
]
}
0x
{
int
(
orgbase
)
+
machsections
[
entry
]:
x
}
'
for
section
,
new_section
in
mapping
.
items
():
if
machsections
.
get
(
section
):
cmd
+=
f
' -s
{
new_section
}
0x
{
int
(
orgbase
)
+
machsections
[
section
]:
x
}
'
return
cmd
...
...
@@ -380,7 +380,7 @@ class ReloadUefi(gdb.Command):
def
parse_dh
(
self
,
dh
):
dh_t
=
self
.
ptype
(
'EFI_DEBUG_IMAGE_INFO_TABLE_HEADER'
)
dh
=
dh
.
cast
(
dh_t
)
print
(
f
"DebugImageInfoTable @ 0x
{
int
(
dh
[
'EfiDebugImageInfoTable'
]):
x
}
, 0x
{
dh
[
'TableSize'
]
:
x
}
entries"
)
print
(
f
"DebugImageInfoTable @ 0x
{
int
(
dh
[
'EfiDebugImageInfoTable'
]):
x
}
, 0x
{
int
(
dh
[
'TableSize'
])
:
x
}
entries"
)
if
dh
[
'UpdateStatus'
]
&
self
.
DEBUG_IS_UPDATING
:
print
(
'EfiDebugImageInfoTable update in progress, retry later'
)
return
...
...
@@ -393,8 +393,8 @@ class ReloadUefi(gdb.Command):
def
parse_est
(
self
,
est
):
est_t
=
self
.
ptype
(
'EFI_SYSTEM_TABLE'
)
est
=
est
.
cast
(
est_t
)
print
(
f
"Connected to
{
UefiMisc
.
parse_utf16
(
est
[
'FirmwareVendor'
])
}
(Rev. 0x
{
int
(
est
[
'FirmwareRevision'
]):
x
}
)"
)
print
(
f
"ConfigurationTable @ 0x
{
int
(
est
[
'ConfigurationTable'
]):
x
}
, 0x
{
est
[
'NumberOfTableEntries'
]
:
x
}
entries"
)
print
(
f
"Connected to
{
UefiMisc
.
parse_utf16
(
est
[
'FirmwareVendor'
])
}
(Rev. 0x
{
int
(
est
[
'FirmwareRevision'
]):
x
}
)"
)
print
(
f
"ConfigurationTable @ 0x
{
int
(
est
[
'ConfigurationTable'
]):
x
}
, 0x
{
int
(
est
[
'NumberOfTableEntries'
])
:
x
}
entries"
)
dh
=
self
.
search_config
(
est
[
'ConfigurationTable'
],
est
[
'NumberOfTableEntries'
],
self
.
DEBUG_GUID
)
if
dh
==
self
.
EINVAL
:
...
...
@@ -452,7 +452,7 @@ class UefiStringPrinter:
self
.
val
=
val
def
to_string
(
self
):
return
'NULL'
if
not
self
.
val
else
f
"L'
{
UefiMisc
.
parse_utf16
(
self
.
val
)
}
'"
return
'NULL'
if
not
self
.
val
else
f
'L"
{
UefiMisc
.
parse_utf16
(
self
.
val
)
}
"'
class
UefiEfiStatusPrinter
:
...
...
Debug/Scripts/lldb_uefi.py
浏览文件 @
a2b556d6
...
...
@@ -210,7 +210,6 @@ class ReloadUefi:
head_t
=
self
.
ptype
(
'EFI_IMAGE_OPTIONAL_HEADER_UNION'
)
dosh
=
self
.
typed_ptr
(
dosh_t
,
imagebase
)
h_addr
=
imagebase
h_addr
=
h_addr
+
self
.
get_field
(
dosh
,
'e_lfanew'
)
if
self
.
get_field
(
dosh
,
'e_magic'
)
==
self
.
DOS_MAGIC
else
self
.
typed_ptr
(
head_t
,
h_addr
)
if
self
.
get_field
(
dosh
,
'e_magic'
)
==
self
.
DOS_MAGIC
:
h_addr
=
h_addr
+
self
.
get_field
(
dosh
,
'e_lfanew'
)
return
self
.
typed_ptr
(
head_t
,
h_addr
)
...
...
@@ -501,5 +500,5 @@ class ReloadUefi:
print
(
'No EFI_SYSTEM_TABLE...'
)
return
print
(
f
'EFI_SYSTEM_TABLE @ 0x
{
est
.
GetValueAsUn
is
gned
():
x
}
'
)
print
(
f
'EFI_SYSTEM_TABLE @ 0x
{
est
.
GetValueAsUn
si
gned
():
x
}
'
)
self
.
parse_est
(
est
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录