12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182(****************************************************************************)(* *)(* This file is part of MOPSA, a Modular Open Platform for Static Analysis. *)(* *)(* Copyright (C) 2017-2019 The MOPSA Project. *)(* *)(* This program is free software: you can redistribute it and/or modify *)(* it under the terms of the GNU Lesser General Public License as published *)(* by the Free Software Foundation, either version 3 of the License, or *)(* (at your option) any later version. *)(* *)(* This program is distributed in the hope that it will be useful, *)(* but WITHOUT ANY WARRANTY; without even the implied warranty of *)(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *)(* GNU Lesser General Public License for more details. *)(* *)(* You should have received a copy of the GNU Lesser General Public License *)(* along with this program. If not, see <http://www.gnu.org/licenses/>. *)(* *)(****************************************************************************)(** Soundness assumptions *)openMopsaopenBaseopenFormattypeassumption_kind+=|A_ignore_unsupported_format_string|A_ignore_undefined_functionofstring|A_ignore_undetermined_function_pointerofexpr|A_ignore_modification_undetermined_pointerofexpr|A_ignore_undetermined_exit_functions|A_ignore_asmofstringlet()=register_assumption{print=(funnextfmt->function|A_ignore_unsupported_format_string->fprintffmt"ignoring unsupported format"|A_ignore_undefined_functionf->fprintffmt"ignoring side-effects of calling undefined function '%a'"(Debug.boldpp_print_string)f|A_ignore_undetermined_function_pointerptr->fprintffmt"ignoring side-effects of calling undetermined function pointer '%a'"(Debug.boldpp_expr)ptr|A_ignore_modification_undetermined_pointerptr->fprintffmt"ignoring modification of blocks pointed by undetermined pointer '%a'"(Debug.boldpp_expr)ptr|A_ignore_undetermined_exit_functions->fprintffmt"ignoring side-effect of undetermined exit functions"|A_ignore_asms->fprintffmt"ignoring asm directive %s"s|a->nextfmta);compare=(funnexta1a2->matcha1,a2with|A_ignore_unsupported_format_string,A_ignore_unsupported_format_string->0|A_ignore_undefined_functionf1,A_ignore_undefined_functionf2->String.comparef1f2|A_ignore_undetermined_function_pointerptr1,A_ignore_undetermined_function_pointerptr2->compare_exprptr1ptr2|A_ignore_modification_undetermined_pointerptr1,A_ignore_modification_undetermined_pointerptr2->compare_exprptr1ptr2|A_ignore_undetermined_exit_functions,A_ignore_undetermined_exit_functions->0|A_ignore_asms,A_ignore_asms'->comparess'|_->nexta1a2);}