summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Silva <silvas@purdue.edu>2013-06-13 22:19:54 +0000
committerSean Silva <silvas@purdue.edu>2013-06-13 22:19:54 +0000
commit45b812d1a79f3f8642821e65a25d92e3d741a095 (patch)
tree74268e265c5acf8722c0d31986104e81e0b64161
parent274264ce2ba93d26702f7ebfe6aea121df44113f (diff)
downloadllvm-45b812d1a79f3f8642821e65a25d92e3d741a095.tar.gz
llvm-45b812d1a79f3f8642821e65a25d92e3d741a095.tar.bz2
llvm-45b812d1a79f3f8642821e65a25d92e3d741a095.tar.xz
[yaml2obj] Add sh_addr via `Address` key.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183954 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.yaml2
-rw-r--r--tools/yaml2obj/yaml2elf.cpp2
4 files changed, 5 insertions, 1 deletions
diff --git a/include/llvm/Object/ELFYAML.h b/include/llvm/Object/ELFYAML.h
index dd9625e99e..401e4db733 100644
--- a/include/llvm/Object/ELFYAML.h
+++ b/include/llvm/Object/ELFYAML.h
@@ -53,6 +53,7 @@ struct Section {
StringRef Name;
ELF_SHT Type;
ELF_SHF Flags;
+ llvm::yaml::Hex64 Address;
};
struct Object {
FileHeader Header;
diff --git a/lib/Object/ELFYAML.cpp b/lib/Object/ELFYAML.cpp
index e275a4a40a..9ce2b9baad 100644
--- a/lib/Object/ELFYAML.cpp
+++ b/lib/Object/ELFYAML.cpp
@@ -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) {
diff --git a/test/Object/yaml2obj-elf-section-basic.yaml b/test/Object/yaml2obj-elf-section-basic.yaml
index 6d40952ec0..e59b450be0 100644
--- a/test/Object/yaml2obj-elf-section-basic.yaml
+++ b/test/Object/yaml2obj-elf-section-basic.yaml
@@ -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
diff --git a/tools/yaml2obj/yaml2elf.cpp b/tools/yaml2obj/yaml2elf.cpp
index 235327bd05..1809bb5b2f 100644
--- a/tools/yaml2obj/yaml2elf.cpp
+++ b/tools/yaml2obj/yaml2elf.cpp
@@ -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;