[llvm] e44ecf7 - [llvm][ELF] Add ELF header/section header table size statistics (#109345)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 23 13:54:02 PDT 2024
Author: Arthur Eubanks
Date: 2024-09-23T13:53:58-07:00
New Revision: e44ecf76e049474190c33cd737642a0a066fb6b0
URL: https://github.com/llvm/llvm-project/commit/e44ecf76e049474190c33cd737642a0a066fb6b0
DIFF: https://github.com/llvm/llvm-project/commit/e44ecf76e049474190c33cd737642a0a066fb6b0.diff
LOG: [llvm][ELF] Add ELF header/section header table size statistics (#109345)
Followup to #102363. This makes the `elf-object-writer.*Bytes` stats sum
up to `assembler.ObjectBytes`.
Added:
Modified:
llvm/lib/MC/ELFObjectWriter.cpp
llvm/test/CodeGen/X86/section-stats.ll
Removed:
################################################################################
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp
index 8127091ad37627..94c7697d250dac 100644
--- a/llvm/lib/MC/ELFObjectWriter.cpp
+++ b/llvm/lib/MC/ELFObjectWriter.cpp
@@ -68,6 +68,8 @@ using namespace llvm;
namespace {
namespace stats {
+STATISTIC(ELFHeaderBytes, "Total size of ELF headers");
+STATISTIC(SectionHeaderBytes, "Total size of section headers table");
STATISTIC(AllocTextBytes, "Total size of SHF_ALLOC text sections");
STATISTIC(AllocROBytes, "Total size of SHF_ALLOC readonly sections");
STATISTIC(AllocRWBytes, "Total size of SHF_ALLOC read-write sections");
@@ -945,6 +947,7 @@ void ELFWriter::writeSectionHeader(uint32_t GroupSymbolIndex, uint64_t Offset,
}
void ELFWriter::writeSectionHeaders(const MCAssembler &Asm) {
+ uint64_t Start = W.OS.tell();
const unsigned NumSections = SectionTable.size();
// Null section first.
@@ -1008,6 +1011,8 @@ void ELFWriter::writeSectionHeaders(const MCAssembler &Asm) {
writeSectionHeader(GroupSymbolIndex, Offsets.first, Size, *Section);
}
+
+ stats::SectionHeaderBytes += W.OS.tell() - Start;
}
uint64_t ELFWriter::writeObject(MCAssembler &Asm) {
@@ -1023,6 +1028,8 @@ uint64_t ELFWriter::writeObject(MCAssembler &Asm) {
// Write out the ELF header ...
writeHeader(Asm);
+ stats::ELFHeaderBytes += W.OS.tell() - StartOffset;
+
// ... then the sections ...
SmallVector<std::pair<MCSectionELF *, SmallVector<unsigned>>, 0> Groups;
// Map from group section index to group
diff --git a/llvm/test/CodeGen/X86/section-stats.ll b/llvm/test/CodeGen/X86/section-stats.ll
index 94d0a965ac59ee..2cab7d18dec069 100644
--- a/llvm/test/CodeGen/X86/section-stats.ll
+++ b/llvm/test/CodeGen/X86/section-stats.ll
@@ -3,6 +3,8 @@
; CHECK-DAG: 1 elf-object-writer - Total size of SHF_ALLOC text sections
; CHECK-DAG: 1 elf-object-writer - Total size of SHF_ALLOC read-write sections
+; CHECK-DAG: 512 elf-object-writer - Total size of section headers table
+; CHECK-DAG: 64 elf-object-writer - Total size of ELF headers
target triple = "x86_64-unknown-linux-gnu"
More information about the llvm-commits
mailing list