#!/bin/bash AWS="$1" SV="$2" for a in `find "$AWS/.cbmc-batch/jobs" -type d` do cd "$a" make sv-benchmark SV=$SV done # the original harnesses override some functions via CMBC mechanisms, # leading to duplicate definitions that need to be removed sed '/^void .memset(/,+8d' -i \ $SV/c/aws-c-common/memset_using_uint64_harness.i sed '/^void .memcpy(/,+8d' -i \ $SV/c/aws-c-common/memcpy_using_uint64_harness.i sed '/^void .memset(/,+8d' -i \ $SV/c/aws-c-common/memset_override_0_harness.i # clang is confused over such identifier sed 's/__builtin___mem/___mem/g' -i \ $SV/c/aws-c-common/*.i # Rename functions that are defined in the C11 standard. # We need to make sure that we rename only where a body exists (for abort this is always the case). sed -e 's/\babort\b/my_abort/g' -i $SV/c/aws-c-common/*.i sed -e 's/\bqsort\b/my_qsort/g' -i $SV/c/aws-c-common/aws_array_list_sort_harness.i for file in $SV/c/aws-c-common/*.i; do for func in memcpy memmove memset; do if grep -q '^void \*'$func'(.*{' $file; then echo "Replacing $func in $file" sed -e 's/\b'$func'\b/'my_$func'/g' -i $file fi done done # fix typo in qsort stub sed '1 i int compare(const void *a, const void *b, unsigned long item_size);' -i \ $SV/c/aws-c-common/./aws_array_list_sort_harness.i # aws_is_mem_zeroed contains strict-aliasing violation sed -e '/^ aws_is_mem_zeroed(.*) {$/,/^ const uint8_t \*buf_u8 = (const uint8_t \*)buf;$/ c \ aws_is_mem_zeroed(const void *buf, size_t bufsize) {\n size_t i;\n const uint8_t *buf_u8 = (const uint8_t *)buf;' -i \ $SV/c/aws-c-common/*.i # remove unnecessary code snippet on s_buf_belongs_to_pool function cd $SV && patch -p1 < c/aws-c-common/s_buf_belongs_to_pool-fix.diff # add missing __CPROVER_file_local_priority_queue_c_s_swap function cd $SV && patch -p1 < c/aws-c-common/s_swap-fix.diff # add missing __CPROVER_file_local_priority_queue_c_s_remove_node function cd $SV && patch -p1 < c/aws-c-common/s_remove_node-fix.diff # fix misconverted assumptions cd $SV && patch -p1 < c/aws-c-common/aws_byte_cursor_read-fix.diff # fix overflow functions cd $SV && patch -p1 < c/aws-c-common/overflow-fix-1.diff cd $SV && patch -p1 < c/aws-c-common/overflow-fix-2.diff # remove all unsupported benchmarks rm -f aws_ring_buffer_buf_belongs_to_pool_harness.*