mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-19 08:24:12 +00:00
[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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@337725 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6884c73229
commit
f3f578d286
17
test/tools/yaml2obj/dynamic-section.yaml
Normal file
17
test/tools/yaml2obj/dynamic-section.yaml
Normal file
@ -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…
x
Reference in New Issue
Block a user