summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp')
-rw-r--r--lldb/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp44
1 files changed, 22 insertions, 22 deletions
diff --git a/lldb/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp b/lldb/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp
index 78907426c85..f359b52e129 100644
--- a/lldb/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp
+++ b/lldb/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp
@@ -308,15 +308,14 @@ bool ABISysV_i386::GetArgumentValues(Thread &thread, ValueList &values) const {
// Currently: Support for extracting values with Clang QualTypes only.
CompilerType compiler_type(value->GetCompilerType());
- if (compiler_type) {
+ auto bit_size = compiler_type.GetBitSize(&thread);
+ if (bit_size) {
bool is_signed;
if (compiler_type.IsIntegerOrEnumerationType(is_signed)) {
- ReadIntegerArgument(value->GetScalar(),
- compiler_type.GetBitSize(&thread), is_signed,
+ ReadIntegerArgument(value->GetScalar(), *bit_size, is_signed,
thread.GetProcess().get(), current_stack_argument);
} else if (compiler_type.IsPointerType()) {
- ReadIntegerArgument(value->GetScalar(),
- compiler_type.GetBitSize(&thread), false,
+ ReadIntegerArgument(value->GetScalar(), *bit_size, false,
thread.GetProcess().get(), current_stack_argument);
}
}
@@ -514,7 +513,9 @@ ValueObjectSP ABISysV_i386::GetReturnValueObjectSimple(
(type_flags & eTypeIsEnumeration)) //'Integral' + 'Floating Point'
{
value.SetValueType(Value::eValueTypeScalar);
- const size_t byte_size = return_compiler_type.GetByteSize(nullptr);
+ auto byte_size = return_compiler_type.GetByteSize(nullptr);
+ if (!byte_size)
+ return return_valobj_sp;
bool success = false;
if (type_flags & eTypeIsInteger) // 'Integral' except enum
@@ -528,7 +529,7 @@ ValueObjectSP ABISysV_i386::GetReturnValueObjectSimple(
0xffffffff)
<< 32;
- switch (byte_size) {
+ switch (*byte_size) {
default:
break;
@@ -584,7 +585,7 @@ ValueObjectSP ABISysV_i386::GetReturnValueObjectSimple(
thread.GetStackFrameAtIndex(0).get(), value, ConstString(""));
} else if (type_flags & eTypeIsFloat) // 'Floating Point'
{
- if (byte_size <= 12) // handles float, double, long double, __float80
+ if (*byte_size <= 12) // handles float, double, long double, __float80
{
const RegisterInfo *st0_info = reg_ctx->GetRegisterInfoByName("st0", 0);
RegisterValue st0_value;
@@ -595,21 +596,20 @@ ValueObjectSP ABISysV_i386::GetReturnValueObjectSimple(
lldb::offset_t offset = 0;
long double value_long_double = data.GetLongDouble(&offset);
- if (byte_size == 4) // float is 4 bytes
- {
+ // float is 4 bytes.
+ if (*byte_size == 4) {
float value_float = (float)value_long_double;
value.GetScalar() = value_float;
success = true;
- } else if (byte_size == 8) // double is 8 bytes
- {
+ } else if (*byte_size == 8) {
+ // double is 8 bytes
// On Android Platform: long double is also 8 bytes It will be
// handled here only.
double value_double = (double)value_long_double;
value.GetScalar() = value_double;
success = true;
- } else if (byte_size ==
- 12) // long double and __float80 are 12 bytes on i386
- {
+ } else if (*byte_size == 12) {
+ // long double and __float80 are 12 bytes on i386.
value.GetScalar() = value_long_double;
success = true;
}
@@ -619,7 +619,7 @@ ValueObjectSP ABISysV_i386::GetReturnValueObjectSimple(
if (success)
return_valobj_sp = ValueObjectConstResult::Create(
thread.GetStackFrameAtIndex(0).get(), value, ConstString(""));
- } else if (byte_size == 16) // handles __float128
+ } else if (*byte_size == 16) // handles __float128
{
lldb::addr_t storage_addr = (uint32_t)(
thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) &
@@ -637,18 +637,18 @@ ValueObjectSP ABISysV_i386::GetReturnValueObjectSimple(
// ToDo: Yet to be implemented
} else if (type_flags & eTypeIsVector) // 'Packed'
{
- const size_t byte_size = return_compiler_type.GetByteSize(nullptr);
- if (byte_size > 0) {
+ auto byte_size = return_compiler_type.GetByteSize(nullptr);
+ if (byte_size && *byte_size > 0) {
const RegisterInfo *vec_reg = reg_ctx->GetRegisterInfoByName("xmm0", 0);
if (vec_reg == nullptr)
vec_reg = reg_ctx->GetRegisterInfoByName("mm0", 0);
if (vec_reg) {
- if (byte_size <= vec_reg->byte_size) {
+ if (*byte_size <= vec_reg->byte_size) {
ProcessSP process_sp(thread.GetProcess());
if (process_sp) {
std::unique_ptr<DataBufferHeap> heap_data_ap(
- new DataBufferHeap(byte_size, 0));
+ new DataBufferHeap(*byte_size, 0));
const ByteOrder byte_order = process_sp->GetByteOrder();
RegisterValue reg_value;
if (reg_ctx->ReadRegister(vec_reg, reg_value)) {
@@ -665,14 +665,14 @@ ValueObjectSP ABISysV_i386::GetReturnValueObjectSimple(
}
}
}
- } else if (byte_size <= vec_reg->byte_size * 2) {
+ } else if (*byte_size <= vec_reg->byte_size * 2) {
const RegisterInfo *vec_reg2 =
reg_ctx->GetRegisterInfoByName("xmm1", 0);
if (vec_reg2) {
ProcessSP process_sp(thread.GetProcess());
if (process_sp) {
std::unique_ptr<DataBufferHeap> heap_data_ap(
- new DataBufferHeap(byte_size, 0));
+ new DataBufferHeap(*byte_size, 0));
const ByteOrder byte_order = process_sp->GetByteOrder();
RegisterValue reg_value;
RegisterValue reg_value2;
OpenPOWER on IntegriCloud