//===-- llvm/Support/Dwarf.cpp - Dwarf Framework ----------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file contains support for generic dwarf information.
//
//===----------------------------------------------------------------------===//

#include "llvm/Support/Dwarf.h"
#include "llvm/System/IncludeFile.h"

#include <cassert>

namespace llvm {

namespace dwarf {

/// TagString - Return the string for the specified tag.
///
const char *TagString(unsigned Tag) {
  switch(Tag) {
    case DW_TAG_array_type:                return "TAG_array_type";
    case DW_TAG_class_type:                return "TAG_class_type";
    case DW_TAG_entry_point:               return "TAG_entry_point";
    case DW_TAG_enumeration_type:          return "TAG_enumeration_type";
    case DW_TAG_formal_parameter:          return "TAG_formal_parameter";
    case DW_TAG_imported_declaration:      return "TAG_imported_declaration";
    case DW_TAG_label:                     return "TAG_label";
    case DW_TAG_lexical_block:             return "TAG_lexical_block";
    case DW_TAG_member:                    return "TAG_member";
    case DW_TAG_pointer_type:              return "TAG_pointer_type";
    case DW_TAG_reference_type:            return "TAG_reference_type";
    case DW_TAG_compile_unit:              return "TAG_compile_unit";
    case DW_TAG_string_type:               return "TAG_string_type";
    case DW_TAG_structure_type:            return "TAG_structure_type";
    case DW_TAG_subroutine_type:           return "TAG_subroutine_type";
    case DW_TAG_typedef:                   return "TAG_typedef";
    case DW_TAG_union_type:                return "TAG_union_type";
    case DW_TAG_unspecified_parameters:    return "TAG_unspecified_parameters";
    case DW_TAG_variant:                   return "TAG_variant";
    case DW_TAG_common_block:              return "TAG_common_block";
    case DW_TAG_common_inclusion:          return "TAG_common_inclusion";
    case DW_TAG_inheritance:               return "TAG_inheritance";
    case DW_TAG_inlined_subroutine:        return "TAG_inlined_subroutine";
    case DW_TAG_module:                    return "TAG_module";
    case DW_TAG_ptr_to_member_type:        return "TAG_ptr_to_member_type";
    case DW_TAG_set_type:                  return "TAG_set_type";
    case DW_TAG_subrange_type:             return "TAG_subrange_type";
    case DW_TAG_with_stmt:                 return "TAG_with_stmt";
    case DW_TAG_access_declaration:        return "TAG_access_declaration";
    case DW_TAG_base_type:                 return "TAG_base_type";
    case DW_TAG_catch_block:               return "TAG_catch_block";
    case DW_TAG_const_type:                return "TAG_const_type";
    case DW_TAG_constant:                  return "TAG_constant";
    case DW_TAG_enumerator:                return "TAG_enumerator";
    case DW_TAG_file_type:                 return "TAG_file_type";
    case DW_TAG_friend:                    return "TAG_friend";
    case DW_TAG_namelist:                  return "TAG_namelist";
    case DW_TAG_namelist_item:             return "TAG_namelist_item";
    case DW_TAG_packed_type:               return "TAG_packed_type";
    case DW_TAG_subprogram:                return "TAG_subprogram";
    case DW_TAG_template_type_parameter:   return "TAG_template_type_parameter";
    case DW_TAG_template_value_parameter: return "TAG_template_value_parameter";
    case DW_TAG_thrown_type:               return "TAG_thrown_type";
    case DW_TAG_try_block:                 return "TAG_try_block";
    case DW_TAG_variant_part:              return "TAG_variant_part";
    case DW_TAG_variable:                  return "TAG_variable";
    case DW_TAG_volatile_type:             return "TAG_volatile_type";
    case DW_TAG_dwarf_procedure:           return "TAG_dwarf_procedure";
    case DW_TAG_restrict_type:             return "TAG_restrict_type";
    case DW_TAG_interface_type:            return "TAG_interface_type";
    case DW_TAG_namespace:                 return "TAG_namespace";
    case DW_TAG_imported_module:           return "TAG_imported_module";
    case DW_TAG_unspecified_type:          return "TAG_unspecified_type";
    case DW_TAG_partial_unit:              return "TAG_partial_unit";
    case DW_TAG_imported_unit:             return "TAG_imported_unit";
    case DW_TAG_condition:                 return "TAG_condition";
    case DW_TAG_shared_type:               return "TAG_shared_type";
    case DW_TAG_lo_user:                   return "TAG_lo_user";
    case DW_TAG_hi_user:                   return "TAG_hi_user";
  }
  assert(0 && "Unknown Dwarf Tag");
  return "";
}

/// ChildrenString - Return the string for the specified children flag.
///
const char *ChildrenString(unsigned Children) {
  switch(Children) {
    case DW_CHILDREN_no:                   return "CHILDREN_no";
    case DW_CHILDREN_yes:                  return "CHILDREN_yes";
  }
  assert(0 && "Unknown Dwarf ChildrenFlag");
  return "";
}

/// AttributeString - Return the string for the specified attribute.
///
const char *AttributeString(unsigned Attribute) {
  switch(Attribute) {
    case DW_AT_sibling:                    return "AT_sibling";
    case DW_AT_location:                   return "AT_location";
    case DW_AT_name:                       return "AT_name";
    case DW_AT_ordering:                   return "AT_ordering";
    case DW_AT_byte_size:                  return "AT_byte_size";
    case DW_AT_bit_offset:                 return "AT_bit_offset";
    case DW_AT_bit_size:                   return "AT_bit_size";
    case DW_AT_stmt_list:                  return "AT_stmt_list";
    case DW_AT_low_pc:                     return "AT_low_pc";
    case DW_AT_high_pc:                    return "AT_high_pc";
    case DW_AT_language:                   return "AT_language";
    case DW_AT_discr:                      return "AT_discr";
    case DW_AT_discr_value:                return "AT_discr_value";
    case DW_AT_visibility:                 return "AT_visibility";
    case DW_AT_import:                     return "AT_import";
    case DW_AT_string_length:              return "AT_string_length";
    case DW_AT_common_reference:           return "AT_common_reference";
    case DW_AT_comp_dir:                   return "AT_comp_dir";
    case DW_AT_const_value:                return "AT_const_value";
    case DW_AT_containing_type:            return "AT_containing_type";
    case DW_AT_default_value:              return "AT_default_value";
    case DW_AT_inline:                     return "AT_inline";
    case DW_AT_is_optional:                return "AT_is_optional";
    case DW_AT_lower_bound:                return "AT_lower_bound";
    case DW_AT_producer:                   return "AT_producer";
    case DW_AT_prototyped:                 return "AT_prototyped";
    case DW_AT_return_addr:                return "AT_return_addr";
    case DW_AT_start_scope:                return "AT_start_scope";
    case DW_AT_bit_stride:                 return "AT_bit_stride";
    case DW_AT_upper_bound:                return "AT_upper_bound";
    case DW_AT_abstract_origin:            return "AT_abstract_origin";
    case DW_AT_accessibility:              return "AT_accessibility";
    case DW_AT_address_class:              return "AT_address_class";
    case DW_AT_artificial:                 return "AT_artificial";
    case DW_AT_base_types:                 return "AT_base_types";
    case DW_AT_calling_convention:         return "AT_calling_convention";
    case DW_AT_count:                      return "AT_count";
    case DW_AT_data_member_location:       return "AT_data_member_location";
    case DW_AT_decl_column:                return "AT_decl_column";
    case DW_AT_decl_file:                  return "AT_decl_file";
    case DW_AT_decl_line:                  return "AT_decl_line";
    case DW_AT_declaration:                return "AT_declaration";
    case DW_AT_discr_list:                 return "AT_discr_list";
    case DW_AT_encoding:                   return "AT_encoding";
    case DW_AT_external:                   return "AT_external";
    case DW_AT_frame_base:                 return "AT_frame_base";
    case DW_AT_friend:                     return "AT_friend";
    case DW_AT_identifier_case:            return "AT_identifier_case";
    case DW_AT_macro_info:                 return "AT_macro_info";
    case DW_AT_namelist_item:              return "AT_namelist_item";
    case DW_AT_priority:                   return "AT_priority";
    case DW_AT_segment:                    return "AT_segment";
    case DW_AT_specification:              return "AT_specification";
    case DW_AT_static_link:                return "AT_static_link";
    case DW_AT_type:                       return "AT_type";
    case DW_AT_use_location:               return "AT_use_location";
    case DW_AT_variable_parameter:         return "AT_variable_parameter";
    case DW_AT_virtuality:                 return "AT_virtuality";
    case DW_AT_vtable_elem_location:       return "AT_vtable_elem_location";
    case DW_AT_allocated:                  return "AT_allocated";
    case DW_AT_associated:                 return "AT_associated";
    case DW_AT_data_location:              return "AT_data_location";
    case DW_AT_byte_stride:                return "AT_byte_stride";
    case DW_AT_entry_pc:                   return "AT_entry_pc";
    case DW_AT_use_UTF8:                   return "AT_use_UTF8";
    case DW_AT_extension:                  return "AT_extension";
    case DW_AT_ranges:                     return "AT_ranges";
    case DW_AT_trampoline:                 return "AT_trampoline";
    case DW_AT_call_column:                return "AT_call_column";
    case DW_AT_call_file:                  return "AT_call_file";
    case DW_AT_call_line:                  return "AT_call_line";
    case DW_AT_description:                return "AT_description";
    case DW_AT_binary_scale:               return "AT_binary_scale";
    case DW_AT_decimal_scale:              return "AT_decimal_scale";
    case DW_AT_small:                      return "AT_small";
    case DW_AT_decimal_sign:               return "AT_decimal_sign";
    case DW_AT_digit_count:                return "AT_digit_count";
    case DW_AT_picture_string:             return "AT_picture_string";
    case DW_AT_mutable:                    return "AT_mutable";
    case DW_AT_threads_scaled:             return "AT_threads_scaled";
    case DW_AT_explicit:                   return "AT_explicit";
    case DW_AT_object_pointer:             return "AT_object_pointer";
    case DW_AT_endianity:                  return "AT_endianity";
    case DW_AT_elemental:                  return "AT_elemental";
    case DW_AT_pure:                       return "AT_pure";
    case DW_AT_recursive:                  return "AT_recursive";
    case DW_AT_MIPS_linkage_name:          return "AT_MIPS_linkage_name";
    case DW_AT_sf_names:                   return "AT_sf_names";
    case DW_AT_src_info:                   return "AT_src_info";
    case DW_AT_mac_info:                   return "AT_mac_info";
    case DW_AT_src_coords:                 return "AT_src_coords";
    case DW_AT_body_begin:                 return "AT_body_begin";
    case DW_AT_body_end:                   return "AT_body_end";
    case DW_AT_GNU_vector:                 return "AT_GNU_vector";
    case DW_AT_lo_user:                    return "AT_lo_user";
    case DW_AT_hi_user:                    return "AT_hi_user";
  }
  assert(0 && "Unknown Dwarf Attribute");
  return "";
}

/// FormEncodingString - Return the string for the specified form encoding.
///
const char *FormEncodingString(unsigned Encoding) {
  switch(Encoding) {
    case DW_FORM_addr:                     return "FORM_addr";
    case DW_FORM_block2:                   return "FORM_block2";
    case DW_FORM_block4:                   return "FORM_block4";
    case DW_FORM_data2:                    return "FORM_data2";
    case DW_FORM_data4:                    return "FORM_data4";
    case DW_FORM_data8:                    return "FORM_data8";
    case DW_FORM_string:                   return "FORM_string";
    case DW_FORM_block:                    return "FORM_block";
    case DW_FORM_block1:                   return "FORM_block1";
    case DW_FORM_data1:                    return "FORM_data1";
    case DW_FORM_flag:                     return "FORM_flag";
    case DW_FORM_sdata:                    return "FORM_sdata";
    case DW_FORM_strp:                     return "FORM_strp";
    case DW_FORM_udata:                    return "FORM_udata";
    case DW_FORM_ref_addr:                 return "FORM_ref_addr";
    case DW_FORM_ref1:                     return "FORM_ref1";
    case DW_FORM_ref2:                     return "FORM_ref2";
    case DW_FORM_ref4:                     return "FORM_ref4";
    case DW_FORM_ref8:                     return "FORM_ref8";
    case DW_FORM_ref_udata:                return "FORM_ref_udata";
    case DW_FORM_indirect:                 return "FORM_indirect";
  }
  assert(0 && "Unknown Dwarf Form Encoding");
  return "";
}

/// OperationEncodingString - Return the string for the specified operation
/// encoding.
const char *OperationEncodingString(unsigned Encoding) {
  switch(Encoding) {
    case DW_OP_addr:                       return "OP_addr";
    case DW_OP_deref:                      return "OP_deref";
    case DW_OP_const1u:                    return "OP_const1u";
    case DW_OP_const1s:                    return "OP_const1s";
    case DW_OP_const2u:                    return "OP_const2u";
    case DW_OP_const2s:                    return "OP_const2s";
    case DW_OP_const4u:                    return "OP_const4u";
    case DW_OP_const4s:                    return "OP_const4s";
    case DW_OP_const8u:                    return "OP_const8u";
    case DW_OP_const8s:                    return "OP_const8s";
    case DW_OP_constu:                     return "OP_constu";
    case DW_OP_consts:                     return "OP_consts";
    case DW_OP_dup:                        return "OP_dup";
    case DW_OP_drop:                       return "OP_drop";
    case DW_OP_over:                       return "OP_over";
    case DW_OP_pick:                       return "OP_pick";
    case DW_OP_swap:                       return "OP_swap";
    case DW_OP_rot:                        return "OP_rot";
    case DW_OP_xderef:                     return "OP_xderef";
    case DW_OP_abs:                        return "OP_abs";
    case DW_OP_and:                        return "OP_and";
    case DW_OP_div:                        return "OP_div";
    case DW_OP_minus:                      return "OP_minus";
    case DW_OP_mod:                        return "OP_mod";
    case DW_OP_mul:                        return "OP_mul";
    case DW_OP_neg:                        return "OP_neg";
    case DW_OP_not:                        return "OP_not";
    case DW_OP_or:                         return "OP_or";
    case DW_OP_plus:                       return "OP_plus";
    case DW_OP_plus_uconst:                return "OP_plus_uconst";
    case DW_OP_shl:                        return "OP_shl";
    case DW_OP_shr:                        return "OP_shr";
    case DW_OP_shra:                       return "OP_shra";
    case DW_OP_xor:                        return "OP_xor";
    case DW_OP_skip:                       return "OP_skip";
    case DW_OP_bra:                        return "OP_bra";
    case DW_OP_eq:                         return "OP_eq";
    case DW_OP_ge:                         return "OP_ge";
    case DW_OP_gt:                         return "OP_gt";
    case DW_OP_le:                         return "OP_le";
    case DW_OP_lt:                         return "OP_lt";
    case DW_OP_ne:                         return "OP_ne";
    case DW_OP_lit0:                       return "OP_lit0";
    case DW_OP_lit1:                       return "OP_lit1";
    case DW_OP_lit31:                      return "OP_lit31";
    case DW_OP_reg0:                       return "OP_reg0";
    case DW_OP_reg1:                       return "OP_reg1";
    case DW_OP_reg31:                      return "OP_reg31";
    case DW_OP_breg0:                      return "OP_breg0";
    case DW_OP_breg1:                      return "OP_breg1";
    case DW_OP_breg31:                     return "OP_breg31";
    case DW_OP_regx:                       return "OP_regx";
    case DW_OP_fbreg:                      return "OP_fbreg";
    case DW_OP_bregx:                      return "OP_bregx";
    case DW_OP_piece:                      return "OP_piece";
    case DW_OP_deref_size:                 return "OP_deref_size";
    case DW_OP_xderef_size:                return "OP_xderef_size";
    case DW_OP_nop:                        return "OP_nop";
    case DW_OP_push_object_address:        return "OP_push_object_address";
    case DW_OP_call2:                      return "OP_call2";
    case DW_OP_call4:                      return "OP_call4";
    case DW_OP_call_ref:                   return "OP_call_ref";
    case DW_OP_form_tls_address:           return "OP_form_tls_address";
    case DW_OP_call_frame_cfa:             return "OP_call_frame_cfa";
    case DW_OP_lo_user:                    return "OP_lo_user";
    case DW_OP_hi_user:                    return "OP_hi_user";
  }
  assert(0 && "Unknown Dwarf Operation Encoding");
  return "";
}

/// AttributeEncodingString - Return the string for the specified attribute
/// encoding.
const char *AttributeEncodingString(unsigned Encoding) {
  switch(Encoding) {
    case DW_ATE_address:                   return "ATE_address";
    case DW_ATE_boolean:                   return "ATE_boolean";
    case DW_ATE_complex_float:             return "ATE_complex_float";
    case DW_ATE_float:                     return "ATE_float";
    case DW_ATE_signed:                    return "ATE_signed";
    case DW_ATE_signed_char:               return "ATE_signed_char";
    case DW_ATE_unsigned:                  return "ATE_unsigned";
    case DW_ATE_unsigned_char:             return "ATE_unsigned_char";
    case DW_ATE_imaginary_float:           return "ATE_imaginary_float";
    case DW_ATE_packed_decimal:            return "ATE_packed_decimal";
    case DW_ATE_numeric_string:            return "ATE_numeric_string";
    case DW_ATE_edited:                    return "ATE_edited";
    case DW_ATE_signed_fixed:              return "ATE_signed_fixed";
    case DW_ATE_unsigned_fixed:            return "ATE_unsigned_fixed";
    case DW_ATE_decimal_float:             return "ATE_decimal_float";
    case DW_ATE_lo_user:                   return "ATE_lo_user";
    case DW_ATE_hi_user:                   return "ATE_hi_user";
  }
  assert(0 && "Unknown Dwarf Attribute Encoding");
  return "";
}

/// DecimalSignString - Return the string for the specified decimal sign
/// attribute.
const char *DecimalSignString(unsigned Sign) {
  switch(Sign) {
    case DW_DS_unsigned:                   return "DS_unsigned";
    case DW_DS_leading_overpunch:          return "DS_leading_overpunch";
    case DW_DS_trailing_overpunch:         return "DS_trailing_overpunch";
    case DW_DS_leading_separate:           return "DS_leading_separate";
    case DW_DS_trailing_separate:          return "DS_trailing_separate";
  }
  assert(0 && "Unknown Dwarf Decimal Sign Attribute");
  return "";
}

/// EndianityString - Return the string for the specified endianity.
///
const char *EndianityString(unsigned Endian) {
  switch(Endian) {
    case DW_END_default:                   return "END_default";
    case DW_END_big:                       return "END_big";
    case DW_END_little:                    return "END_little";
    case DW_END_lo_user:                   return "END_lo_user";
    case DW_END_hi_user:                   return "END_hi_user";
  }
  assert(0 && "Unknown Dwarf Endianity");
  return "";
}

/// AccessibilityString - Return the string for the specified accessibility.
///
const char *AccessibilityString(unsigned Access) {
  switch(Access) {
    // Accessibility codes
    case DW_ACCESS_public:                 return "ACCESS_public";
    case DW_ACCESS_protected:              return "ACCESS_protected";
    case DW_ACCESS_private:                return "ACCESS_private";
  }
  assert(0 && "Unknown Dwarf Accessibility");
  return "";
}

/// VisibilityString - Return the string for the specified visibility.
///
const char *VisibilityString(unsigned Visibility) {
  switch(Visibility) {
    case DW_VIS_local:                     return "VIS_local";
    case DW_VIS_exported:                  return "VIS_exported";
    case DW_VIS_qualified:                 return "VIS_qualified";
  }
  assert(0 && "Unknown Dwarf Visibility");
  return "";
}

/// VirtualityString - Return the string for the specified virtuality.
///
const char *VirtualityString(unsigned Virtuality) {
  switch(Virtuality) {
    case DW_VIRTUALITY_none:               return "VIRTUALITY_none";
    case DW_VIRTUALITY_virtual:            return "VIRTUALITY_virtual";
    case DW_VIRTUALITY_pure_virtual:       return "VIRTUALITY_pure_virtual";
  }
  assert(0 && "Unknown Dwarf Virtuality");
  return "";
}

/// LanguageString - Return the string for the specified language.
///
const char *LanguageString(unsigned Language) {
  switch(Language) {
    case DW_LANG_C89:                      return "LANG_C89";
    case DW_LANG_C:                        return "LANG_C";
    case DW_LANG_Ada83:                    return "LANG_Ada83";
    case DW_LANG_C_plus_plus:              return "LANG_C_plus_plus";
    case DW_LANG_Cobol74:                  return "LANG_Cobol74";
    case DW_LANG_Cobol85:                  return "LANG_Cobol85";
    case DW_LANG_Fortran77:                return "LANG_Fortran77";
    case DW_LANG_Fortran90:                return "LANG_Fortran90";
    case DW_LANG_Pascal83:                 return "LANG_Pascal83";
    case DW_LANG_Modula2:                  return "LANG_Modula2";
    case DW_LANG_Java:                     return "LANG_Java";
    case DW_LANG_C99:                      return "LANG_C99";
    case DW_LANG_Ada95:                    return "LANG_Ada95";
    case DW_LANG_Fortran95:                return "LANG_Fortran95";
    case DW_LANG_PLI:                      return "LANG_PLI";
    case DW_LANG_ObjC:                     return "LANG_ObjC";
    case DW_LANG_ObjC_plus_plus:           return "LANG_ObjC_plus_plus";
    case DW_LANG_UPC:                      return "LANG_UPC";
    case DW_LANG_D:                        return "LANG_D";
    case DW_LANG_lo_user:                  return "LANG_lo_user";
    case DW_LANG_hi_user:                  return "LANG_hi_user";
  }
  assert(0 && "Unknown Dwarf Language");
  return "";
}

/// CaseString - Return the string for the specified identifier case.
///
const char *CaseString(unsigned Case) {
   switch(Case) {
    case DW_ID_case_sensitive:             return "ID_case_sensitive";
    case DW_ID_up_case:                    return "ID_up_case";
    case DW_ID_down_case:                  return "ID_down_case";
    case DW_ID_case_insensitive:           return "ID_case_insensitive";
  }
  assert(0 && "Unknown Dwarf Identifier Case");
  return "";
}

/// ConventionString - Return the string for the specified calling convention.
///
const char *ConventionString(unsigned Convention) {
   switch(Convention) {
    case DW_CC_normal:                     return "CC_normal";
    case DW_CC_program:                    return "CC_program";
    case DW_CC_nocall:                     return "CC_nocall";
    case DW_CC_lo_user:                    return "CC_lo_user";
    case DW_CC_hi_user:                    return "CC_hi_user";
  }
  assert(0 && "Unknown Dwarf Calling Convention");
  return "";
}

/// InlineCodeString - Return the string for the specified inline code.
///
const char *InlineCodeString(unsigned Code) {
   switch(Code) {
    case DW_INL_not_inlined:               return "INL_not_inlined";
    case DW_INL_inlined:                   return "INL_inlined";
    case DW_INL_declared_not_inlined:      return "INL_declared_not_inlined";
    case DW_INL_declared_inlined:          return "INL_declared_inlined";
  }
  assert(0 && "Unknown Dwarf Inline Code");
  return "";
}

/// ArrayOrderString - Return the string for the specified array order.
///
const char *ArrayOrderString(unsigned Order) {
   switch(Order) {
    case DW_ORD_row_major:                 return "ORD_row_major";
    case DW_ORD_col_major:                 return "ORD_col_major";
  }
  assert(0 && "Unknown Dwarf Array Order");
  return "";
}

/// DiscriminantString - Return the string for the specified discriminant
/// descriptor.
const char *DiscriminantString(unsigned Discriminant) {
   switch(Discriminant) {
    case DW_DSC_label:                     return "DSC_label";
    case DW_DSC_range:                     return "DSC_range";
  }
  assert(0 && "Unknown Dwarf Discriminant Descriptor");
  return "";
}

/// LNStandardString - Return the string for the specified line number standard.
///
const char *LNStandardString(unsigned Standard) {
   switch(Standard) {
    case DW_LNS_copy:                      return "LNS_copy";
    case DW_LNS_advance_pc:                return "LNS_advance_pc";
    case DW_LNS_advance_line:              return "LNS_advance_line";
    case DW_LNS_set_file:                  return "LNS_set_file";
    case DW_LNS_set_column:                return "LNS_set_column";
    case DW_LNS_negate_stmt:               return "LNS_negate_stmt";
    case DW_LNS_set_basic_block:           return "LNS_set_basic_block";
    case DW_LNS_const_add_pc:              return "LNS_const_add_pc";
    case DW_LNS_fixed_advance_pc:          return "LNS_fixed_advance_pc";
    case DW_LNS_set_prologue_end:          return "LNS_set_prologue_end";
    case DW_LNS_set_epilogue_begin:        return "LNS_set_epilogue_begin";
    case DW_LNS_set_isa:                   return "LNS_set_isa";
  }
  assert(0 && "Unknown Dwarf Line Number Standard");
  return "";
}

/// LNExtendedString - Return the string for the specified line number extended
/// opcode encodings.
const char *LNExtendedString(unsigned Encoding) {
   switch(Encoding) {
    // Line Number Extended Opcode Encodings
    case DW_LNE_end_sequence:              return "LNE_end_sequence";
    case DW_LNE_set_address:               return "LNE_set_address";
    case DW_LNE_define_file:               return "LNE_define_file";
    case DW_LNE_lo_user:                   return "LNE_lo_user";
    case DW_LNE_hi_user:                   return "LNE_hi_user";
  }
  assert(0 && "Unknown Dwarf Line Number Extended Opcode Encoding");
  return "";
}

/// MacinfoString - Return the string for the specified macinfo type encodings.
///
const char *MacinfoString(unsigned Encoding) {
   switch(Encoding) {
    // Macinfo Type Encodings
    case DW_MACINFO_define:                return "MACINFO_define";
    case DW_MACINFO_undef:                 return "MACINFO_undef";
    case DW_MACINFO_start_file:            return "MACINFO_start_file";
    case DW_MACINFO_end_file:              return "MACINFO_end_file";
    case DW_MACINFO_vendor_ext:            return "MACINFO_vendor_ext";
  }
  assert(0 && "Unknown Dwarf Macinfo Type Encodings");
  return "";
}

/// CallFrameString - Return the string for the specified call frame instruction
/// encodings.
const char *CallFrameString(unsigned Encoding) {
   switch(Encoding) {
    case DW_CFA_advance_loc:               return "CFA_advance_loc";
    case DW_CFA_offset:                    return "CFA_offset";
    case DW_CFA_restore:                   return "CFA_restore";
    case DW_CFA_set_loc:                   return "CFA_set_loc";
    case DW_CFA_advance_loc1:              return "CFA_advance_loc1";
    case DW_CFA_advance_loc2:              return "CFA_advance_loc2";
    case DW_CFA_advance_loc4:              return "CFA_advance_loc4";
    case DW_CFA_offset_extended:           return "CFA_offset_extended";
    case DW_CFA_restore_extended:          return "CFA_restore_extended";
    case DW_CFA_undefined:                 return "CFA_undefined";
    case DW_CFA_same_value:                return "CFA_same_value";
    case DW_CFA_register:                  return "CFA_register";
    case DW_CFA_remember_state:            return "CFA_remember_state";
    case DW_CFA_restore_state:             return "CFA_restore_state";
    case DW_CFA_def_cfa:                   return "CFA_def_cfa";
    case DW_CFA_def_cfa_register:          return "CFA_def_cfa_register";
    case DW_CFA_def_cfa_offset:            return "CFA_def_cfa_offset";
    case DW_CFA_def_cfa_expression:        return "CFA_def_cfa_expression";
    case DW_CFA_expression:                return "CFA_expression";
    case DW_CFA_offset_extended_sf:        return "CFA_offset_extended_sf";
    case DW_CFA_def_cfa_sf:                return "CFA_def_cfa_sf";
    case DW_CFA_def_cfa_offset_sf:         return "CFA_def_cfa_offset_sf";
    case DW_CFA_val_offset:                return "CFA_val_offset";
    case DW_CFA_val_offset_sf:             return "CFA_val_offset_sf";
    case DW_CFA_val_expression:            return "CFA_val_expression";
    case DW_CFA_lo_user:                   return "CFA_lo_user";
    case DW_CFA_hi_user:                   return "CFA_hi_user";
  }
  assert(0 && "Unknown Dwarf Call Frame Instruction Encodings");
  return "";
}

} // End of namespace dwarf.

} // End of namespace llvm.

DEFINING_FILE_FOR(SupportDwarf)
