[llvm] r197611 - Pull in a couple of new constants from the upcoming DWARF 5 standard.

Eric Christopher echristo at gmail.com
Wed Dec 18 16:24:22 PST 2013


 At least for the rvalue-reference stuff I'm ok with the constants being in
there ahead of time. That proposal is likely to be accepted within the
month and those constants are fine. Any constants already accepted are
unlikely to be changed as well.

 In general, I don't like to put things in as official before they're
accepted for the reasons you outline. If you'd prefer (and was my original
suggestion to Adrian) we can make them DW_AT_LLVM_ constants and propagate
that through other things. It's a bit more of a pain, but if you feel the
risk is great that the constants are going to get changed versus having to
keep around two versions of the constants for the foreseeable future
between llvm, gcc, binutils, and any other compilers that try for debug
compatibility then I'll go with your thoughts here.

-eric

On Wed Dec 18 2013 at 4:17:20 PM, Robinson, Paul <
Paul_Robinson at playstation.sony.com> wrote:

 > Also, any users would have to do the same change so…



I completely don’t understand that comment.



The risk is not just to you, but to anyone building debug-mode code that
might be affected by the incorrect constants; those people would have to
rebuild their code with a corrected compiler, and we won’t actually
know-for-sure until we have a reasonably settled draft of DWARF 5 to look
at—a prospect which is at least several months away.



Is Apple going to release a compiler in the interim?  Is LLVM going to
release 3.5 before DWARF 5 is sufficiently settled?  (I would not bet the
farm on either side of that one.)  If the numbers change are you okay with
users in the real world having bad debug info?  If it’s not obvious, I am
definitely not okay with it.

--paulr



*From:* Eric Christopher [mailto:echristo at gmail.com]
*Sent:* Wednesday, December 18, 2013 3:40 PM
*To:* Adrian Prantl; Robinson, Paul; llvm-commits at cs.uiuc.edu
*Subject:* Re: [llvm] r197611 - Pull in a couple of new constants from the
upcoming DWARF 5 standard.



Also, any users would have to do the same change so...

On Wed Dec 18 2013 at 3:23:43 PM, Adrian Prantl <aprantl at apple.com> wrote:

I’m aware of the risk, but I decided it was worth taking it :-)
Eric and I discussed introducing temporary constants in the user namespace
for the ref-qualifiers until the standard is official, but then we would
definitely have to change it once the spec is finalized. By doing it this
way, we only have to change it, if it really were to be changed in the spec.

-- adrian

On Dec 18, 2013, at 15:15, Robinson, Paul <Paul_Robinson at playstation.
sony.com> wrote:

