RSSAmplifier

Blog

The Cliffs of Inanity

tromey.comRSS feed ↗10 posts

Latest posts

Faster Faster GDB Startup

A while ago, I wrote about my work to speed up GDB’s DWARF reader. I thought I’d write again with a few updates. Sharding Back then, I wrote: “maybe GDB could trade memory for performance and shard the resulting index and do separate canonicalizations in each worker thread”. I did end up doing this. Recall […]

DWARF Abbrevs Use Too Much Space

I was curious about DWARF abbrev table efficiency the other day, so I instrumented gdb to record some simple stats about abbrevs: how many are seen, how many duplicates are seen, and how many bytes are used. Running gdb on itself, I discovered that abbrevs are largely redundant. In particular, removing redundant abbrevs will remove […]

Faster GDB Startup

After literally years of false starts and failed attempts, last week I finally checked in a series of patches that speed up GDB’s DWARF reader. The speedup for ordinary C++ code is dramatic — I regularly see a 7x performance improvement. For example, on this machine, startup on gdb itself drops from 2.2 seconds to […]

Warning and Sanitizer Retrospective

One of my hobbies in GDB is cleaning things up. A lot of this is modernizing and C++-ifying the code, but I’ve also enabled a number of warnings and other forms of code checking in the last year or two. I thought it might be interesting to look at the impact, on GDB, of these […]

Emacs JIT Calling Convention

I’ve been working a bit more on my Emacs JIT, in particular on improving function calling. This has been a fun project so I thought I’d talk about it a bit. Background Under the hood, the Emacs Lisp implementation has a few different ways to call functions. Calls to or from Lisp are dispatched depending […]

JIT Compilation for Emacs

There have been a few efforts at writing an Emacs JIT — the original one, Burton Samograd’s, and also Nick LLoyd’s. So, what else to do except write my own? Like the latter two, I based mine on GNU libjit. I did look at a few other JIT libraries: LLVM, gcc-jit, GNU Lightning, MyJit. libjit […]

FOSDEM, Rust, and Debugging

I’ve recently switched groups at Mozilla to start working full-time on improving Rust debugging. To kick this off and to meet people from the various projects I’m working on — the Rust compiler, lldb, llvm, gdb, and (eventually) the DWARF standard — I will speak about this work at FOSDEM. If you’re going and want […]

Shaggy Dogs and SpiderMonkey Unwinders

A year or so ago I was asked to debug a crash in the Firefox devtools. Crashes are easy! I fired up gdb and reproduced the crash… which turned out to be in some code JITted by SpiderMonkey. I was immediately lost; even a simple bt did not work. Someone more familiar with the JIT […]

The Deletion of gcj

I originally posted this on G+ but I thought maybe I should expand it a little and archive it here. The patch to delete gcj went in recently. When I was put on the gcj project at Cygnus, I remember thinking that Java was just a fad and that this was just a temporary thing […]

GDB Preattach

In firefox development, it’s normal to do most development tasks via the mach command. Build? Use mach. Update UUIDs? Use mach. Run tests? Use mach. Debug tests? Yes, mach mochitest --debugger gdb. Now, normally I run gdb inside emacs, of course. But this is hard to do when I’m also using mach to set up […]