github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/tools/syz-declextract/testdata/types.c.json (about) 1 { 2 "functions": [ 3 { 4 "name": "__do_sys_align_syscall", 5 "file": "types.c", 6 "start_line": 111, 7 "end_line": 113, 8 "scopes": [ 9 { 10 "arg": -1 11 } 12 ] 13 }, 14 { 15 "name": "__do_sys_types_syscall", 16 "file": "types.c", 17 "start_line": 53, 18 "end_line": 57, 19 "scopes": [ 20 { 21 "arg": -1 22 } 23 ] 24 }, 25 { 26 "name": "__do_sys_types_syscall2", 27 "file": "types.c", 28 "start_line": 69, 29 "end_line": 71, 30 "scopes": [ 31 { 32 "arg": -1 33 } 34 ] 35 }, 36 { 37 "name": "anon_flow", 38 "file": "types.c", 39 "start_line": 73, 40 "end_line": 82, 41 "scopes": [ 42 { 43 "arg": -1, 44 "facts": [ 45 { 46 "src": { 47 "argument": { 48 "func": "anon_flow", 49 "arg": 0 50 } 51 }, 52 "dst": { 53 "field": { 54 "struct": "11253655576479126317", 55 "field": "x" 56 } 57 } 58 }, 59 { 60 "src": { 61 "argument": { 62 "func": "anon_flow", 63 "arg": 0 64 } 65 }, 66 "dst": { 67 "field": { 68 "struct": "11253655576479126319", 69 "field": "y" 70 } 71 } 72 }, 73 { 74 "src": { 75 "argument": { 76 "func": "anon_flow", 77 "arg": 0 78 } 79 }, 80 "dst": { 81 "field": { 82 "struct": "11253655576479126320", 83 "field": "w" 84 } 85 } 86 }, 87 { 88 "src": { 89 "argument": { 90 "func": "anon_flow", 91 "arg": 0 92 } 93 }, 94 "dst": { 95 "field": { 96 "struct": "11253655576479126310", 97 "field": "f" 98 } 99 } 100 }, 101 { 102 "src": { 103 "argument": { 104 "func": "anon_flow", 105 "arg": 0 106 } 107 }, 108 "dst": { 109 "field": { 110 "struct": "11253655576479126323", 111 "field": "a" 112 } 113 } 114 }, 115 { 116 "src": { 117 "argument": { 118 "func": "anon_flow", 119 "arg": 0 120 } 121 }, 122 "dst": { 123 "field": { 124 "struct": "11253655576479126324", 125 "field": "a" 126 } 127 } 128 }, 129 { 130 "src": { 131 "argument": { 132 "func": "anon_flow", 133 "arg": 0 134 } 135 }, 136 "dst": { 137 "field": { 138 "struct": "11253655576479126325", 139 "field": "b" 140 } 141 } 142 } 143 ] 144 } 145 ] 146 }, 147 { 148 "name": "atomic_load32", 149 "file": "include/types.h", 150 "start_line": 17, 151 "end_line": 19, 152 "is_static": true, 153 "scopes": [ 154 { 155 "arg": -1 156 } 157 ] 158 }, 159 { 160 "name": "atomic_load64", 161 "file": "include/types.h", 162 "start_line": 21, 163 "end_line": 23, 164 "scopes": [ 165 { 166 "arg": -1 167 } 168 ] 169 } 170 ], 171 "consts": [ 172 { 173 "name": "a", 174 "filename": "types.c", 175 "value": 0 176 }, 177 { 178 "name": "b", 179 "filename": "types.c", 180 "value": 1 181 }, 182 { 183 "name": "c", 184 "filename": "types.c", 185 "value": 2 186 }, 187 { 188 "name": "enum_bar_a", 189 "filename": "types.c", 190 "value": 0 191 }, 192 { 193 "name": "enum_bar_b", 194 "filename": "types.c", 195 "value": 1 196 }, 197 { 198 "name": "enum_foo_a", 199 "filename": "types.c", 200 "value": 0 201 }, 202 { 203 "name": "enum_foo_b", 204 "filename": "types.c", 205 "value": 1 206 } 207 ], 208 "enums": [ 209 { 210 "name": "bitfield_enum", 211 "values": [ 212 "a", 213 "b", 214 "c" 215 ] 216 }, 217 { 218 "name": "enum_bar", 219 "values": [ 220 "enum_bar_a", 221 "enum_bar_b" 222 ] 223 }, 224 { 225 "name": "enum_foo", 226 "values": [ 227 "enum_foo_a", 228 "enum_foo_b" 229 ] 230 } 231 ], 232 "structs": [ 233 { 234 "name": "align1", 235 "byte_size": 16, 236 "align": 8, 237 "fields": [ 238 { 239 "name": "f1", 240 "counted_by": -1, 241 "type": { 242 "int": { 243 "byte_size": 1, 244 "name": "char", 245 "base": "char" 246 } 247 } 248 }, 249 { 250 "name": "aligner", 251 "counted_by": -1, 252 "type": { 253 "array": { 254 "elem": { 255 "int": { 256 "byte_size": 8, 257 "name": "long", 258 "base": "long" 259 } 260 }, 261 "align": 8, 262 "is_const_size": true 263 } 264 } 265 }, 266 { 267 "name": "f2", 268 "counted_by": -1, 269 "type": { 270 "int": { 271 "byte_size": 1, 272 "name": "char", 273 "base": "char" 274 } 275 } 276 } 277 ] 278 }, 279 { 280 "name": "align2", 281 "byte_size": 2, 282 "align": 1, 283 "fields": [ 284 { 285 "name": "f1", 286 "counted_by": -1, 287 "type": { 288 "int": { 289 "byte_size": 1, 290 "name": "char", 291 "base": "char" 292 } 293 } 294 }, 295 { 296 "name": "aligner", 297 "counted_by": -1, 298 "type": { 299 "struct": "empty_struct" 300 } 301 }, 302 { 303 "name": "f2", 304 "counted_by": -1, 305 "type": { 306 "int": { 307 "byte_size": 1, 308 "name": "char", 309 "base": "char" 310 } 311 } 312 } 313 ] 314 }, 315 { 316 "name": "align3", 317 "byte_size": 16, 318 "align": 8, 319 "fields": [ 320 { 321 "name": "f1", 322 "counted_by": -1, 323 "type": { 324 "int": { 325 "byte_size": 1, 326 "name": "char", 327 "base": "char" 328 } 329 } 330 }, 331 { 332 "name": "aligner", 333 "counted_by": -1, 334 "type": { 335 "struct": "aligned_empty_struct" 336 } 337 }, 338 { 339 "name": "f2", 340 "counted_by": -1, 341 "type": { 342 "int": { 343 "byte_size": 1, 344 "name": "char", 345 "base": "char" 346 } 347 } 348 } 349 ] 350 }, 351 { 352 "name": "align4", 353 "byte_size": 16, 354 "align": 8, 355 "fields": [ 356 { 357 "name": "f1", 358 "counted_by": -1, 359 "type": { 360 "int": { 361 "byte_size": 1, 362 "name": "char", 363 "base": "char" 364 } 365 } 366 }, 367 { 368 "name": "aligner", 369 "counted_by": -1, 370 "type": { 371 "array": { 372 "elem": { 373 "struct": "large_struct" 374 }, 375 "align": 8, 376 "is_const_size": true 377 } 378 } 379 }, 380 { 381 "name": "f2", 382 "counted_by": -1, 383 "type": { 384 "int": { 385 "byte_size": 1, 386 "name": "char", 387 "base": "char" 388 } 389 } 390 } 391 ] 392 }, 393 { 394 "name": "aligned_empty_struct", 395 "align": 8, 396 "align_attr": 8 397 }, 398 { 399 "name": "anon_struct", 400 "byte_size": 104, 401 "align": 8, 402 "fields": [ 403 { 404 "name": "a", 405 "counted_by": -1, 406 "type": { 407 "struct": "anon_struct_a" 408 } 409 }, 410 { 411 "name": "b", 412 "counted_by": -1, 413 "type": { 414 "struct": "anon_struct_b" 415 } 416 }, 417 { 418 "name": "anon_struct_2", 419 "is_anonymous": true, 420 "counted_by": -1, 421 "type": { 422 "struct": "anon_struct_2" 423 } 424 }, 425 { 426 "name": "anon_struct_3", 427 "is_anonymous": true, 428 "counted_by": -1, 429 "type": { 430 "struct": "anon_struct_3" 431 } 432 }, 433 { 434 "name": "foo", 435 "counted_by": -1, 436 "type": { 437 "struct": "anon_t" 438 } 439 }, 440 { 441 "name": "forward", 442 "counted_by": -1, 443 "type": { 444 "ptr": { 445 "elem": { 446 "int": { 447 "byte_size": 1, 448 "name": "TODO", 449 "base": "long" 450 } 451 } 452 } 453 } 454 }, 455 { 456 "name": "array", 457 "counted_by": -1, 458 "type": { 459 "array": { 460 "elem": { 461 "struct": "anon_struct_array" 462 }, 463 "min_size": 4, 464 "max_size": 4, 465 "align": 4, 466 "is_const_size": true 467 } 468 } 469 }, 470 { 471 "name": "ptr", 472 "counted_by": -1, 473 "type": { 474 "ptr": { 475 "elem": { 476 "struct": "anon_struct_ptr" 477 } 478 } 479 } 480 }, 481 { 482 "name": "ptr_array", 483 "counted_by": -1, 484 "type": { 485 "array": { 486 "elem": { 487 "ptr": { 488 "elem": { 489 "struct": "anon_struct_ptr_array" 490 } 491 } 492 }, 493 "min_size": 4, 494 "max_size": 4, 495 "align": 8, 496 "is_const_size": true 497 } 498 } 499 } 500 ] 501 }, 502 { 503 "name": "anon_struct_2", 504 "byte_size": 4, 505 "align": 4, 506 "fields": [ 507 { 508 "name": "y", 509 "counted_by": -1, 510 "type": { 511 "int": { 512 "byte_size": 4, 513 "name": "int", 514 "base": "int" 515 } 516 } 517 } 518 ] 519 }, 520 { 521 "name": "anon_struct_3", 522 "byte_size": 8, 523 "align": 8, 524 "is_union": true, 525 "fields": [ 526 { 527 "name": "q", 528 "counted_by": -1, 529 "type": { 530 "int": { 531 "byte_size": 4, 532 "name": "int", 533 "base": "int" 534 } 535 } 536 }, 537 { 538 "name": "w", 539 "counted_by": -1, 540 "type": { 541 "int": { 542 "byte_size": 8, 543 "name": "long", 544 "base": "long" 545 } 546 } 547 } 548 ] 549 }, 550 { 551 "name": "anon_struct_a", 552 "byte_size": 4, 553 "align": 4, 554 "fields": [ 555 { 556 "name": "x", 557 "counted_by": -1, 558 "type": { 559 "int": { 560 "byte_size": 4, 561 "name": "int", 562 "base": "int" 563 } 564 } 565 } 566 ] 567 }, 568 { 569 "name": "anon_struct_array", 570 "byte_size": 8, 571 "align": 4, 572 "fields": [ 573 { 574 "name": "a", 575 "counted_by": -1, 576 "type": { 577 "int": { 578 "byte_size": 4, 579 "name": "int", 580 "base": "int" 581 } 582 } 583 }, 584 { 585 "name": "b", 586 "counted_by": -1, 587 "type": { 588 "int": { 589 "byte_size": 4, 590 "name": "int", 591 "base": "int" 592 } 593 } 594 } 595 ] 596 }, 597 { 598 "name": "anon_struct_b", 599 "align": 1 600 }, 601 { 602 "name": "anon_struct_ptr", 603 "byte_size": 8, 604 "align": 4, 605 "fields": [ 606 { 607 "name": "a", 608 "counted_by": -1, 609 "type": { 610 "int": { 611 "byte_size": 4, 612 "name": "int", 613 "base": "int" 614 } 615 } 616 }, 617 { 618 "name": "b", 619 "counted_by": -1, 620 "type": { 621 "int": { 622 "byte_size": 4, 623 "name": "int", 624 "base": "int" 625 } 626 } 627 } 628 ] 629 }, 630 { 631 "name": "anon_struct_ptr_array", 632 "byte_size": 8, 633 "align": 4, 634 "fields": [ 635 { 636 "name": "a", 637 "counted_by": -1, 638 "type": { 639 "int": { 640 "byte_size": 4, 641 "name": "int", 642 "base": "int" 643 } 644 } 645 }, 646 { 647 "name": "b", 648 "counted_by": -1, 649 "type": { 650 "int": { 651 "byte_size": 4, 652 "name": "int", 653 "base": "int" 654 } 655 } 656 } 657 ] 658 }, 659 { 660 "name": "anon_t", 661 "byte_size": 4, 662 "align": 4, 663 "fields": [ 664 { 665 "name": "f", 666 "counted_by": -1, 667 "type": { 668 "int": { 669 "byte_size": 4, 670 "name": "float", 671 "base": "float" 672 } 673 } 674 } 675 ] 676 }, 677 { 678 "name": "bitfields", 679 "byte_size": 32, 680 "align": 32, 681 "align_attr": 32, 682 "fields": [ 683 { 684 "name": "a", 685 "bit_width": 1, 686 "counted_by": -1, 687 "type": { 688 "int": { 689 "byte_size": 4, 690 "name": "int", 691 "base": "int" 692 } 693 } 694 }, 695 { 696 "name": "bitfields_1", 697 "is_anonymous": true, 698 "bit_width": 2, 699 "counted_by": -1, 700 "type": { 701 "int": { 702 "byte_size": 4, 703 "name": "int", 704 "base": "int" 705 } 706 } 707 }, 708 { 709 "name": "b", 710 "bit_width": 3, 711 "counted_by": -1, 712 "type": { 713 "int": { 714 "byte_size": 4, 715 "name": "int", 716 "base": "int" 717 } 718 } 719 }, 720 { 721 "name": "d", 722 "bit_width": 2, 723 "counted_by": -1, 724 "type": { 725 "int": { 726 "byte_size": 8, 727 "name": "long", 728 "base": "long" 729 } 730 } 731 }, 732 { 733 "name": "pad", 734 "bit_width": 3, 735 "counted_by": -1, 736 "type": { 737 "int": { 738 "byte_size": 8, 739 "name": "long", 740 "base": "long" 741 } 742 } 743 }, 744 { 745 "name": "e", 746 "bit_width": 10, 747 "counted_by": -1, 748 "type": { 749 "int": { 750 "byte_size": 4, 751 "enum": "bitfield_enum" 752 } 753 } 754 }, 755 { 756 "name": "l", 757 "bit_width": 10, 758 "counted_by": -1, 759 "type": { 760 "int": { 761 "byte_size": 4, 762 "name": "int", 763 "base": "int" 764 } 765 } 766 }, 767 { 768 "name": "p", 769 "counted_by": 6, 770 "type": { 771 "ptr": { 772 "elem": { 773 "int": { 774 "byte_size": 4, 775 "name": "int", 776 "base": "int" 777 } 778 } 779 } 780 } 781 } 782 ] 783 }, 784 { 785 "name": "empty_struct", 786 "align": 1 787 }, 788 { 789 "name": "large_struct", 790 "byte_size": 80, 791 "align": 8, 792 "fields": [ 793 { 794 "name": "foo", 795 "counted_by": -1, 796 "type": { 797 "array": { 798 "elem": { 799 "int": { 800 "byte_size": 8, 801 "name": "long", 802 "base": "long" 803 } 804 }, 805 "min_size": 10, 806 "max_size": 10, 807 "align": 8, 808 "is_const_size": true 809 } 810 } 811 } 812 ] 813 }, 814 { 815 "name": "packed_t", 816 "byte_size": 32, 817 "align": 32, 818 "is_packed": true, 819 "align_attr": 32, 820 "fields": [ 821 { 822 "name": "x", 823 "counted_by": -1, 824 "type": { 825 "int": { 826 "byte_size": 1, 827 "name": "char", 828 "base": "char" 829 } 830 } 831 }, 832 { 833 "name": "y", 834 "counted_by": -1, 835 "type": { 836 "int": { 837 "byte_size": 4, 838 "name": "int", 839 "base": "int" 840 } 841 } 842 } 843 ] 844 }, 845 { 846 "name": "recursive", 847 "byte_size": 64, 848 "align": 32, 849 "fields": [ 850 { 851 "name": "various", 852 "counted_by": -1, 853 "type": { 854 "struct": "various" 855 } 856 } 857 ] 858 }, 859 { 860 "name": "various", 861 "byte_size": 64, 862 "align": 32, 863 "fields": [ 864 { 865 "name": "recursive", 866 "counted_by": -1, 867 "type": { 868 "ptr": { 869 "elem": { 870 "struct": "various" 871 } 872 } 873 } 874 }, 875 { 876 "name": "next", 877 "counted_by": -1, 878 "type": { 879 "ptr": { 880 "elem": { 881 "struct": "recursive" 882 } 883 } 884 } 885 }, 886 { 887 "name": "packed", 888 "counted_by": -1, 889 "type": { 890 "struct": "packed_t" 891 } 892 } 893 ] 894 } 895 ], 896 "syscalls": [ 897 { 898 "func": "__do_sys_align_syscall", 899 "args": [ 900 { 901 "name": "a1", 902 "counted_by": -1, 903 "type": { 904 "ptr": { 905 "elem": { 906 "struct": "align1" 907 } 908 } 909 } 910 }, 911 { 912 "name": "a2", 913 "counted_by": -1, 914 "type": { 915 "ptr": { 916 "elem": { 917 "struct": "align2" 918 } 919 } 920 } 921 }, 922 { 923 "name": "a3", 924 "counted_by": -1, 925 "type": { 926 "ptr": { 927 "elem": { 928 "struct": "align3" 929 } 930 } 931 } 932 }, 933 { 934 "name": "a4", 935 "counted_by": -1, 936 "type": { 937 "ptr": { 938 "elem": { 939 "struct": "align4" 940 } 941 } 942 } 943 } 944 ], 945 "source_file": "types.c" 946 }, 947 { 948 "func": "__do_sys_types_syscall", 949 "args": [ 950 { 951 "name": "p", 952 "counted_by": -1, 953 "type": { 954 "ptr": { 955 "elem": { 956 "struct": "anon_struct" 957 } 958 } 959 } 960 }, 961 { 962 "name": "y", 963 "counted_by": -1, 964 "type": { 965 "ptr": { 966 "elem": { 967 "struct": "empty_struct" 968 } 969 } 970 } 971 }, 972 { 973 "name": "b", 974 "counted_by": -1, 975 "type": { 976 "ptr": { 977 "elem": { 978 "struct": "bitfields" 979 } 980 } 981 } 982 }, 983 { 984 "name": "pid", 985 "counted_by": -1, 986 "type": { 987 "int": { 988 "byte_size": 4, 989 "name": "int", 990 "base": "int" 991 } 992 } 993 }, 994 { 995 "name": "f", 996 "counted_by": -1, 997 "type": { 998 "int": { 999 "byte_size": 4, 1000 "name": "fd_t", 1001 "base": "int" 1002 } 1003 } 1004 }, 1005 { 1006 "name": "v", 1007 "counted_by": -1, 1008 "type": { 1009 "ptr": { 1010 "elem": { 1011 "struct": "various" 1012 } 1013 } 1014 } 1015 }, 1016 { 1017 "name": "pi", 1018 "counted_by": -1, 1019 "type": { 1020 "ptr": { 1021 "elem": { 1022 "int": { 1023 "byte_size": 4, 1024 "name": "int", 1025 "base": "int" 1026 } 1027 } 1028 } 1029 } 1030 }, 1031 { 1032 "name": "pu", 1033 "counted_by": -1, 1034 "type": { 1035 "ptr": { 1036 "elem": { 1037 "int": { 1038 "byte_size": 4, 1039 "name": "u32", 1040 "base": "unsigned int" 1041 } 1042 } 1043 } 1044 } 1045 } 1046 ], 1047 "source_file": "types.c" 1048 }, 1049 { 1050 "func": "__do_sys_types_syscall2", 1051 "args": [ 1052 { 1053 "name": "foo", 1054 "counted_by": -1, 1055 "type": { 1056 "int": { 1057 "byte_size": 4, 1058 "enum": "enum_foo" 1059 } 1060 } 1061 }, 1062 { 1063 "name": "bar", 1064 "counted_by": -1, 1065 "type": { 1066 "int": { 1067 "byte_size": 4, 1068 "enum": "enum_bar" 1069 } 1070 } 1071 } 1072 ], 1073 "source_file": "types.c" 1074 } 1075 ] 1076 }