[llvm] r200826 - ARM: Enable use of relocation type tlsldo in debug info for tls data.

Kai Nacke kai.nacke at redstar.de
Wed Feb 5 00:04:43 PST 2014


Hi Eric,

thanks for the hint. I'll do it in future. I re-generated the debug info 
with a more recent clang. The previous failure was in the verifier due 
to a problem in the meta data.

Regards,
Kai

On 05.02.2014 08:38, Eric Christopher wrote:
> As a note, when you recommit you should say what you changed.
>
> So, what did you change versus the previous iteration of this patch?
>
> -eric
>
> On Tue, Feb 4, 2014 at 11:23 PM, Kai Nacke <kai.nacke at redstar.de> wrote:
>> Author: redstar
>> Date: Wed Feb  5 01:23:09 2014
>> New Revision: 200826
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=200826&view=rev
>> Log:
>> ARM: Enable use of relocation type tlsldo in debug info for tls data.
>>
>> This fixes PR18554.
>>
>> Reviewers: Renato Golin, Keith Walker
>>
>> Added:
>>      llvm/trunk/test/DebugInfo/ARM/tls.ll
>> Modified:
>>      llvm/trunk/lib/Target/ARM/ARMTargetObjectFile.cpp
>>      llvm/trunk/lib/Target/ARM/ARMTargetObjectFile.h
>>
>> Modified: llvm/trunk/lib/Target/ARM/ARMTargetObjectFile.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMTargetObjectFile.cpp?rev=200826&r1=200825&r2=200826&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/ARM/ARMTargetObjectFile.cpp (original)
>> +++ llvm/trunk/lib/Target/ARM/ARMTargetObjectFile.cpp Wed Feb  5 01:23:09 2014
>> @@ -51,3 +51,9 @@ getTTypeGlobalReference(const GlobalValu
>>                                    MCSymbolRefExpr::VK_ARM_TARGET2,
>>                                    getContext());
>>   }
>> +
>> +const MCExpr *ARMElfTargetObjectFile::
>> +getDebugThreadLocalSymbol(const MCSymbol *Sym) const {
>> +  return MCSymbolRefExpr::Create(Sym, MCSymbolRefExpr::VK_ARM_TLSLDO,
>> +                                 getContext());
>> +}
>>
>> Modified: llvm/trunk/lib/Target/ARM/ARMTargetObjectFile.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMTargetObjectFile.h?rev=200826&r1=200825&r2=200826&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/ARM/ARMTargetObjectFile.h (original)
>> +++ llvm/trunk/lib/Target/ARM/ARMTargetObjectFile.h Wed Feb  5 01:23:09 2014
>> @@ -36,6 +36,9 @@ public:
>>     virtual const MCSection *getAttributesSection() const {
>>       return AttributesSection;
>>     }
>> +
>> +  /// \brief Describe a TLS variable address within debug info.
>> +  virtual const MCExpr *getDebugThreadLocalSymbol(const MCSymbol *Sym) const;
>>   };
>>
>>   } // end namespace llvm
>>
>> Added: llvm/trunk/test/DebugInfo/ARM/tls.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/ARM/tls.ll?rev=200826&view=auto
>> ==============================================================================
>> --- llvm/trunk/test/DebugInfo/ARM/tls.ll (added)
>> +++ llvm/trunk/test/DebugInfo/ARM/tls.ll Wed Feb  5 01:23:09 2014
>> @@ -0,0 +1,28 @@
>> +; RUN: llc -O0 -filetype=asm -mtriple=armv7-linux-gnuehabi < %s | FileCheck %s
>> +;
>> +; Generated with clang with source
>> +; __thread int x;
>> +
>> + at x = thread_local global i32 0, align 4
>> +
>> +!llvm.dbg.cu = !{!0}
>> +!llvm.module.flags = !{!7, !8}
>> +!llvm.ident = !{!9}
>> +
>> +; 6 byte of data
>> +; CHECK: .byte 6 @ DW_AT_location
>> +; DW_OP_const4u
>> +; CHECK: .byte 12
>> +; The debug relocation of the address of the tls variable
>> +; CHECK: .long x(tlsldo)
>> +
>> +!0 = metadata !{i32 786449, metadata !1, i32 12, metadata !"clang version 3.5 ", i1 false, metadata !"", i32 0, metadata !2, metadata !2, metadata !2, metadata !3, metadata !2, metadata !""} ; [ DW_TAG_compile_unit ] [/tmp/tls.c] [DW_LANG_C99]
>> +!1 = metadata !{metadata !"tls.c", metadata !"/tmp"}
>> +!2 = metadata !{}
>> +!3 = metadata !{metadata !4}
>> +!4 = metadata !{i32 786484, i32 0, null, metadata !"x", metadata !"x", metadata !"", metadata !5, i32 1, metadata !6, i32 0, i32 1, i32* @x, null} ; [ DW_TAG_variable ] [x] [line 1] [def]
>> +!5 = metadata !{i32 786473, metadata !1}          ; [ DW_TAG_file_type ] [/tmp/tls.c]
>> +!6 = metadata !{i32 786468, null, null, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed]
>> +!7 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}
>> +!8 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}
>> +!9 = metadata !{metadata !"clang version 3.5 "}
>>
>>
>> _______________________________________________
>> 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