| 1211 | } |
| 1212 | |
| 1213 | void DbgExprEvaluator::BeefStringToString(addr_target addr, String& outStr) |
| 1214 | { |
| 1215 | mDebugTarget->GetCompilerSettings(); |
| 1216 | int objectSize = mDebugTarget->mBfObjectSize; |
| 1217 | |
| 1218 | int32 strLen = 0; |
| 1219 | addr_target charPtr = 0; |
| 1220 | if (!mDebugTarget->mBfHasLargeStrings) |
| 1221 | { |
| 1222 | strLen = mDebugger->ReadMemory<int32>(addr + objectSize); |
| 1223 | int32 allocSizeAndFlags = mDebugger->ReadMemory<int32>(addr + objectSize + 4); |
| 1224 | if ((allocSizeAndFlags & 0x40000000) != 0) |
| 1225 | charPtr = mDebugger->ReadMemory<addr_target>(addr + objectSize + 4 + 4); |
| 1226 | else |
| 1227 | charPtr = addr + objectSize + 4 + 4; |
| 1228 | } |
| 1229 | else |
| 1230 | { |
| 1231 | strLen = mDebugger->ReadMemory<int32>(addr + objectSize); |
| 1232 | int64 allocSizeAndFlags = mDebugger->ReadMemory<int64>(addr + objectSize + 8); |
| 1233 | if ((allocSizeAndFlags & 0x40000000'00000000LL) != 0) |
| 1234 | charPtr = mDebugger->ReadMemory<addr_target>(addr + objectSize + 8 + 8); |
| 1235 | else |
| 1236 | charPtr = addr + objectSize + 4 + 4; |
| 1237 | } |
| 1238 | |
| 1239 | if ((strLen > 0) && (strLen < 4096)) |
| 1240 | { |
| 1241 | outStr.Append('?', strLen); |
| 1242 | mDebugger->ReadMemory(charPtr, strLen, &outStr[outStr.length() - strLen]); |
| 1243 | } |
| 1244 | } |
| 1245 | |
| 1246 | void DbgExprEvaluator::BeefStringToString(const DbgTypedValue& val, String& outStr) |
| 1247 | { |
nothing calls this directly
no test coverage detected