forked from OSchip/llvm-project
[profile] Fix iteration over profile data entries
Fix a crash when gathering value profile data on i386 Darwin. The Darwin linker shrinks sections containing aligned structures when padding is not explicitly added to the end of the structure. When iterating over these structures, be sure to not walk past the end of the section. No tests added, since running `ninja check-profile` on i386 Darwin is enough to reproduce the original crash. llvm-svn: 261683
This commit is contained in:
parent
d5b688c8e8
commit
120f6301ed
|
@ -46,7 +46,7 @@ COMPILER_RT_VISIBILITY void __llvm_profile_reset_counters(void) {
|
|||
const __llvm_profile_data *DataBegin = __llvm_profile_begin_data();
|
||||
const __llvm_profile_data *DataEnd = __llvm_profile_end_data();
|
||||
const __llvm_profile_data *DI;
|
||||
for (DI = DataBegin; DI != DataEnd; ++DI) {
|
||||
for (DI = DataBegin; DI < DataEnd; ++DI) {
|
||||
uint64_t CurrentVSiteCount = 0;
|
||||
uint32_t VKI, i;
|
||||
if (!DI->Values)
|
||||
|
|
|
@ -151,7 +151,7 @@ __llvm_profile_gather_value_data(uint64_t *ValueDataSize) {
|
|||
* Compute the total Size of the buffer to hold ValueProfData
|
||||
* structures for functions with value profile data.
|
||||
*/
|
||||
for (I = (__llvm_profile_data *)DataBegin; I != DataEnd; ++I) {
|
||||
for (I = (__llvm_profile_data *)DataBegin; I < DataEnd; ++I) {
|
||||
ValueProfRuntimeRecord R;
|
||||
if (initializeValueProfRuntimeRecord(&R, I->NumValueSites, I->Values))
|
||||
PROF_OOM_RETURN("Failed to write value profile data ");
|
||||
|
|
Loading…
Reference in New Issue