[llvm] 41ca82c - [llvm-size] Output REL, RELA and STRTAB sections when allocatable
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 1 04:03:03 PDT 2020
Author: gbreynoo
Date: 2020-07-01T12:02:32+01:00
New Revision: 41ca82cbe815904173d094cb3a7789a705a73695
URL: https://github.com/llvm/llvm-project/commit/41ca82cbe815904173d094cb3a7789a705a73695
DIFF: https://github.com/llvm/llvm-project/commit/41ca82cbe815904173d094cb3a7789a705a73695.diff
LOG: [llvm-size] Output REL, RELA and STRTAB sections when allocatable
gnu size has a number of special cases regarding REL, RELA and STRTAB
sections being considered in size output. To avoid unnecessary
complexity this commit makes llvm size outputs these sections in cases
they have the SHF_ALLOC flag.
Differential Revision: https://reviews.llvm.org/D82479
Added:
llvm/test/tools/llvm-size/output-alloc.test
Modified:
llvm/tools/llvm-size/llvm-size.cpp
Removed:
################################################################################
diff --git a/llvm/test/tools/llvm-size/output-alloc.test b/llvm/test/tools/llvm-size/output-alloc.test
new file mode 100644
index 000000000000..9882126bdd6d
--- /dev/null
+++ b/llvm/test/tools/llvm-size/output-alloc.test
@@ -0,0 +1,38 @@
+## gnu size has a number of special cases regarding REL, RELA and STRTAB sections being considered in size output.
+## To avoid unnecessary complexity llvm size outputs these sections in cases they have the SHF_ALLOC flag.
+
+# RUN: yaml2obj %s -o %t1
+# RUN: llvm-size --format=sysv %t1 | FileCheck %s
+
+# CHECK: section size addr
+# CHECK-NEXT: .rela.alloc
+# CHECK-NEXT: .rel.alloc
+# CHECK-NEXT: .strtab.alloc
+# CHECK-NEXT: Total
+# CHECK-EMPTY:
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+Sections:
+ - Name: .rela.alloc
+ Type: SHT_RELA
+ Flags: [ SHF_ALLOC ]
+ - Name: .rel.alloc
+ Type: SHT_REL
+ Flags: [ SHF_ALLOC ]
+ - Name: .strtab.alloc
+ Type: SHT_STRTAB
+ Flags: [ SHF_ALLOC ]
+ - Name: .rela
+ Type: SHT_RELA
+ Flags: []
+ - Name: .rel
+ Type: SHT_REL
+ Flags: []
+ - Name: .strtab
+ Type: SHT_STRTAB
+ Flags: []
diff --git a/llvm/tools/llvm-size/llvm-size.cpp b/llvm/tools/llvm-size/llvm-size.cpp
index b79622823fea..987270e98c48 100644
--- a/llvm/tools/llvm-size/llvm-size.cpp
+++ b/llvm/tools/llvm-size/llvm-size.cpp
@@ -187,10 +187,11 @@ static bool considerForSize(ObjectFile *Obj, SectionRef Section) {
switch (static_cast<ELFSectionRef>(Section).getType()) {
case ELF::SHT_NULL:
case ELF::SHT_SYMTAB:
+ return false;
case ELF::SHT_STRTAB:
case ELF::SHT_REL:
case ELF::SHT_RELA:
- return false;
+ return static_cast<ELFSectionRef>(Section).getFlags() & ELF::SHF_ALLOC;
}
return true;
}
More information about the llvm-commits
mailing list