[PATCH] Minor cleanup for GNU TLS support

Richard Mitton richard at codersnotes.com
Sat Oct 5 14:33:12 PDT 2013


 > No functionality change.

Nothing to test! :)


Eric Christopher wrote:
> Testcase? :)
>
> -eric
>
> On Sat, Oct 5, 2013 at 11:19 AM, Richard Mitton<richard at codersnotes.com>  wrote:
>    
>> Formally added an explicit enum for DWARF TLS support. No functionality change.
>>
>>
>> http://llvm-reviews.chandlerc.com/D1845
>>
>> Files:
>>    include/llvm/Support/Dwarf.h
>>    lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
>>    lib/Support/Dwarf.cpp
>>
>> Index: include/llvm/Support/Dwarf.h
>> ===================================================================
>> --- include/llvm/Support/Dwarf.h
>> +++ include/llvm/Support/Dwarf.h
>> @@ -486,6 +486,9 @@
>>     DW_OP_lo_user = 0xe0,
>>     DW_OP_hi_user = 0xff,
>>
>> +  // Extensions for GNU-style thread-local storage.
>> +  DW_OP_GNU_push_tls_address = 0xe0,
>> +
>>     // Extensions for Fission proposal.
>>     DW_OP_GNU_addr_index = 0xfb,
>>     DW_OP_GNU_const_index = 0xfc,
>> Index: lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
>> ===================================================================
>> --- lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
>> +++ lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
>> @@ -1513,14 +1513,15 @@
>>           // 1) Start with a constNu of the appropriate pointer size
>>           addUInt(Block, 0, dwarf::DW_FORM_data1,
>>                   PointerSize == 4 ? dwarf::DW_OP_const4u : dwarf::DW_OP_const8u);
>> -        // 2) containing the (relocated) address of the TLS variable
>> +        // 2) containing the (relocated) offset of the TLS variable
>> +        //    within the module's TLS block.
>>           addExpr(Block, 0, dwarf::DW_FORM_udata, Expr);
>>         } else {
>>           addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_GNU_const_index);
>>           addUInt(Block, 0, dwarf::DW_FORM_udata, DU->getAddrPoolIndex(Expr));
>>         }
>> -      // 3) followed by a custom OP to tell the debugger about TLS (presumably)
>> -      addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_lo_user);
>> +      // 3) followed by a custom OP to make the debugger do a TLS lookup.
>> +      addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_GNU_push_tls_address);
>>       } else
>>         addOpAddress(Block, Sym);
>>       // Do not create specification DIE if context is either compile unit
>> Index: lib/Support/Dwarf.cpp
>> ===================================================================
>> --- lib/Support/Dwarf.cpp
>> +++ lib/Support/Dwarf.cpp
>> @@ -456,10 +456,11 @@
>>     case DW_OP_bit_piece:                  return "DW_OP_bit_piece";
>>     case DW_OP_implicit_value:             return "DW_OP_implicit_value";
>>     case DW_OP_stack_value:                return "DW_OP_stack_value";
>> -  case DW_OP_lo_user:                    return "DW_OP_lo_user";
>> -  case DW_OP_hi_user:                    return "DW_OP_hi_user";
>>
>> -    // DWARF5 Fission Proposal Op Extensions
>> +  // GNU thread-local storage
>> +  case DW_OP_GNU_push_tls_address:       return "DW_OP_GNU_push_tls_address";
>> +
>> +  // DWARF5 Fission Proposal Op Extensions
>>     case DW_OP_GNU_addr_index:             return "DW_OP_GNU_addr_index";
>>     case DW_OP_GNU_const_index:            return "DW_OP_GNU_const_index";
>>     }
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>>      



More information about the llvm-commits mailing list