[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
This commit is contained in:
parent
93707fe309
commit
41ca82cbe8
|
@ -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: []
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue