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