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

Robinson, Paul Paul_Robinson at playstation.sony.com
Wed Dec 18 16:17:04 PST 2013


> 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<mailto: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<mailto: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> [mailto:llvm-commits-<mailto:llvm-commits->
>> bounces at cs.uiuc.edu<mailto: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<mailto: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<mailto: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<mailto: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/1aa857a4/attachment.html>


More information about the llvm-commits mailing list