mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[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
d295b660bd
commit
b02a489508
38
test/tools/llvm-size/output-alloc.test
Normal file
38
test/tools/llvm-size/output-alloc.test
Normal file
@ -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()) {
|
switch (static_cast<ELFSectionRef>(Section).getType()) {
|
||||||
case ELF::SHT_NULL:
|
case ELF::SHT_NULL:
|
||||||
case ELF::SHT_SYMTAB:
|
case ELF::SHT_SYMTAB:
|
||||||
|
return false;
|
||||||
case ELF::SHT_STRTAB:
|
case ELF::SHT_STRTAB:
|
||||||
case ELF::SHT_REL:
|
case ELF::SHT_REL:
|
||||||
case ELF::SHT_RELA:
|
case ELF::SHT_RELA:
|
||||||
return false;
|
return static_cast<ELFSectionRef>(Section).getFlags() & ELF::SHF_ALLOC;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user