// S : tags mstring todo sym c++ $TAGS // S : expect --result valid // S : cc -o test.bc $CC_OPT $file // S : verify --sequential -o nofail:malloc $V_OPT test.bc // N : V : CC_OPT : V_OPT : TAGS : RESULT // V : v.sequence-leakcheck : -DSEQUENCE VERIFY_OPTS: --leakcheck exit : : todo : valid // V : v.sequence : -DSEQUENCE : : : valid // V : v.word : -DWORD : : : valid // V : v.word-leakcheck : -DWORD VERIFY_OPTS: --leakcheck exit : : todo : valid // V : sym : : --lamp symstring --symbolic : sym : valid // V : v.alternation-leakcheck : -DALTERNATION VERIFY_OPTS: --leakcheck exit : : todo : valid // V : v.alternation : -DALTERNATION : : : valid // V : con : : --lamp constring : min : valid #include "common.h" #include "libc.hpp" #include #include static constexpr size_t length = 3; template < typename T > int sgn( T val ) { return ( T(0) < val ) - ( val < T(0) ); } int main() { char * left = sym::string( length ); char * right = sym::string( length ); assert( sgn( strcmp( left, right ) ) == sgn( libc::strcmp( left, right ) ) ); free( left ); free( right ); }