@@ -6664,27 +6664,33 @@ const struct btf_dedup_test dedup_tests[] = {
6664
6664
BTF_MEMBER_ENC (NAME_NTH (4 ), 5 , 64 ), /* const int *a; */
6665
6665
BTF_MEMBER_ENC (NAME_NTH (5 ), 2 , 128 ), /* int b[16]; */
6666
6666
BTF_MEMBER_ENC (NAME_NTH (6 ), 1 , 640 ), /* int c; */
6667
- BTF_MEMBER_ENC (NAME_NTH (8 ), 13 , 672 ), /* float d; */
6667
+ BTF_MEMBER_ENC (NAME_NTH (8 ), 15 , 672 ), /* float d; */
6668
6668
/* ptr -> [3] struct s */
6669
6669
BTF_PTR_ENC (3 ), /* [4] */
6670
6670
/* ptr -> [6] const int */
6671
6671
BTF_PTR_ENC (6 ), /* [5] */
6672
6672
/* const -> [1] int */
6673
6673
BTF_CONST_ENC (1 ), /* [6] */
6674
+ /* tag -> [3] struct s */
6675
+ BTF_TAG_ENC (NAME_NTH (2 ), 3 , -1 ), /* [7] */
6676
+ /* tag -> [3] struct s, member 1 */
6677
+ BTF_TAG_ENC (NAME_NTH (2 ), 3 , 1 ), /* [8] */
6674
6678
6675
6679
/* full copy of the above */
6676
- BTF_TYPE_INT_ENC (NAME_NTH (1 ), BTF_INT_SIGNED , 0 , 32 , 4 ), /* [7] */
6677
- BTF_TYPE_ARRAY_ENC (7 , 7 , 16 ), /* [8] */
6678
- BTF_STRUCT_ENC (NAME_NTH (2 ), 5 , 88 ), /* [9] */
6679
- BTF_MEMBER_ENC (NAME_NTH (3 ), 10 , 0 ),
6680
- BTF_MEMBER_ENC (NAME_NTH (4 ), 11 , 64 ),
6681
- BTF_MEMBER_ENC (NAME_NTH (5 ), 8 , 128 ),
6682
- BTF_MEMBER_ENC (NAME_NTH (6 ), 7 , 640 ),
6683
- BTF_MEMBER_ENC (NAME_NTH (8 ), 13 , 672 ),
6684
- BTF_PTR_ENC (9 ), /* [10] */
6685
- BTF_PTR_ENC (12 ), /* [11] */
6686
- BTF_CONST_ENC (7 ), /* [12] */
6687
- BTF_TYPE_FLOAT_ENC (NAME_NTH (7 ), 4 ), /* [13] */
6680
+ BTF_TYPE_INT_ENC (NAME_NTH (1 ), BTF_INT_SIGNED , 0 , 32 , 4 ), /* [9] */
6681
+ BTF_TYPE_ARRAY_ENC (9 , 9 , 16 ), /* [10] */
6682
+ BTF_STRUCT_ENC (NAME_NTH (2 ), 5 , 88 ), /* [11] */
6683
+ BTF_MEMBER_ENC (NAME_NTH (3 ), 12 , 0 ),
6684
+ BTF_MEMBER_ENC (NAME_NTH (4 ), 13 , 64 ),
6685
+ BTF_MEMBER_ENC (NAME_NTH (5 ), 10 , 128 ),
6686
+ BTF_MEMBER_ENC (NAME_NTH (6 ), 9 , 640 ),
6687
+ BTF_MEMBER_ENC (NAME_NTH (8 ), 15 , 672 ),
6688
+ BTF_PTR_ENC (11 ), /* [12] */
6689
+ BTF_PTR_ENC (14 ), /* [13] */
6690
+ BTF_CONST_ENC (9 ), /* [14] */
6691
+ BTF_TYPE_FLOAT_ENC (NAME_NTH (7 ), 4 ), /* [15] */
6692
+ BTF_TAG_ENC (NAME_NTH (2 ), 11 , -1 ), /* [16] */
6693
+ BTF_TAG_ENC (NAME_NTH (2 ), 11 , 1 ), /* [17] */
6688
6694
BTF_END_RAW ,
6689
6695
},
6690
6696
BTF_STR_SEC ("\0int\0s\0next\0a\0b\0c\0float\0d" ),
@@ -6701,14 +6707,16 @@ const struct btf_dedup_test dedup_tests[] = {
6701
6707
BTF_MEMBER_ENC (NAME_NTH (1 ), 5 , 64 ), /* const int *a; */
6702
6708
BTF_MEMBER_ENC (NAME_NTH (2 ), 2 , 128 ), /* int b[16]; */
6703
6709
BTF_MEMBER_ENC (NAME_NTH (3 ), 1 , 640 ), /* int c; */
6704
- BTF_MEMBER_ENC (NAME_NTH (4 ), 7 , 672 ), /* float d; */
6710
+ BTF_MEMBER_ENC (NAME_NTH (4 ), 9 , 672 ), /* float d; */
6705
6711
/* ptr -> [3] struct s */
6706
6712
BTF_PTR_ENC (3 ), /* [4] */
6707
6713
/* ptr -> [6] const int */
6708
6714
BTF_PTR_ENC (6 ), /* [5] */
6709
6715
/* const -> [1] int */
6710
6716
BTF_CONST_ENC (1 ), /* [6] */
6711
- BTF_TYPE_FLOAT_ENC (NAME_NTH (7 ), 4 ), /* [7] */
6717
+ BTF_TAG_ENC (NAME_NTH (2 ), 3 , -1 ), /* [7] */
6718
+ BTF_TAG_ENC (NAME_NTH (2 ), 3 , 1 ), /* [8] */
6719
+ BTF_TYPE_FLOAT_ENC (NAME_NTH (7 ), 4 ), /* [9] */
6712
6720
BTF_END_RAW ,
6713
6721
},
6714
6722
BTF_STR_SEC ("\0a\0b\0c\0d\0int\0float\0next\0s" ),
@@ -6833,9 +6841,11 @@ const struct btf_dedup_test dedup_tests[] = {
6833
6841
BTF_FUNC_PROTO_ARG_ENC (NAME_TBD , 8 ),
6834
6842
BTF_FUNC_ENC (NAME_TBD , 12 ), /* [13] func */
6835
6843
BTF_TYPE_FLOAT_ENC (NAME_TBD , 2 ), /* [14] float */
6844
+ BTF_TAG_ENC (NAME_TBD , 13 , -1 ), /* [15] tag */
6845
+ BTF_TAG_ENC (NAME_TBD , 13 , 1 ), /* [16] tag */
6836
6846
BTF_END_RAW ,
6837
6847
},
6838
- BTF_STR_SEC ("\0A\0B\0C\0D\0E\0F\0G\0H\0I\0J\0K\0L\0M\0N" ),
6848
+ BTF_STR_SEC ("\0A\0B\0C\0D\0E\0F\0G\0H\0I\0J\0K\0L\0M\0N\0O\0P " ),
6839
6849
},
6840
6850
.expect = {
6841
6851
.raw_types = {
@@ -6859,9 +6869,11 @@ const struct btf_dedup_test dedup_tests[] = {
6859
6869
BTF_FUNC_PROTO_ARG_ENC (NAME_TBD , 8 ),
6860
6870
BTF_FUNC_ENC (NAME_TBD , 12 ), /* [13] func */
6861
6871
BTF_TYPE_FLOAT_ENC (NAME_TBD , 2 ), /* [14] float */
6872
+ BTF_TAG_ENC (NAME_TBD , 13 , -1 ), /* [15] tag */
6873
+ BTF_TAG_ENC (NAME_TBD , 13 , 1 ), /* [16] tag */
6862
6874
BTF_END_RAW ,
6863
6875
},
6864
- BTF_STR_SEC ("\0A\0B\0C\0D\0E\0F\0G\0H\0I\0J\0K\0L\0M\0N" ),
6876
+ BTF_STR_SEC ("\0A\0B\0C\0D\0E\0F\0G\0H\0I\0J\0K\0L\0M\0N\0O\0P " ),
6865
6877
},
6866
6878
.opts = {
6867
6879
.dont_resolve_fwds = false,
@@ -7010,6 +7022,152 @@ const struct btf_dedup_test dedup_tests[] = {
7010
7022
.dedup_table_size = 1
7011
7023
},
7012
7024
},
7025
+ {
7026
+ .descr = "dedup: func/func_arg/var tags" ,
7027
+ .input = {
7028
+ .raw_types = {
7029
+ /* int */
7030
+ BTF_TYPE_INT_ENC (0 , BTF_INT_SIGNED , 0 , 32 , 4 ), /* [1] */
7031
+ /* static int t */
7032
+ BTF_VAR_ENC (NAME_NTH (1 ), 1 , 0 ), /* [2] */
7033
+ /* void f(int a1, int a2) */
7034
+ BTF_FUNC_PROTO_ENC (0 , 2 ), /* [3] */
7035
+ BTF_FUNC_PROTO_ARG_ENC (NAME_NTH (2 ), 1 ),
7036
+ BTF_FUNC_PROTO_ARG_ENC (NAME_NTH (3 ), 1 ),
7037
+ BTF_FUNC_ENC (NAME_NTH (4 ), 2 ), /* [4] */
7038
+ /* tag -> t */
7039
+ BTF_TAG_ENC (NAME_NTH (5 ), 2 , -1 ), /* [5] */
7040
+ BTF_TAG_ENC (NAME_NTH (5 ), 2 , -1 ), /* [6] */
7041
+ /* tag -> func */
7042
+ BTF_TAG_ENC (NAME_NTH (5 ), 4 , -1 ), /* [7] */
7043
+ BTF_TAG_ENC (NAME_NTH (5 ), 4 , -1 ), /* [8] */
7044
+ /* tag -> func arg a1 */
7045
+ BTF_TAG_ENC (NAME_NTH (5 ), 4 , 1 ), /* [9] */
7046
+ BTF_TAG_ENC (NAME_NTH (5 ), 4 , 1 ), /* [10] */
7047
+ BTF_END_RAW ,
7048
+ },
7049
+ BTF_STR_SEC ("\0t\0a1\0a2\0f\0tag" ),
7050
+ },
7051
+ .expect = {
7052
+ .raw_types = {
7053
+ BTF_TYPE_INT_ENC (0 , BTF_INT_SIGNED , 0 , 32 , 4 ), /* [1] */
7054
+ BTF_VAR_ENC (NAME_NTH (1 ), 1 , 0 ), /* [2] */
7055
+ BTF_FUNC_PROTO_ENC (0 , 2 ), /* [3] */
7056
+ BTF_FUNC_PROTO_ARG_ENC (NAME_NTH (2 ), 1 ),
7057
+ BTF_FUNC_PROTO_ARG_ENC (NAME_NTH (3 ), 1 ),
7058
+ BTF_FUNC_ENC (NAME_NTH (4 ), 2 ), /* [4] */
7059
+ BTF_TAG_ENC (NAME_NTH (5 ), 2 , -1 ), /* [5] */
7060
+ BTF_TAG_ENC (NAME_NTH (5 ), 4 , -1 ), /* [6] */
7061
+ BTF_TAG_ENC (NAME_NTH (5 ), 4 , 1 ), /* [7] */
7062
+ BTF_END_RAW ,
7063
+ },
7064
+ BTF_STR_SEC ("\0t\0a1\0a2\0f\0tag" ),
7065
+ },
7066
+ .opts = {
7067
+ .dont_resolve_fwds = false,
7068
+ },
7069
+ },
7070
+ {
7071
+ .descr = "dedup: func/func_param tags" ,
7072
+ .input = {
7073
+ .raw_types = {
7074
+ /* int */
7075
+ BTF_TYPE_INT_ENC (0 , BTF_INT_SIGNED , 0 , 32 , 4 ), /* [1] */
7076
+ /* void f(int a1, int a2) */
7077
+ BTF_FUNC_PROTO_ENC (0 , 2 ), /* [2] */
7078
+ BTF_FUNC_PROTO_ARG_ENC (NAME_NTH (1 ), 1 ),
7079
+ BTF_FUNC_PROTO_ARG_ENC (NAME_NTH (2 ), 1 ),
7080
+ BTF_FUNC_ENC (NAME_NTH (3 ), 2 ), /* [3] */
7081
+ /* void f(int a1, int a2) */
7082
+ BTF_FUNC_PROTO_ENC (0 , 2 ), /* [4] */
7083
+ BTF_FUNC_PROTO_ARG_ENC (NAME_NTH (1 ), 1 ),
7084
+ BTF_FUNC_PROTO_ARG_ENC (NAME_NTH (2 ), 1 ),
7085
+ BTF_FUNC_ENC (NAME_NTH (3 ), 4 ), /* [5] */
7086
+ /* tag -> f: tag1, tag2 */
7087
+ BTF_TAG_ENC (NAME_NTH (4 ), 3 , -1 ), /* [6] */
7088
+ BTF_TAG_ENC (NAME_NTH (5 ), 3 , -1 ), /* [7] */
7089
+ /* tag -> f/a2: tag1, tag2 */
7090
+ BTF_TAG_ENC (NAME_NTH (4 ), 3 , 1 ), /* [8] */
7091
+ BTF_TAG_ENC (NAME_NTH (5 ), 3 , 1 ), /* [9] */
7092
+ /* tag -> f: tag1, tag3 */
7093
+ BTF_TAG_ENC (NAME_NTH (4 ), 5 , -1 ), /* [10] */
7094
+ BTF_TAG_ENC (NAME_NTH (6 ), 5 , -1 ), /* [11] */
7095
+ /* tag -> f/a2: tag1, tag3 */
7096
+ BTF_TAG_ENC (NAME_NTH (4 ), 5 , 1 ), /* [12] */
7097
+ BTF_TAG_ENC (NAME_NTH (6 ), 5 , 1 ), /* [13] */
7098
+ BTF_END_RAW ,
7099
+ },
7100
+ BTF_STR_SEC ("\0a1\0a2\0f\0tag1\0tag2\0tag3" ),
7101
+ },
7102
+ .expect = {
7103
+ .raw_types = {
7104
+ BTF_TYPE_INT_ENC (0 , BTF_INT_SIGNED , 0 , 32 , 4 ), /* [1] */
7105
+ BTF_FUNC_PROTO_ENC (0 , 2 ), /* [2] */
7106
+ BTF_FUNC_PROTO_ARG_ENC (NAME_NTH (1 ), 1 ),
7107
+ BTF_FUNC_PROTO_ARG_ENC (NAME_NTH (2 ), 1 ),
7108
+ BTF_FUNC_ENC (NAME_NTH (3 ), 2 ), /* [3] */
7109
+ BTF_TAG_ENC (NAME_NTH (4 ), 3 , -1 ), /* [4] */
7110
+ BTF_TAG_ENC (NAME_NTH (5 ), 3 , -1 ), /* [5] */
7111
+ BTF_TAG_ENC (NAME_NTH (6 ), 3 , -1 ), /* [6] */
7112
+ BTF_TAG_ENC (NAME_NTH (4 ), 3 , 1 ), /* [7] */
7113
+ BTF_TAG_ENC (NAME_NTH (5 ), 3 , 1 ), /* [8] */
7114
+ BTF_TAG_ENC (NAME_NTH (6 ), 3 , 1 ), /* [9] */
7115
+ BTF_END_RAW ,
7116
+ },
7117
+ BTF_STR_SEC ("\0a1\0a2\0f\0tag1\0tag2\0tag3" ),
7118
+ },
7119
+ .opts = {
7120
+ .dont_resolve_fwds = false,
7121
+ },
7122
+ },
7123
+ {
7124
+ .descr = "dedup: struct/struct_member tags" ,
7125
+ .input = {
7126
+ .raw_types = {
7127
+ /* int */
7128
+ BTF_TYPE_INT_ENC (0 , BTF_INT_SIGNED , 0 , 32 , 4 ), /* [1] */
7129
+ BTF_STRUCT_ENC (NAME_NTH (1 ), 2 , 8 ), /* [2] */
7130
+ BTF_MEMBER_ENC (NAME_NTH (2 ), 1 , 0 ),
7131
+ BTF_MEMBER_ENC (NAME_NTH (3 ), 1 , 32 ),
7132
+ BTF_STRUCT_ENC (NAME_NTH (1 ), 2 , 8 ), /* [3] */
7133
+ BTF_MEMBER_ENC (NAME_NTH (2 ), 1 , 0 ),
7134
+ BTF_MEMBER_ENC (NAME_NTH (3 ), 1 , 32 ),
7135
+ /* tag -> t: tag1, tag2 */
7136
+ BTF_TAG_ENC (NAME_NTH (4 ), 2 , -1 ), /* [4] */
7137
+ BTF_TAG_ENC (NAME_NTH (5 ), 2 , -1 ), /* [5] */
7138
+ /* tag -> t/m2: tag1, tag2 */
7139
+ BTF_TAG_ENC (NAME_NTH (4 ), 2 , 1 ), /* [6] */
7140
+ BTF_TAG_ENC (NAME_NTH (5 ), 2 , 1 ), /* [7] */
7141
+ /* tag -> t: tag1, tag3 */
7142
+ BTF_TAG_ENC (NAME_NTH (4 ), 3 , -1 ), /* [8] */
7143
+ BTF_TAG_ENC (NAME_NTH (6 ), 3 , -1 ), /* [9] */
7144
+ /* tag -> t/m2: tag1, tag3 */
7145
+ BTF_TAG_ENC (NAME_NTH (4 ), 3 , 1 ), /* [10] */
7146
+ BTF_TAG_ENC (NAME_NTH (6 ), 3 , 1 ), /* [11] */
7147
+ BTF_END_RAW ,
7148
+ },
7149
+ BTF_STR_SEC ("\0t\0m1\0m2\0tag1\0tag2\0tag3" ),
7150
+ },
7151
+ .expect = {
7152
+ .raw_types = {
7153
+ BTF_TYPE_INT_ENC (0 , BTF_INT_SIGNED , 0 , 32 , 4 ), /* [1] */
7154
+ BTF_STRUCT_ENC (NAME_NTH (1 ), 2 , 8 ), /* [2] */
7155
+ BTF_MEMBER_ENC (NAME_NTH (2 ), 1 , 0 ),
7156
+ BTF_MEMBER_ENC (NAME_NTH (3 ), 1 , 32 ),
7157
+ BTF_TAG_ENC (NAME_NTH (4 ), 2 , -1 ), /* [3] */
7158
+ BTF_TAG_ENC (NAME_NTH (5 ), 2 , -1 ), /* [4] */
7159
+ BTF_TAG_ENC (NAME_NTH (6 ), 2 , -1 ), /* [5] */
7160
+ BTF_TAG_ENC (NAME_NTH (4 ), 2 , 1 ), /* [6] */
7161
+ BTF_TAG_ENC (NAME_NTH (5 ), 2 , 1 ), /* [7] */
7162
+ BTF_TAG_ENC (NAME_NTH (6 ), 2 , 1 ), /* [8] */
7163
+ BTF_END_RAW ,
7164
+ },
7165
+ BTF_STR_SEC ("\0t\0m1\0m2\0tag1\0tag2\0tag3" ),
7166
+ },
7167
+ .opts = {
7168
+ .dont_resolve_fwds = false,
7169
+ },
7170
+ },
7013
7171
7014
7172
};
7015
7173
0 commit comments