[lldb] Fix AppleObjCDeclVendor for classes which have no methods (#145452)
Fix the rare case where an ObjC class has ivars but no methods. The fix is to not early return when a class has no method list.
This commit is contained in:
@@ -552,9 +552,8 @@ bool ClassDescriptorV2::Describe(
|
||||
} else {
|
||||
std::optional<method_list_t> base_method_list =
|
||||
GetMethodList(process, class_ro->m_baseMethods_ptr);
|
||||
if (!base_method_list)
|
||||
return false;
|
||||
if (!ProcessMethodList(instance_method_func, *base_method_list))
|
||||
if (base_method_list &&
|
||||
!ProcessMethodList(instance_method_func, *base_method_list))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
5
lldb/test/API/lang/objc/class-without-methods/Makefile
Normal file
5
lldb/test/API/lang/objc/class-without-methods/Makefile
Normal file
@@ -0,0 +1,5 @@
|
||||
OBJC_SOURCES := Point.m main.m
|
||||
include Makefile.rules
|
||||
|
||||
# Only objc metadata, no debug info, for Point.m
|
||||
Point.o: CFLAGS_EXTRAS += -g0
|
||||
4
lldb/test/API/lang/objc/class-without-methods/Point.h
Normal file
4
lldb/test/API/lang/objc/class-without-methods/Point.h
Normal file
@@ -0,0 +1,4 @@
|
||||
#import <objc/NSObject.h>
|
||||
|
||||
@interface Point : NSObject
|
||||
@end
|
||||
7
lldb/test/API/lang/objc/class-without-methods/Point.m
Normal file
7
lldb/test/API/lang/objc/class-without-methods/Point.m
Normal file
@@ -0,0 +1,7 @@
|
||||
#import "Point.h"
|
||||
|
||||
@implementation Point {
|
||||
float _x;
|
||||
float _y;
|
||||
}
|
||||
@end
|
||||
@@ -0,0 +1,11 @@
|
||||
import lldb
|
||||
from lldbsuite.test.decorators import *
|
||||
from lldbsuite.test.lldbtest import *
|
||||
from lldbsuite.test import lldbutil
|
||||
|
||||
|
||||
class TestCase(TestBase):
|
||||
def test(self):
|
||||
self.build()
|
||||
lldbutil.run_to_source_breakpoint(self, "break here", lldb.SBFileSpec("main.m"))
|
||||
self.expect("frame var -P1 p", substrs=["_x = 0", "_y = 0"])
|
||||
7
lldb/test/API/lang/objc/class-without-methods/main.m
Normal file
7
lldb/test/API/lang/objc/class-without-methods/main.m
Normal file
@@ -0,0 +1,7 @@
|
||||
#import "Point.h"
|
||||
|
||||
int main() {
|
||||
Point *p = [Point new];
|
||||
// break here
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user