-static int MC_dwarf_get_variable_index(xbt_dynar_t variables, const char *var,
- void *address)
-{
-
- if (xbt_dynar_is_empty(variables))
- return 0;
-
- unsigned int cursor = 0;
- int start = 0;
- int end = xbt_dynar_length(variables) - 1;
- mc_variable_t var_test = NULL;
-
- while (start <= end) {
- cursor = (start + end) / 2;
- var_test =
- (mc_variable_t) xbt_dynar_get_as(variables, cursor, mc_variable_t);
- if (strcmp(var_test->name.c_str(), var) < 0) {
- start = cursor + 1;
- } else if (strcmp(var_test->name.c_str(), var) > 0) {
- end = cursor - 1;
- } else {
- if (address) { /* global variable */
- if (var_test->address == address)
- return -1;
- if (var_test->address > address)
- end = cursor - 1;
- else
- start = cursor + 1;
- } else { /* local variable */
- return -1;
- }
- }
- }
-
- if (strcmp(var_test->name.c_str(), var) == 0) {
- if (address && var_test->address < address)
- return cursor + 1;
- else
- return cursor;
- } else if (strcmp(var_test->name.c_str(), var) < 0)
- return cursor + 1;
- else
- return cursor;
-
-}
-
-void MC_dwarf_register_global_variable(mc_object_info_t info,
- mc_variable_t variable)
-{
- int index =
- MC_dwarf_get_variable_index(info->global_variables,
- variable->name.c_str(),
- variable->address);
- if (index != -1)
- xbt_dynar_insert_at(info->global_variables, index, &variable);
- // TODO, else ?
-}
-
-void MC_dwarf_register_non_global_variable(mc_object_info_t info,
- mc_frame_t frame,
- mc_variable_t variable)