@@ -1134,14 +1134,23 @@ int vfscanf(FILE *restrict stream, const char *restrict format, va_list arg)
1134
1134
}
1135
1135
1136
1136
(void )* format ;
1137
- while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (* (void * * )& arg ) <
1137
+ # if defined(__aarch64__ ) || defined(_M_ARM64 )
1138
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (arg .__stack ) <
1139
+ __CPROVER_OBJECT_SIZE (arg .__stack ))
1140
+ {
1141
+ void * a = va_arg (arg , void * );
1142
+ __CPROVER_havoc_object (a );
1143
+ }
1144
+ # else
1145
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (arg ) <
1138
1146
__CPROVER_OBJECT_SIZE (arg ))
1139
1147
{
1140
1148
void * a = va_arg (arg , void * );
1141
1149
__CPROVER_havoc_object (a );
1142
1150
}
1151
+ # endif
1143
1152
1144
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
1153
+ # ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
1145
1154
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
1146
1155
"vfscanf file must be open" );
1147
1156
#endif
@@ -1183,12 +1192,21 @@ __CPROVER_HIDE:;
1183
1192
}
1184
1193
1185
1194
(void )* format ;
1186
- while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (* (void * * )& arg ) <
1187
- __CPROVER_OBJECT_SIZE (* (void * * )& arg ))
1195
+ #if defined(__aarch64__ ) || defined(_M_ARM64 )
1196
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (arg .__stack ) <
1197
+ __CPROVER_OBJECT_SIZE (arg .__stack ))
1198
+ {
1199
+ void * a = va_arg (arg , void * );
1200
+ __CPROVER_havoc_object (a );
1201
+ }
1202
+ #else
1203
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (arg ) <
1204
+ __CPROVER_OBJECT_SIZE (arg ))
1188
1205
{
1189
1206
void * a = va_arg (arg , void * );
1190
1207
__CPROVER_havoc_object (a );
1191
1208
}
1209
+ #endif
1192
1210
1193
1211
#ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
1194
1212
__CPROVER_assert (
@@ -1232,12 +1250,21 @@ int __stdio_common_vfscanf(
1232
1250
}
1233
1251
1234
1252
(void )* format ;
1235
- while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (* (void * * )& args ) <
1253
+ # if defined(__aarch64__ ) || defined(_M_ARM64 )
1254
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (args .__stack ) <
1255
+ __CPROVER_OBJECT_SIZE (args .__stack ))
1256
+ {
1257
+ void * a = va_arg (args , void * );
1258
+ __CPROVER_havoc_object (a );
1259
+ }
1260
+ # else
1261
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (args ) <
1236
1262
__CPROVER_OBJECT_SIZE (args ))
1237
1263
{
1238
1264
void * a = va_arg (args , void * );
1239
1265
__CPROVER_havoc_object (a );
1240
1266
}
1267
+ # endif
1241
1268
1242
1269
# ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
1243
1270
__CPROVER_assert (
@@ -1311,12 +1338,21 @@ __CPROVER_HIDE:;
1311
1338
int result = __VERIFIER_nondet_int ();
1312
1339
(void )* s ;
1313
1340
(void )* format ;
1314
- while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (* (void * * )& arg ) <
1341
+ # if defined(__aarch64__ ) || defined(_M_ARM64 )
1342
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (arg .__stack ) <
1343
+ __CPROVER_OBJECT_SIZE (arg .__stack ))
1344
+ {
1345
+ void * a = va_arg (arg , void * );
1346
+ __CPROVER_havoc_object (a );
1347
+ }
1348
+ # else
1349
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (arg ) <
1315
1350
__CPROVER_OBJECT_SIZE (arg ))
1316
1351
{
1317
1352
void * a = va_arg (arg , void * );
1318
1353
__CPROVER_havoc_object (a );
1319
1354
}
1355
+ # endif
1320
1356
1321
1357
return result ;
1322
1358
}
@@ -1346,12 +1382,21 @@ __CPROVER_HIDE:;
1346
1382
int result = __VERIFIER_nondet_int ();
1347
1383
(void )* s ;
1348
1384
(void )* format ;
1349
- while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (* (void * * )& arg ) <
1350
- __CPROVER_OBJECT_SIZE (* (void * * )& arg ))
1385
+ #if defined(__aarch64__ ) || defined(_M_ARM64 )
1386
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (arg .__stack ) <
1387
+ __CPROVER_OBJECT_SIZE (arg .__stack ))
1388
+ {
1389
+ void * a = va_arg (arg , void * );
1390
+ __CPROVER_havoc_object (a );
1391
+ }
1392
+ #else
1393
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (arg ) <
1394
+ __CPROVER_OBJECT_SIZE (arg ))
1351
1395
{
1352
1396
void * a = va_arg (arg , void * );
1353
1397
__CPROVER_havoc_object (a );
1354
1398
}
1399
+ #endif
1355
1400
1356
1401
return result ;
1357
1402
}
@@ -1387,12 +1432,21 @@ int __stdio_common_vsscanf(
1387
1432
1388
1433
(void )* s ;
1389
1434
(void )* format ;
1390
- while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (* (void * * )& args ) <
1435
+ # if defined(__aarch64__ ) || defined(_M_ARM64 )
1436
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (args .__stack ) <
1437
+ __CPROVER_OBJECT_SIZE (args .__stack ))
1438
+ {
1439
+ void * a = va_arg (args , void * );
1440
+ __CPROVER_havoc_object (a );
1441
+ }
1442
+ # else
1443
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (args ) <
1391
1444
__CPROVER_OBJECT_SIZE (args ))
1392
1445
{
1393
1446
void * a = va_arg (args , void * );
1394
1447
__CPROVER_havoc_object (a );
1395
1448
}
1449
+ # endif
1396
1450
1397
1451
return result ;
1398
1452
}
@@ -1773,7 +1827,18 @@ int vsnprintf(char *str, size_t size, const char *fmt, va_list ap)
1773
1827
{
1774
1828
(void )* fmt ;
1775
1829
1776
- while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (* (void * * )& ap ) <
1830
+ #if defined(__aarch64__ ) || defined(_M_ARM64 )
1831
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (ap .__stack ) <
1832
+ __CPROVER_OBJECT_SIZE (ap .__stack ))
1833
+
1834
+ {
1835
+ (void )va_arg (ap , int );
1836
+ __CPROVER_precondition (
1837
+ __CPROVER_POINTER_OBJECT (str ) != __CPROVER_POINTER_OBJECT (ap .__stack ),
1838
+ "vsnprintf object overlap" );
1839
+ }
1840
+ #else
1841
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (ap ) <
1777
1842
__CPROVER_OBJECT_SIZE (ap ))
1778
1843
1779
1844
{
@@ -1782,6 +1847,7 @@ int vsnprintf(char *str, size_t size, const char *fmt, va_list ap)
1782
1847
__CPROVER_POINTER_OBJECT (str ) != __CPROVER_POINTER_OBJECT (ap ),
1783
1848
"vsnprintf object overlap" );
1784
1849
}
1850
+ #endif
1785
1851
1786
1852
size_t i = 0 ;
1787
1853
for (; i < size ; ++ i )
@@ -1821,7 +1887,18 @@ int __builtin___vsnprintf_chk(
1821
1887
(void )bufsize ;
1822
1888
(void )* fmt ;
1823
1889
1824
- while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (* (void * * )& ap ) <
1890
+ #if defined(__aarch64__ ) || defined(_M_ARM64 )
1891
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (ap .__stack ) <
1892
+ __CPROVER_OBJECT_SIZE (ap .__stack ))
1893
+
1894
+ {
1895
+ (void )va_arg (ap , int );
1896
+ __CPROVER_precondition (
1897
+ __CPROVER_POINTER_OBJECT (str ) != __CPROVER_POINTER_OBJECT (ap .__stack ),
1898
+ "vsnprintf object overlap" );
1899
+ }
1900
+ #else
1901
+ while ((__CPROVER_size_t )__CPROVER_POINTER_OFFSET (ap ) <
1825
1902
__CPROVER_OBJECT_SIZE (ap ))
1826
1903
1827
1904
{
@@ -1830,6 +1907,7 @@ int __builtin___vsnprintf_chk(
1830
1907
__CPROVER_POINTER_OBJECT (str ) != __CPROVER_POINTER_OBJECT (ap ),
1831
1908
"vsnprintf object overlap" );
1832
1909
}
1910
+ #endif
1833
1911
1834
1912
size_t i = 0 ;
1835
1913
for (; i < size ; ++ i )
0 commit comments