For compressed profile when reading an unknown section, the data reader pointer
adjustment was incorrect. This patch fixed that.
This commit is contained in:
Wei Mi 2021-09-24 15:20:16 -07:00
parent 715cf6ffb9
commit e8b376547b
3 changed files with 16 additions and 1 deletions

View File

@ -787,7 +787,7 @@ private:
virtual std::error_code
readCustomSection(const SecHdrTableEntry &Entry) override {
// Update the data reader pointer to the end of the section.
Data += Entry.Size;
Data = End;
return sampleprof_error::success;
};

View File

@ -1,11 +1,15 @@
RUN: llvm-profdata show -sample %S/Inputs/unknown.section.extbin.profdata | FileCheck %s
RUN: llvm-profdata show -sample %S/Inputs/unknown.section.compressed.extbin.profdata | FileCheck %s
RUN: llvm-profdata show -sample -show-sec-info-only %S/Inputs/unknown.section.extbin.profdata | FileCheck %s -check-prefix=HDR
RUN: llvm-profdata show -sample -show-sec-info-only %S/Inputs/unknown.section.compressed.extbin.profdata | FileCheck %s -check-prefix=HDR-COMPRESS
# The input unknown.section.extbin.profdata contains an unknown section type
# which uses an enum value which won't be used in the near future. Check
# llvm-profdata can read it without problem. This is to ensure adding new
# section in extbinary format for SampleFDO won't cause forward compatibility
# issue.
# unknown.section.compressed.extbin.profdata is the compressed version of
# unknown.section.extbin.profdata.
CHECK: Function: main: 366846, 0, 3 sampled lines
CHECK-NEXT: Samples collected in the function's body {
@ -24,3 +28,14 @@ HDR-NEXT: FunctionMetadata - Offset: 394, Size: 0, Flags: {}
HDR-NEXT: Header Size: 242
HDR-NEXT: Total Sections Size: 152
HDR-NEXT: File Size: 394
HDR-COMPRESS: ProfileSummarySection - Offset: 242, Size: 89, Flags: {compressed}
HDR-COMPRESS-NEXT: NameTableSection - Offset: 331, Size: 16, Flags: {compressed}
HDR-COMPRESS-NEXT: UnknownSection - Offset: 347, Size: 11, Flags: {compressed}
HDR-COMPRESS-NEXT: FuncOffsetTableSection - Offset: 388, Size: 13, Flags: {compressed}
HDR-COMPRESS-NEXT: LBRProfileSection - Offset: 358, Size: 30, Flags: {compressed}
HDR-COMPRESS-NEXT: ProfileSymbolListSection - Offset: 388, Size: 0, Flags: {compressed}
HDR-COMPRESS-NEXT: FunctionMetadata - Offset: 401, Size: 0, Flags: {compressed}
HDR-COMPRESS-NEXT: Header Size: 242
HDR-COMPRESS-NEXT: Total Sections Size: 159
HDR-COMPRESS-NEXT: File Size: 401