Replacement for the .stabs directive
Michael Eager
eager@eagerm.com
Mon Aug 29 23:31:00 GMT 2016
On 08/24/2016 02:56 PM, Jim Wilson wrote:
> 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;
>>
>> .label_one
>> stmt
>> 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 label feature.
>
> 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
> symbol_name: stmt
>
> Jim
>
> PS Cross posting like this is discouraged. I would suggest just asking assembler questions on the
> binutils list.
Trimming the CC list, as Jim suggested.
Umesh --
I'm not sure I understand what you are trying to do.
If you want a code label to be described in DWARF, you can create a DIE:
DW_TAG_label
DW_AT_name "symbol_name"
DW_AT_low_pc .label_one
See DWARF Ver. 4 standard, section 3.5.
--
Michael Eager eager@eagercon.com
1960 Park Blvd., Palo Alto, CA 94306 650-325-8077
More information about the Binutils
mailing list