OSDN Git Service

[ObjectYAML] Handle SHF_COMPRESSED
authorShoaib Meenai <smeenai@fb.com>
Tue, 3 Oct 2017 06:35:55 +0000 (06:35 +0000)
committerShoaib Meenai <smeenai@fb.com>
Tue, 3 Oct 2017 06:35:55 +0000 (06:35 +0000)
This was previously being silently dropped by obj2yaml and caused
parsing errors with yaml2obj.

Differential Revision: https://reviews.llvm.org/D38490

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314768 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ObjectYAML/ELFYAML.cpp
test/ObjectYAML/ELF/shf-compressed.yaml [new file with mode: 0644]

index d612349..6d32324 100644 (file)
@@ -450,6 +450,7 @@ void ScalarBitSetTraits<ELFYAML::ELF_SHF>::bitset(IO &IO,
   BCase(SHF_OS_NONCONFORMING);
   BCase(SHF_GROUP);
   BCase(SHF_TLS);
+  BCase(SHF_COMPRESSED);
   switch (Object->Header.Machine) {
   case ELF::EM_ARM:
     BCase(SHF_ARM_PURECODE);
diff --git a/test/ObjectYAML/ELF/shf-compressed.yaml b/test/ObjectYAML/ELF/shf-compressed.yaml
new file mode 100644 (file)
index 0000000..becad64
--- /dev/null
@@ -0,0 +1,28 @@
+# RUN: yaml2obj %s -o %t
+# RUN: llvm-readobj -sections %t | FileCheck -check-prefix=OBJ %s
+# RUN: obj2yaml %t | FileCheck -check-prefix=YAML %s
+
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS32
+  Data:            ELFDATA2LSB
+  Type:            ET_REL
+  Machine:         EM_386
+Sections:
+  - Name:            .debug_line
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_COMPRESSED ]
+
+# OBJ:      Sections [
+# OBJ:        Section {
+# OBJ:          Index: 1
+# OBJ-NEXT:     Name: .debug_line (1)
+# OBJ-NEXT:     Type: SHT_PROGBITS (0x1)
+# OBJ-NEXT:     Flags [ (0x800)
+# OBJ-NEXT:       SHF_COMPRESSED (0x800)
+# OBJ-NEXT:     ]
+
+# YAML:      Sections:
+# YAML-NEXT:   - Name:            .debug_line
+# YAML-NEXT:     Type:            SHT_PROGBITS
+# YAML-NEXT:     Flags:           [ SHF_COMPRESSED ]