Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add explicit cast for negative to unsigned conversion.
[simgrid.git] / src / mc / mc_dwarf.cpp
index daedf1a..580b8f5 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008-2017. The SimGrid Team.
+/* Copyright (c) 2008-2018. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -267,24 +267,6 @@ static const char *MC_dwarf_attr_integrate_string(Dwarf_Die * die,
     return dwarf_formstring(&attr);
 }
 
-/** \brief Get the linkage name of a DIE.
- *
- *  Use either DW_AT_linkage_name or DW_AT_MIPS_linkage_name.
- *  DW_AT_linkage_name is standardized since DWARF 4.
- *  Before this version of DWARF, the MIPS extensions
- *  DW_AT_MIPS_linkage_name is used (at least by GCC).
- *
- *  \param  the DIE
- *  \return linkage name of the given DIE (or nullptr)
- * */
-static const char *MC_dwarf_at_linkage_name(Dwarf_Die * die)
-{
-  const char *name = MC_dwarf_attr_integrate_string(die, DW_AT_linkage_name);
-  if (not name)
-    name = MC_dwarf_attr_integrate_string(die, DW_AT_MIPS_linkage_name);
-  return name;
-}
-
 static Dwarf_Off MC_dwarf_attr_dieoffset(Dwarf_Die * die, int attribute)
 {
   Dwarf_Attribute attr;
@@ -312,7 +294,7 @@ static Dwarf_Off MC_dwarf_attr_integrate_dieoffset(Dwarf_Die * die,
 
 /** \brief Find the type/subtype (DW_AT_type) for a DIE
  *
- *  \param dit the DIE
+ *  \param die the DIE
  *  \return DW_AT_type reference as a global offset in hexadecimal (or nullptr)
  */
 static
@@ -421,12 +403,11 @@ static uint64_t MC_dwarf_subrange_element_count(Dwarf_Die * die,
     // This is not really 0, but the code expects this (we do not know):
     return 0;
 
-  uint64_t upper_bound =
-      MC_dwarf_attr_integrate_uint(die, DW_AT_upper_bound, -1);
+  uint64_t upper_bound = MC_dwarf_attr_integrate_uint(die, DW_AT_upper_bound, static_cast<uint64_t>(-1));
 
   uint64_t lower_bound = 0;
   if (dwarf_hasattr_integrate(die, DW_AT_lower_bound))
-    lower_bound = MC_dwarf_attr_integrate_uint(die, DW_AT_lower_bound, -1);
+    lower_bound = MC_dwarf_attr_integrate_uint(die, DW_AT_lower_bound, static_cast<uint64_t>(-1));
   else
     lower_bound = MC_dwarf_default_lower_bound(dwarf_srclang(unit));
   return upper_bound - lower_bound + 1;
@@ -621,7 +602,7 @@ static void MC_dwarf_add_members(simgrid::mc::ObjectInformation* info, Dwarf_Die
 /** \brief Create a MC type object from a DIE
  *
  *  \param info current object info object
- *  \param DIE (for a given type)
+ *  \param die DIE (for a given type)
  *  \param unit compilation unit of the current DIE
  *  \return MC representation of the type
  */
@@ -681,10 +662,6 @@ static simgrid::mc::Type MC_dwarf_die_to_type(
   }
 
   switch (type.type) {
-  default:
-    XBT_DEBUG("Unhandled type: %d (%s)", type.type, simgrid::dwarf::tagname(type.type));
-    break;
-
   case DW_TAG_array_type:
     type.element_count = MC_dwarf_array_element_count(die, unit);
     // TODO, handle DW_byte_stride and (not) DW_bit_stride
@@ -699,8 +676,12 @@ static simgrid::mc::Type MC_dwarf_die_to_type(
   case DW_TAG_union_type:
   case DW_TAG_class_type:
     MC_dwarf_add_members(info, die, unit, &type);
-    std::string new_ns = ns ? simgrid::xbt::string_printf("%s::%s", ns, name) : type.name;
-    MC_dwarf_handle_children(info, die, unit, frame, new_ns.c_str());
+    MC_dwarf_handle_children(info, die, unit, frame,
+                             ns ? simgrid::xbt::string_printf("%s::%s", ns, name).c_str() : type.name.c_str());
+    break;
+
+  default:
+    XBT_DEBUG("Unhandled type: %d (%s)", type.type, simgrid::dwarf::tagname(type.type));
     break;
   }
 
@@ -1231,17 +1212,6 @@ void MC_load_dwarf(simgrid::mc::ObjectInformation* info)
 
 // ***** Functions index
 
-static int MC_compare_frame_index_items(simgrid::mc::FunctionIndexEntry* a,
-                                        simgrid::mc::FunctionIndexEntry* b)
-{
-  if (a->low_pc < b->low_pc)
-    return -1;
-  else if (a->low_pc == b->low_pc)
-    return 0;
-  else
-    return 1;
-}
-
 static void MC_make_functions_index(simgrid::mc::ObjectInformation* info)
 {
   info->functions_index.clear();