diff options
author | Sean Silva <silvas@purdue.edu> | 2013-06-14 00:38:02 +0000 |
---|---|---|
committer | Sean Silva <silvas@purdue.edu> | 2013-06-14 00:38:02 +0000 |
commit | 0a409cf04a275a476bbf65729aee2ca5cad1ac73 (patch) | |
tree | 1fa885e4d1c9132369c0f50d86a2a2753deddd2a /llvm | |
parent | 8ccc7f69cdc833fefa78b090eecdc4110510088f (diff) | |
download | bcm5719-llvm-0a409cf04a275a476bbf65729aee2ca5cad1ac73.tar.gz bcm5719-llvm-0a409cf04a275a476bbf65729aee2ca5cad1ac73.zip |
[yaml2obj] Add support for sh_addralign via `AddressAlign` key.
For consistency, change the address in the test case from 0xDEADBEEF to
0xCAFEBABE since 0xCAFEBABE that actually has a 2-byte alignment.
llvm-svn: 183962
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/include/llvm/Object/ELFYAML.h | 1 | ||||
-rw-r--r-- | llvm/lib/Object/ELFYAML.cpp | 1 | ||||
-rw-r--r-- | llvm/test/Object/yaml2obj-elf-section-basic.yaml | 6 | ||||
-rw-r--r-- | llvm/tools/yaml2obj/yaml2elf.cpp | 2 |
4 files changed, 7 insertions, 3 deletions
diff --git a/llvm/include/llvm/Object/ELFYAML.h b/llvm/include/llvm/Object/ELFYAML.h index 1de58af5477..124af7a936f 100644 --- a/llvm/include/llvm/Object/ELFYAML.h +++ b/llvm/include/llvm/Object/ELFYAML.h @@ -55,6 +55,7 @@ struct Section { ELF_SHF Flags; llvm::yaml::Hex64 Address; object::yaml::BinaryRef Content; + llvm::yaml::Hex64 AddressAlign; }; struct Object { FileHeader Header; diff --git a/llvm/lib/Object/ELFYAML.cpp b/llvm/lib/Object/ELFYAML.cpp index 21ca0350b55..6e99767f87f 100644 --- a/llvm/lib/Object/ELFYAML.cpp +++ b/llvm/lib/Object/ELFYAML.cpp @@ -267,6 +267,7 @@ void MappingTraits<ELFYAML::Section>::mapping(IO &IO, IO.mapOptional("Flags", Section.Flags, ELFYAML::ELF_SHF(0)); IO.mapOptional("Address", Section.Address, Hex64(0)); IO.mapOptional("Content", Section.Content); + IO.mapOptional("AddressAlign", Section.AddressAlign, Hex64(0)); } void MappingTraits<ELFYAML::Object>::mapping(IO &IO, ELFYAML::Object &Object) { diff --git a/llvm/test/Object/yaml2obj-elf-section-basic.yaml b/llvm/test/Object/yaml2obj-elf-section-basic.yaml index 71090c5de3e..e3749868053 100644 --- a/llvm/test/Object/yaml2obj-elf-section-basic.yaml +++ b/llvm/test/Object/yaml2obj-elf-section-basic.yaml @@ -9,8 +9,9 @@ Sections: - Name: .text Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - Address: 0xDEADBEEF + Address: 0xCAFEBABE Content: EBFE + AddressAlign: 2 # CHECK: Section { # CHECK: Index: 0 @@ -23,8 +24,9 @@ Sections: # CHECK-NEXT: SHF_ALLOC (0x2) # CHECK-NEXT: SHF_EXECINSTR (0x4) # CHECK-NEXT: ] -# CHECK-NEXT: Address: 0xDEADBEEF +# CHECK-NEXT: Address: 0xCAFEBABE # CHECK: Size: 2 +# CHECK: AddressAlignment: 2 # CHECK: SectionData ( # CHECK-NEXT: 0000: EBFE # CHECK-NEXT: ) diff --git a/llvm/tools/yaml2obj/yaml2elf.cpp b/llvm/tools/yaml2obj/yaml2elf.cpp index 66e1732192a..e5988be3293 100644 --- a/llvm/tools/yaml2obj/yaml2elf.cpp +++ b/llvm/tools/yaml2obj/yaml2elf.cpp @@ -161,7 +161,7 @@ static void writeELF(raw_ostream &OS, const ELFYAML::Object &Doc) { SHeader.sh_link = 0; SHeader.sh_info = 0; - SHeader.sh_addralign = 1; + SHeader.sh_addralign = Sec.AddressAlign; SHeader.sh_entsize = 0; SHeaders.push_back(SHeader); } |