]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Enable the new DWARF indexer
authorTom Tromey <tom@tromey.com>
Sun, 18 Apr 2021 20:08:54 +0000 (14:08 -0600)
committerTom Tromey <tom@tromey.com>
Tue, 12 Apr 2022 15:31:17 +0000 (09:31 -0600)
This patch finally enables the new indexer.  It is left until this
point in the series to avoid any regressions; in particular, it has to
come after the changes to the DWARF index writer to avoid this
problem.

However, if you experiment with the series, this patch can be moved
anywhere from the patch to wire in the new reader to this point.
Moving this patch around is how I got separate numbers for the
parallelization and background finalization patches.

In the ongoing performance example, this reduces the time from the
baseline of 1.598869 to 0.903534.

gdb/dwarf2/read.c
gdb/testsuite/gdb.base/maint.exp
gdb/testsuite/gdb.dwarf2/dw2-missing-cu-tag.exp
gdb/testsuite/lib/gdb.exp

index fce465e4dab8ecb28084a0f8efc961fcb3dc9784..1f72c1bf7231a38cd46341795cff43339f3cb209 100644 (file)
@@ -5706,7 +5706,8 @@ dwarf2_initialize_objfile (struct objfile *objfile)
     }
 
   global_index_cache.miss ();
-  objfile->qf.push_front (make_lazy_dwarf_reader ());
+  per_bfd->using_index = true;
+  objfile->qf.push_front (make_cooked_index_funcs ());
 }
 
 \f
index 6f7bd2d24a7c3737e4aaba2231dd4fd379512bac..45ccdc6584efc8bcb4ffe64d1f5517483092bd75 100644 (file)
@@ -200,11 +200,11 @@ set re \
         "  Number of symbol tables: $decimal" \
         "  Number of symbol tables with line tables: $decimal" \
         "  Number of symbol tables with blockvectors: $decimal" \
-        "(  Number of read CUs: $decimal" \
-        "  Number of unread CUs: $decimal" \
-        ")?(  Number of \"partial\" symbols read: $decimal" \
+        "(  Number of \"partial\" symbols read: $decimal" \
         ")?(  Number of psym tables \\(not yet expanded\\): $decimal" \
         ")?(  Total memory used for psymbol cache: $decimal" \
+        ")?(  Number of read CUs: $decimal" \
+        "  Number of unread CUs: $decimal" \
         ")?  Total memory used for objfile obstack: $decimal" \
         "  Total memory used for BFD obstack: $decimal" \
         "  Total memory used for string cache: $decimal" \
@@ -224,12 +224,17 @@ gdb_test_no_output "maint print dummy-frames"
 
 set header 0
 set psymtabs 0
+set cooked_index 0
 set symtabs 0
 gdb_test_multiple "maint print objfiles" "" -lbl {
     -re "\r\nObject file.*maint($EXEEXT)?:  Objfile at ${hex}" {
        set header 1
        exp_continue
     }
+    -re "\r\nCooked index" {
+       set cooked_index 1
+       exp_continue
+    }
     -re "\r\nPsymtabs:\[\r\t \]+" {
        set psymtabs 1
        exp_continue
@@ -248,6 +253,9 @@ proc maint_pass_if {val name} {
 }
 
 maint_pass_if $header   "maint print objfiles: header"
+if {$cooked_index} {
+    set have_psyms 0
+}
 if { $have_psyms } {
     maint_pass_if $psymtabs "maint print objfiles: psymtabs"
 }
index 1afcaa3b50297ab62c44fc708c43a3bfad0077d3..3ac94c31689f20ebd101e3e5dca4281599ba7210 100644 (file)
@@ -54,8 +54,7 @@ clean_restart
 set pattern1 \
     [multi_line \
         "Reading symbols from \[^\r\n\]+" \
-        "Dwarf Error: unexpected tag 'DW_TAG_subprogram' at offset $hex \\\[\[^\r\n\]+\\\]" \
-        "\\(No debugging symbols \[^\r\n\]+\\)"]
+        "Dwarf Error: unexpected tag 'DW_TAG_subprogram' at offset $hex \\\[\[^\r\n\]+\\\]"]
 
 # This pattern is hit when GDB does use -readnow (e.g. running with
 # --target_board=readnow).
index 2eb711748e7bad79c16a0a6b7f200d5d6b7006bc..902fb4a7b5eedf0a4e3ccdb0397f68467a24b20c 100644 (file)
@@ -8085,7 +8085,7 @@ proc ensure_gdb_index { binfile {style ""} } {
            set has_index 1
            gdb_test_lines "" $gdb_test_name ".*"
        }
-       -re "\r\nPsymtabs:(?=\r\n)" {
+       -re "\r\n(Cooked index in use|Psymtabs)(?=\r\n)" {
            gdb_test_lines "" $gdb_test_name ".*"
        }
        -re ".gdb_index: faked for \"readnow\"" {