> You know these are tentative, not definitive, until DWARF5
> is actually published... there is a small but non-zero risk
> that they'll change in the meantime (it has happened before).
> --paulr
>
>> -----Original Message-----
>> From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-
>> bounces at cs.uiuc.edu] On Behalf Of Adrian Prantl
>> Sent: Wednesday, December 18, 2013 1:48 PM
>> To: llvm-commits at cs.uiuc.edu
>> Subject: [llvm] r197611 - Pull in a couple of new constants from the
>> upcoming DWARF 5 standard.
>>
>> Author: adrian
>> Date: Wed Dec 18 15:48:14 2013
>> New Revision: 197611
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=197611&view=rev
>> Log:
>> Pull in a couple of new constants from the upcoming DWARF 5 standard.
>>
>> Modified:
>>    llvm/trunk/include/llvm/Support/Dwarf.h
>>    llvm/trunk/lib/Support/Dwarf.cpp
>>
>> Modified: llvm/trunk/include/llvm/Support/Dwarf.h
>> URL: http://llvm.org/viewvc/llvm-
>> project/llvm/trunk/include/llvm/Support/Dwarf.h?rev=197611&r1=197610&r2=
>> 197611&view=diff
>> ========================================================================
>> ======
>> --- llvm/trunk/include/llvm/Support/Dwarf.h (original)
>> +++ llvm/trunk/include/llvm/Support/Dwarf.h Wed Dec 18 15:48:14 2013
>> @@ -41,7 +41,7 @@ namespace dwarf {
>>
>> //===------------------------------------------------------------------
>> ----===//
>> // Dwarf constants as gleaned from the DWARF Debugging Information
>> Format V.4
>> -// reference manual http://dwarf.freestandards.org.
>> +// reference manual http://www.dwarfstd.org/.
>> //
>>
>> // Do not mix the following two enumerations sets.  DW_TAG_invalid
>> changes the
>> @@ -129,6 +129,12 @@ enum Tag LLVM_ENUM_INT_TYPE(uint16_t) {
>>   DW_TAG_type_unit = 0x41,
>>   DW_TAG_rvalue_reference_type = 0x42,
>>   DW_TAG_template_alias = 0x43,
>> +
>> +  // New in DWARF 5:
>> +  DW_TAG_coarray_type = 0x44,
>> +  DW_TAG_generic_subrange = 0x45,
>> +  DW_TAG_dynamic_type = 0x46,
>> +
>>   DW_TAG_MIPS_loop = 0x4081,
>>   DW_TAG_format_label = 0x4101,
>>   DW_TAG_function_template = 0x4102,
>> @@ -264,6 +270,18 @@ enum Attribute LLVM_ENUM_INT_TYPE(uint16
>>   DW_AT_enum_class = 0x6d,
>>   DW_AT_linkage_name = 0x6e,
>>
>> +  // New in DWARF 5:
>> +  DW_AT_string_length_bit_size = 0x6f,
>> +  DW_AT_string_length_byte_size = 0x70,
>> +  DW_AT_rank = 0x71,
>> +  DW_AT_str_offsets_base = 0x72,
>> +  DW_AT_addr_base = 0x73,
>> +  DW_AT_ranges_base = 0x74,
>> +  DW_AT_dwo_id = 0x75,
>> +  DW_AT_dwo_name = 0x76,
>> +  DW_AT_reference = 0x77,
>> +  DW_AT_rvalue_reference = 0x78,
>> +
>>   DW_AT_lo_user = 0x2000,
>>   DW_AT_hi_user = 0x3fff,
>>
>> @@ -605,7 +623,16 @@ enum SourceLanguage {
>>   DW_LANG_ObjC_plus_plus = 0x0011,
>>   DW_LANG_UPC = 0x0012,
>>   DW_LANG_D = 0x0013,
>> +  // New in DWARF 5:
>>   DW_LANG_Python = 0x0014,
>> +  DW_LANG_OpenCL = 0x0015,
>> +  DW_LANG_Go = 0x0016,
>> +  DW_LANG_Modula3 = 0x0017,
>> +  DW_LANG_Haskell = 0x0018,
>> +  DW_LANG_C_plus_plus_03 = 0x0019,
>> +  DW_LANG_C_plus_plus_11 = 0x001a,
>> +  DW_LANG_OCaml = 0x001b,
>> +
>>   DW_LANG_lo_user = 0x8000,
>>   DW_LANG_Mips_Assembler = 0x8001,
>>   DW_LANG_hi_user = 0xffff
>>
>> Modified: llvm/trunk/lib/Support/Dwarf.cpp
>> URL: http://llvm.org/viewvc/llvm-
>> project/llvm/trunk/lib/Support/Dwarf.cpp?rev=197611&r1=197610&r2=197611&
>> view=diff
>> ========================================================================
>> ======
>> --- llvm/trunk/lib/Support/Dwarf.cpp (original)
>> +++ llvm/trunk/lib/Support/Dwarf.cpp Wed Dec 18 15:48:14 2013
>> @@ -84,6 +84,9 @@ const char *llvm::dwarf::TagString(unsig
>>   case DW_TAG_arg_variable:              return "DW_TAG_arg_variable";
>>   case DW_TAG_rvalue_reference_type:     return
>> "DW_TAG_rvalue_reference_type";
>>   case DW_TAG_template_alias:            return
>> "DW_TAG_template_alias";
>> +  case DW_TAG_coarray_type:              return "DW_TAG_coarray_type";
>> +  case DW_TAG_generic_subrange:          return
>> "DW_TAG_generic_subrange";
>> +  case DW_TAG_dynamic_type:              return
>> "DW_TAG_generic_subrange";
>>   case DW_TAG_MIPS_loop:                 return "DW_TAG_MIPS_loop";
>>   case DW_TAG_type_unit:                 return "DW_TAG_type_unit";
>>   case DW_TAG_format_label:              return "DW_TAG_format_label";
>> @@ -206,6 +209,16 @@ const char *llvm::dwarf::AttributeString
>>   case DW_AT_const_expr:                 return "DW_AT_const_expr";
>>   case DW_AT_enum_class:                 return "DW_AT_enum_class";
>>   case DW_AT_linkage_name:               return "DW_AT_linkage_name";
>> +  case DW_AT_string_length_bit_size:     return
>> "DW_AT_string_length_bit_size";
>> +  case DW_AT_string_length_byte_size:    return
>> "DW_AT_string_length_byte_size";
>> +  case DW_AT_rank:                       return "DW_AT_rank";
>> +  case DW_AT_str_offsets_base:           return
>> "DW_AT_str_offsets_base";
>> +  case DW_AT_addr_base:                  return "DW_AT_addr_base";
>> +  case DW_AT_ranges_base:                return "DW_AT_ranges_base";
>> +  case DW_AT_dwo_id:                     return "DW_AT_dwo_id";
>> +  case DW_AT_dwo_name:                   return "DW_AT_dwo_name";
>> +  case DW_AT_reference:                  return "DW_AT_reference";
>> +  case DW_AT_rvalue_reference:           return
>> "DW_AT_rvalue_reference";
>>   case DW_AT_MIPS_loop_begin:            return
>> "DW_AT_MIPS_loop_begin";
>>   case DW_AT_MIPS_tail_loop_begin:       return
>> "DW_AT_MIPS_tail_loop_begin";
>>   case DW_AT_MIPS_epilog_begin:          return
>> "DW_AT_MIPS_epilog_begin";
>> @@ -576,6 +589,14 @@ const char *llvm::dwarf::LanguageString(
>>   case DW_LANG_ObjC_plus_plus:           return
>> "DW_LANG_ObjC_plus_plus";
>>   case DW_LANG_UPC:                      return "DW_LANG_UPC";
>>   case DW_LANG_D:                        return "DW_LANG_D";
>> +  case DW_LANG_Python:                   return "DW_LANG_Python";
>> +  case DW_LANG_OpenCL:                   return "DW_LANG_OpenCL";
>> +  case DW_LANG_Go:                       return "DW_LANG_Go";
>> +  case DW_LANG_Modula3:                  return "DW_LANG_Modula3";
>> +  case DW_LANG_Haskell:                  return "DW_LANG_Haskell";
>> +  case DW_LANG_C_plus_plus_03:           return
>> "DW_LANG_C_plus_plus_03";
>> +  case DW_LANG_C_plus_plus_11:           return
>> "DW_LANG_C_plus_plus_11";
>> +  case DW_LANG_OCaml:                    return "DW_LANG_OCaml";
>>   case DW_LANG_lo_user:                  return "DW_LANG_lo_user";
>>   case DW_LANG_hi_user:                  return "DW_LANG_hi_user";
>>   }
>>
>>
>> _______________________________________________
>> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20131219/216efb80/attachment.html>


More information about the llvm-commits mailing list