Revert "[Debuginfo][llvm-dwarfutil] Add check for unsupported debug sections."
authorAlexey Lapshin <a.v.lapshin@mail.ru>
Wed, 27 Jul 2022 07:35:21 +0000 (10:35 +0300)
committerAlexey Lapshin <a.v.lapshin@mail.ru>
Wed, 27 Jul 2022 08:48:56 +0000 (11:48 +0300)
This reverts commit 0d191b7553e7efbf7ce57c77274b83c15b681933.

19 files changed:
llvm/include/llvm/DWARFLinker/DWARFLinker.h
llvm/lib/DWARFLinker/DWARFLinker.cpp
llvm/test/tools/llvm-dwarfutil/ELF/X86/Inputs/type-units.o [deleted file]
llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-cu-index.test [deleted file]
llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-gdb-index.test [deleted file]
llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-gnu-pubnames.test [deleted file]
llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-gnu-pubtypes.test [deleted file]
llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-loclists.test [deleted file]
llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-macinfo.test [deleted file]
llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-macro.test [deleted file]
llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-names.test [deleted file]
llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-pubnames.test [deleted file]
llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-pubtypes.test [deleted file]
llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-rnglists.test [deleted file]
llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-types.test [deleted file]
llvm/tools/dsymutil/DwarfLinkerForBinary.cpp
llvm/tools/llvm-dwarfutil/DebugInfoLinker.cpp
llvm/tools/llvm-dwarfutil/DebugInfoLinker.h
llvm/tools/llvm-dwarfutil/llvm-dwarfutil.cpp

index 4729e5f..3961100 100644 (file)
@@ -245,7 +245,7 @@ public:
 
   /// Link debug info for added objFiles. Object
   /// files are linked all together.
-  Error link();
+  bool link();
 
   /// A number of methods setting various linking options:
 
index 3e14edb..62b7f62 100644 (file)
@@ -2343,7 +2343,7 @@ void DWARFLinker::addObjectFile(DWARFFile &File) {
     updateAccelKind(*ObjectContexts.back().File.Dwarf);
 }
 
