llvm/lib/ProfileData
Justin Bogner 5e4931b489 InstrProf: Do a better job of reading coverage mapping data.
This code was casting regions of a memory buffer to a couple of
different structs. This is wrong in a few ways:

1. It breaks aliasing rules.
2. If the buffer isn't aligned, it hits undefined behaviour.
3. It completely ignores endianness differences.
4. The structs being defined for this aren't specifying their padding
   properly, so this doesn't even represent the data properly on some
   platforms.

This commit is mostly NFC, except that it fixes reading coverage for
32 bit binaries as a side effect of getting rid of the mispadded
structs. I've included a test for that.

I've also baked in that we only handle little endian more explicitly,
since that was true in practice already. I'll fix this to handle
endianness properly in a followup commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232346 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-16 06:55:45 +00:00
..
CMakeLists.txt Use ADDITIONAL_HEADER_DIRS in all LLVM CMake projects. 2015-02-11 03:28:02 +00:00
CoverageMapping.cpp InstrProf: Teach llvm-cov to handle universal binaries when given -arch 2015-03-11 02:30:51 +00:00
CoverageMappingReader.cpp InstrProf: Do a better job of reading coverage mapping data. 2015-03-16 06:55:45 +00:00
CoverageMappingWriter.cpp InstrProf: Use a stable sort when reading coverage regions 2015-02-04 00:12:18 +00:00
InstrProf.cpp Converting InstrProf's error_category to a ManagedStatic to avoid static constructors and destructors. 2014-09-19 23:19:24 +00:00
InstrProfIndexed.h [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00
InstrProfReader.cpp InstrProf: Allow hexadecimal function hashes in proftext format 2015-03-09 18:54:49 +00:00
InstrProfWriter.cpp Re-apply "InstrProf: Add unit tests for the profile reader and writer" 2015-02-18 01:58:17 +00:00
LLVMBuild.txt LLVMProfileData: Update LLVMBuild.txt corresponding to r217437. 2014-09-09 15:00:13 +00:00
Makefile
SampleProf.cpp Add show and merge tools for sample PGO profiles. 2014-11-01 00:56:55 +00:00
SampleProfReader.cpp Use ErrorOr for the ::create factory on instrumented and sample profilers. 2014-11-03 00:51:45 +00:00
SampleProfWriter.cpp [cleanup] Re-sort all the #include lines in LLVM using 2015-01-14 11:23:27 +00:00