- frame_found = 0;
- cursor = 0;
-
- xbt_dict_foreach(frame->variables, dict_cursor, variable_name, current_variable){
- if(current_variable->location != NULL){
- switch(current_variable->location->type){
- case e_dw_compose:
- xbt_dynar_reset(compose);
- cursor = 0;
- while(cursor < xbt_dynar_length(current_variable->location->location.compose)){
- location_entry = xbt_dynar_get_as(current_variable->location->location.compose, cursor, dw_location_t);
- switch(location_entry->type){
- case e_dw_register:
- unw_get_reg(&c, location_entry->location.reg, &res);
- add_value(&compose, "value", (long)res);
- break;
- case e_dw_bregister_op:
- unw_get_reg(&c, location_entry->location.breg_op.reg, &res);
- add_value(&compose, "address", (long)res + location_entry->location.breg_op.offset);
- break;
- case e_dw_fbregister_op:
- if(frame_pointer_address != NULL)
- add_value(&compose, "address", (long)((char *)frame_pointer_address + location_entry->location.fbreg_op));
- break;
- default:
- xbt_dynar_reset(compose);
- break;
- }
- cursor++;
- }
-
- if(!xbt_dynar_is_empty(compose)){
- if(strcmp(xbt_dynar_get_as(compose, xbt_dynar_length(compose) - 1, variable_value_t)->type, "value") == 0){
- to_append = bprintf("%s=%lx\n", current_variable->name, xbt_dynar_get_as(compose, xbt_dynar_length(compose) - 1, variable_value_t)->value.res);
- xbt_strbuff_append(variables, to_append);
- xbt_free(to_append);
- }else{
- if((long)xbt_dynar_get_as(compose, xbt_dynar_length(compose) - 1,variable_value_t)->value.address < 0 || *((void**)xbt_dynar_get_as(compose, xbt_dynar_length(compose) - 1,variable_value_t)->value.address) == NULL){
- to_append = bprintf("%s=NULL\n", current_variable->name);
- xbt_strbuff_append(variables, to_append);
- xbt_free(to_append);
- }else if(((long)*((void**)xbt_dynar_get_as(compose, xbt_dynar_length(compose) - 1,variable_value_t)->value.address) > 0xffffffff) || ((long)*((void**)xbt_dynar_get_as(compose, xbt_dynar_length(compose) - 1,variable_value_t)->value.address) < (long)start_text_binary)){
- to_append = bprintf("%s=%u\n", current_variable->name, (unsigned int)(long)*((void**)xbt_dynar_get_as(compose, xbt_dynar_length(compose) - 1, variable_value_t)->value.address));
- xbt_strbuff_append(variables, to_append);
- xbt_free(to_append);
- }else{
- to_append = bprintf("%s=%p\n", current_variable->name, *((void**)xbt_dynar_get_as(compose, xbt_dynar_length(compose) - 1, variable_value_t)->value.address));
- xbt_strbuff_append(variables, to_append);
- xbt_free(to_append);
- }
- }
- xbt_dynar_reset(compose);
- }else{
- to_append = bprintf("%s=undefined\n", current_variable->name);
- xbt_strbuff_append(variables, to_append);
- xbt_free(to_append);
- }
- break;
- default :
- break;
- }
- }else{
- to_append = bprintf("%s=undefined\n", current_variable->name);
- xbt_strbuff_append(variables, to_append);
- xbt_free(to_append);
- }
- }
-
- ret = unw_step(&c);
-