-Error DWARFLinker::link() {
+bool DWARFLinker::link() {
   assert(Options.NoOutput || TheDwarfEmitter);
 
   // A unique ID that identifies each compile unit.
@@ -2410,55 +2410,6 @@ Error DWARFLinker::link() {
     if (!OptContext.File.Dwarf)
       continue;
 
-    // Check whether type units are presented.
-    if (!OptContext.File.Dwarf->types_section_units().empty()) {
-      reportWarning("type units are not currently supported: file will "
-                    "be skipped",
-                    OptContext.File);
-      OptContext.Skip = true;
-      continue;
-    }
-
-    // Check for unsupported sections. Following sections can be referenced
-    // from .debug_info section. Current DWARFLinker implementation does not
-    // support or update references to these tables. Thus we report warning
-    // and skip corresponding object file.
-    if (!OptContext.File.Dwarf->getDWARFObj()
-             .getRnglistsSection()
-             .Data.empty()) {
-      reportWarning("'.debug_rnglists' is not currently supported: file "
-                    "will be skipped",
-                    OptContext.File);
-      OptContext.Skip = true;
-      continue;
-    }
-
-    if (!OptContext.File.Dwarf->getDWARFObj()
-             .getLoclistsSection()
-             .Data.empty()) {
-      reportWarning("'.debug_loclists' is not currently supported: file "
-                    "will be skipped",
-                    OptContext.File);
-      OptContext.Skip = true;
-      continue;
-    }
-
-    if (!OptContext.File.Dwarf->getDWARFObj().getMacroSection().Data.empty()) {
-      reportWarning("'.debug_macro' is not currently supported: file "
-                    "will be skipped",
-                    OptContext.File);
-      OptContext.Skip = true;
-      continue;
-    }
-
-    if (OptContext.File.Dwarf->getDWARFObj().getMacinfoSection().size() > 1) {
-      reportWarning("'.debug_macinfo' is not currently supported: file "
-                    "will be skipped",
-                    OptContext.File);
-      OptContext.Skip = true;
-      continue;
-    }
-
     // In a first phase, just read in the debug info and load all clang modules.
     OptContext.CompileUnits.reserve(
         OptContext.File.Dwarf->getNumCompileUnits());
@@ -2709,7 +2660,7 @@ Error DWARFLinker::link() {
               "---------------\n\n";
   }
 
-  return Error::success();
+  return true;
 }
 
 bool DWARFLinker::verify(const DWARFFile &File) {
diff --git a/llvm/test/tools/llvm-dwarfutil/ELF/X86/Inputs/type-units.o b/llvm/test/tools/llvm-dwarfutil/ELF/X86/Inputs/type-units.o
deleted file mode 100644 (file)
index 064b4f0..0000000
Binary files a/llvm/test/tools/llvm-dwarfutil/ELF/X86/Inputs/type-units.o and /dev/null differ
diff --git a/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-cu-index.test b/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-cu-index.test
deleted file mode 100644 (file)
index 04f8278..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-## This test checks the warning message displayed if input file
-## contains .debug_cu_index section.
-
-# RUN: yaml2obj %s -o %t.o
-
-# RUN: llvm-dwarfutil --garbage-collection %t.o %t1 2>&1 | FileCheck %s -DFILE=%t.o
-
-# CHECK: [[FILE]]: warning: '.debug_cu_index' is not currently supported: section will be skipped
-
---- !ELF
-FileHeader:
-  Class:    ELFCLASS64
-  Data:     ELFDATA2LSB
-  Type:     ET_REL
-  Machine:  EM_X86_64
-Sections:
-  - Name:            .text
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
-    Address:         0x1000
-    AddressAlign:    0x0000000000000010
-    Content:         "FFFFFFFF"
-  - Name:            .debug_cu_index
-    Type:            SHT_PROGBITS
-    Flags:           [  ]
-    Content:         "0000"
-DWARF:
-  debug_abbrev:
-    - Table:
-      - Tag:      DW_TAG_compile_unit
-        Children: DW_CHILDREN_yes
-        Attributes:
-          - Attribute: DW_AT_producer
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_language
-            Form:      DW_FORM_data2
-          - Attribute: DW_AT_name
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_low_pc
-            Form:      DW_FORM_addr
-          - Attribute: DW_AT_high_pc
-            Form:      DW_FORM_data8
-  debug_info:
-    - Version: 4
-      Entries:
-        - AbbrCode: 1
-          Values:
-            - CStr: by_hand
-            - Value:  0x04
-            - CStr: CU1
-            - Value:  0x1000
-            - Value:  0x4
-        - AbbrCode: 0
-...
diff --git a/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-gdb-index.test b/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-gdb-index.test
deleted file mode 100644 (file)
index 81d489c..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-## This test checks the warning message displayed if input file
-## contains .gdb_index section.
-
-# RUN: yaml2obj %s -o %t.o
-
-# RUN: llvm-dwarfutil --garbage-collection %t.o %t1 2>&1 | FileCheck %s -DFILE=%t.o
-
-# CHECK: [[FILE]]: warning: '.gdb_index' is not currently supported: section will be skipped
-
---- !ELF
-FileHeader:
-  Class:    ELFCLASS64
-  Data:     ELFDATA2LSB
-  Type:     ET_REL
-  Machine:  EM_X86_64
-Sections:
-  - Name:            .text
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
-    Address:         0x1000
-    AddressAlign:    0x0000000000000010
-    Content:         "FFFFFFFF"
-  - Name:            .gdb_index
-    Type:            SHT_PROGBITS
-    Flags:           [  ]
-    Content:         "0000"
-DWARF:
-  debug_abbrev:
-    - Table:
-      - Tag:      DW_TAG_compile_unit
-        Children: DW_CHILDREN_yes
-        Attributes:
-          - Attribute: DW_AT_producer
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_language
-            Form:      DW_FORM_data2
-          - Attribute: DW_AT_name
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_low_pc
-            Form:      DW_FORM_addr
-          - Attribute: DW_AT_high_pc
-            Form:      DW_FORM_data8
-  debug_info:
-    - Version: 4
-      Entries:
-        - AbbrCode: 1
-          Values:
-            - CStr: by_hand
-            - Value:  0x04
-            - CStr: CU1
-            - Value:  0x1000
-            - Value:  0x4
-        - AbbrCode: 0
-...
diff --git a/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-gnu-pubnames.test b/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-gnu-pubnames.test
deleted file mode 100644 (file)
index b34fb9a..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-## This test checks the warning message displayed if input file
-## contains .debug_pubnames section.
-
-# RUN: yaml2obj %s -o %t.o
-
-# RUN: llvm-dwarfutil --garbage-collection %t.o %t1 2>&1 | FileCheck %s -DFILE=%t.o
-
-# CHECK: [[FILE]]: warning: '.debug_gnu_pubnames' is not currently supported: section will be skipped
-
---- !ELF
-FileHeader:
-  Class:    ELFCLASS64
-  Data:     ELFDATA2LSB
-  Type:     ET_REL
-  Machine:  EM_X86_64
-Sections:
-  - Name:            .text
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
-    Address:         0x1000
-    AddressAlign:    0x0000000000000010
-    Content:         "FFFFFFFF"
-  - Name:            .debug_gnu_pubnames
-    Type:            SHT_PROGBITS
-    Flags:           [  ]
-    Content:         "0000"
-DWARF:
-  debug_abbrev:
-    - Table:
-      - Tag:      DW_TAG_compile_unit
-        Children: DW_CHILDREN_yes
-        Attributes:
-          - Attribute: DW_AT_producer
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_language
-            Form:      DW_FORM_data2
-          - Attribute: DW_AT_name
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_low_pc
-            Form:      DW_FORM_addr
-          - Attribute: DW_AT_high_pc
-            Form:      DW_FORM_data8
-  debug_info:
-    - Version: 4
-      Entries:
-        - AbbrCode: 1
-          Values:
-            - CStr: by_hand
-            - Value:  0x04
-            - CStr: CU1
-            - Value:  0x1000
-            - Value:  0x4
-        - AbbrCode: 0
-...
diff --git a/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-gnu-pubtypes.test b/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-gnu-pubtypes.test
deleted file mode 100644 (file)
index f8050f7..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-## This test checks the warning message displayed if input file
-## contains .debug_gnu_pubtypes section.
-
-# RUN: yaml2obj %s -o %t.o
-
-# RUN: llvm-dwarfutil --garbage-collection %t.o %t1 2>&1 | FileCheck %s -DFILE=%t.o
-
-# CHECK: [[FILE]]: warning: '.debug_gnu_pubtypes' is not currently supported: section will be skipped
-
---- !ELF
-FileHeader:
-  Class:    ELFCLASS64
-  Data:     ELFDATA2LSB
-  Type:     ET_REL
-  Machine:  EM_X86_64
-Sections:
-  - Name:            .text
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
-    Address:         0x1000
-    AddressAlign:    0x0000000000000010
-    Content:         "FFFFFFFF"
-  - Name:            .debug_gnu_pubtypes
-    Type:            SHT_PROGBITS
-    Flags:           [  ]
-    Content:         "0000"
-DWARF:
-  debug_abbrev:
-    - Table:
-      - Tag:      DW_TAG_compile_unit
-        Children: DW_CHILDREN_yes
-        Attributes:
-          - Attribute: DW_AT_producer
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_language
-            Form:      DW_FORM_data2
-          - Attribute: DW_AT_name
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_low_pc
-            Form:      DW_FORM_addr
-          - Attribute: DW_AT_high_pc
-            Form:      DW_FORM_data8
-  debug_info:
-    - Version: 4
-      Entries:
-        - AbbrCode: 1
-          Values:
-            - CStr: by_hand
-            - Value:  0x04
-            - CStr: CU1
-            - Value:  0x1000
-            - Value:  0x4
-        - AbbrCode: 0
-...
diff --git a/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-loclists.test b/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-loclists.test
deleted file mode 100644 (file)
index 09e2cea..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-## This test checks the warning message displayed if input file
-## contains .debug_loclists section.
-
-# RUN: yaml2obj %s -o %t.o
-
-# RUN: llvm-dwarfutil --garbage-collection %t.o %t1 2>&1 | FileCheck %s -DFILE=%t.o
-
-# CHECK: [[FILE]]: warning: '.debug_loclists' is not currently supported: file will be skipped
-
---- !ELF
-FileHeader:
-  Class:    ELFCLASS64
-  Data:     ELFDATA2LSB
-  Type:     ET_REL
-  Machine:  EM_X86_64
-Sections:
-  - Name:            .text
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
-    Address:         0x1000
-    AddressAlign:    0x0000000000000010
-    Content:        "FFFFFFFF"
-  - Name:            .debug_loclists
-    Type:            SHT_PROGBITS
-    Flags:           [  ]
-    Content:        "0000000000000000000000"
-DWARF:
-  debug_abbrev:
-    - Table:
-      - Tag:      DW_TAG_compile_unit
-        Children: DW_CHILDREN_yes
-        Attributes:
-          - Attribute: DW_AT_producer
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_language
-            Form:      DW_FORM_data2
-          - Attribute: DW_AT_name
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_low_pc
-            Form:      DW_FORM_addr
-          - Attribute: DW_AT_high_pc
-            Form:      DW_FORM_data8
-  debug_info:
-    - Version: 4
-      Entries:
-        - AbbrCode: 1
-          Values:
-            - CStr: by_hand
-            - Value:  0x04
-            - CStr: CU1
-            - Value:  0x1000
-            - Value:  0x4
-        - AbbrCode: 0
-...
diff --git a/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-macinfo.test b/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-macinfo.test
deleted file mode 100644 (file)
index 0002133..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-## This test checks the warning message displayed if input file
-## contains .debug_macinfo section.
-
-# RUN: yaml2obj %s -o %t.o
-
-# RUN: llvm-dwarfutil --garbage-collection %t.o %t1 2>&1 | FileCheck %s -DFILE=%t.o
-
-# CHECK: [[FILE]]: warning: '.debug_macinfo' is not currently supported: file will be skipped
-
---- !ELF
-FileHeader:
-  Class:    ELFCLASS64
-  Data:     ELFDATA2LSB
-  Type:     ET_REL
-  Machine:  EM_X86_64
-Sections:
-  - Name:            .text
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
-    Address:         0x1000
-    AddressAlign:    0x0000000000000010
-    Content:        "FFFFFFFF"
-  - Name:            .debug_macinfo
-    Type:            SHT_PROGBITS
-    Flags:           [  ]
-    Content:        "0000"
-DWARF:
-  debug_abbrev:
-    - Table:
-      - Tag:      DW_TAG_compile_unit
-        Children: DW_CHILDREN_yes
-        Attributes:
-          - Attribute: DW_AT_producer
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_language
-            Form:      DW_FORM_data2
-          - Attribute: DW_AT_name
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_low_pc
-            Form:      DW_FORM_addr
-          - Attribute: DW_AT_high_pc
-            Form:      DW_FORM_data8
-  debug_info:
-    - Version: 4
-      Entries:
-        - AbbrCode: 1
-          Values:
-            - CStr: by_hand
-            - Value:  0x04
-            - CStr: CU1
-            - Value:  0x1000
-            - Value:  0x4
-        - AbbrCode: 0
-...
diff --git a/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-macro.test b/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-macro.test
deleted file mode 100644 (file)
index 4e96021..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-## This test checks the warning message displayed if input file
-## contains .debug_macro section.
-
-# RUN: yaml2obj %s -o %t.o
-
-# RUN: llvm-dwarfutil --garbage-collection %t.o %t1 2>&1 | FileCheck %s -DFILE=%t.o
-
-# CHECK: [[FILE]]: warning: '.debug_macro' is not currently supported: file will be skipped
-
---- !ELF
-FileHeader:
-  Class:    ELFCLASS64
-  Data:     ELFDATA2LSB
-  Type:     ET_REL
-  Machine:  EM_X86_64
-Sections:
-  - Name:            .text
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
-    Address:         0x1000
-    AddressAlign:    0x0000000000000010
-    Content:        "FFFFFFFF"
-  - Name:            .debug_macro
-    Type:            SHT_PROGBITS
-    Flags:           [  ]
-    Content:        "0000"
-DWARF:
-  debug_abbrev:
-    - Table:
-      - Tag:      DW_TAG_compile_unit
-        Children: DW_CHILDREN_yes
-        Attributes:
-          - Attribute: DW_AT_producer
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_language
-            Form:      DW_FORM_data2
-          - Attribute: DW_AT_name
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_low_pc
-            Form:      DW_FORM_addr
-          - Attribute: DW_AT_high_pc
-            Form:      DW_FORM_data8
-  debug_info:
-    - Version: 4
-      Entries:
-        - AbbrCode: 1
-          Values:
-            - CStr: by_hand
-            - Value:  0x04
-            - CStr: CU1
-            - Value:  0x1000
-            - Value:  0x4
-        - AbbrCode: 0
-...
diff --git a/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-names.test b/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-names.test
deleted file mode 100644 (file)
index a688552..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-## This test checks the warning message displayed if input file
-## contains .debug_names section.
-
-# RUN: yaml2obj %s -o %t.o
-
-# RUN: llvm-dwarfutil --garbage-collection %t.o %t1 2>&1 | FileCheck %s -DFILE=%t.o
-
-# CHECK: [[FILE]]: warning: '.debug_names' is not currently supported: section will be skipped
-
---- !ELF
-FileHeader:
-  Class:    ELFCLASS64
-  Data:     ELFDATA2LSB
-  Type:     ET_REL
-  Machine:  EM_X86_64
-Sections:
-  - Name:            .text
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
-    Address:         0x1000
-    AddressAlign:    0x0000000000000010
-    Content:         "FFFFFFFF"
-  - Name:            .debug_names
-    Type:            SHT_PROGBITS
-    Flags:           [  ]
-    Content:         "0000"
-DWARF:
-  debug_abbrev:
-    - Table:
-      - Tag:      DW_TAG_compile_unit
-        Children: DW_CHILDREN_yes
-        Attributes:
-          - Attribute: DW_AT_producer
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_language
-            Form:      DW_FORM_data2
-          - Attribute: DW_AT_name
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_low_pc
-            Form:      DW_FORM_addr
-          - Attribute: DW_AT_high_pc
-            Form:      DW_FORM_data8
-  debug_info:
-    - Version: 4
-      Entries:
-        - AbbrCode: 1
-          Values:
-            - CStr: by_hand
-            - Value:  0x04
-            - CStr: CU1
-            - Value:  0x1000
-            - Value:  0x4
-        - AbbrCode: 0
-...
diff --git a/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-pubnames.test b/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-pubnames.test
deleted file mode 100644 (file)
index 3aa42a8..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-## This test checks the warning message displayed if input file
-## contains .debug_pubnames section.
-
-# RUN: yaml2obj %s -o %t.o
-
-# RUN: llvm-dwarfutil --garbage-collection %t.o %t1 2>&1 | FileCheck %s -DFILE=%t.o
-
-# CHECK: [[FILE]]: warning: '.debug_pubnames' is not currently supported: section will be skipped
-
---- !ELF
-FileHeader:
-  Class:    ELFCLASS64
-  Data:     ELFDATA2LSB
-  Type:     ET_REL
-  Machine:  EM_X86_64
-Sections:
-  - Name:            .text
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
-    Address:         0x1000
-    AddressAlign:    0x0000000000000010
-    Content:         "FFFFFFFF"
-  - Name:            .debug_pubnames
-    Type:            SHT_PROGBITS
-    Flags:           [  ]
-    Content:         "0000"
-DWARF:
-  debug_abbrev:
-    - Table:
-      - Tag:      DW_TAG_compile_unit
-        Children: DW_CHILDREN_yes
-        Attributes:
-          - Attribute: DW_AT_producer
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_language
-            Form:      DW_FORM_data2
-          - Attribute: DW_AT_name
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_low_pc
-            Form:      DW_FORM_addr
-          - Attribute: DW_AT_high_pc
-            Form:      DW_FORM_data8
-  debug_info:
-    - Version: 4
-      Entries:
-        - AbbrCode: 1
-          Values:
-            - CStr: by_hand
-            - Value:  0x04
-            - CStr: CU1
-            - Value:  0x1000
-            - Value:  0x4
-        - AbbrCode: 0
-...
diff --git a/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-pubtypes.test b/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-pubtypes.test
deleted file mode 100644 (file)
index 4134349..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-## This test checks the warning message displayed if input file
-## contains .debug_pubtypes section.
-
-# RUN: yaml2obj %s -o %t.o
-
-# RUN: llvm-dwarfutil --garbage-collection %t.o %t1 2>&1 | FileCheck %s -DFILE=%t.o
-
-# CHECK: [[FILE]]: warning: '.debug_pubtypes' is not currently supported: section will be skipped
-
---- !ELF
-FileHeader:
-  Class:    ELFCLASS64
-  Data:     ELFDATA2LSB
-  Type:     ET_REL
-  Machine:  EM_X86_64
-Sections:
-  - Name:            .text
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
-    Address:         0x1000
-    AddressAlign:    0x0000000000000010
-    Content:         "FFFFFFFF"
-  - Name:            .debug_pubtypes
-    Type:            SHT_PROGBITS
-    Flags:           [  ]
-    Content:         "0000"
-DWARF:
-  debug_abbrev:
-    - Table:
-      - Tag:      DW_TAG_compile_unit
-        Children: DW_CHILDREN_yes
-        Attributes:
-          - Attribute: DW_AT_producer
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_language
-            Form:      DW_FORM_data2
-          - Attribute: DW_AT_name
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_low_pc
-            Form:      DW_FORM_addr
-          - Attribute: DW_AT_high_pc
-            Form:      DW_FORM_data8
-  debug_info:
-    - Version: 4
-      Entries:
-        - AbbrCode: 1
-          Values:
-            - CStr: by_hand
-            - Value:  0x04
-            - CStr: CU1
-            - Value:  0x1000
-            - Value:  0x4
-        - AbbrCode: 0
-...
diff --git a/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-rnglists.test b/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-rnglists.test
deleted file mode 100644 (file)
index deea90f..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-## This test checks the warning message displayed if input file
-## contains .debug_rnglists section.
-
-# RUN: yaml2obj %s -o %t.o
-
-# RUN: llvm-dwarfutil --garbage-collection %t.o %t1 2>&1 | FileCheck %s -DFILE=%t.o
-
-# CHECK: [[FILE]]: warning: '.debug_rnglists' is not currently supported: file will be skipped
-
---- !ELF
-FileHeader:
-  Class:    ELFCLASS64
-  Data:     ELFDATA2LSB
-  Type:     ET_REL
-  Machine:  EM_X86_64
-Sections:
-  - Name:            .text
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
-    Address:         0x1000
-    AddressAlign:    0x0000000000000010
-    Content:        "FFFFFFFF"
-  - Name:            .debug_rnglists
-    Type:            SHT_PROGBITS
-    Flags:           [  ]
-    Content:        "0000"
-DWARF:
-  debug_abbrev:
-    - Table:
-      - Tag:      DW_TAG_compile_unit
-        Children: DW_CHILDREN_yes
-        Attributes:
-          - Attribute: DW_AT_producer
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_language
-            Form:      DW_FORM_data2
-          - Attribute: DW_AT_name
-            Form:      DW_FORM_string
-          - Attribute: DW_AT_low_pc
-            Form:      DW_FORM_addr
-          - Attribute: DW_AT_high_pc
-            Form:      DW_FORM_data8
-  debug_info:
-    - Version: 4
-      Entries:
-        - AbbrCode: 1
-          Values:
-            - CStr: by_hand
-            - Value:  0x04
-            - CStr: CU1
-            - Value:  0x1000
-            - Value:  0x4
-        - AbbrCode: 0
-...
diff --git a/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-types.test b/llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-types.test
deleted file mode 100644 (file)
index ca0a5e2..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-## This test checks the warning message displayed if input file
-## contains type units.
-
-# RUN: llvm-dwarfutil --garbage-collection --tombstone=maxpc %p/Inputs/type-units.o %t1 2>&1 | FileCheck %s -DFILE=%p/Inputs/type-units.o
-
-# CHECK: [[FILE]]: warning: type units are not currently supported: file will be skipped
index 5f43680..d5e6f82 100644 (file)
@@ -713,8 +713,7 @@ bool DwarfLinkerForBinary::link(const DebugMap &Map) {
   }
 
   // link debug info for loaded object files.
-  if (Error E = GeneralLinker.link())
-    return error(toString(std::move(E)));
+  GeneralLinker.link();
 
   StringRef ArchName = Map.getTriple().getArchName();
   if (Error E = emitRemarks(Options, Map.getBinaryPath(), ArchName, RL))
index 3e70f46..458a58c 100644 (file)
@@ -8,7 +8,6 @@
 
 #include "DebugInfoLinker.h"
 #include "Error.h"
-#include "llvm/ADT/StringSwitch.h"
 #include "llvm/DWARFLinker/DWARFLinker.h"
 #include "llvm/DWARFLinker/DWARFStreamer.h"
 #include "llvm/DebugInfo/DWARF/DWARFContext.h"
@@ -211,29 +210,8 @@ private:
   const Options &Opts;
 };
 
-static bool knownByDWARFUtil(StringRef SecName) {
-  return llvm::StringSwitch<bool>(SecName)
-      .Case(".debug_info", true)
-      .Case(".debug_types", true)
-      .Case(".debug_abbrev", true)
-      .Case(".debug_loc", true)
-      .Case(".debug_loclists", true)
-      .Case(".debug_frame", true)
-      .Case(".debug_aranges", true)
-      .Case(".debug_ranges", true)
-      .Case(".debug_rnglists", true)
-      .Case(".debug_line", true)
-      .Case(".debug_line_str", true)
-      .Case(".debug_addr", true)
-      .Case(".debug_macro", true)
-      .Case(".debug_macinfo", true)
-      .Case(".debug_str", true)
-      .Case(".debug_str_offsets", true)
-      .Default(false);
-}
-
-Error linkDebugInfo(object::ObjectFile &File, const Options &Options,
-                    raw_pwrite_stream &OutStream) {
+bool linkDebugInfo(object::ObjectFile &File, const Options &Options,
+                   raw_pwrite_stream &OutStream) {
 
   auto ReportWarn = [&](const Twine &Message, StringRef Context,
                         const DWARFDie *Die) {
@@ -257,11 +235,8 @@ Error linkDebugInfo(object::ObjectFile &File, const Options &Options,
   // Create output streamer.
   DwarfStreamer OutStreamer(OutputFileType::Object, OutStream, nullptr,
                             ReportWarn, ReportWarn);
-  Triple TargetTriple = File.makeTriple();
-  if (!OutStreamer.init(TargetTriple, formatv("cannot create a stream for {0}",
-                                              TargetTriple.getTriple())
-                                          .str()))
-    return createStringError(std::errc::invalid_argument, "");
+  if (!OutStreamer.init(File.makeTriple(), ""))
+    return false;
 
   // Create DWARF linker.
   DWARFLinker DebugInfoLinker(&OutStreamer, DwarfLinkerClient::LLD);
@@ -281,16 +256,6 @@ Error linkDebugInfo(object::ObjectFile &File, const Options &Options,
 
   std::unique_ptr<DWARFContext> Context = DWARFContext::create(File);
 
-  // Unknown debug sections would be removed. Display warning
-  // for such sections.
-  for (SectionName Sec : Context->getDWARFObj().getSectionNames()) {
-    if (isDebugSection(Sec.Name) && !knownByDWARFUtil(Sec.Name))
-      warning(
-          formatv("'{0}' is not currently supported: section will be skipped",
-                  Sec.Name),
-          Options.InputFileName);
-  }
-
   // Add object files to the DWARFLinker.
   AddresssMapForLinking[0] =
       std::make_unique<ObjFileAddressMap>(*Context, Options, File);
@@ -303,11 +268,9 @@ Error linkDebugInfo(object::ObjectFile &File, const Options &Options,
     DebugInfoLinker.addObjectFile(*ObjectsForLinking[I]);
 
   // Link debug info.
-  if (Error Err = DebugInfoLinker.link())
-    return Err;
-
+  DebugInfoLinker.link();
   OutStreamer.finish();
-  return Error::success();
+  return true;
 }
 
 } // end of namespace dwarfutil
index d9d99ff..e95c83c 100644 (file)
@@ -22,8 +22,8 @@ inline bool isDebugSection(StringRef SecName) {
          SecName == ".gdb_index";
 }
 
-Error linkDebugInfo(object::ObjectFile &file, const Options &Options,
-                    raw_pwrite_stream &OutStream);
+bool linkDebugInfo(object::ObjectFile &file, const Options &Options,
+                   raw_pwrite_stream &OutStream);
 
 } // end of namespace dwarfutil
 } // end of namespace llvm
index a6466be..c916744 100644 (file)
@@ -426,14 +426,16 @@ static Error applyCLOptions(const struct Options &Opts, ObjectFile &InputFile) {
     DebugInfoBits LinkedDebugInfo;
     raw_svector_ostream OutStream(LinkedDebugInfo);
 
-    if (Error Err = linkDebugInfo(InputFile, Opts, OutStream))
-      return Err;
+    if (linkDebugInfo(InputFile, Opts, OutStream)) {
+      if (Error Err =
+              saveLinkedDebugInfo(Opts, InputFile, std::move(LinkedDebugInfo)))
+        return Err;
 
-    if (Error Err =
-            saveLinkedDebugInfo(Opts, InputFile, std::move(LinkedDebugInfo)))
-      return Err;
+      return Error::success();
+    }
 
-    return Error::success();
+    return createStringError(std::errc::invalid_argument,
+                             "possible broken debug info");
   } else if (Opts.BuildSeparateDebugFile) {
     if (Error Err = splitDebugIntoSeparateFile(Opts, InputFile))
       return Err;