• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="utf-8"?>
2<rules version="1.0">
3
4<rule>
5    <id>
6        Added_Virtual_Method
7    </id>
8    <severity>
9        High
10    </severity>
11    <kind>
12        V-table
13    </kind>
14    <change>
15        Virtual method @target has been added to this class.
16    </change>
17    <effect>
18        The layout of v-table has been changed. Call of any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications.
19    </effect>
20    <overcome>
21        You should add several padding virtual methods at end of class declaration and use them one by one in the course of interface evolution.
22    </overcome>
23</rule>
24
25<rule>
26    <id>
27        Added_Pure_Virtual_Method
28    </id>
29    <severity>
30        High
31    </severity>
32    <kind>
33        V-table
34    </kind>
35    <change>
36        Pure virtual method @target has been added to this class.
37    </change>
38    <effect>
39        1) Applications will not provide the implementation for this pure virtual method and therefore cause a crash in the library trying to call this method.
40        2) The layout of v-table has been changed. Call of any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications.
41    </effect>
42</rule>
43
44<rule>
45    <id>
46        Added_Virtual_Method_At_End_Of_Leaf_Copying_Class
47    </id>
48    <severity>
49        Medium
50    </severity>
51    <kind>
52        V-table
53    </kind>
54    <change>
55        Virtual method @target has been added to this class.
56    </change>
57    <effect>
58        The layout of v-table has been changed. This leaf class has no exported constructors and therefore applications will copy an old v-table of the class that will not contain a pointer to added virtual method. Call of any method in this class may result in crash or incorrect behavior of applications.
59        NOTE: if new virtual method is called only from other new methods, then binary compatibility should not be affected.
60    </effect>
61</rule>
62
63<rule>
64    <id>
65        Added_Virtual_Method_At_End_Of_Leaf_Allocable_Class
66    </id>
67    <severity>
68        Safe
69    </severity>
70    <kind>
71        V-table
72    </kind>
73    <change>
74        Virtual method @target has been added to this class.
75    </change>
76    <effect>
77        No effect. You can add virtual functions at end of leaf classes with exported constructors.
78    </effect>
79</rule>
80
81<rule>
82    <id>
83        Added_First_Virtual_Method
84    </id>
85    <severity>
86        High
87    </severity>
88    <kind>
89        V-table
90    </kind>
91    <change>
92        First virtual method @target has been added to this class.
93    </change>
94    <effect>
95        1) The layout of type structure has been shifted by @word_size bytes by the added v-table pointer.
96        2) Size of class has been increased by @word_size bytes.
97    </effect>
98</rule>
99
100<rule>
101    <id>
102        Removed_Virtual_Method
103    </id>
104    <severity>
105        High
106    </severity>
107    <kind>
108        V-table
109    </kind>
110    <change>
111        Virtual method @target has been removed from this class.
112    </change>
113    <effect>
114        The layout of v-table has been changed. Call of this virtual method or any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications.
115    </effect>
116</rule>
117
118<rule>
119    <id>
120        Removed_Pure_Virtual_Method
121    </id>
122    <severity>
123        High
124    </severity>
125    <kind>
126        V-table
127    </kind>
128    <change>
129        Pure virtual method @target has been removed from this class.
130    </change>
131    <effect>
132        The layout of v-table has been changed. Call of this virtual method or any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications.
133    </effect>
134</rule>
135
136<rule>
137    <id>
138        Removed_Last_Virtual_Method
139    </id>
140    <severity>
141        High
142    </severity>
143    <kind>
144        V-table
145    </kind>
146    <change>
147        Last virtual method @target has been removed from this class.
148    </change>
149    <effect>
150        1) The layout of type structure has been shifted by @word_size bytes by the removed v-table pointer.
151        2) Size of class has been decreased by @word_size bytes.
152    </effect>
153</rule>
154
155<rule>
156    <id>
157        Virtual_Replacement
158    </id>
159    <severity>
160        Medium
161    </severity>
162    <kind>
163        V-table
164    </kind>
165    <change>
166        Virtual method @target has been added to this class instead of @old_value.
167    </change>
168    <effect>
169        Applications will pass parameters of older replaced method to newly added virtual method. This may result in crash or incorrect behavior of applications.
170    </effect>
171</rule>
172
173<rule>
174    <id>
175        Pure_Virtual_Replacement
176    </id>
177    <severity>
178        Medium
179    </severity>
180    <kind>
181        V-table
182    </kind>
183    <change>
184        Pure virtual method @target has been added to this class instead of @old_value.
185    </change>
186    <effect>
187        Applications will provide an older method to the library instead of expected newely added virtual method. This may result in crash or incorrect behavior of applications.
188    </effect>
189</rule>
190
191<rule>
192    <id>
193        Virtual_Table_Changed_Unknown
194    </id>
195    <severity>
196        Medium
197    </severity>
198    <kind>
199        V-table
200    </kind>
201    <change>
202        The layout of v-table has been changed for **unknown** reason.
203    </change>
204    <effect>
205        Call of any method in this class may result in crash or incorrect behavior of applications.
206    </effect>
207</rule>
208
209<rule>
210    <id>
211        Virtual_Method_Position
212    </id>
213    <severity>
214        High
215    </severity>
216    <kind>
217        V-table
218    </kind>
219    <change>
220        The relative position of virtual method @target has been changed from @old_value to @new_value.
221    </change>
222    <effect>
223        The layout of v-table has been changed. Call of this virtual method may result in crash or incorrect behavior of applications.
224    </effect>
225</rule>
226
227<rule>
228    <id>
229        Pure_Virtual_Method_Position
230    </id>
231    <severity>
232        High
233    </severity>
234    <kind>
235        V-table
236    </kind>
237    <change>
238        The relative position of pure virtual method @target has been changed from @old_value to @new_value.
239    </change>
240    <effect>
241        The layout of v-table has been changed. Call of this pure virtual method implementation may result in crash or incorrect behavior of applications.
242    </effect>
243</rule>
244
245<rule>
246    <id>
247        Overridden_Virtual_Method
248    </id>
249    <severity>
250        Low
251    </severity>
252    <kind>
253        V-table
254    </kind>
255    <change>
256        Virtual method @old_value has been overridden by @new_value.
257    </change>
258    <effect>
259        Method @new_value will be called instead of @old_value by old applications.
260    </effect>
261</rule>
262
263<rule>
264    <id>
265        Overridden_Virtual_Method_B
266    </id>
267    <severity>
268        Low
269    </severity>
270    <kind>
271        V-table
272    </kind>
273    <change>
274        Virtual method @old_value has been overridden by @new_value.
275    </change>
276    <effect>
277        Method @new_value will be called instead of @old_value by old applications.
278    </effect>
279</rule>
280
281<rule>
282    <id>
283        Size_Of_Allocable_Class_Increased
284    </id>
285    <severity>
286        High
287    </severity>
288    <kind>
289        Classes
290    </kind>
291    <change>
292        Size of this class has been increased from @old_size to @new_size.
293    </change>
294    <effect>
295        1) An object of this class can be allocated by the applications and old size will be hardcoded at the compile time. Call of any exported constructor will break the memory of neighboring objects on the stack or heap.
296        2) The memory layout and size of subclasses will be changed.
297    </effect>
298</rule>
299
300<rule>
301    <id>
302        Size_Of_Allocable_Class_Decreased
303    </id>
304    <severity>
305        Medium
306    </severity>
307    <kind>
308        Classes
309    </kind>
310    <change>
311        Size of this class has been decreased from @old_size to @new_size.
312    </change>
313    <effect>
314        Previous accesses of applications to public fields of this class or its subclasses may be incorrect.
315    </effect>
316</rule>
317
318<rule>
319    <id>
320        Size_Of_Copying_Class
321    </id>
322    <severity>
323        High
324    </severity>
325    <kind>
326        Classes
327    </kind>
328    <change>
329        Size of this class has been changed from @old_size to @new_size.
330    </change>
331    <effect>
332        1) The class has only inline or auto-generated constructors which will be copied to applications at compile time and will allocate an older memory layout. Call of any exported method of this class may access a memory outside the allocated objects or inside the older memory structure and result in crash or incorrect behavior of applications.
333        2) The memory layout and size of subclasses will be changed.
334    </effect>
335</rule>
336
337<rule>
338    <id>
339        Base_Class_Position
340    </id>
341    <severity>
342        Low
343    </severity>
344    <kind>
345        Classes
346    </kind>
347    <change>
348        The relative position of class @target has been changed from @old_value to @new_value in the list of base classes.
349    </change>
350    <effect>
351        Possible incorrect access of applications to the memory occupied by the base classes.
352    </effect>
353</rule>
354
355<rule>
356    <id>
357        Base_Class_Became_Virtually_Inherited
358    </id>
359    <severity>
360        Medium
361    </severity>
362    <kind>
363        Classes
364    </kind>
365    <change>
366        Base class @target became **virtually** inherited.
367    </change>
368    <effect>
369        Size, memory layout and v-table layout of this class and subclasses may change.
370    </effect>
371</rule>
372
373<rule>
374    <id>
375        Base_Class_Became_Non_Virtually_Inherited
376    </id>
377    <severity>
378        Medium
379    </severity>
380    <kind>
381        Classes
382    </kind>
383    <change>
384        Base class @target became **non-virtually** inherited.
385    </change>
386    <effect>
387        Size, memory layout and v-table layout of this class and subclasses may change.
388    </effect>
389</rule>
390
391<rule>
392    <id>
393        Added_Base_Class_And_Shift
394    </id>
395    <severity>
396        High
397    </severity>
398    <kind>
399        Classes
400    </kind>
401    <change>
402        Base class @target has been added.
403    </change>
404    <effect>
405        The memory layout in this class has been shifted by @shift bytes.
406    </effect>
407</rule>
408
409<rule>
410    <id>
411        Added_Base_Class_And_Size
412    </id>
413    <severity>
414        High
415    </severity>
416    <kind>
417        Classes
418    </kind>
419    <change>
420        Base class @target has been added.
421    </change>
422    <effect>
423        1) Size of the class has been changed from @old_size to @new_size.
424        2) The memory layout in this class has been shifted by @shift bytes.
425    </effect>
426</rule>
427
428<rule>
429    <id>
430        Added_Base_Class_And_Shift_And_VTable
431    </id>
432    <severity>
433        High
434    </severity>
435    <kind>
436        Classes
437    </kind>
438    <change>
439        Base class @target has been added.
440    </change>
441    <effect>
442        1) The layout of v-table in this class has been changed.
443        2) The memory layout in this class has been shifted by @shift bytes.
444    </effect>
445</rule>
446
447<rule>
448    <id>
449        Added_Base_Class_And_Size_And_VTable
450    </id>
451    <severity>
452        High
453    </severity>
454    <kind>
455        Classes
456    </kind>
457    <change>
458        Base class @target has been added.
459    </change>
460    <effect>
461        1) The layout of v-table in this class has been changed.
462        2) Size of the class has been changed from @old_size to @new_size.
463        3) The memory layout in this class has been shifted by @shift bytes.
464    </effect>
465</rule>
466
467<rule>
468    <id>
469        Added_Base_Class_And_VTable
470    </id>
471    <severity>
472        High
473    </severity>
474    <kind>
475        Classes
476    </kind>
477    <change>
478        Base class @target has been added.
479    </change>
480    <effect>
481        The layout of v-table in this class has been changed.
482    </effect>
483</rule>
484
485<rule>
486    <id>
487        Added_Base_Class
488    </id>
489    <severity>
490        Low
491    </severity>
492    <kind>
493        Classes
494    </kind>
495    <change>
496        Base class @target has been added.
497    </change>
498    <effect>
499        Possible incorrect access of applications to the memory occupied by the base classes.
500    </effect>
501</rule>
502
503<rule>
504    <id>
505        Removed_Base_Class_And_Size
506    </id>
507    <severity>
508        High
509    </severity>
510    <kind>
511        Classes
512    </kind>
513    <change>
514        Base class @target has been removed.
515    </change>
516    <effect>
517        1) Size of the class has been changed from @old_size to @new_size.
518        2) The memory layout in this class has been shifted by @shift bytes.
519    </effect>
520</rule>
521
522<rule>
523    <id>
524        Removed_Base_Class_And_Shift
525    </id>
526    <severity>
527        High
528    </severity>
529    <kind>
530        Classes
531    </kind>
532    <change>
533        Base class @target has been removed.
534    </change>
535    <effect>
536        The memory layout in this class has been shifted by @shift bytes.
537    </effect>
538</rule>
539
540<rule>
541    <id>
542        Removed_Base_Class_And_Shift_And_VTable
543    </id>
544    <severity>
545        High
546    </severity>
547    <kind>
548        Classes
549    </kind>
550    <change>
551        Base class @target has been removed.
552    </change>
553    <effect>
554        1) The layout of v-table in this class has been changed.
555        2) The memory layout in this class has been shifted by @shift bytes.
556    </effect>
557</rule>
558
559<rule>
560    <id>
561        Removed_Base_Class_And_Size_And_VTable
562    </id>
563    <severity>
564        High
565    </severity>
566    <kind>
567        Classes
568    </kind>
569    <change>
570        Base class @target has been removed.
571    </change>
572    <effect>
573        1) The layout of v-table in this class has been changed.
574        2) Size of the class has been changed from @old_size to @new_size.
575        3) The memory layout in this class has been shifted by @shift bytes.
576    </effect>
577</rule>
578
579<rule>
580    <id>
581        Removed_Base_Class_And_VTable
582    </id>
583    <severity>
584        High
585    </severity>
586    <kind>
587        Classes
588    </kind>
589    <change>
590        Base class @target has been removed.
591    </change>
592    <effect>
593        The layout of v-table in this class has been changed.
594    </effect>
595</rule>
596
597<rule>
598    <id>
599        Removed_Base_Class
600    </id>
601    <severity>
602        Low
603    </severity>
604    <kind>
605        Classes
606    </kind>
607    <change>
608        Base class @target has been removed.
609    </change>
610    <effect>
611        Possible incorrect access of applications to the memory occupied by the base classes.
612    </effect>
613</rule>
614
615<rule>
616    <id>
617        DataType_Size
618    </id>
619    <severity>
620        Low
621    </severity>
622    <kind>
623        Types
624    </kind>
625    <change>
626        Size of this type has been changed from @old_size to @new_size.
627    </change>
628    <effect>
629        The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications.
630    </effect>
631</rule>
632
633<rule>
634    <id>
635        DataType_Type
636    </id>
637    <severity>
638        Medium
639    </severity>
640    <kind>
641        Types
642    </kind>
643    <change>
644        Type of this type has been changed from @old_value to @new_value.
645    </change>
646    <effect>
647        The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications.
648    </effect>
649</rule>
650
651<rule>
652    <id>
653        DataType_Size_And_Stack
654    </id>
655    <severity>
656        High
657    </severity>
658    <kind>
659        Types
660    </kind>
661    <change>
662        Size of this type has been changed from @old_size to @new_size.
663    </change>
664    <effect>
665        Layout of parameter's stack of several functions has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
666    </effect>
667</rule>
668
669<rule>
670    <id>
671        Moved_Field
672    </id>
673    <severity>
674        Medium
675    </severity>
676    <kind>
677        Fields
678    </kind>
679    <change>
680        The relative position of field @target has been changed from @old_value to @new_value.
681    </change>
682    <effect>
683        Applications will access incorrect memory when attempting to access this field.
684    </effect>
685</rule>
686
687<rule>
688    <id>
689        Moved_Field_And_Size
690    </id>
691    <severity>
692        Medium
693    </severity>
694    <kind>
695        Fields
696    </kind>
697    <change>
698        The relative position of field @target has been changed from @old_value to @new_value.
699    </change>
700    <effect>
701        1) Applications will access incorrect memory when attempting to access this field.
702        2) Size of the inclusive type has been changed.
703    </effect>
704</rule>
705
706<rule>
707    <id>
708        Moved_Private_Field_And_Size
709    </id>
710    <severity>
711        Low
712    </severity>
713    <kind>
714        Fields
715    </kind>
716    <change>
717        The relative position of private field @target has been changed from @old_value to @new_value.
718    </change>
719    <effect>
720        Size of the inclusive type has been changed.
721    </effect>
722</rule>
723
724<rule>
725    <id>
726        Added_Field
727    </id>
728    <severity>
729        Low
730    </severity>
731    <kind>
732        Fields
733    </kind>
734    <change>
735        Field @target has been added to this type.
736    </change>
737    <effect>
738        This field will not be initialized by old clients.
739        NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.
740    </effect>
741</rule>
742
743<rule>
744    <id>
745        Added_Field_And_Size
746    </id>
747    <severity>
748        Low
749    </severity>
750    <kind>
751        Fields
752    </kind>
753    <change>
754        Field @target has been added to this type.
755    </change>
756    <effect>
757        1) This field will not be initialized by old clients.
758        2) Size of the inclusive type has been changed.
759        NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.
760    </effect>
761</rule>
762
763<rule>
764    <id>
765        Added_Field_And_Layout
766    </id>
767    <severity>
768        Medium
769    </severity>
770    <kind>
771        Fields
772    </kind>
773    <change>
774        Field @target has been added at the middle position of this structural type.
775    </change>
776    <effect>
777        Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
778    </effect>
779</rule>
780
781<rule>
782    <id>
783        Added_Field_And_Layout_And_Size
784    </id>
785    <severity>
786        Medium
787    </severity>
788    <kind>
789        Fields
790    </kind>
791    <change>
792        Field @target has been added at the middle position of this structural type.
793    </change>
794    <effect>
795        1) Size of the inclusive type has been changed.
796        2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
797    </effect>
798</rule>
799
800<rule>
801    <id>
802        Added_Private_Field_And_Size
803    </id>
804    <severity>
805        Low
806    </severity>
807    <kind>
808        Fields
809    </kind>
810    <change>
811        Field @target has been added to this type.
812    </change>
813    <effect>
814        Size of the inclusive type has been changed.
815        NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.
816    </effect>
817</rule>
818
819<rule>
820    <id>
821        Added_Private_Field_And_Layout
822    </id>
823    <severity>
824        Medium
825    </severity>
826    <kind>
827        Fields
828    </kind>
829    <change>
830        Field @target has been added at the middle position of this structural type.
831    </change>
832    <effect>
833        Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
834    </effect>
835</rule>
836
837<rule>
838    <id>
839        Added_Private_Field_And_Layout_And_Size
840    </id>
841    <severity>
842        Medium
843    </severity>
844    <kind>
845        Fields
846    </kind>
847    <change>
848        Field @target has been added at the middle position of this structural type.
849    </change>
850    <effect>
851        1) Size of the inclusive type has been changed.
852        2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
853    </effect>
854</rule>
855
856<rule>
857    <id>
858        Added_Union_Field_And_Size
859    </id>
860    <severity>
861        Medium
862    </severity>
863    <kind>
864        Fields
865    </kind>
866    <change>
867        Field @target has been added to this type.
868    </change>
869    <effect>
870        Size of the union has been changed.
871        NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.
872    </effect>
873</rule>
874
875<rule>
876    <id>
877        Added_Union_Field
878    </id>
879    <severity>
880        Low
881    </severity>
882    <kind>
883        Fields
884    </kind>
885    <change>
886        Field @target has been added to this type.
887    </change>
888    <effect>
889        NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.
890    </effect>
891</rule>
892
893<rule>
894    <id>
895        Removed_Field
896    </id>
897    <severity>
898        Medium
899    </severity>
900    <kind>
901        Fields
902    </kind>
903    <change>
904        Field @target has been removed from this type.
905    </change>
906    <effect>
907        Applications will access incorrect memory when attempting to access this field.
908    </effect>
909</rule>
910
911<rule>
912    <id>
913        Removed_Field_And_Layout
914    </id>
915    <severity>
916        Medium
917    </severity>
918    <kind>
919        Fields
920    </kind>
921    <change>
922        Field @target has been removed from the middle position of this structural type.
923    </change>
924    <effect>
925        1) Applications will access incorrect memory when attempting to access this field.
926        2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
927    </effect>
928</rule>
929
930<rule>
931    <id>
932        Removed_Field_And_Size
933    </id>
934    <severity>
935        Medium
936    </severity>
937    <kind>
938        Fields
939    </kind>
940    <change>
941        Field @target has been removed from this type.
942    </change>
943    <effect>
944        1) Applications will access incorrect memory when attempting to access this field.
945        2) Size of the inclusive type has been changed.
946    </effect>
947</rule>
948
949<rule>
950    <id>
951        Removed_Field_And_Layout_And_Size
952    </id>
953    <severity>
954        High
955    </severity>
956    <kind>
957        Fields
958    </kind>
959    <change>
960        Field @target has been removed from the middle position of this structural type.
961    </change>
962    <effect>
963        1) Previous accesses of applications to the removed field will be incorrect.
964        2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
965    </effect>
966</rule>
967
968<rule>
969    <id>
970        Removed_Private_Field_And_Size
971    </id>
972    <severity>
973        Low
974    </severity>
975    <kind>
976        Fields
977    </kind>
978    <change>
979        Field @target has been removed from this type.
980    </change>
981    <effect>
982        Size of the inclusive type has been changed.
983    </effect>
984</rule>
985
986<rule>
987    <id>
988        Removed_Private_Field_And_Layout
989    </id>
990    <severity>
991        Medium
992    </severity>
993    <kind>
994        Fields
995    </kind>
996    <change>
997        Field @target has been removed from the middle position of this structural type.
998    </change>
999    <effect>
1000        Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
1001    </effect>
1002</rule>
1003
1004<rule>
1005    <id>
1006        Removed_Private_Field_And_Layout_And_Size
1007    </id>
1008    <severity>
1009        Medium
1010    </severity>
1011    <kind>
1012        Fields
1013    </kind>
1014    <change>
1015        Field @target has been removed from the middle position of this structural type.
1016    </change>
1017    <effect>
1018        1) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
1019        2) Size of the inclusive type has been changed.
1020    </effect>
1021</rule>
1022
1023<rule>
1024    <id>
1025        Removed_Union_Field_And_Size
1026    </id>
1027    <severity>
1028        Medium
1029    </severity>
1030    <kind>
1031        Fields
1032    </kind>
1033    <change>
1034        Field @target has been removed from this union.
1035    </change>
1036    <effect>
1037        1) Applications may access incorrect memory when attempting to access this field.
1038        2) Size of the union has been changed.
1039    </effect>
1040</rule>
1041
1042<rule>
1043    <id>
1044        Removed_Union_Field
1045    </id>
1046    <severity>
1047        Low
1048    </severity>
1049    <kind>
1050        Fields
1051    </kind>
1052    <change>
1053        Field @target has been removed from this union.
1054    </change>
1055    <effect>
1056        Applications may access incorrect memory when attempting to access this field.
1057    </effect>
1058</rule>
1059
1060<rule>
1061    <id>
1062        Renamed_Field
1063    </id>
1064    <severity>
1065        Low
1066    </severity>
1067    <kind>
1068        Fields
1069    </kind>
1070    <change>
1071        Field @target has been renamed to @new_value.
1072    </change>
1073    <effect>
1074        Renaming of a field in data type may indicate a change in the semantic meaning of the field.
1075    </effect>
1076</rule>
1077
1078<rule>
1079    <id>
1080        Used_Reserved_Field
1081    </id>
1082    <severity>
1083        Low
1084    </severity>
1085    <kind>
1086        Fields
1087    </kind>
1088    <change>
1089        Reserved field @target has been replaced by @new_value.
1090    </change>
1091    <effect>
1092        This field will not be initialized by old clients.
1093    </effect>
1094</rule>
1095
1096<rule>
1097    <id>
1098        Enum_Member_Value
1099    </id>
1100    <severity>
1101        Medium
1102    </severity>
1103    <kind>
1104        Constants
1105    </kind>
1106    <change>
1107        Value of member @target has been changed from @old_value to @new_value.
1108    </change>
1109    <effect>
1110        Applications may execute a wrong branch of code in the library and therefore change the behavior.
1111    </effect>
1112</rule>
1113
1114<rule>
1115    <id>
1116        Enum_Member_Removed
1117    </id>
1118    <severity>
1119        Low
1120    </severity>
1121    <kind>
1122        Constants
1123    </kind>
1124    <change>
1125        The member @target has been removed.
1126    </change>
1127    <effect>
1128        This may result in crash or incorrect behavior of applications because the library may not handle removed member anymore.
1129    </effect>
1130</rule>
1131
1132<rule>
1133    <id>
1134        Enum_Last_Member_Value
1135    </id>
1136    <severity>
1137        Low
1138    </severity>
1139    <kind>
1140        Constants
1141    </kind>
1142    <change>
1143        Value of member @target has been changed from @old_value to @new_value.
1144    </change>
1145    <effect>
1146        Applications may execute a wrong branch of code in the library and therefore change the behavior.
1147    </effect>
1148</rule>
1149
1150<rule>
1151    <id>
1152        Enum_Private_Member_Value
1153    </id>
1154    <severity>
1155        Safe
1156    </severity>
1157    <kind>
1158        Constants
1159    </kind>
1160    <change>
1161        Value of private member @target has been changed from @old_value to @new_value.
1162    </change>
1163    <effect>
1164        No effect.
1165    </effect>
1166</rule>
1167
1168<rule>
1169    <id>
1170        Enum_Member_Name
1171    </id>
1172    <severity>
1173        Low
1174    </severity>
1175    <kind>
1176        Constants
1177    </kind>
1178    <change>
1179        Name of member with value @target has been changed from @old_value to @new_value.
1180    </change>
1181    <effect>
1182        Applications may execute a wrong branch of code in the library and therefore change the behavior.
1183    </effect>
1184</rule>
1185
1186<rule>
1187    <id>
1188        Field_Type
1189    </id>
1190    <severity>
1191        Low
1192    </severity>
1193    <kind>
1194        Fields
1195    </kind>
1196    <change>
1197        Type of field @target has been changed from @old_value to @new_value.
1198    </change>
1199    <effect>
1200        Replacement of the field data type may indicate a change in the semantic meaning of the field.
1201    </effect>
1202</rule>
1203
1204<rule>
1205    <id>
1206        Field_Type_And_Size
1207    </id>
1208    <severity>
1209        Medium
1210    </severity>
1211    <kind>
1212        Fields
1213    </kind>
1214    <change>
1215        Type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1216    </change>
1217    <effect>
1218        This field may be incorrectly initialized or accessed by applications.
1219    </effect>
1220</rule>
1221
1222<rule>
1223    <id>
1224        Field_Type_And_Size_And_Layout
1225    </id>
1226    <severity>
1227        Medium
1228    </severity>
1229    <kind>
1230        Fields
1231    </kind>
1232    <change>
1233        Type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1234    </change>
1235    <effect>
1236        Previous accesses of applications and library functions to this field and fields at higher positions of the structure definition may be broken.
1237    </effect>
1238</rule>
1239
1240<rule>
1241    <id>
1242        Field_Type_And_Size_And_Type_Size
1243    </id>
1244    <severity>
1245        Medium
1246    </severity>
1247    <kind>
1248        Fields
1249    </kind>
1250    <change>
1251        Type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1252    </change>
1253    <effect>
1254        1) This field may be incorrectly initialized or accessed by applications.
1255        2) Size of the inclusive type has been changed.
1256    </effect>
1257</rule>
1258
1259<rule>
1260    <id>
1261        Field_Type_And_Size_And_Layout_And_Type_Size
1262    </id>
1263    <severity>
1264        Medium
1265    </severity>
1266    <kind>
1267        Fields
1268    </kind>
1269    <change>
1270        Type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1271    </change>
1272    <effect>
1273        1) Size of the inclusive type has been changed.
1274        2) Previous accesses of applications and library functions to this field and fields at higher positions of the structure definition may be broken.
1275    </effect>
1276</rule>
1277
1278<rule>
1279    <id>
1280        Private_Field_Type_And_Size_And_Layout
1281    </id>
1282    <severity>
1283        Medium
1284    </severity>
1285    <kind>
1286        Fields
1287    </kind>
1288    <change>
1289        Type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1290    </change>
1291    <effect>
1292        Previous accesses of applications and library functions to the fields at higher positions of the structure definition may be broken.
1293    </effect>
1294</rule>
1295
1296<rule>
1297    <id>
1298        Private_Field_Type_And_Size
1299    </id>
1300    <severity>
1301        Safe
1302    </severity>
1303    <kind>
1304        Fields
1305    </kind>
1306    <change>
1307        Type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1308    </change>
1309    <effect>
1310        No effect.
1311    </effect>
1312</rule>
1313
1314<rule>
1315    <id>
1316        Private_Field_Type_And_Size_And_Type_Size
1317    </id>
1318    <severity>
1319        Low
1320    </severity>
1321    <kind>
1322        Fields
1323    </kind>
1324    <change>
1325        Type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1326    </change>
1327    <effect>
1328        Size of the inclusive type has been changed.
1329    </effect>
1330</rule>
1331
1332<rule>
1333    <id>
1334        Private_Field_Type_And_Size_And_Layout_And_Type_Size
1335    </id>
1336    <severity>
1337        Medium
1338    </severity>
1339    <kind>
1340        Fields
1341    </kind>
1342    <change>
1343        Type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1344    </change>
1345    <effect>
1346        1) Size of the inclusive type has been changed.
1347        2) Previous accesses of applications and library functions to the fields at higher positions of the structure definition may be broken.
1348    </effect>
1349</rule>
1350
1351<rule>
1352    <id>
1353        Field_BaseType_And_Size
1354    </id>
1355    <severity>
1356        Low
1357    </severity>
1358    <kind>
1359        Fields
1360    </kind>
1361    <change>
1362        Base type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1363    </change>
1364    <effect>
1365        Possible access of applications to incorrect memory through the pointer.
1366    </effect>
1367</rule>
1368
1369<rule>
1370    <id>
1371        Field_BaseType
1372    </id>
1373    <severity>
1374        Low
1375    </severity>
1376    <kind>
1377        Fields
1378    </kind>
1379    <change>
1380        Base type of field @target has been changed from @old_value to @new_value.
1381    </change>
1382    <effect>
1383        Replacement of field base type may indicate a change in the semantic meaning of the field.
1384    </effect>
1385</rule>
1386
1387<rule>
1388    <id>
1389        Field_PointerLevel_Increased
1390    </id>
1391    <severity>
1392        Medium
1393    </severity>
1394    <kind>
1395        Fields
1396    </kind>
1397    <change>
1398        The pointer level of field @target has been increased from @old_value to @new_value.
1399    </change>
1400    <effect>
1401        The library functions may try to access unallocated memory by the dereferencing of old field value and therefore cause a crash of applications.
1402    </effect>
1403</rule>
1404
1405<rule>
1406    <id>
1407        Field_PointerLevel_Decreased
1408    </id>
1409    <severity>
1410        Low
1411    </severity>
1412    <kind>
1413        Fields
1414    </kind>
1415    <change>
1416        The pointer level of field @target has been decreased from @old_value to @new_value.
1417    </change>
1418    <effect>
1419        The library functions will treat the value of this field as the lower-dimension array and will not read all elements. This may change the behavior of applications.
1420    </effect>
1421</rule>
1422
1423<rule>
1424    <id>
1425        Field_Size
1426    </id>
1427    <severity>
1428        Medium
1429    </severity>
1430    <kind>
1431        Fields
1432    </kind>
1433    <change>
1434        Size of field @target has been changed from @old_size to @new_size.
1435    </change>
1436    <effect>
1437        Previous accesses of applications and library functions to this field may be broken.
1438    </effect>
1439</rule>
1440
1441<rule>
1442    <id>
1443        Struct_Field_Size_Increased
1444    </id>
1445    <severity>
1446        Low
1447    </severity>
1448    <kind>
1449        Fields
1450    </kind>
1451    <change>
1452        Size of field @target has been changed from @old_size to @new_size.
1453    </change>
1454    <effect>
1455        Previous accesses of applications and library functions to this field may be broken.
1456    </effect>
1457</rule>
1458
1459<rule>
1460    <id>
1461        Field_Size_And_Layout
1462    </id>
1463    <severity>
1464        Medium
1465    </severity>
1466    <kind>
1467        Fields
1468    </kind>
1469    <change>
1470        Size of field @target has been changed from @old_size to @new_size.
1471    </change>
1472    <effect>
1473        Previous accesses of applications and library functions to this field and fields at higher positions of the structure definition may be broken.
1474    </effect>
1475</rule>
1476
1477<rule>
1478    <id>
1479        Field_Size_And_Type_Size
1480    </id>
1481    <severity>
1482        Medium
1483    </severity>
1484    <kind>
1485        Fields
1486    </kind>
1487    <change>
1488        Size of field @target has been changed from @old_size to @new_size.
1489    </change>
1490    <effect>
1491        1) Size of the inclusive type has been changed.
1492        2) Previous accesses of applications and library functions to this field may be broken.
1493    </effect>
1494</rule>
1495
1496<rule>
1497    <id>
1498        Field_Size_And_Layout_And_Type_Size
1499    </id>
1500    <severity>
1501        Medium
1502    </severity>
1503    <kind>
1504        Fields
1505    </kind>
1506    <change>
1507        Size of field @target has been changed from @old_size to @new_size.
1508    </change>
1509    <effect>
1510        1) Size of the inclusive type has been changed.
1511        2) Previous accesses of applications and library functions to this field and fields at higher positions of the structure definition may be broken.
1512    </effect>
1513</rule>
1514
1515<rule>
1516    <id>
1517        Private_Field_Size_And_Layout
1518    </id>
1519    <severity>
1520        Medium
1521    </severity>
1522    <kind>
1523        Fields
1524    </kind>
1525    <change>
1526        Size of field @target has been changed from @old_size to @new_size.
1527    </change>
1528    <effect>
1529        Previous accesses of applications and library functions to the fields at higher positions of the structure definition may be broken.
1530    </effect>
1531</rule>
1532
1533<rule>
1534    <id>
1535        Private_Field_Size
1536    </id>
1537    <severity>
1538        Safe
1539    </severity>
1540    <kind>
1541        Fields
1542    </kind>
1543    <change>
1544        Size of field @target has been changed from @old_size to @new_size.
1545    </change>
1546    <effect>
1547        No effect.
1548    </effect>
1549</rule>
1550
1551<rule>
1552    <id>
1553        Private_Field_Size_And_Type_Size
1554    </id>
1555    <severity>
1556        Low
1557    </severity>
1558    <kind>
1559        Fields
1560    </kind>
1561    <change>
1562        Size of field @target has been changed from @old_size to @new_size.
1563    </change>
1564    <effect>
1565        Size of the inclusive type has been changed.
1566    </effect>
1567</rule>
1568
1569<rule>
1570    <id>
1571        Private_Field_Size_And_Layout_And_Type_Size
1572    </id>
1573    <severity>
1574        Medium
1575    </severity>
1576    <kind>
1577        Fields
1578    </kind>
1579    <change>
1580        Size of field @target has been changed from @old_size to @new_size.
1581    </change>
1582    <effect>
1583        1) Size of the inclusive type has been changed.
1584        2) Previous accesses of applications and library functions to the fields at higher positions of the structure definition may be broken.
1585    </effect>
1586</rule>
1587
1588<rule>
1589    <id>
1590        Typedef_BaseType
1591    </id>
1592    <severity>
1593        Low
1594    </severity>
1595    <kind>
1596        Types
1597    </kind>
1598    <change>
1599        Base type has been changed from @old_value to @new_value.
1600    </change>
1601    <effect>
1602        Replacement of the base data type may indicate a change in its semantic meaning.
1603    </effect>
1604</rule>
1605
1606<rule>
1607    <id>
1608        Typedef_BaseType_Format
1609    </id>
1610    <severity>
1611        Medium
1612    </severity>
1613    <kind>
1614        Types
1615    </kind>
1616    <change>
1617        Base type has been changed from @old_value to @new_value of different format.
1618    </change>
1619    <effect>
1620        The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications.
1621    </effect>
1622</rule>
1623
1624<rule>
1625    <id>
1626        Added_Symbol
1627    </id>
1628    <severity>
1629        Safe
1630    </severity>
1631    <kind>
1632        Symbols
1633    </kind>
1634</rule>
1635
1636<rule>
1637    <id>
1638        Removed_Symbol
1639    </id>
1640    <severity>
1641        High
1642    </severity>
1643    <kind>
1644        Symbols
1645    </kind>
1646</rule>
1647
1648<rule>
1649    <id>
1650        Method_Became_Static
1651    </id>
1652    <severity>
1653        High
1654    </severity>
1655    <kind>
1656        Symbols
1657    </kind>
1658    <change>
1659        Method became static.
1660    </change>
1661    <effect>
1662        Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
1663    </effect>
1664</rule>
1665
1666<rule>
1667    <id>
1668        Method_Became_Non_Static
1669    </id>
1670    <severity>
1671        High
1672    </severity>
1673    <kind>
1674        Symbols
1675    </kind>
1676    <change>
1677        Method became non-static.
1678    </change>
1679    <effect>
1680        Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
1681    </effect>
1682</rule>
1683
1684<rule>
1685    <id>
1686        Parameter_Default_Value_Changed
1687    </id>
1688    <severity>
1689        Low
1690    </severity>
1691    <kind>
1692        Parameters
1693    </kind>
1694    <change>
1695        The default argument of @param_pos parameter @target has been changed from @old_value to @new_value.
1696    </change>
1697    <effect>
1698        Applications will pass an old default (compile-time) argument that may not be properly handled anymore. This may result in crash or incorrect behavior of applications.
1699    </effect>
1700</rule>
1701
1702<rule>
1703    <id>
1704        Parameter_Default_Value_Removed
1705    </id>
1706    <severity>
1707        Low
1708    </severity>
1709    <kind>
1710        Parameters
1711    </kind>
1712    <change>
1713        The default argument @old_value of @param_pos parameter @target has been removed.
1714    </change>
1715    <effect>
1716        Applications will pass an old default argument (that is not default any more) that may not be properly handled anymore. This may result in crash or incorrect behavior of applications.
1717    </effect>
1718</rule>
1719
1720<rule>
1721    <id>
1722        Parameter_Default_Value_Added
1723    </id>
1724    <severity>
1725        Safe
1726    </severity>
1727    <kind>
1728        Parameters
1729    </kind>
1730    <change>
1731        The default argument @new_value of @param_pos parameter @target has been added.
1732    </change>
1733    <effect>
1734        No effect.
1735    </effect>
1736</rule>
1737
1738<rule>
1739    <id>
1740        Parameter_Type_And_Register
1741    </id>
1742    <severity>
1743        Medium
1744    </severity>
1745    <kind>
1746        Symbols
1747    </kind>
1748    <change>
1749        Type of @param_pos parameter @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1750    </change>
1751    <effect>
1752        The parameter became passed in different register. Applications will read the wrong memory block instead of the parameter value. Also, distribution of other parameters on the available registers and stack may be changed.
1753    </effect>
1754</rule>
1755
1756<rule>
1757    <id>
1758        Parameter_Type_And_Stack
1759    </id>
1760    <severity>
1761        High
1762    </severity>
1763    <kind>
1764        Parameters
1765    </kind>
1766    <change>
1767        Type of @param_pos parameter @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1768    </change>
1769    <effect>
1770        Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
1771    </effect>
1772</rule>
1773
1774<rule>
1775    <id>
1776        Parameter_Type_And_Size
1777    </id>
1778    <severity>
1779        High
1780    </severity>
1781    <kind>
1782        Parameters
1783    </kind>
1784    <change>
1785        Type of @param_pos parameter @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1786    </change>
1787    <effect>
1788        Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
1789    </effect>
1790</rule>
1791
1792<rule>
1793    <id>
1794        Parameter_Type_From_Stack_To_Register
1795    </id>
1796    <severity>
1797        High
1798    </severity>
1799    <kind>
1800        Parameters
1801    </kind>
1802    <change>
1803        Type of @param_pos parameter @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1804    </change>
1805    <effect>
1806        The parameter became passed in the register instead of the stack. This may result in crash or incorrect behavior of applications.
1807    </effect>
1808</rule>
1809
1810<rule>
1811    <id>
1812        Parameter_Type_From_Register_To_Stack
1813    </id>
1814    <severity>
1815        High
1816    </severity>
1817    <kind>
1818        Parameters
1819    </kind>
1820    <change>
1821        Type of @param_pos parameter @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1822    </change>
1823    <effect>
1824        The parameter became passed through the stack instead of the register. This may result in crash or incorrect behavior of applications.
1825    </effect>
1826</rule>
1827
1828<rule>
1829    <id>
1830        Parameter_Type
1831    </id>
1832    <severity>
1833        Low
1834    </severity>
1835    <kind>
1836        Parameters
1837    </kind>
1838    <change>
1839        Type of @param_pos parameter @target has been changed from @old_value to @new_value.
1840    </change>
1841    <effect>
1842        Replacement of parameter data type may indicate a change in its semantic meaning.
1843    </effect>
1844</rule>
1845
1846<rule>
1847    <id>
1848        Parameter_Became_Non_Const
1849    </id>
1850    <severity>
1851        Medium
1852    </severity>
1853    <kind>
1854        Parameters
1855    </kind>
1856    <change>
1857        Type of @param_pos parameter @target has been changed from @old_value to @new_value (became non-const).
1858    </change>
1859    <effect>
1860        This function may change parameter @target, but it will be treated as const by old client applications. This may result in crash or incorrect behavior of applications.
1861    </effect>
1862</rule>
1863
1864<rule>
1865    <id>
1866        Parameter_Removed_Const
1867    </id>
1868    <severity>
1869        Medium
1870    </severity>
1871    <kind>
1872        Parameters
1873    </kind>
1874    <change>
1875        Type of @param_pos parameter @target has been changed from @old_value to @new_value (removed const qualifier).
1876    </change>
1877    <effect>
1878        This function may change parameter @target, but it will be treated as const by old client applications. This may result in crash or incorrect behavior of applications.
1879    </effect>
1880</rule>
1881
1882<rule>
1883    <id>
1884        Parameter_Became_Restrict
1885    </id>
1886    <severity>
1887        Medium
1888    </severity>
1889    <kind>
1890        Parameters
1891    </kind>
1892    <change>
1893        Parameter @target became restrict.
1894    </change>
1895    <effect>
1896        Added a new restriction on the parameter: if the memory addressed by the restrict-qualified pointer is modified, no other pointer will access that same memory. The compiler may choose to optimize new library code involving restrict-qualified pointers in a way that might result in incorrect behavior of old applications, that don't meet this restriction.
1897    </effect>
1898</rule>
1899
1900<rule>
1901    <id>
1902        Parameter_Became_Non_Restrict
1903    </id>
1904    <severity>
1905        Safe
1906    </severity>
1907    <kind>
1908        Parameters
1909    </kind>
1910    <change>
1911        Parameter @target became non-restrict.
1912    </change>
1913    <effect>
1914        No effect.
1915    </effect>
1916</rule>
1917
1918<rule>
1919    <id>
1920        Parameter_Became_Register
1921    </id>
1922    <severity>
1923        Medium
1924    </severity>
1925    <kind>
1926        Parameters
1927    </kind>
1928    <change>
1929        Added register modifier to the parameter @target.
1930    </change>
1931    <effect>
1932        The parameter may be passed in a register instead of the calling stack.
1933    </effect>
1934</rule>
1935
1936<rule>
1937    <id>
1938        Parameter_Became_Non_Register
1939    </id>
1940    <severity>
1941        Medium
1942    </severity>
1943    <kind>
1944        Parameters
1945    </kind>
1946    <change>
1947        Removed register modifier from the parameter @target.
1948    </change>
1949    <effect>
1950        The parameter will be passed on the calling stack instead of a register.
1951    </effect>
1952</rule>
1953
1954<rule>
1955    <id>
1956        Parameter_To_Register
1957    </id>
1958    <severity>
1959        Medium
1960    </severity>
1961    <kind>
1962        Parameters
1963    </kind>
1964    <change>
1965        The parameter @target became passed in @new_value register instead of stack.
1966    </change>
1967    <effect>
1968        Violation of the calling convention. This may result in crash or incorrect behavior of applications.
1969    </effect>
1970</rule>
1971
1972<rule>
1973    <id>
1974        Parameter_From_Register
1975    </id>
1976    <severity>
1977        Medium
1978    </severity>
1979    <kind>
1980        Parameters
1981    </kind>
1982    <change>
1983        The parameter @target became passed on stack instead of @old_value register.
1984    </change>
1985    <effect>
1986        Violation of the calling convention. This may result in crash or incorrect behavior of applications.
1987    </effect>
1988</rule>
1989
1990<rule>
1991    <id>
1992        Parameter_Changed_Register
1993    </id>
1994    <severity>
1995        High
1996    </severity>
1997    <kind>
1998        Symbols
1999    </kind>
2000    <change>
2001        The parameter @target became passed in @new_value register instead of @old_value.
2002    </change>
2003    <effect>
2004         Applications will read the wrong memory block instead of the parameter value.
2005    </effect>
2006</rule>
2007
2008<rule>
2009    <id>
2010        Parameter_Changed_Offset
2011    </id>
2012    <severity>
2013        High
2014    </severity>
2015    <kind>
2016        Symbols
2017    </kind>
2018    <change>
2019        The parameter @target became passed at the different offset on the stack (@new_value instead of @old_value).
2020    </change>
2021    <effect>
2022         Violation of the calling convention. This may result in crash or incorrect behavior of applications.
2023    </effect>
2024</rule>
2025
2026<rule>
2027    <id>
2028        Return_Type_Became_Const
2029    </id>
2030    <severity>
2031        Medium
2032    </severity>
2033    <kind>
2034        Symbols
2035    </kind>
2036    <change>
2037        Type of return value became const (has been changed from @old_value to @new_value).
2038    </change>
2039    <effect>
2040        The return value will be treated as non-const by old client applications. This may result in crash or incorrect behavior of applications.
2041    </effect>
2042</rule>
2043
2044<rule>
2045    <id>
2046        Return_Type_Added_Const
2047    </id>
2048    <severity>
2049        Medium
2050    </severity>
2051    <kind>
2052        Symbols
2053    </kind>
2054    <change>
2055        Added **const** qualifier to return value (has been changed from @old_value to @new_value).
2056    </change>
2057    <effect>
2058        The return value will be treated as non-const by old client applications. This may result in crash or incorrect behavior of applications.
2059    </effect>
2060</rule>
2061
2062<rule>
2063    <id>
2064        Parameter_BaseType_And_Size
2065    </id>
2066    <severity>
2067        Medium
2068    </severity>
2069    <kind>
2070        Parameters
2071    </kind>
2072    <change>
2073        Base type of @param_pos parameter @target has been changed from @old_value (@old_size) to @new_value (@new_size).
2074    </change>
2075    <effect>
2076        This parameter may be incorrectly initialized by applications.
2077    </effect>
2078</rule>
2079
2080<rule>
2081    <id>
2082        Parameter_BaseType
2083    </id>
2084    <severity>
2085        Low
2086    </severity>
2087    <kind>
2088        Parameters
2089    </kind>
2090    <change>
2091        Base type of @param_pos parameter @target has been changed from @old_value to @new_value.
2092    </change>
2093    <effect>
2094        Replacement of parameter base type may indicate a change in its semantic meaning.
2095    </effect>
2096</rule>
2097
2098<rule>
2099    <id>
2100        Parameter_PointerLevel_Increased
2101    </id>
2102    <severity>
2103        High
2104    </severity>
2105    <kind>
2106        Parameters
2107    </kind>
2108    <change>
2109        The pointer level of @param_pos parameter @target has been increased from @old_value to @new_value.
2110    </change>
2111    <effect>
2112        The library function may try to access unallocated memory by the dereferencing of old parameter value and therefore cause a crash of applications.
2113    </effect>
2114</rule>
2115
2116<rule>
2117    <id>
2118        Parameter_PointerLevel_Decreased
2119    </id>
2120    <severity>
2121        Medium
2122    </severity>
2123    <kind>
2124        Parameters
2125    </kind>
2126    <change>
2127        The pointer level of @param_pos parameter @target has been decreased from @old_value to @new_value.
2128    </change>
2129    <effect>
2130        The library function will treat the parameter as the lower-dimension array and will not read all elements. This may change the behavior of applications.
2131        NOTE: if this is out-parameter then this change may cause a crash of applications.
2132    </effect>
2133</rule>
2134
2135<rule>
2136    <id>
2137        Return_Type_And_Size
2138    </id>
2139    <severity>
2140        Medium
2141    </severity>
2142    <kind>
2143        Symbols
2144    </kind>
2145    <change>
2146        Type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2147    </change>
2148    <effect>
2149        Applications will obtain a different return value and execution may change.
2150    </effect>
2151</rule>
2152
2153<rule>
2154    <id>
2155        Global_Data_Type_And_Size
2156    </id>
2157    <severity>
2158        Medium
2159    </severity>
2160    <kind>
2161        Symbols
2162    </kind>
2163    <change>
2164        Type of this global data has been changed from @old_value (@old_size) to @new_value (@new_size).
2165    </change>
2166    <effect>
2167        Applications will obtain a different value and execution may change.
2168    </effect>
2169</rule>
2170
2171<rule>
2172    <id>
2173        Return_Type
2174    </id>
2175    <severity>
2176        Low
2177    </severity>
2178    <kind>
2179        Symbols
2180    </kind>
2181    <change>
2182        Type of return value has been changed from @old_value to @new_value.
2183    </change>
2184    <effect>
2185        Replacement of return type may indicate a change in its semantic meaning.
2186    </effect>
2187</rule>
2188
2189<rule>
2190    <id>
2191        Global_Data_Type
2192    </id>
2193    <severity>
2194        Low
2195    </severity>
2196    <kind>
2197        Symbols
2198    </kind>
2199    <change>
2200        Type of this global data has been changed from @old_value to @new_value.
2201    </change>
2202    <effect>
2203        Replacement of data type may indicate a change in semantic meaning.
2204    </effect>
2205</rule>
2206
2207<rule>
2208    <id>
2209        Global_Data_Type_Format
2210    </id>
2211    <severity>
2212        Medium
2213    </severity>
2214    <kind>
2215        Symbols
2216    </kind>
2217    <change>
2218        Type of this global data has been changed from @old_value to @new_value of different format.
2219    </change>
2220    <effect>
2221        This global data may be incorrectly accessed by applications.
2222    </effect>
2223</rule>
2224
2225<rule>
2226    <id>
2227        Global_Data_Size
2228    </id>
2229    <severity>
2230        Medium
2231    </severity>
2232    <kind>
2233        Symbols
2234    </kind>
2235    <change>
2236        Size of this global data has been changed from @old_size to @new_size.
2237    </change>
2238    <effect>
2239        Applications will obtain a different value and execution may change.
2240    </effect>
2241</rule>
2242
2243<rule>
2244    <id>
2245        Return_Type_Became_Void
2246    </id>
2247    <severity>
2248        Medium
2249    </severity>
2250    <kind>
2251        Symbols
2252    </kind>
2253    <change>
2254        Type of return value has been changed from @old_value (@old_size) to void.
2255    </change>
2256    <effect>
2257        Applications will not obtain a return value and execution may change.
2258    </effect>
2259</rule>
2260
2261<rule>
2262    <id>
2263        Return_Type_Became_Void_And_Stack_Layout
2264    </id>
2265    <severity>
2266        High
2267    </severity>
2268    <kind>
2269        Symbols
2270    </kind>
2271    <change>
2272        Type of return value has been changed from @old_value (@old_size) to void.
2273    </change>
2274    <effect>
2275        1) Applications will read the wrong memory block instead of the return value.
2276        2) Layout of parameter's stack has been shifted by @word_size bytes because the hidden first argument, that is used to pass the return value, has been removed. All the parameters will be incorrectly initialized by applications.
2277    </effect>
2278</rule>
2279
2280<rule>
2281    <id>
2282        Return_Type_Became_Void_And_Register
2283    </id>
2284    <severity>
2285        High
2286    </severity>
2287    <kind>
2288        Symbols
2289    </kind>
2290    <change>
2291        Type of return value has been changed from @old_value (@old_size) to void.
2292    </change>
2293    <effect>
2294        1) Applications will read the wrong memory block instead of the return value.
2295        2) Distribution of parameters on the available registers and stack has been changed because the hidden first argument, that is used to pass the return value, has been removed. All the parameters will be incorrectly initialized by applications.
2296    </effect>
2297</rule>
2298
2299<rule>
2300    <id>
2301        Return_Type_From_Void_And_Stack_Layout
2302    </id>
2303    <severity>
2304        High
2305    </severity>
2306    <kind>
2307        Symbols
2308    </kind>
2309    <change>
2310        Type of return value has been changed from void to @new_value (@new_size).
2311    </change>
2312    <effect>
2313        Layout of parameter's stack has been shifted by @word_size bytes because the return value became passed in memory as the hidden first argument, that was used to pass the return value. All the parameters will be incorrectly initialized by applications.
2314    </effect>
2315</rule>
2316
2317<rule>
2318    <id>
2319        Return_Type_From_Void_And_Register
2320    </id>
2321    <severity>
2322        High
2323    </severity>
2324    <kind>
2325        Symbols
2326    </kind>
2327    <change>
2328        Type of return value has been changed from void to @new_value (@new_size).
2329    </change>
2330    <effect>
2331        Distribution of parameters on the available registers and stack has been changed because the return value became passed in memory as the hidden first argument, that is used to pass the return value. All the parameters will be incorrectly initialized by applications.
2332    </effect>
2333</rule>
2334
2335<rule>
2336    <id>
2337        Return_Type_From_Void
2338    </id>
2339    <severity>
2340        Low
2341    </severity>
2342    <kind>
2343        Symbols
2344    </kind>
2345    <change>
2346        Type of return value has been changed from void to @new_value (@new_size).
2347    </change>
2348    <effect>
2349        Replacement of return type may indicate a change in its semantic meaning.
2350    </effect>
2351</rule>
2352
2353<rule>
2354    <id>
2355        Return_Type_From_Register_To_Stack
2356    </id>
2357    <severity>
2358        High
2359    </severity>
2360    <kind>
2361        Symbols
2362    </kind>
2363    <change>
2364        Type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2365    </change>
2366    <effect>
2367        1) The return value became passed in memory as the hidden first argument (address of the space on the stack provided by the caller) instead of the register and therefore the layout of parameter's stack has been shifted by @word_size bytes. All the parameters will be incorrectly initialized by applications.
2368        2) Applications will read the wrong memory block instead of the return value.
2369    </effect>
2370</rule>
2371
2372<rule>
2373    <id>
2374        Return_Type_And_Register_Became_Hidden_Parameter
2375    </id>
2376    <severity>
2377        High
2378    </severity>
2379    <kind>
2380        Symbols
2381    </kind>
2382    <change>
2383        Type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2384    </change>
2385    <effect>
2386        1) The return value became passed in different register as the hidden first argument (address of the space on the stack provided by the caller) and therefore distribution of parameters on the available registers and stack will be changed. All the parameters will be incorrectly initialized by applications.
2387        2) Applications will read the wrong memory block instead of the return value.
2388    </effect>
2389</rule>
2390
2391<rule>
2392    <id>
2393        Return_Type_From_Stack_To_Register
2394    </id>
2395    <severity>
2396        High
2397    </severity>
2398    <kind>
2399        Symbols
2400    </kind>
2401    <change>
2402        Type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2403    </change>
2404    <effect>
2405        1) The return value became passed in register instead of the hidden first argument (address of the space on the stack provided by the caller) and therefore the layout of parameter's stack has been shifted by @word_size bytes. All the parameters will be incorrectly initialized by applications.
2406        2) Applications will read the wrong memory block instead of the return value.
2407    </effect>
2408</rule>
2409
2410<rule>
2411    <id>
2412        Return_Type_And_Register_Was_Hidden_Parameter
2413    </id>
2414    <severity>
2415        High
2416    </severity>
2417    <kind>
2418        Symbols
2419    </kind>
2420    <change>
2421        Type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2422    </change>
2423    <effect>
2424        1) The return value became passed in register instead of the hidden first argument, that is passed in different register, and therefore distribution of parameters on the available registers and stack will be changed. All the parameters will be incorrectly initialized by applications.
2425        2) Applications will read the wrong memory block instead of the return value.
2426    </effect>
2427</rule>
2428
2429<rule>
2430    <id>
2431        Global_Data_Became_Non_Const
2432    </id>
2433    <severity>
2434        Medium
2435    </severity>
2436    <kind>
2437        Symbols
2438    </kind>
2439    <change>
2440        This global data became non-const.
2441    </change>
2442    <effect>
2443        This data will be copied to applications at compile time. Any attempts to change this global data by library functions may result in crash of applications.
2444    </effect>
2445</rule>
2446
2447<rule>
2448    <id>
2449        Global_Data_Removed_Const
2450    </id>
2451    <severity>
2452        Low
2453    </severity>
2454    <kind>
2455        Symbols
2456    </kind>
2457    <change>
2458        Removed **const** qualifier from the type of this global data.
2459    </change>
2460    <effect>
2461        This data will be treated as const by old client applications. Any attempts to change this global data by library functions may result in undefined behavior.
2462    </effect>
2463</rule>
2464
2465<rule>
2466    <id>
2467        Global_Data_Became_Const
2468    </id>
2469    <severity>
2470        Medium
2471    </severity>
2472    <kind>
2473        Symbols
2474    </kind>
2475    <change>
2476        This global data became const.
2477    </change>
2478    <effect>
2479        Any attempts of old applications to change this global data may result in crash.
2480    </effect>
2481</rule>
2482
2483<rule>
2484    <id>
2485        Global_Data_Added_Const
2486    </id>
2487    <severity>
2488        Medium
2489    </severity>
2490    <kind>
2491        Symbols
2492    </kind>
2493    <change>
2494        Added **const** qualifier to the type of this global data.
2495    </change>
2496    <effect>
2497        Any attempts of old applications to change this global data may result in crash.
2498    </effect>
2499</rule>
2500
2501<rule>
2502    <id>
2503        Return_BaseType_And_Size
2504    </id>
2505    <severity>
2506        Medium
2507    </severity>
2508    <kind>
2509        Symbols
2510    </kind>
2511    <change>
2512        Base type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2513    </change>
2514    <effect>
2515        Applications will obtain a different return value and execution may change.
2516    </effect>
2517</rule>
2518
2519<rule>
2520    <id>
2521        Return_BaseType
2522    </id>
2523    <severity>
2524        Low
2525    </severity>
2526    <kind>
2527        Symbols
2528    </kind>
2529    <change>
2530        Base type of return value has been changed from @old_value to @new_value.
2531    </change>
2532    <effect>
2533        Replacement of return base type may indicate a change in its semantic meaning.
2534    </effect>
2535</rule>
2536
2537<rule>
2538    <id>
2539        Return_PointerLevel_Increased
2540    </id>
2541    <severity>
2542        Low
2543    </severity>
2544    <kind>
2545        Symbols
2546    </kind>
2547    <change>
2548        The pointer level of return value has been increased from @old_value to @new_value.
2549    </change>
2550    <effect>
2551        Applications will treat the return value as the lower-dimension array and will not read all elements. This may change the behavior of applications.
2552    </effect>
2553</rule>
2554
2555<rule>
2556    <id>
2557        Return_PointerLevel_Decreased
2558    </id>
2559    <severity>
2560        Medium
2561    </severity>
2562    <kind>
2563        Symbols
2564    </kind>
2565    <change>
2566        The pointer level of return value has been decreased from @old_value to @new_value.
2567    </change>
2568    <effect>
2569        Applications may try to access unallocated memory by the dereferencing of new return value and therefore cause a crash.
2570    </effect>
2571</rule>
2572
2573<rule>
2574    <id>
2575        Removed_Parameter
2576    </id>
2577    <severity>
2578        Medium
2579    </severity>
2580    <kind>
2581        Parameters
2582    </kind>
2583    <change>
2584        @param_pos parameter @target has been removed from the calling stack.
2585    </change>
2586    <effect>
2587        This parameter will be ignored by the function.
2588    </effect>
2589</rule>
2590
2591<rule>
2592    <id>
2593        Removed_Unnamed_Parameter
2594    </id>
2595    <severity>
2596        Medium
2597    </severity>
2598    <kind>
2599        Parameters
2600    </kind>
2601    <change>
2602        Parameter @target of type @param_type has been removed from the calling stack.
2603    </change>
2604    <effect>
2605        This parameter will be ignored by the function.
2606    </effect>
2607</rule>
2608
2609<rule>
2610    <id>
2611        Added_Parameter
2612    </id>
2613    <severity>
2614        Medium
2615    </severity>
2616    <kind>
2617        Parameters
2618    </kind>
2619    <change>
2620        Parameter @target of type @param_type has been added to the calling stack.
2621    </change>
2622    <effect>
2623        This parameter will not be initialized by old clients.
2624    </effect>
2625</rule>
2626
2627<rule>
2628    <id>
2629        Added_Unnamed_Parameter
2630    </id>
2631    <severity>
2632        Medium
2633    </severity>
2634    <kind>
2635        Parameters
2636    </kind>
2637    <change>
2638        @param_pos parameter @target has been added to the calling stack.
2639    </change>
2640    <effect>
2641        This parameter will not be initialized by old clients.
2642    </effect>
2643</rule>
2644
2645<rule>
2646    <id>
2647        Removed_Middle_Parameter
2648    </id>
2649    <severity>
2650        High
2651    </severity>
2652    <kind>
2653        Parameters
2654    </kind>
2655    <change>
2656        @param_pos middle parameter @target has been removed from the calling stack.
2657    </change>
2658    <effect>
2659        Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
2660    </effect>
2661</rule>
2662
2663<rule>
2664    <id>
2665        Removed_Middle_Unnamed_Parameter
2666    </id>
2667    <severity>
2668        High
2669    </severity>
2670    <kind>
2671        Parameters
2672    </kind>
2673    <change>
2674        Middle parameter @target of type @param_type has been removed from the calling stack.
2675    </change>
2676    <effect>
2677        Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
2678    </effect>
2679</rule>
2680
2681<rule>
2682    <id>
2683        Added_Middle_Parameter
2684    </id>
2685    <severity>
2686        High
2687    </severity>
2688    <kind>
2689        Parameters
2690    </kind>
2691    <change>
2692        Parameter @target of type @param_type has been added to the calling stack at the middle position.
2693    </change>
2694    <effect>
2695        Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
2696    </effect>
2697</rule>
2698
2699<rule>
2700    <id>
2701        Added_Middle_Unnamed_Parameter
2702    </id>
2703    <severity>
2704        High
2705    </severity>
2706    <kind>
2707        Parameters
2708    </kind>
2709    <change>
2710        @param_pos parameter @target has been added to the calling stack at the middle position.
2711    </change>
2712    <effect>
2713        Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
2714    </effect>
2715</rule>
2716
2717<rule>
2718    <id>
2719        Renamed_Parameter
2720    </id>
2721    <severity>
2722        Low
2723    </severity>
2724    <kind>
2725        Parameters
2726    </kind>
2727    <change>
2728        @param_pos parameter @target has been renamed to @new_value.
2729    </change>
2730    <effect>
2731        Renaming of a parameter may indicate a change in its semantic meaning.
2732    </effect>
2733</rule>
2734
2735<rule>
2736    <id>
2737        Symbol_Became_Static
2738    </id>
2739    <severity>
2740        High
2741    </severity>
2742    <kind>
2743        Symbols
2744    </kind>
2745    <change>
2746        Method became static.
2747    </change>
2748    <effect>
2749        The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2750    </effect>
2751</rule>
2752
2753<rule>
2754    <id>
2755        Symbol_Became_Non_Static
2756    </id>
2757    <severity>
2758        High
2759    </severity>
2760    <kind>
2761        Symbols
2762    </kind>
2763    <change>
2764        Method became non-static.
2765    </change>
2766    <effect>
2767        The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2768    </effect>
2769</rule>
2770
2771<rule>
2772    <id>
2773        Symbol_Became_Virtual
2774    </id>
2775    <severity>
2776        High
2777    </severity>
2778    <kind>
2779        Symbols
2780    </kind>
2781    <change>
2782        Method became virtual.
2783    </change>
2784    <effect>
2785        The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2786    </effect>
2787</rule>
2788
2789<rule>
2790    <id>
2791        Symbol_Became_Non_Virtual
2792    </id>
2793    <severity>
2794        High
2795    </severity>
2796    <kind>
2797        Symbols
2798    </kind>
2799    <change>
2800        Method became non-virtual.
2801    </change>
2802    <effect>
2803        The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2804    </effect>
2805</rule>
2806
2807<rule>
2808    <id>
2809        Symbol_Changed_Return
2810    </id>
2811    <severity>
2812        High
2813    </severity>
2814    <kind>
2815        Symbols
2816    </kind>
2817    <change>
2818        Type of return value has been changed from @old_type to @new_type.
2819    </change>
2820    <effect>
2821        The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2822    </effect>
2823</rule>
2824
2825<rule>
2826    <id>
2827        Global_Data_Symbol_Changed_Type
2828    </id>
2829    <severity>
2830        High
2831    </severity>
2832    <kind>
2833        Symbols
2834    </kind>
2835    <change>
2836        Type of this global data has been changed from @old_type to @new_type.
2837    </change>
2838    <effect>
2839        The name of the appropriate symbol for this data on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2840    </effect>
2841</rule>
2842
2843<rule>
2844    <id>
2845        Symbol_Changed_Parameters
2846    </id>
2847    <severity>
2848        High
2849    </severity>
2850    <kind>
2851        Symbols
2852    </kind>
2853    <change>
2854        Parameters list has been changed.
2855    </change>
2856    <effect>
2857        The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2858    </effect>
2859</rule>
2860
2861<rule>
2862    <id>
2863        Method_Became_Non_Const
2864    </id>
2865    <severity>
2866        High
2867    </severity>
2868    <kind>
2869        Symbols
2870    </kind>
2871    <change>
2872        Method became non-const.
2873    </change>
2874    <effect>
2875        The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2876    </effect>
2877</rule>
2878
2879<rule>
2880    <id>
2881        Method_Became_Const
2882    </id>
2883    <severity>
2884        High
2885    </severity>
2886    <kind>
2887        Symbols
2888    </kind>
2889    <change>
2890        Method became const.
2891    </change>
2892    <effect>
2893        The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2894    </effect>
2895</rule>
2896
2897<rule>
2898    <id>
2899        Method_Became_Volatile
2900    </id>
2901    <severity>
2902        High
2903    </severity>
2904    <kind>
2905        Symbols
2906    </kind>
2907    <change>
2908        Method became volatile.
2909    </change>
2910    <effect>
2911        The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2912    </effect>
2913</rule>
2914
2915<rule>
2916    <id>
2917        Method_Became_Non_Volatile
2918    </id>
2919    <severity>
2920        High
2921    </severity>
2922    <kind>
2923        Symbols
2924    </kind>
2925    <change>
2926        Method became non-volatile.
2927    </change>
2928    <effect>
2929        The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2930    </effect>
2931</rule>
2932
2933<rule>
2934    <id>
2935        Changed_Constant
2936    </id>
2937    <severity>
2938        Low
2939    </severity>
2940    <kind>
2941        Constants
2942    </kind>
2943    <change>
2944        The value of constant @target has been changed from @old_value to @new_value.
2945    </change>
2946    <effect>
2947        Applications will pass an old value of this constant as the parameter to the new-version library functions, that expect a new one. This may result in crash of incorrect behavior of applications.
2948    </effect>
2949</rule>
2950
2951<rule>
2952    <id>
2953        Added_Constant
2954    </id>
2955    <severity>
2956        Safe
2957    </severity>
2958    <kind>
2959        Constants
2960    </kind>
2961    <change>
2962        The constant @target with value @new_value has been added.
2963    </change>
2964    <effect>
2965        No effect.
2966    </effect>
2967</rule>
2968
2969<rule>
2970    <id>
2971        Removed_Constant
2972    </id>
2973    <severity>
2974        Low
2975    </severity>
2976    <kind>
2977        Constants
2978    </kind>
2979    <change>
2980        The constant @target with value @old_value has been removed.
2981    </change>
2982    <effect>
2983        The value of this constant may no longer be properly handled by new-version library functions.
2984    </effect>
2985</rule>
2986
2987<rule>
2988    <id>
2989        Field_Became_Volatile
2990    </id>
2991    <severity>
2992        Low
2993    </severity>
2994    <kind>
2995        Fields
2996    </kind>
2997    <change>
2998        Field @target became volatile.
2999    </change>
3000    <effect>
3001        The value of this field can begin to change in ways outside the control of old client applications.
3002    </effect>
3003</rule>
3004
3005<rule>
3006    <id>
3007        Field_Became_Non_Volatile
3008    </id>
3009    <severity>
3010        Safe
3011    </severity>
3012    <kind>
3013        Fields
3014    </kind>
3015    <change>
3016        Field @target became non-volatile.
3017    </change>
3018    <effect>
3019        No effect.
3020    </effect>
3021</rule>
3022
3023<rule>
3024    <id>
3025        Return_Value_Became_Volatile
3026    </id>
3027    <severity>
3028        Low
3029    </severity>
3030    <kind>
3031        Symbols
3032    </kind>
3033    <change>
3034        Return value became volatile.
3035    </change>
3036    <effect>
3037        Old client applications will get volatile object instead of non-volatile, but may be optimized by the compiler and cannot handle volatile objects.
3038    </effect>
3039</rule>
3040
3041<rule>
3042    <id>
3043        Parameter_Became_Non_Volatile
3044    </id>
3045    <severity>
3046        Low
3047    </severity>
3048    <kind>
3049        Symbols
3050    </kind>
3051    <change>
3052        Parameter @target became non-volatile.
3053    </change>
3054    <effect>
3055        Old client applications will pass volatile object to the function that may be optimized by the compiler and cannot handle volatile objects.
3056    </effect>
3057</rule>
3058
3059<rule>
3060    <id>
3061        Field_Type_Format
3062    </id>
3063    <severity>
3064        Medium
3065    </severity>
3066    <kind>
3067        Fields
3068    </kind>
3069    <change>
3070        Type of field @target has been changed from @old_value to @new_value of different format.
3071    </change>
3072    <effect>
3073        This field may be incorrectly initialized or accessed by applications.
3074    </effect>
3075</rule>
3076
3077<rule>
3078    <id>
3079        Field_BaseType_Format
3080    </id>
3081    <severity>
3082        Medium
3083    </severity>
3084    <kind>
3085        Fields
3086    </kind>
3087    <change>
3088        Base type of field @target has been changed from @old_value to @new_value of different format.
3089    </change>
3090    <effect>
3091        This field may be incorrectly initialized or accessed by applications.
3092    </effect>
3093</rule>
3094
3095<rule>
3096    <id>
3097        Parameter_Type_Format
3098    </id>
3099    <severity>
3100        Medium
3101    </severity>
3102    <kind>
3103        Parameters
3104    </kind>
3105    <change>
3106        Type of parameter @target has been changed from @old_value to @new_value of different format.
3107    </change>
3108    <effect>
3109        This parameter may be incorrectly initialized by applications.
3110    </effect>
3111</rule>
3112
3113<rule>
3114    <id>
3115        Parameter_BaseType_Format
3116    </id>
3117    <severity>
3118        Medium
3119    </severity>
3120    <kind>
3121        Parameters
3122    </kind>
3123    <change>
3124        Base type of parameter @target has been changed from @old_value to @new_value of different format.
3125    </change>
3126    <effect>
3127        This parameter may be incorrectly initialized by applications.
3128    </effect>
3129</rule>
3130
3131<rule>
3132    <id>
3133        Return_Type_Format
3134    </id>
3135    <severity>
3136        Medium
3137    </severity>
3138    <kind>
3139        Symbols
3140    </kind>
3141    <change>
3142        Type of return value has been changed from @old_value to @new_value of different format.
3143    </change>
3144    <effect>
3145        Applications will obtain a different return value and execution may change.
3146    </effect>
3147</rule>
3148
3149<rule>
3150    <id>
3151        Return_Type_And_Register
3152    </id>
3153    <severity>
3154        Medium
3155    </severity>
3156    <kind>
3157        Symbols
3158    </kind>
3159    <change>
3160        Type of return value has been changed from @old_value to @new_value.
3161    </change>
3162    <effect>
3163        The return value became passed in different register. Applications will read the wrong memory block instead of the return value. Also, distribution of parameters on the available registers and stack may be changed.
3164    </effect>
3165</rule>
3166
3167<rule>
3168    <id>
3169        Return_BaseType_Format
3170    </id>
3171    <severity>
3172        Medium
3173    </severity>
3174    <kind>
3175        Symbols
3176    </kind>
3177    <change>
3178        Base type of return value has been changed from @old_value to @new_value of different format.
3179    </change>
3180    <effect>
3181        This parameter may be incorrectly initialized by applications.
3182    </effect>
3183</rule>
3184
3185<rule>
3186    <id>
3187        Parameter_Became_Non_VaList
3188    </id>
3189    <severity>
3190        Low
3191    </severity>
3192    <kind>
3193        Parameters
3194    </kind>
3195    <change>
3196        Type of @param_pos parameter has been changed from ... (va_list) to @new_value.
3197    </change>
3198    <effect>
3199        This parameter may not be initialized by old clients.
3200    </effect>
3201</rule>
3202
3203<rule>
3204    <id>
3205        Parameter_Became_VaList
3206    </id>
3207    <severity>
3208        Low
3209    </severity>
3210    <kind>
3211        Parameters
3212    </kind>
3213    <change>
3214        Type of @param_pos parameter @target has been changed from @old_value to ... (va_list).
3215    </change>
3216    <effect>
3217        The semantic meaning of the parameter may change.
3218    </effect>
3219</rule>
3220
3221<rule>
3222    <id>
3223        Added_Enum_Member
3224    </id>
3225    <severity>
3226        Safe
3227    </severity>
3228    <kind>
3229        Constants
3230    </kind>
3231    <change>
3232        The member @target with value @new_value has been added.
3233    </change>
3234    <effect>
3235        No effect.
3236    </effect>
3237</rule>
3238
3239<rule>
3240    <id>
3241        Global_Data_Value_Changed
3242    </id>
3243    <severity>
3244        Low
3245    </severity>
3246    <kind>
3247        Symbols
3248    </kind>
3249    <change>
3250        The initial value of this global data has been changed from @old_value to @new_value.
3251    </change>
3252    <effect>
3253        Applications will use an old value of this data instead of the new one. This may cause incorrect behavior of applications.
3254    </effect>
3255</rule>
3256
3257<rule>
3258    <id>
3259        Field_Became_Mutable
3260    </id>
3261    <severity>
3262        Low
3263    </severity>
3264    <kind>
3265        Fields
3266    </kind>
3267    <change>
3268        Field @target became **mutable**.
3269    </change>
3270    <effect>
3271        The value of this field can begin to change in ways outside the control of old client applications.
3272    </effect>
3273</rule>
3274
3275<rule>
3276    <id>
3277        Field_Became_Non_Mutable
3278    </id>
3279    <severity>
3280        Low
3281    </severity>
3282    <kind>
3283        Fields
3284    </kind>
3285    <change>
3286        Field @target became **non-mutable**.
3287    </change>
3288    <effect>
3289        The value of this field can still be changed by const methods of old client applications, but it's not expected by new-version library.
3290    </effect>
3291</rule>
3292
3293<rule>
3294    <id>
3295        Method_Became_Private
3296    </id>
3297    <severity>
3298        Low
3299    </severity>
3300    <kind>
3301        Symbols
3302    </kind>
3303    <change>
3304        This method became **private**.
3305    </change>
3306    <effect>
3307        Old applications will continue using this method, but it may require a different initialization of the environment and parameters.
3308    </effect>
3309</rule>
3310
3311<rule>
3312    <id>
3313        Method_Became_Protected
3314    </id>
3315    <severity>
3316        Low
3317    </severity>
3318    <kind>
3319        Symbols
3320    </kind>
3321    <change>
3322        This method became **protected**.
3323    </change>
3324    <effect>
3325        Old applications will continue using this method, but it may require a different initialization of the environment and parameters.
3326    </effect>
3327</rule>
3328
3329<rule>
3330    <id>
3331        Method_Became_Public
3332    </id>
3333    <severity>
3334        Safe
3335    </severity>
3336    <kind>
3337        Symbols
3338    </kind>
3339    <change>
3340        This method became **public**.
3341    </change>
3342    <effect>
3343        No effect.
3344    </effect>
3345</rule>
3346
3347<rule>
3348    <id>
3349        Global_Data_Became_Private
3350    </id>
3351    <severity>
3352        Low
3353    </severity>
3354    <kind>
3355        Symbols
3356    </kind>
3357    <change>
3358        This global data became **private**.
3359    </change>
3360    <effect>
3361        Old applications will continue using this global data, but it may require a different initialization of the environment.
3362    </effect>
3363</rule>
3364
3365<rule>
3366    <id>
3367        Global_Data_Became_Protected
3368    </id>
3369    <severity>
3370        Low
3371    </severity>
3372    <kind>
3373        Symbols
3374    </kind>
3375    <change>
3376        This global data became **protected**.
3377    </change>
3378    <effect>
3379        Old applications will continue using this global data, but it may require a different initialization of the environment.
3380    </effect>
3381</rule>
3382
3383<rule>
3384    <id>
3385        Global_Data_Became_Public
3386    </id>
3387    <severity>
3388        Safe
3389    </severity>
3390    <kind>
3391        Symbols
3392    </kind>
3393    <change>
3394        This global data became **public**.
3395    </change>
3396    <effect>
3397        No effect.
3398    </effect>
3399</rule>
3400
3401<rule>
3402    <id>
3403        Field_Became_Const
3404    </id>
3405    <severity>
3406        Low
3407    </severity>
3408    <kind>
3409        Types
3410    </kind>
3411    <change>
3412        Field @target became **const**.
3413    </change>
3414    <effect>
3415        The value of this field is expected to be **const** in new library version, but can be modified by old applications.
3416    </effect>
3417</rule>
3418
3419<rule>
3420    <id>
3421        Field_Became_Non_Const
3422    </id>
3423    <severity>
3424        Safe
3425    </severity>
3426    <kind>
3427        Types
3428    </kind>
3429    <change>
3430        Field @target became **non-const**.
3431    </change>
3432    <effect>
3433        No effect.
3434    </effect>
3435</rule>
3436
3437<rule>
3438    <id>
3439        Field_Added_Const
3440    </id>
3441    <severity>
3442        Low
3443    </severity>
3444    <kind>
3445        Types
3446    </kind>
3447    <change>
3448        Added **const** qualifier to field @target.
3449    </change>
3450    <effect>
3451        The value of this field is expected to be **const** in new library version, but can be modified by old applications.
3452    </effect>
3453</rule>
3454
3455<rule>
3456    <id>
3457        Field_Removed_Const
3458    </id>
3459    <severity>
3460        Safe
3461    </severity>
3462    <kind>
3463        Types
3464    </kind>
3465    <change>
3466        Removed **const** qualifier from field @target.
3467    </change>
3468    <effect>
3469        No effect.
3470    </effect>
3471</rule>
3472
3473<rule>
3474    <id>
3475        Field_Became_Private
3476    </id>
3477    <severity>
3478        Low
3479    </severity>
3480    <kind>
3481        Types
3482    </kind>
3483    <change>
3484        Field @target became **private**.
3485    </change>
3486    <effect>
3487        Old applications will continue using this field, but it may require a different initialization of class object.
3488    </effect>
3489</rule>
3490
3491<rule>
3492    <id>
3493        Field_Became_Protected
3494    </id>
3495    <severity>
3496        Low
3497    </severity>
3498    <kind>
3499        Types
3500    </kind>
3501    <change>
3502        Field @target became **protected**.
3503    </change>
3504    <effect>
3505        Old applications will continue using this field, but it may require a different initialization of class object.
3506    </effect>
3507</rule>
3508
3509<rule>
3510    <id>
3511        Virtual_Method_Became_Pure
3512    </id>
3513    <severity>
3514        Medium
3515    </severity>
3516    <kind>
3517        Types
3518    </kind>
3519    <change>
3520        Virtual method @target became **pure**.
3521    </change>
3522    <effect>
3523        Old applications will not provide implementation for this pure virtual method. This may result in crash or incorrect behavior of applications.
3524    </effect>
3525</rule>
3526
3527<rule>
3528    <id>
3529        Virtual_Method_Became_Non_Pure
3530    </id>
3531    <severity>
3532        Safe
3533    </severity>
3534    <kind>
3535        Types
3536    </kind>
3537    <change>
3538        Virtual method @target became **non-pure**.
3539    </change>
3540    <effect>
3541        No effect.
3542    </effect>
3543</rule>
3544
3545<rule>
3546    <id>
3547        Type_Became_Opaque
3548    </id>
3549    <severity>
3550        Medium
3551    </severity>
3552    <kind>
3553        Types
3554    </kind>
3555    <change>
3556        This type became **opaque**.
3557    </change>
3558    <effect>
3559        The internal structure of this type is hidden in the new library version and may be different. This may result in crash or incorrect behavior of applications.
3560    </effect>
3561</rule>
3562
3563</rules>
3564