summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Silva <silvas@purdue.edu>2013-06-14 00:38:02 +0000
committerSean Silva <silvas@purdue.edu>2013-06-14 00:38:02 +0000
commit97d37e818153c6c5f844ddebaab26be324dbe41c (patch)
tree94b0f75f0d15a80b534a71adf70c8f2cc015cefa
parent38084db681d99a7b167328cf5420c20f88036d1b (diff)
downloadllvm-97d37e818153c6c5f844ddebaab26be324dbe41c.tar.gz
llvm-97d37e818153c6c5f844ddebaab26be324dbe41c.tar.bz2
llvm-97d37e818153c6c5f844ddebaab26be324dbe41c.tar.xz
[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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183962 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/Object/ELFYAML.h1
-rw-r--r--lib/Object/ELFYAML.cpp1
-rw-r--r--test/Object/yaml2obj-elf-section-basic.yaml6
-rw-r--r--tools/yaml2obj/yaml2elf.cpp2
4 files changed, 7 insertions, 3 deletions
diff --git a/include/llvm/Object/ELFYAML.h b/include/llvm/Object/ELFYAML.h
index 1de58af547..124af7a936 100644
--- a/include/llvm/Object/ELFYAML.h
+++ b/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/lib/Object/ELFYAML.cpp b/lib/Object/ELFYAML.cpp
index 21ca0350b5..6e99767f87 100644
--- a/lib/Object/ELFYAML.cpp
+++ b/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/test/Object/yaml2obj-elf-section-basic.yaml b/test/Object/yaml2obj-elf-section-basic.yaml
index 71090c5de3..e374986805 100644
--- a/test/Object/yaml2obj-elf-section-basic.yaml
+++ b/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/tools/yaml2obj/yaml2elf.cpp b/tools/yaml2obj/yaml2elf.cpp
index 66e1732192..e5988be329 100644
--- a/tools/yaml2obj/yaml2elf.cpp
+++ b/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);
}