Rewrite with hard-coded offsets into the PE file format to discern
if a binary is PE32 or PE32+, and then to determine if it contains
a "CLR Data Directory" entry that looks valid.
Tested with PE32 and PE32+ compiled Mono binaries, PE32 and PE32+ native
binaries, and a random assortment of garbage files.
Former-commit-id: 9e7ac86ec84f653a2f79b87183efd5b0ebda001b
These inputs were pre-generated to allow for easier testing of llvm-cov.
The files used to test the gcov compatible code coverage tool were generated
using the following method:
test.gcno and test.gcda were create by running clang:
clang++ -g -ftest-coverage -fprofile-arcs test.cpp
test.cpp.gcov was created by running gcov 4.2.1:
gcov test.cpp
The 'covmapping' files that are used to test llvm-cov contain raw sections
with the coverage mapping data generated by the compiler and linker. They are
created by running clang and llvm-cov:
clang++ -fprofile-instr-generate -fcoverage-mapping -o test test.cpp
llvm-cov convert-for-testing -o test.covmapping test
The 'profdata' files were generated by running an instrumented version of the
program and merging the raw profile data using llvm-profdata.
./test
llvm-profdata merge -o test.profdata default.profraw