@@ -319,11 +319,11 @@ IRMemoryMap::Allocation::Allocation(lldb::addr_t process_alloc,
319
319
}
320
320
}
321
321
322
- lldb::addr_t IRMemoryMap::Malloc (size_t size, uint8_t alignment,
323
- uint32_t permissions, AllocationPolicy policy,
324
- bool zero_memory, Status &error) {
322
+ llvm::Expected<lldb::addr_t > IRMemoryMap::Malloc (size_t size, uint8_t alignment,
323
+ uint32_t permissions,
324
+ AllocationPolicy policy,
325
+ bool zero_memory) {
325
326
lldb_private::Log *log (GetLog (LLDBLog::Expressions));
326
- error.Clear ();
327
327
328
328
lldb::ProcessSP process_sp;
329
329
lldb::addr_t allocation_address = LLDB_INVALID_ADDRESS;
@@ -347,15 +347,14 @@ lldb::addr_t IRMemoryMap::Malloc(size_t size, uint8_t alignment,
347
347
348
348
switch (policy) {
349
349
default :
350
- error =
351
- Status::FromErrorString ( " Couldn't malloc: invalid allocation policy " );
352
- return LLDB_INVALID_ADDRESS ;
350
+ return llvm::createStringError (
351
+ llvm::inconvertibleErrorCode (),
352
+ " Couldn't malloc: invalid allocation policy " ) ;
353
353
case eAllocationPolicyHostOnly:
354
354
allocation_address = FindSpace (allocation_size);
355
- if (allocation_address == LLDB_INVALID_ADDRESS) {
356
- error = Status::FromErrorString (" Couldn't malloc: address space is full" );
357
- return LLDB_INVALID_ADDRESS;
358
- }
355
+ if (allocation_address == LLDB_INVALID_ADDRESS)
356
+ return llvm::createStringError (llvm::inconvertibleErrorCode (),
357
+ " Couldn't malloc: address space is full" );
359
358
break ;
360
359
case eAllocationPolicyMirror:
361
360
process_sp = m_process_wp.lock ();
@@ -366,6 +365,7 @@ lldb::addr_t IRMemoryMap::Malloc(size_t size, uint8_t alignment,
366
365
process_sp && process_sp->CanJIT () ? " true" : " false" ,
367
366
process_sp && process_sp->IsAlive () ? " true" : " false" );
368
367
if (process_sp && process_sp->CanJIT () && process_sp->IsAlive ()) {
368
+ Status error;
369
369
if (!zero_memory)
370
370
allocation_address =
371
371
process_sp->AllocateMemory (allocation_size, permissions, error);
@@ -374,25 +374,25 @@ lldb::addr_t IRMemoryMap::Malloc(size_t size, uint8_t alignment,
374
374
process_sp->CallocateMemory (allocation_size, permissions, error);
375
375
376
376
if (!error.Success ())
377
- return LLDB_INVALID_ADDRESS ;
377
+ return error. takeError () ;
378
378
} else {
379
379
LLDB_LOGF (log,
380
380
" IRMemoryMap::%s switching to eAllocationPolicyHostOnly "
381
381
" due to failed condition (see previous expr log message)" ,
382
382
__FUNCTION__);
383
383
policy = eAllocationPolicyHostOnly;
384
384
allocation_address = FindSpace (allocation_size);
385
- if (allocation_address == LLDB_INVALID_ADDRESS) {
386
- error =
387
- Status::FromErrorString (" Couldn't malloc: address space is full" );
388
- return LLDB_INVALID_ADDRESS;
389
- }
385
+ if (allocation_address == LLDB_INVALID_ADDRESS)
386
+ return llvm::createStringError (
387
+ llvm::inconvertibleErrorCode (),
388
+ " Couldn't malloc: address space is full" );
390
389
}
391
390
break ;
392
391
case eAllocationPolicyProcessOnly:
393
392
process_sp = m_process_wp.lock ();
394
393
if (process_sp) {
395
394
if (process_sp->CanJIT () && process_sp->IsAlive ()) {
395
+ Status error;
396
396
if (!zero_memory)
397
397
allocation_address =
398
398
process_sp->AllocateMemory (allocation_size, permissions, error);
@@ -401,17 +401,16 @@ lldb::addr_t IRMemoryMap::Malloc(size_t size, uint8_t alignment,
401
401
process_sp->CallocateMemory (allocation_size, permissions, error);
402
402
403
403
if (!error.Success ())
404
- return LLDB_INVALID_ADDRESS ;
404
+ return error. takeError () ;
405
405
} else {
406
- error = Status::FromErrorString (
406
+ return llvm::createStringError (
407
+ llvm::inconvertibleErrorCode (),
407
408
" Couldn't malloc: process doesn't support allocating memory" );
408
- return LLDB_INVALID_ADDRESS;
409
409
}
410
410
} else {
411
- error = Status::FromErrorString (
412
- " Couldn't malloc: process doesn't exist, and this "
413
- " memory must be in the process" );
414
- return LLDB_INVALID_ADDRESS;
411
+ return llvm::createStringError (llvm::inconvertibleErrorCode (),
412
+ " Couldn't malloc: process doesn't exist, "
413
+ " and this memory must be in the process" );
415
414
}
416
415
break ;
417
416
}
0 commit comments