This is the mail archive of the
mailing list for the GCC project.
Re: Replacement for the .stabs directive
- From: Jim Wilson <jim dot wilson at linaro dot org>
- To: Umesh Kalappa <umesh dot kalappa0 at gmail dot com>, LLVM Developers Mailing List <llvm-dev at lists dot llvm dot org>, "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>, eager at eagercon dot com, Binutils <binutils at sourceware dot org>
- Date: Wed, 24 Aug 2016 14:56:30 -0700
- Subject: Re: Replacement for the .stabs directive
- Authentication-results: sourceware.org; auth=none
- References: <CAGfacvSFza19+VqMJtKuYoVVybfrRTTgh1AZG3y7vnwayAoCXg@mail.gmail.com>
On 08/19/2016 12:55 PM, Umesh Kalappa via llvm-dev wrote:
We have the legacy code ,that uses the .stabs directive quiet often
in the source code like
.stabs "symbol_name", 100, 0, 0, 0 + .label_one f;
and ,the above code is wrapped with the inline asm in the c source file .
Presumably the ".label_one f" is actually "1f" and the ".label_one" is
"1:". That would make more sense, as this is a use of the GNU as local
Unfortunately, there is no easy to do this in dwarf, as dwarf debug info
is split across multiple sections and encoded. Maybe this could work if
you handled it like a comdat symbol, but that would be inconvenient, and
might not even work. This seems like a option not worth pursuing.
The fact that this worked for stabs is more accident by design. The
code never should have been written this way in the first place.
You can make the association between a symbol name and an address by
using an equivalence. E.g. you could do
asm ("symbol_name = 1f");
but this puts the symbol_name in the symbol table, which works only if
symbol_name is unique or maybe unique within its scope if function
local. If the name was unique, you probably wouldn't have used the ugly
stabs trick in the first place, so this might not work. If the symbol
names aren't unique, maybe you can change the code to make them unique?
Using an equivalence gives the same effective result as using
PS Cross posting like this is discouraged. I would suggest just asking
assembler questions on the binutils list.