[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