1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 09:24:57 +00:00

LibDebug: Use Core::Stream to read opcodes for expression evaluation

This commit is contained in:
Tim Schumacher 2023-01-22 00:51:45 +01:00 committed by Andreas Kling
parent 91505d8cf3
commit a9eea2e0c4
3 changed files with 7 additions and 8 deletions

View file

@ -231,7 +231,7 @@ static ErrorOr<void> parse_variable_location(Dwarf::DIE const& variable_die, Deb
break;
case Dwarf::AttributeValue::Type::DwarfExpression: {
auto expression_bytes = location_info.value().as_raw_bytes();
auto value = Dwarf::Expression::evaluate(expression_bytes, regs);
auto value = TRY(Dwarf::Expression::evaluate(expression_bytes, regs));
if (value.type != Dwarf::Expression::Type::None) {
VERIFY(value.type == Dwarf::Expression::Type::UnsignedInteger);

View file

@ -7,18 +7,17 @@
#include "Expression.h"
#include <AK/Format.h>
#include <AK/MemoryStream.h>
#include <LibCore/MemoryStream.h>
#include <sys/arch/regs.h>
namespace Debug::Dwarf::Expression {
Value evaluate(ReadonlyBytes bytes, [[maybe_unused]] PtraceRegisters const& regs)
ErrorOr<Value> evaluate(ReadonlyBytes bytes, [[maybe_unused]] PtraceRegisters const& regs)
{
InputMemoryStream stream(bytes);
auto stream = TRY(Core::Stream::FixedMemoryStream::construct(bytes));
while (!stream.eof()) {
u8 opcode = 0;
stream >> opcode;
while (!stream->is_eof()) {
auto opcode = TRY(stream->read_value<u8>());
switch (static_cast<Operations>(opcode)) {

View file

@ -32,6 +32,6 @@ enum class Operations : u8 {
FbReg = 0x91,
};
Value evaluate(ReadonlyBytes, PtraceRegisters const&);
ErrorOr<Value> evaluate(ReadonlyBytes, PtraceRegisters const&);
}