[yaml2obj] Add support for sh_addralign via `AddressAlign` key.
authorSean Silva <silvas@purdue.edu>
Fri, 14 Jun 2013 00:38:02 +0000 (00:38 +0000)
committerSean Silva <silvas@purdue.edu>
Fri, 14 Jun 2013 00:38:02 +0000 (00:38 +0000)
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

include/llvm/Object/ELFYAML.h
lib/Object/ELFYAML.cpp
test/Object/yaml2obj-elf-section-basic.yaml
tools/yaml2obj/yaml2elf.cpp

index 1de58af54776832b37be6a4c304334efe2480f80..124af7a936f6ad7e0ff01f0de7e28d121330d999 100644 (file)
@@ -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;
index 21ca0350b55fc99c8a8cc56eede539f8a40e679d..6e99767f87f8c79c8f613d480f015cf1671b3504 100644 (file)
@@ -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) {
index 71090c5de3e9fbdc413bbe5ca9e28701dfed82f1..e37498680530edeeb87dd483e350c48cea26e121 100644 (file)
@@ -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:     )
index 66e1732192aa6ac65f91ccf82ae1546d70a9015f..e5988be3293185aaba5083a2349a030a8e475869 100644 (file)
@@ -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);
   }