xref: /llvm-project/lldb/test/API/functionalities/data-formatter/embedded-summary/main.c (revision f22cff7675f7f64aa52204f4426f5047cc75fbb9)
1 void puts(const char *);
2 
3 #define LLDBSUMMARY __attribute__((section("__TEXT,__lldbsummaries"), used))
4 
5 struct Player {
6   char *name;
7   int number;
8 };
9 
10 LLDBSUMMARY unsigned char _Player_type_summary[] =
11     "\x01"                         // version
12     "\x25"                         // record size
13     "\x07"                         // type name size
14     "Player\0"                     // type name
15     "\x1c"                         // summary string size
16     "${var.name} (${var.number})"; // summary string
17 
18 struct Layer {
19   char *name;
20   int number;
21 };
22 
23 LLDBSUMMARY unsigned char _padding[] = "\x00\x00";
24 
25 // Near copy of the record for `Player`, using a regex type name (`^Layer`).
26 LLDBSUMMARY unsigned char _Layer_type_summary[] =
27     "\x01"                         // version
28     "\x25"                         // record size
29     "\x07"                         // type name size
30     "^Layer\0"                     // type name
31     "\x1c"                         // summary string size
32     "${var.name} (${var.number})"; // summary string
33 
34 int main() {
35   struct Player player;
36   player.name = "Dirk";
37   player.number = 41;
38   struct Layer layer;
39   layer.name = "crust";
40   layer.number = 3;
41   puts("break here");
42   return 0;
43 }
44