444 lines
9.5 KiB
Text
444 lines
9.5 KiB
Text
NAME=tc
|
|
FILE=bins/mach0/objc-employee
|
|
ARGS=-b 64
|
|
CMDS=<<EOF
|
|
.ic*
|
|
ts Employee
|
|
ts NSString
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pf pppp*?w*?*?q firstName shortWord username wideWord (objc_class)isa _shortWord (NSString)_username (NSString)_firstName _wideWord
|
|
pf pqzd p0 p1 str len
|
|
EOF
|
|
RUN
|
|
|
|
NAME=tc2
|
|
FILE=bins/mach0/objc-employee
|
|
BROKEN=1
|
|
CMDS=icc
|
|
EXPECT=<<EOF
|
|
@interface Employee : NSObject
|
|
{
|
|
s Employee::(ivar)_shortWord
|
|
@"NSString" Employee::(ivar)_username
|
|
@"NSString" Employee::(ivar)_firstName
|
|
Q Employee::(ivar)_wideWord
|
|
}
|
|
- (void) helloWorld
|
|
- (id) sayHello
|
|
- (unknown) p0
|
|
- (unknown) p1
|
|
- (unknown) p2
|
|
- (unknown) p3
|
|
- (unknown) base
|
|
- (id) username
|
|
- (void) setUsername:
|
|
- (id) firstName
|
|
- (void) setFirstName:
|
|
- (short) shortWord
|
|
- (unsigned long long) wideWord
|
|
+ (id) sayHello
|
|
@end
|
|
EOF
|
|
RUN
|
|
|
|
NAME=tc3
|
|
FILE=bins/mach0/objc-employee
|
|
CMDS=ic*
|
|
EXPECT=<<EOF
|
|
fs classes
|
|
f class.public.Employee @ 0x100001ae0
|
|
f super.public.Employee.NSObject @ 0x100003348
|
|
f field.Employee.Employee::_property_firstName @ 0xffffffffffffffff
|
|
f field.Employee.Employee::_property_shortWord @ 0xffffffffffffffff
|
|
f field.Employee.Employee::_property_username @ 0xffffffffffffffff
|
|
f field.Employee.Employee::_property_wideWord @ 0xffffffffffffffff
|
|
f field.Employee.isa @ 0xffffffffffffffff
|
|
f field.Employee.Employee::_ivar__shortWord @ 0x100003328
|
|
f field.Employee.Employee::_ivar__username @ 0x100003330
|
|
f field.Employee.Employee::_ivar__firstName @ 0x100003338
|
|
f field.Employee.Employee::_ivar__wideWord @ 0x100003340
|
|
f method.Employee.helloWorld @ 0x100001ae0
|
|
f method.Employee.sayHello @ 0x100001b10
|
|
f method.Employee.p0 @ 0x100001b40
|
|
f method.Employee.p1 @ 0x100001b60
|
|
f method.Employee.p2 @ 0x100001b80
|
|
f method.Employee.p3 @ 0x100001ba0
|
|
f method.Employee.base @ 0x100001bc0
|
|
f method.class.Employee.sayHello @ 0x100001be0
|
|
f method.Employee.username @ 0x100001c10
|
|
f method.Employee.setUsername: @ 0x100001c40
|
|
f method.Employee.firstName @ 0x100001c80
|
|
f method.Employee.setFirstName: @ 0x100001cb0
|
|
f method.Employee.shortWord @ 0x100001cf0
|
|
f method.Employee.wideWord @ 0x100001d10
|
|
td "struct Employee { void* firstName; void* shortWord; void* username; void* wideWord; struct objc_class * isa; short _shortWord; struct NSString* _username; struct NSString* _firstName; uint64_t _wideWord;};"
|
|
EOF
|
|
RUN
|
|
|
|
NAME=tc4
|
|
FILE=bins/mach0/objc-employee
|
|
CMDS=<<EOF
|
|
.ic*
|
|
tc Employee
|
|
tc NSString
|
|
EOF
|
|
EXPECT=<<EOF
|
|
struct Employee {
|
|
void *firstName;
|
|
void *shortWord;
|
|
void *username;
|
|
void *wideWord;
|
|
struct objc_class *isa;
|
|
short _shortWord;
|
|
struct NSString *_username;
|
|
struct NSString *_firstName;
|
|
uint64_t _wideWord;
|
|
};
|
|
struct NSString {
|
|
void *p0;
|
|
size_t p1;
|
|
char *str;
|
|
int len;
|
|
};
|
|
EOF
|
|
RUN
|
|
|
|
NAME=tc iOS14 arm64
|
|
FILE=bins/mach0/objc-employee-ios14-arm64
|
|
CMDS=<<EOF
|
|
.ic*
|
|
tsc Employee
|
|
tsc NSString
|
|
EOF
|
|
EXPECT=<<EOF
|
|
struct Employee {
|
|
void *firstName;
|
|
void *shortWord;
|
|
void *username;
|
|
void *wideWord;
|
|
struct objc_class *isa;
|
|
short _shortWord;
|
|
struct NSString *_username;
|
|
struct NSString *_firstName;
|
|
uint64_t _wideWord;
|
|
};
|
|
struct NSString {
|
|
void *p0;
|
|
size_t p1;
|
|
char *str;
|
|
int len;
|
|
};
|
|
EOF
|
|
RUN
|
|
|
|
NAME=tc2 iOS14 arm64
|
|
FILE=bins/mach0/objc-employee-ios14-arm64
|
|
CMDS=icc
|
|
BROKEN=1
|
|
EXPECT=<<EOF
|
|
@interface Employee : NSObject
|
|
{
|
|
s Employee::(ivar)_shortWord
|
|
@"NSString" Employee::(ivar)_username
|
|
@"NSString" Employee::(ivar)_firstName
|
|
Q Employee::(ivar)_wideWord
|
|
}
|
|
- (void) sayHello
|
|
- (void) helloWorld
|
|
- (unknown) p0
|
|
- (unknown) p1
|
|
- (unknown) p2
|
|
- (unknown) p3
|
|
- (unknown) base
|
|
- (id) username
|
|
- (void) setUsername:
|
|
- (id) firstName
|
|
- (void) setFirstName:
|
|
- (short) shortWord
|
|
- (unsigned long long) wideWord
|
|
- (void) .cxx_destruct
|
|
+ (void) sayHello
|
|
@end
|
|
EOF
|
|
RUN
|
|
|
|
NAME=tc3 iOS14 arm64
|
|
FILE=bins/mach0/objc-employee-ios14-arm64
|
|
CMDS=ic*
|
|
EXPECT=<<EOF
|
|
fs classes
|
|
f class.public.Employee @ 0x100007958
|
|
f super.public.Employee.NSObject @ 0x10000c238
|
|
f field.Employee.Employee::_property_firstName @ 0xffffffffffffffff
|
|
f field.Employee.Employee::_property_shortWord @ 0xffffffffffffffff
|
|
f field.Employee.Employee::_property_username @ 0xffffffffffffffff
|
|
f field.Employee.Employee::_property_wideWord @ 0xffffffffffffffff
|
|
f field.Employee.isa @ 0xffffffffffffffff
|
|
f field.Employee.Employee::_ivar__shortWord @ 0x10000c228
|
|
f field.Employee.Employee::_ivar__username @ 0x10000c22c
|
|
f field.Employee.Employee::_ivar__firstName @ 0x10000c230
|
|
f field.Employee.Employee::_ivar__wideWord @ 0x10000c234
|
|
f method.class.Employee.sayHello @ 0x100007958
|
|
f method.Employee.sayHello @ 0x100007984
|
|
f method.Employee.helloWorld @ 0x1000079b0
|
|
f method.Employee.p0 @ 0x1000079dc
|
|
f method.Employee.p1 @ 0x1000079f8
|
|
f method.Employee.p2 @ 0x100007a14
|
|
f method.Employee.p3 @ 0x100007a30
|
|
f method.Employee.base @ 0x100007a4c
|
|
f method.Employee.username @ 0x100007a64
|
|
f method.Employee.setUsername: @ 0x100007a8c
|
|
f method.Employee.firstName @ 0x100007ac4
|
|
f method.Employee.setFirstName: @ 0x100007aec
|
|
f method.Employee.shortWord @ 0x100007b24
|
|
f method.Employee.wideWord @ 0x100007b44
|
|
f method.Employee..cxx_destruct @ 0x100007b60
|
|
td "struct Employee { void* firstName; void* shortWord; void* username; void* wideWord; struct objc_class * isa; short _shortWord; struct NSString* _username; struct NSString* _firstName; uint64_t _wideWord;};"
|
|
EOF
|
|
RUN
|
|
|
|
NAME=tc4 iOS14 arm64
|
|
FILE=bins/mach0/objc-employee-ios14-arm64
|
|
CMDS=<<EOF
|
|
.ic*
|
|
tc Employee
|
|
tc NSString
|
|
EOF
|
|
EXPECT=<<EOF
|
|
struct Employee {
|
|
void *firstName;
|
|
void *shortWord;
|
|
void *username;
|
|
void *wideWord;
|
|
struct objc_class *isa;
|
|
short _shortWord;
|
|
struct NSString *_username;
|
|
struct NSString *_firstName;
|
|
uint64_t _wideWord;
|
|
};
|
|
struct NSString {
|
|
void *p0;
|
|
size_t p1;
|
|
char *str;
|
|
int len;
|
|
};
|
|
EOF
|
|
RUN
|
|
|
|
NAME=tc iOS14 arm64e
|
|
FILE=bins/mach0/objc-employee-ios14-arm64e
|
|
CMDS=<<EOF
|
|
.ic*
|
|
tsc Employee
|
|
tsc NSString
|
|
EOF
|
|
EXPECT=<<EOF
|
|
struct Employee {
|
|
void *firstName;
|
|
void *shortWord;
|
|
void *username;
|
|
void *wideWord;
|
|
struct objc_class *isa;
|
|
short _shortWord;
|
|
struct NSString *_username;
|
|
struct NSString *_firstName;
|
|
uint64_t _wideWord;
|
|
};
|
|
struct NSString {
|
|
void *p0;
|
|
size_t p1;
|
|
char *str;
|
|
int len;
|
|
};
|
|
EOF
|
|
RUN
|
|
|
|
NAME=tc2 iOS14 arm64e
|
|
FILE=bins/mach0/objc-employee-ios14-arm64e
|
|
CMDS=icc
|
|
BROKEN=1
|
|
EXPECT=<<EOF
|
|
@interface Employee
|
|
{
|
|
s Employee::(ivar)_shortWord
|
|
@"NSString" Employee::(ivar)_username
|
|
@"NSString" Employee::(ivar)_firstName
|
|
Q Employee::(ivar)_wideWord
|
|
}
|
|
- (void) sayHello
|
|
- (void) helloWorld
|
|
- (unknown) p0
|
|
- (unknown) p1
|
|
- (unknown) p2
|
|
- (unknown) p3
|
|
- (unknown) base
|
|
- (id) username
|
|
- (void) setUsername:
|
|
- (id) firstName
|
|
- (void) setFirstName:
|
|
- (short) shortWord
|
|
- (unsigned long long) wideWord
|
|
- (void) .cxx_destruct
|
|
+ (void) sayHello
|
|
@end
|
|
EOF
|
|
RUN
|
|
|
|
NAME=tc3 iOS14 arm64e
|
|
FILE=bins/mach0/objc-employee-ios14-arm64e
|
|
CMDS=ic*
|
|
EXPECT=<<EOF
|
|
fs classes
|
|
f class.public.Employee @ 0x1000079a8
|
|
f field.Employee.Employee::_property_firstName @ 0xffffffffffffffff
|
|
f field.Employee.Employee::_property_shortWord @ 0xffffffffffffffff
|
|
f field.Employee.Employee::_property_username @ 0xffffffffffffffff
|
|
f field.Employee.Employee::_property_wideWord @ 0xffffffffffffffff
|
|
f field.Employee.isa @ 0xffffffffffffffff
|
|
f field.Employee.Employee::_ivar__shortWord @ 0x10000c1d8
|
|
f field.Employee.Employee::_ivar__username @ 0x10000c1dc
|
|
f field.Employee.Employee::_ivar__firstName @ 0x10000c1e0
|
|
f field.Employee.Employee::_ivar__wideWord @ 0x10000c1e4
|
|
f method.class.Employee.sayHello @ 0x1000079a8
|
|
f method.Employee.sayHello @ 0x1000079d8
|
|
f method.Employee.helloWorld @ 0x100007a08
|
|
f method.Employee.p0 @ 0x100007a38
|
|
f method.Employee.p1 @ 0x100007a54
|
|
f method.Employee.p2 @ 0x100007a70
|
|
f method.Employee.p3 @ 0x100007a8c
|
|
f method.Employee.base @ 0x100007aa8
|
|
f method.Employee.username @ 0x100007ac0
|
|
f method.Employee.setUsername: @ 0x100007ae8
|
|
f method.Employee.firstName @ 0x100007b24
|
|
f method.Employee.setFirstName: @ 0x100007b4c
|
|
f method.Employee.shortWord @ 0x100007b88
|
|
f method.Employee.wideWord @ 0x100007ba8
|
|
f method.Employee..cxx_destruct @ 0x100007bc4
|
|
td "struct Employee { void* firstName; void* shortWord; void* username; void* wideWord; struct objc_class * isa; short _shortWord; struct NSString* _username; struct NSString* _firstName; uint64_t _wideWord;};"
|
|
EOF
|
|
RUN
|
|
|
|
NAME=tc4 iOS14 arm64e
|
|
FILE=bins/mach0/objc-employee-ios14-arm64e
|
|
CMDS=<<EOF
|
|
.ic*
|
|
tc Employee
|
|
tc NSString
|
|
EOF
|
|
EXPECT=<<EOF
|
|
struct Employee {
|
|
void *firstName;
|
|
void *shortWord;
|
|
void *username;
|
|
void *wideWord;
|
|
struct objc_class *isa;
|
|
short _shortWord;
|
|
struct NSString *_username;
|
|
struct NSString *_firstName;
|
|
uint64_t _wideWord;
|
|
};
|
|
struct NSString {
|
|
void *p0;
|
|
size_t p1;
|
|
char *str;
|
|
int len;
|
|
};
|
|
EOF
|
|
RUN
|
|
|
|
NAME=ttc typedef
|
|
FILE==
|
|
CMDS=<<EOF
|
|
td "typedef char *string;"
|
|
ttc string
|
|
EOF
|
|
EXPECT=<<EOF
|
|
typedef char * string;
|
|
EOF
|
|
RUN
|
|
|
|
NAME=ttj typedef
|
|
FILE==
|
|
CMDS=<<EOF
|
|
td "typedef char *string;"
|
|
ttj string
|
|
EOF
|
|
EXPECT=<<EOF
|
|
{"name":"string","type":"char *"}
|
|
EOF
|
|
RUN
|
|
|
|
NAME=test cmd tsc
|
|
FILE=bins/mach0/objc-employee
|
|
CMDS=<<EOF
|
|
.ic*
|
|
tsc Employee
|
|
EOF
|
|
EXPECT=<<EOF
|
|
struct Employee {
|
|
void *firstName;
|
|
void *shortWord;
|
|
void *username;
|
|
void *wideWord;
|
|
struct objc_class *isa;
|
|
short _shortWord;
|
|
struct NSString *_username;
|
|
struct NSString *_firstName;
|
|
uint64_t _wideWord;
|
|
};
|
|
EOF
|
|
RUN
|
|
|
|
NAME=test cmd tf
|
|
FILE=bins/mach0/objc-employee
|
|
CMDS=<<EOF
|
|
tf main
|
|
tf entry0
|
|
EOF
|
|
EXPECT=<<EOF
|
|
int main(int argc, char **argv, char **envp);
|
|
EOF
|
|
RUN
|
|
|
|
NAME=test cmd tec
|
|
FILE==
|
|
CMDS=<<EOF
|
|
td "enum foo {bar = 1, cow = 3};"
|
|
tec foo
|
|
EOF
|
|
EXPECT=<<EOF
|
|
enum foo {
|
|
bar = 0x1,
|
|
cow = 0x3
|
|
};
|
|
EOF
|
|
RUN
|
|
|
|
NAME=test cmd tuc
|
|
FILE==
|
|
CMDS=<<EOF
|
|
td "union Data {int i; int j;};"
|
|
tuc Data
|
|
EOF
|
|
EXPECT=<<EOF
|
|
union Data {
|
|
int i;
|
|
int j;
|
|
};
|
|
EOF
|
|
RUN
|
|
|
|
NAME=test cmd tsj
|
|
FILE==
|
|
CMDS=<<EOF
|
|
td "struct foo {};"
|
|
tsj foo
|
|
td "struct foo2 {int a; int b;};"
|
|
tsj foo2
|
|
EOF
|
|
EXPECT=<<EOF
|
|
{"name":"foo","members":{}}
|
|
{"name":"foo2","members":{"a":"int","b":"int"}}
|
|
EOF
|
|
RUN
|