mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-28 17:11:11 -09:00
Fix gdb on OpenBSD/amd64 by:
* Filtering out registers that are "<unavailable>" when querying gdb for register list. * Force querying gdb for register list on OpenBSD.
This commit is contained in:
@@ -19,6 +19,7 @@ import bisect
|
|||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
import re
|
import re
|
||||||
from typing import Callable, Dict, List, Optional, Sequence, Set, Tuple, Union
|
from typing import Callable, Dict, List, Optional, Sequence, Set, Tuple, Union
|
||||||
|
import platform
|
||||||
|
|
||||||
import gdb
|
import gdb
|
||||||
|
|
||||||
@@ -467,7 +468,7 @@ class RegisterDesc:
|
|||||||
|
|
||||||
def get_register_descs(arch: gdb.Architecture, group: str = 'all') -> List[
|
def get_register_descs(arch: gdb.Architecture, group: str = 'all') -> List[
|
||||||
Union[RegisterDesc, gdb.RegisterDescriptor]]:
|
Union[RegisterDesc, gdb.RegisterDescriptor]]:
|
||||||
if hasattr(arch, "registers"):
|
if hasattr(arch, "registers") and platform.system() != "OpenBSD":
|
||||||
try:
|
try:
|
||||||
return list(arch.registers(group))
|
return list(arch.registers(group))
|
||||||
except ValueError: # No such group, or version too old
|
except ValueError: # No such group, or version too old
|
||||||
@@ -481,7 +482,7 @@ def get_register_descs(arch: gdb.Architecture, group: str = 'all') -> List[
|
|||||||
regset = gdb.execute(
|
regset = gdb.execute(
|
||||||
f"info registers", to_string=True).strip().split('\n')
|
f"info registers", to_string=True).strip().split('\n')
|
||||||
for line in regset:
|
for line in regset:
|
||||||
if not line.startswith(" "):
|
if not line.startswith(" ") and "<unavailable>" not in line:
|
||||||
tokens = line.strip().split()
|
tokens = line.strip().split()
|
||||||
descs.append(RegisterDesc(tokens[0]))
|
descs.append(RegisterDesc(tokens[0]))
|
||||||
return descs
|
return descs
|
||||||
|
|||||||
Reference in New Issue
Block a user