[yaml2obj] Add sh_addr via `Address` key.
authorSean Silva <silvas@purdue.edu>
Thu, 13 Jun 2013 22:19:54 +0000 (22:19 +0000)
committerSean Silva <silvas@purdue.edu>
Thu, 13 Jun 2013 22:19:54 +0000 (22:19 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183954 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 dd9625e99e0d2bafb4664dbb7ef38bec99b67f2b..401e4db7330fa93bf2139ed2cc60bbae15bd3e63 100644 (file)
@@ -53,6 +53,7 @@ struct Section {
   StringRef Name;
   ELF_SHT Type;
   ELF_SHF Flags;
+  llvm::yaml::Hex64 Address;
 };
 struct Object {
   FileHeader Header;
index e275a4a40a34a837eec384808c34890f6af9b282..9ce2b9baadc09e849523d7598e6a3084c8b0457b 100644 (file)
@@ -265,6 +265,7 @@ void MappingTraits<ELFYAML::Section>::mapping(IO &IO,
   IO.mapOptional("Name", Section.Name, StringRef());
   IO.mapRequired("Type", Section.Type);
   IO.mapOptional("Flags", Section.Flags, ELFYAML::ELF_SHF(0));
+  IO.mapOptional("Address", Section.Address, Hex64(0));
 }
 
 void MappingTraits<ELFYAML::Object>::mapping(IO &IO, ELFYAML::Object &Object) {
index 6d40952ec01596756d8a2b2d97095eec349f370f..e59b450be0690bad0c2cce6a84b4640fb4377ccc 100644 (file)
@@ -9,6 +9,7 @@ Sections:
   - Name: .text
     Type: SHT_PROGBITS
     Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address: 0xDEADBEEF
 
 # CHECK:        Section {
 # CHECK:          Index: 0
@@ -21,3 +22,4 @@ Sections:
 # CHECK-NEXT:       SHF_ALLOC (0x2)
 # CHECK-NEXT:       SHF_EXECINSTR (0x4)
 # CHECK-NEXT:     ]
+# CHECK-NEXT:     Address: 0xDEADBEEF
index 235327bd0571d3f89cee2c2bfe96bd45cbb249a4..1809bb5b2f70c84fc6fd17c2a861d6cfd8fcdad1 100644 (file)
@@ -132,7 +132,7 @@ static void writeELF(raw_ostream &OS, const ELFYAML::Object &Doc) {
     SHeader.sh_name = StrTab.addString(Sec.Name);
     SHeader.sh_type = Sec.Type;
     SHeader.sh_flags = Sec.Flags;
-    SHeader.sh_addr = 0;
+    SHeader.sh_addr = Sec.Address;
     SHeader.sh_offset = 0;
     SHeader.sh_size = 0;
     SHeader.sh_link = 0;