@@ -535,7 +535,10 @@ inline void *memcpy(void *dst, const void *src, size_t n)
535
535
#else
536
536
__CPROVER_assert (__CPROVER_POINTER_OBJECT (dst )!=
537
537
__CPROVER_POINTER_OBJECT (src ), "memcpy src/dst overlap" );
538
- for (__CPROVER_size_t i = 0 ; i < n ; i ++ ) ((char * )dst )[i ]= ((const char * )src )[i ];
538
+ //for(__CPROVER_size_t i=0; i<n ; i++) ((char *)dst)[i]=((const char *)src)[i];
539
+ char src_n [n ];
540
+ __CPROVER_array_copy (src_n , (char * )src );
541
+ __CPROVER_array_replace ((char * )dst , src_n );
539
542
#endif
540
543
return dst ;
541
544
}
@@ -563,7 +566,10 @@ void *__builtin___memcpy_chk(void *dst, const void *src, __CPROVER_size_t n, __C
563
566
__CPROVER_assert (__CPROVER_POINTER_OBJECT (dst )!=
564
567
__CPROVER_POINTER_OBJECT (src ), "memcpy src/dst overlap" );
565
568
(void )size ;
566
- for (__CPROVER_size_t i = 0 ; i < n ; i ++ ) ((char * )dst )[i ]= ((const char * )src )[i ];
569
+ //for(__CPROVER_size_t i=0; i<n ; i++) ((char *)dst)[i]=((const char *)src)[i];
570
+ char src_n [n ];
571
+ __CPROVER_array_copy (src_n , (char * )src );
572
+ __CPROVER_array_replace ((char * )dst , src_n );
567
573
#endif
568
574
return dst ;
569
575
}
@@ -596,8 +602,11 @@ inline void *memset(void *s, int c, size_t n)
596
602
else
597
603
__CPROVER_is_zero_string (s )= 0 ;
598
604
#else
599
- char * sp = s ;
600
- for (__CPROVER_size_t i = 0 ; i < n ; i ++ ) sp [i ]= c ;
605
+ //char *sp=s;
606
+ //for(__CPROVER_size_t i=0; i<n ; i++) sp[i]=c;
607
+ unsigned char s_n [n ];
608
+ __CPROVER_array_set (s_n , (unsigned char )c );
609
+ __CPROVER_array_replace ((unsigned char * )s , s_n );
601
610
#endif
602
611
return s ;
603
612
}
@@ -625,8 +634,11 @@ void *__builtin___memset_chk(void *s, int c, __CPROVER_size_t n, __CPROVER_size_
625
634
__CPROVER_is_zero_string (s )= 0 ;
626
635
#else
627
636
(void )size ;
628
- char * sp = s ;
629
- for (__CPROVER_size_t i = 0 ; i < n ; i ++ ) sp [i ]= c ;
637
+ //char *sp=s;
638
+ //for(__CPROVER_size_t i=0; i<n ; i++) sp[i]=c;
639
+ unsigned char s_n [n ];
640
+ __CPROVER_array_set (s_n , (unsigned char )c );
641
+ __CPROVER_array_replace ((unsigned char * )s , s_n );
630
642
#endif
631
643
return s ;
632
644
}
@@ -655,14 +667,9 @@ inline void *memmove(void *dest, const void *src, size_t n)
655
667
else
656
668
__CPROVER_is_zero_string (dest )= 0 ;
657
669
#else
658
- if ((const char * )dest >=(const char * )src + n )
659
- {
660
- for (__CPROVER_size_t i = 0 ; i < n ; i ++ ) ((char * )dest )[i ]= ((const char * )src )[i ];
661
- }
662
- else
663
- {
664
- for (__CPROVER_size_t i = n ; i > 0 ; i -- ) ((char * )dest )[i - 1 ]= ((const char * )src )[i - 1 ];
665
- }
670
+ char src_n [n ];
671
+ __CPROVER_array_copy (src_n , (char * )src );
672
+ __CPROVER_array_replace ((char * )dest , src_n );
666
673
#endif
667
674
return dest ;
668
675
}
0 commit comments