Skip to content

Commit b4ad023

Browse files
DianaChenigcbot
authored andcommitted
ZEBinary: avoid generate .ze_info section if it's empty
Add ZEInfoBuilder::empty to check if there's nothing in zeinfo Avoid generating .ze_info section in ZEBinary if it's empty
1 parent 16617c7 commit b4ad023

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

IGC/AdaptorOCL/OCL/sp/zebin_builder.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -774,7 +774,8 @@ void ZEBinaryBuilder::addElfSections(void* elfBin, size_t elfSize)
774774

775775
void ZEBinaryBuilder::getBinaryObject(llvm::raw_pwrite_stream& os)
776776
{
777-
mBuilder.addSectionZEInfo(mZEInfoBuilder.getZEInfoContainer());
777+
if (!mZEInfoBuilder.empty())
778+
mBuilder.addSectionZEInfo(mZEInfoBuilder.getZEInfoContainer());
778779
mBuilder.finalize(os);
779780
}
780781

IGC/ZEBinWriter/zebin/source/ZEELFObjectBuilder.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ ZEELFObjectBuilder::addSectionDebug(std::string name, const uint8_t* data, uint6
246246
void
247247
ZEELFObjectBuilder::addSectionZEInfo(zeInfoContainer& zeInfo)
248248
{
249-
// every object should have exactly one ze_info section
249+
// every object should have at most one ze_info section
250250
IGC_ASSERT(!m_zeInfoSection);
251251
m_zeInfoSection.reset(new ZEInfoSection(zeInfo, m_sectionIdCount));
252252
++m_sectionIdCount;
@@ -803,14 +803,11 @@ void ELFWriter::createSectionHdrEntries()
803803
}
804804

805805
// .ze_info
806-
// every object must have exactly one ze_info section
807806
if (m_ObjBuilder.m_zeInfoSection) {
808807
createSectionHdrEntry(m_ObjBuilder.m_ZEInfoName, SHT_ZEBIN_ZEINFO,
809808
m_ObjBuilder.m_zeInfoSection.get());
810809
++index;
811810
}
812-
else
813-
IGC_ASSERT(0);
814811

815812
// .strtab
816813
m_StringTableIndex = index;
@@ -826,6 +823,11 @@ zeInfoKernel& ZEInfoBuilder::createKernel(const std::string& name)
826823
return k;
827824
}
828825

826+
bool ZEInfoBuilder::empty() const
827+
{
828+
return mContainer.kernels.empty();
829+
}
830+
829831
// addPayloadArgumentByPointer - add explicit kernel argument with pointer
830832
// type into given arg_list
831833
zeInfoPayloadArgument& ZEInfoBuilder::addPayloadArgumentByPointer(

IGC/ZEBinWriter/zebin/source/ZEELFObjectBuilder.hpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ class ZEELFObjectBuilder {
363363
// current section id
364364
SectionID m_sectionIdCount = 0;
365365

366-
// every ze object contains only one ze_info section
366+
// every ze object contains at most one ze_info section
367367
std::unique_ptr<ZEInfoSection> m_zeInfoSection;
368368
SymbolListTy m_localSymbols;
369369
SymbolListTy m_globalSymbols;
@@ -381,6 +381,9 @@ class ZEInfoBuilder {
381381
zeInfoContainer& getZEInfoContainer() { return mContainer; }
382382
const zeInfoContainer& getZEInfoContainer() const { return mContainer; }
383383

384+
// empty - return true if there is no kernel/function info in it
385+
bool empty() const;
386+
384387
/// --------- Helper functions for setup zeinfo contents -------------- ///
385388
// createKernel - create a zeInfoKernel and add it into zeInfoContainer
386389
zeInfoKernel& createKernel(const std::string& name);

0 commit comments

Comments
 (0)