[BPF] Use SectionForGlobal() for section names computation in BTF
Use function TargetLoweringObjectFile::SectionForGlobal() to compute section names for globals described in BTF_KIND_DATASEC records. This fixes a discrepancy in section name computation between BTFDebug::processGlobals and the rest of the LLVM pipeline. Specifically, the following example illustrates the discrepancy before this commit: struct Foo { int i; } __attribute__((aligned(16))); struct Foo foo = { 0 }; The initializer for 'foo' looks as follows: %struct.Foo { i32 0, [12 x i8] undef } TargetLoweringObjectFile::SectionForGlobal() classifies 'foo' as a part of '.bss' section, while BTFDebug::processGlobals classified it as a part of '.data' section because of the following expression: SecName = Global.getInitializer()->isZeroValue() ? ".bss" : ".data" The isZeroValue() returns false because of the undef tail of the initializer, while SectionForGlobal() allows such patterns in '.bss'. Differential Revision: https://reviews.llvm.org/D140505
Loading
Please sign in to comment