Jumptables: How painful to hack?
Ian Lance Taylor
ian@zembu.com
Wed Mar 31 11:28:00 GMT 1999
From: Jason Merrill <jason@cygnus.com>
Date: 31 Mar 1999 11:16:29 -0800
> Date: Tue, 30 Mar 1999 21:09:18 -0800
> From: Jason Merrill <jason@cygnus.com>
> A question for folks who have worked on BFD for a while: How horrible
> are jumptables to deal with? I'm looking at parameterizing the g++
> ABI, and am strongly considering that as an implementation strategy.
> I started to reply, but then I realized that it depends upon what you
> mean by the g++ ABI. Do you mean the code that g++ generates, or do
> you mean the files in gcc/cp? The former already uses jumptables, of
> course, since that's what virtual functions are, and I'm not sure in
> what sense the latter has an ABI.
I mean the latter. The C++ ABI involves things like object layout,
handling of virtual functions and bases, name mangling and such things.
I'd say the main lessons from BFD are:
* Define your interfaces clearly. People can't look at the code to
figure them out, since they won't look at all the possible targets
of an indirect call.
* BFD uses macros to hide the jumptable invocations and make them look
like a function call. I think this was a mistake. It makes it
harder for novices to understand what the code is doing. You can't
do a tags search to find the target of the call. Macros per se may
be useful, but don't make it look like an ordinary function.
Ian
More information about the Bfd
mailing list