forked from OSchip/llvm-project
[yaml2obj] Add default sh_entsize for dynamic sections
Dynamic section holds a table, so the sh_entsize might be set. As the dynamic section entry size never changes, we can default it to the size of a dynamic entry. Differential Revision: https://reviews.llvm.org/D49619 llvm-svn: 337725
This commit is contained in:
parent
3810b23ffa
commit
1dbbfba888
|
@ -0,0 +1,17 @@
|
|||
# Ensures that dynamic section has sh_entsize correctly set
|
||||
# RUN: yaml2obj %s -o %t
|
||||
# RUN: llvm-readobj -sections %t | FileCheck %s --check-prefix=SECTION
|
||||
|
||||
!ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_DYN
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .dynamic
|
||||
Type: SHT_DYNAMIC
|
||||
Flags: [ SHF_ALLOC, SHF_WRITE ]
|
||||
|
||||
# SECTION: Name: .dynamic
|
||||
# SECTION: EntrySize: 16
|
|
@ -115,6 +115,7 @@ class ELFState {
|
|||
typedef typename ELFT::Rel Elf_Rel;
|
||||
typedef typename ELFT::Rela Elf_Rela;
|
||||
typedef typename ELFT::Relr Elf_Relr;
|
||||
typedef typename ELFT::Dyn Elf_Dyn;
|
||||
|
||||
enum class SymtabType { Static, Dynamic };
|
||||
|
||||
|
@ -462,6 +463,8 @@ ELFState<ELFT>::writeSectionContent(Elf_Shdr &SHeader,
|
|||
OS.write(0);
|
||||
if (Section.Type == llvm::ELF::SHT_RELR)
|
||||
SHeader.sh_entsize = sizeof(Elf_Relr);
|
||||
else if (Section.Type == llvm::ELF::SHT_DYNAMIC)
|
||||
SHeader.sh_entsize = sizeof(Elf_Dyn);
|
||||
else
|
||||
SHeader.sh_entsize = 0;
|
||||
SHeader.sh_size = Section.Size;
|
||||
|
|
Loading…
Reference in New Issue