Add a --split-dwarf option to configure.py
It is off by default as it conflicts with distcc. Signed-off-by: Rafael Ávila de Espíndola <espindola@scylladb.com> Message-Id: <20190204002706.15540-1-espindola@scylladb.com>
This commit is contained in:
committed by
Avi Kivity
parent
a9e1e0233a
commit
bbd9dfcba7
20
HACKING.md
20
HACKING.md
@@ -288,7 +288,7 @@ In this example, `10.0.0.2` will be sent up to 16 jobs and the local machine wil
|
||||
|
||||
When a compilation is in progress, the status of jobs on all remote machines can be visualized in the terminal with `distccmon-text` or graphically as a GTK application with `distccmon-gnome`.
|
||||
|
||||
One thing to keep in mind is that linking object files happens on the coordinating machine, which can be a bottleneck. See the next section speeding up this process.
|
||||
One thing to keep in mind is that linking object files happens on the coordinating machine, which can be a bottleneck. See the next sections speeding up this process.
|
||||
|
||||
### Using the `gold` linker
|
||||
|
||||
@@ -298,6 +298,24 @@ Linking Scylla can be slow. The gold linker can replace GNU ld and often speeds
|
||||
$ sudo alternatives --config ld
|
||||
```
|
||||
|
||||
### Using split dwarf
|
||||
|
||||
With debug info enabled, most of the link time is spent copying and
|
||||
relocating it. It is possible to leave most of the debug info out of
|
||||
the link by writing it to a side .dwo file. This is done by passing
|
||||
`-gsplit-dwarf` to gcc.
|
||||
|
||||
Unfortunately just `-gsplit-dwarf` would slow down `gdb` startup. To
|
||||
avoid that the gold linker can be told to create an index with
|
||||
`--gdb-index`.
|
||||
|
||||
More info at https://gcc.gnu.org/wiki/DebugFission.
|
||||
|
||||
Both options can be enable by passing `--split-dwarf` to configure.py.
|
||||
|
||||
Note that distcc is *not* compatible with it, but icecream
|
||||
(https://github.com/icecc/icecream) is.
|
||||
|
||||
### Testing changes in Seastar with Scylla
|
||||
|
||||
Sometimes Scylla development is closely tied with a feature being developed in Seastar. It can be useful to compile Scylla with a particular check-out of Seastar.
|
||||
|
||||
@@ -433,6 +433,8 @@ arg_parser.add_argument('--python', action='store', dest='python', default='pyth
|
||||
help='Python3 path')
|
||||
add_tristate(arg_parser, name='hwloc', dest='hwloc', help='hwloc support')
|
||||
add_tristate(arg_parser, name='xen', dest='xen', help='Xen support')
|
||||
arg_parser.add_argument('--split-dwarf', dest='split_dwarf', action='store_true', default=False,
|
||||
help='use of split dwarf (https://gcc.gnu.org/wiki/DebugFission) to speed up linking')
|
||||
arg_parser.add_argument('--enable-gcc6-concepts', dest='gcc6_concepts', action='store_true', default=False,
|
||||
help='enable experimental support for C++ Concepts as implemented in GCC 6')
|
||||
arg_parser.add_argument('--enable-alloc-failure-injector', dest='alloc_failure_injector', action='store_true', default=False,
|
||||
@@ -1030,6 +1032,8 @@ if args.gcc6_concepts:
|
||||
seastar_flags += ['--enable-gcc6-concepts']
|
||||
if args.alloc_failure_injector:
|
||||
seastar_flags += ['--enable-alloc-failure-injector']
|
||||
if args.split_dwarf:
|
||||
seastar_flags += ['--split-dwarf']
|
||||
|
||||
debug_flags = ' ' + debug_compress_flag(compiler=args.cxx) + ' ' + dbgflag
|
||||
modes['debug']['opt'] += debug_flags
|
||||
|
||||
Reference in New Issue
Block a user