[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 18:21:58 PST 2013


Well-30 years of delivering enterprise software, mostly for risk-averse employers, probably makes me more twitchy about this kind of thing than most people.  No, I don't think the risk is _great_; I just think it's non-zero (and has come up in real life).  Given that we are seeing drafts more often than I remember being the case with DWARF 4, it's probably not as far non-zero as all that.  I know by the time Sony delivers a 3.5-based compiler it's incredibly unlikely to be an issue, but Apple likes to live more dangerously, and it would make me feel unprofessional to not say anything.
So now I've salved my conscience and you can all go back to doing what you were doing.
--paulr

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

 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<mailto: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<mailto:echristo at gmail.com>]
Sent: Wednesday, December 18, 2013 3:40 PM
To: Adrian Prantl; Robinson, Paul; llvm-commits at cs.uiuc.edu<mailto: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/7073db7c/attachment.html>


More information about the llvm-commits mailing list