[PATCH] Minor cleanup for GNU TLS support

Eric Christopher echristo at gmail.com
Sat Oct 5 14:41:14 PDT 2013


Should dump differently I'd have thought. Also don't want to delete
the DW_OP_*_user text I'd think.

-eric

On Sat, Oct 5, 2013 at 2:33 PM, Richard Mitton <richard at codersnotes.com> wrote:
>> 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
>>>
>>>
>
> _______________________________________________
> 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