Combining static analysis and dynamic symbolic execution in a toolchain to detect fault injection vulnerabilities