Re: [pushed] Re: [PATCH 1/6] Code cleanup: C++ify .gdb_index producer.

Jan Kratochvil
2017-06-18T16:50:47Z

On Mon, 12 Jun 2017 18:08:07 +0200, Pedro Alves wrote:
> Note that this patch as is actually causes a ~10% performance
> drop in .gdb_index generation that can be significant when
> running gdb index on big binaries or in a a batch of binaries.

gdb-add-index is being used in Koji builds where it takes minutes to build
even a trivial package.

Otherwise I do not see why anyone would use it for C++ programs
edit-compile-debug cycles where the speed matters:

0m 5.389s -fuse-ld=gold -Wl,--gdb-index,--build-id
0m 3.564s -fuse-ld=gold -Wl,--build-id
1.825s = --gdb-index part of gold
0m19.401s (GNU ld) -Wl,--build-id
0m 4.364s gdb-add-index
23.765s = GNU ld + gdb-add-index
23.765 / 5.389 = 4.4099090740397102

GNU ld is too slow and then gold can already produce .gdb_index along its
linking in just negligible time.

Just gold is not a default linker as discussed in:
[PATCH] [BZ #14995] glibc fails to build if gold is the default linker, even if ld.bfd is available
https://sourceware.org/ml/libc-alpha/2015-03/msg00410.html
and in my mail internally in Red Hat:
Subject: [debug-list] DWARF5 .debug_names vs. .gdb_index vs. two lds
Message-ID: <20161027162728.GA6631@host1.jankratochvil.net>

Although nobody invests time to fix gold to finally switch to it.

But then the currently missing support for DWO in .debug_names seems to be
pointless to implement into GDB as DWO is used only for better
edit-compile-debug cycle speed but then one cannot use GNU ld and so DWO
.debug_names support should be implemented rather into gold.

Jan