From patchwork Fri Apr 24 12:55:36 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Palka X-Patchwork-Id: 6421 Received: (qmail 54436 invoked by alias); 24 Apr 2015 12:55:50 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 54426 invoked by uid 89); 24 Apr 2015 12:55:49 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 X-HELO: mail-vn0-f54.google.com Received: from mail-vn0-f54.google.com (HELO mail-vn0-f54.google.com) (209.85.216.54) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Fri, 24 Apr 2015 12:55:47 +0000 Received: by vnbf129 with SMTP id f129so3861184vnb.9 for ; Fri, 24 Apr 2015 05:55:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=nWHsrD5haS+4nbLDWS0cec/9iOyatmRPWn0PXyMcEIM=; b=jkvshqEn+9FO2kTX+ISYL0GpkqDesgew5E/OTKrOZtFGSoyVV65l5s7EFpdd1o6ALs WTiHNYYW2XMumYTzuP2Fx32yLyutzABGQeu68eLF3w0ouhQbX3cqzMmLK+rkRAinP4gM uLeF81BmXN8YIhl9VXLkJfmQBmIX3ZIL9Enh87vPEp6X3gKcrlRr1XBisVva5DuKaVM0 pghlYyLqw4yQBZG9tsPiBpfg9xJ0Sac+iprh/eBlWsQfj2QcAvjfWUF1cyHNUKHfh1KE TV+rSC/oZz/nYmHuPS/F6+23D3e1wSNCZ0TfG91g3eZDwnE0FlUEhKu+sSeHfIcmRcu1 K2rw== X-Gm-Message-State: ALoCoQnSBOQ1GsoRecW2WZPPPzfqG0uqm4kGbnIc8YxOUGVpxW/VWLpKWny9PGYAaNHo4ClXroI3 X-Received: by 10.52.137.112 with SMTP id qh16mr7374159vdb.44.1429880144836; Fri, 24 Apr 2015 05:55:44 -0700 (PDT) Received: from localhost.localdomain (ool-4353acd8.dyn.optonline.net. [67.83.172.216]) by mx.google.com with ESMTPSA id m1sm4227998vdm.5.2015.04.24.05.55.43 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 24 Apr 2015 05:55:44 -0700 (PDT) From: Patrick Palka To: gdb-patches@sourceware.org Cc: Patrick Palka Subject: [PATCH] Make type-safe the 'content' field of struct tui_gen_win_info Date: Fri, 24 Apr 2015 08:55:36 -0400 Message-Id: <1429880136-5830-1-git-send-email-patrick@parcs.ath.cx> The 'content' field of struct tui_gen_win_info currently has type void ** but the field always stores an object of type tui_win_content. Instead of unnecessarily casting to and from void ** we should just give the field the type tui_win_content in the first place. This patch does this and also eliminates all now-redundant casts involving the 'content' struct field that I could find. gdb/ChangeLog: * tui/tui-data.h (struct tui_win_element): Forward-declare. (tui_win_content): Move declaration. (struct tui_gen_win_info): Give 'content' field the type tui_win_content. * tui/tui-data.c (init_content_element): Remove redundant and erroneous casts. (tui_add_content_elements): Remove erroneous cast. (tui_del_data_windows): Remove erroneous cast. * tui/tui-disasm.c (tui_set_disassem_content): Remove redundant casts. (tui_get_begin_asm_address): Likewise. * tui/tui-regs.c (tui_show_registers): Likewise. (tui_show_register_group): Likewise. (tui_display_registers_from): Likewise. (tui_check_register_values): Likewise. * tui/tui-source.c (tui_set_source_content): Likewise. (tui_set_source_content_nil): Likewise. (tui_source_is_displayed): Likewise. * tui/tui-stack.c (tui_show_locator_content): Likewise. (tui_set_locator_fullname): Likewise. (tui_set_locator_info): Likewise. (tui_show_frame_info): Likewise. * tui/tui-winsource.c (tui_clear_source_content): Likewise. (tui_show_source_line): Likewise. (tui_horizontal_source_scroll): Likewise. (tui_update_breakpoint_info): Likewise. (tui_set_exec_info_content): Likewise. (tui_show_exec_info_content): Likewise. (tui_alloc_source_buffer): Likewise. (tui_line_is_displayed): Likewise. (tui_addr_is_displayed): Likewise. --- gdb/tui/tui-data.c | 14 +++++-------- gdb/tui/tui-data.h | 12 +++++------ gdb/tui/tui-disasm.c | 8 +++----- gdb/tui/tui-regs.c | 14 +++++-------- gdb/tui/tui-source.c | 34 ++++++++++++++----------------- gdb/tui/tui-stack.c | 13 +++++------- gdb/tui/tui-winsource.c | 54 +++++++++++++++++++++---------------------------- 7 files changed, 62 insertions(+), 87 deletions(-) diff --git a/gdb/tui/tui-data.c b/gdb/tui/tui-data.c index 43bcec2..771d650 100644 --- a/gdb/tui/tui-data.c +++ b/gdb/tui/tui-data.c @@ -490,11 +490,9 @@ init_content_element (struct tui_win_element *element, case DATA_WIN: tui_init_generic_part (&element->which_element.data_window); element->which_element.data_window.type = DATA_ITEM_WIN; - ((struct tui_gen_win_info *) - &element->which_element.data_window)->content = - (void **) tui_alloc_content (1, DATA_ITEM_WIN); - ((struct tui_gen_win_info *) - & element->which_element.data_window)->content_size = 1; + element->which_element.data_window.content = + tui_alloc_content (1, DATA_ITEM_WIN); + element->which_element.data_window.content_size = 1; break; case CMD_WIN: element->which_element.command.line = (char *) NULL; @@ -635,8 +633,7 @@ tui_add_content_elements (struct tui_gen_win_info *win_info, if (win_info->content == NULL) { - win_info->content = (void **) tui_alloc_content (num_elements, - win_info->type); + win_info->content = tui_alloc_content (num_elements, win_info->type); index_start = 0; } else @@ -821,8 +818,7 @@ tui_del_data_windows (tui_win_content content, element. */ for (i = 0; i < content_size; i++) { - struct tui_gen_win_info *generic_win - = &content[i]->which_element.data_window; + struct tui_gen_win_info *generic_win = &content[i]->which_element.data_window; if (generic_win != (struct tui_gen_win_info *) NULL) { diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h index f87c45d..7651efd 100644 --- a/gdb/tui/tui-data.h +++ b/gdb/tui/tui-data.h @@ -31,6 +31,11 @@ struct tui_point int x, y; }; +struct tui_win_element; + +/* This describes the content of the window. */ +typedef struct tui_win_element **tui_win_content; + /* Generic window information. */ struct tui_gen_win_info { @@ -39,7 +44,7 @@ struct tui_gen_win_info int width; /* Window width. */ int height; /* Window height. */ struct tui_point origin; /* Origin of window. */ - void **content; /* Content of window. */ + tui_win_content content; /* Content of window. */ int content_size; /* Size of content (# of elements). */ int content_in_use; /* Can it be used, or is it already used? */ int viewport_height; /* Viewport height. */ @@ -250,11 +255,6 @@ struct tui_win_element union tui_which_element which_element; }; - -/* This describes the content of the window. */ -typedef struct tui_win_element **tui_win_content; - - /* This struct defines the specific information about a data display window. */ struct tui_data_info diff --git a/gdb/tui/tui-disasm.c b/gdb/tui/tui-disasm.c index 821a4f1..f86c216 100644 --- a/gdb/tui/tui-disasm.c +++ b/gdb/tui/tui-disasm.c @@ -192,8 +192,7 @@ tui_set_disassem_content (struct gdbarch *gdbarch, CORE_ADDR pc) TUI_DISASM_WIN->detail.source_info.gdbarch = gdbarch; TUI_DISASM_WIN->detail.source_info.start_line_or_addr.loa = LOA_ADDRESS; TUI_DISASM_WIN->detail.source_info.start_line_or_addr.u.addr = pc; - cur_pc = (CORE_ADDR) (((struct tui_win_element *) - locator->content[0])->which_element.locator.addr); + cur_pc = locator->content[0]->which_element.locator.addr; max_lines = TUI_DISASM_WIN->generic.height - 2; /* Account for hilite. */ @@ -232,7 +231,7 @@ tui_set_disassem_content (struct gdbarch *gdbarch, CORE_ADDR pc) struct tui_source_element *src; int cur_len; - element = (struct tui_win_element *) TUI_DISASM_WIN->generic.content[i]; + element = TUI_DISASM_WIN->generic.content[i]; src = &element->which_element.source; strcpy (line, asm_lines[i].addr_string); cur_len = strlen (line); @@ -334,8 +333,7 @@ tui_get_begin_asm_address (struct gdbarch **gdbarch_p, CORE_ADDR *addr_p) CORE_ADDR addr; locator = tui_locator_win_info_ptr (); - element = &((struct tui_win_element *) - locator->content[0])->which_element.locator; + element = &locator->content[0]->which_element.locator; if (element->addr == 0) { diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c index feb11ba..61918f8 100644 --- a/gdb/tui/tui-regs.c +++ b/gdb/tui/tui-regs.c @@ -171,7 +171,7 @@ tui_show_registers (struct reggroup *group) data_item_win = &display_info->regs_content[i] ->which_element.data_window; - win = (struct tui_win_element *) data_item_win->content[0]; + win = data_item_win->content[0]; win->which_element.data.highlight = FALSE; } display_info->current_group = group; @@ -274,8 +274,7 @@ tui_show_register_group (struct reggroup *group, data_item_win = &display_info->regs_content[pos]->which_element.data_window; - data = &((struct tui_win_element *) - data_item_win->content[0])->which_element.data; + data = &data_item_win->content[0]->which_element.data; if (data) { if (!refresh_values_only) @@ -322,8 +321,7 @@ tui_display_registers_from (int start_element_no) data_item_win = &display_info->regs_content[i]->which_element.data_window; - data = &((struct tui_win_element *) - data_item_win->content[0])->which_element.data; + data = &data_item_win->content[0]->which_element.data; len = 0; p = data->content; if (p != 0) @@ -365,8 +363,7 @@ tui_display_registers_from (int start_element_no) /* Create the window if necessary. */ data_item_win = &display_info->regs_content[i] ->which_element.data_window; - data_element_ptr = &((struct tui_win_element *) - data_item_win->content[0])->which_element.data; + data_element_ptr = &data_item_win->content[0]->which_element.data; if (data_item_win->handle != (WINDOW*) NULL && (data_item_win->height != 1 || data_item_win->width != item_win_width @@ -508,8 +505,7 @@ tui_check_register_values (struct frame_info *frame) data_item_win_ptr = &display_info->regs_content[i]-> which_element.data_window; - data = &((struct tui_win_element *) - data_item_win_ptr->content[0])->which_element.data; + data = &data_item_win_ptr->content[0]->which_element.data; was_hilighted = data->highlight; tui_get_register (frame, data, diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c index 4070894..31df0c8 100644 --- a/gdb/tui/tui-source.c +++ b/gdb/tui/tui-source.c @@ -120,16 +120,14 @@ tui_set_source_content (struct symtab *s, while (cur_line < nlines) { struct tui_win_element *element - = (struct tui_win_element *) - TUI_SRC_WIN->generic.content[cur_line]; + = TUI_SRC_WIN->generic.content[cur_line]; /* Get the first character in the line. */ c = fgetc (stream); if (offset == 0) - src_line = ((struct tui_win_element *) - TUI_SRC_WIN->generic.content[ - cur_line])->which_element.source.line; + src_line = TUI_SRC_WIN->generic.content[cur_line] + ->which_element.source.line; /* Init the line with the line number. */ sprintf (src_line, "%-6d", cur_line_no); cur_len = strlen (src_line); @@ -150,11 +148,12 @@ tui_set_source_content (struct symtab *s, element->which_element.source.line_or_addr.u.line_no = cur_line_no; element->which_element.source.is_exec_point = - (filename_cmp (((struct tui_win_element *) - locator->content[0])->which_element.locator.full_name, + (filename_cmp (locator->content[0] + ->which_element.locator.full_name, symtab_to_fullname (s)) == 0 - && cur_line_no == ((struct tui_win_element *) - locator->content[0])->which_element.locator.line_no); + && cur_line_no + == locator->content[0] + ->which_element.locator.line_no); if (c != EOF) { i = strlen (src_line) - 1; @@ -220,13 +219,12 @@ tui_set_source_content (struct symtab *s, /* Now copy the line taking the offset into account. */ if (strlen (src_line) > offset) - strcpy (((struct tui_win_element *) - TUI_SRC_WIN->generic.content[cur_line])->which_element.source.line, + strcpy (TUI_SRC_WIN->generic.content[cur_line] + ->which_element.source.line, &src_line[offset]); else - ((struct tui_win_element *) - TUI_SRC_WIN->generic.content[ - cur_line])->which_element.source.line[0] = (char) 0; + TUI_SRC_WIN->generic.content[cur_line] + ->which_element.source.line[0] = (char) 0; cur_line++; cur_line_no++; } @@ -268,8 +266,7 @@ tui_set_source_content_nil (struct tui_win_info *win_info, i.e. the line number is 0, there is no bp, it is not where the program is stopped. */ - struct tui_win_element *element = - (struct tui_win_element *) win_info->generic.content[curr_line]; + struct tui_win_element *element = win_info->generic.content[curr_line]; element->which_element.source.line_or_addr.loa = LOA_LINE; element->which_element.source.line_or_addr.u.line_no = 0; @@ -337,9 +334,8 @@ tui_source_is_displayed (const char *fullname) { return (TUI_SRC_WIN != NULL && TUI_SRC_WIN->generic.content_in_use - && (filename_cmp (((struct tui_win_element *) - (tui_locator_win_info_ptr ())-> - content[0])->which_element.locator.full_name, + && (filename_cmp (tui_locator_win_info_ptr ()->content[0] + ->which_element.locator.full_name, fullname) == 0)); } diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c index 13dd0b2..2870d70 100644 --- a/gdb/tui/tui-stack.c +++ b/gdb/tui/tui-stack.c @@ -253,7 +253,7 @@ tui_show_locator_content (void) { struct tui_win_element *element; - element = (struct tui_win_element *) locator->content[0]; + element = locator->content[0]; string = tui_make_status_line (&element->which_element.locator); wmove (locator->handle, 0, 0); @@ -287,8 +287,7 @@ tui_set_locator_fullname (const char *fullname) return; } - element = &((struct tui_win_element *) - locator->content[0])->which_element.locator; + element = &locator->content[0]->which_element.locator; element->full_name[0] = 0; strcat_to_buf (element->full_name, MAX_LOCATOR_ELEMENT_LEN, fullname); } @@ -307,12 +306,11 @@ tui_set_locator_info (struct gdbarch *gdbarch, /* Allocate the locator content if necessary. */ if (locator->content_size <= 0) { - locator->content = (void **) tui_alloc_content (1, locator->type); + locator->content = tui_alloc_content (1, locator->type); locator->content_size = 1; } - element = &((struct tui_win_element *) - locator->content[0])->which_element.locator; + element = &locator->content[0]->which_element.locator; element->proc_name[0] = (char) 0; strcat_to_buf (element->proc_name, MAX_LOCATOR_ELEMENT_LEN, procname); element->line_no = lineno; @@ -369,8 +367,7 @@ tui_show_frame_info (struct frame_info *fi) win_info = (tui_source_windows ())->list[i]; - item = &((struct tui_win_element *) - locator->content[0])->which_element; + item = &locator->content[0]->which_element; if (win_info == TUI_SRC_WIN) { start_line = (item->locator.line_no - diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c index 68eb4cf..63e0770 100644 --- a/gdb/tui/tui-winsource.c +++ b/gdb/tui/tui-winsource.c @@ -219,8 +219,7 @@ tui_clear_source_content (struct tui_win_info *win_info, tui_erase_source_content (win_info, display_prompt); for (i = 0; i < win_info->generic.content_size; i++) { - struct tui_win_element *element = - (struct tui_win_element *) win_info->generic.content[i]; + struct tui_win_element *element = win_info->generic.content[i]; element->which_element.source.has_break = FALSE; element->which_element.source.is_exec_point = FALSE; @@ -276,7 +275,7 @@ tui_show_source_line (struct tui_win_info *win_info, int lineno) struct tui_win_element *line; int x, y; - line = (struct tui_win_element *) win_info->generic.content[lineno - 1]; + line = win_info->generic.content[lineno - 1]; if (line->which_element.source.is_exec_point) wattron (win_info->generic.handle, A_STANDOUT); @@ -348,8 +347,8 @@ tui_horizontal_source_scroll (struct tui_win_info *win_info, } win_info->detail.source_info.horizontal_offset = offset; tui_update_source_window_as_is (win_info, gdbarch, s, - ((struct tui_win_element *) - win_info->generic.content[0])->which_element.source.line_or_addr, + win_info->generic.content[0] + ->which_element.source.line_or_addr, FALSE); } @@ -438,8 +437,7 @@ tui_update_breakpoint_info (struct tui_win_info *win, int mode; struct tui_source_element *line; - line = &((struct tui_win_element *) - win->generic.content[i])->which_element.source; + line = &win->generic.content[i]->which_element.source; if (current_only && !line->is_exec_point) continue; @@ -507,8 +505,7 @@ tui_set_exec_info_content (struct tui_win_info *win_info) if (exec_info_ptr->content == NULL) exec_info_ptr->content = - (void **) tui_alloc_content (win_info->generic.height, - exec_info_ptr->type); + tui_alloc_content (win_info->generic.height, exec_info_ptr->type); if (exec_info_ptr->content != NULL) { int i; @@ -520,9 +517,8 @@ tui_set_exec_info_content (struct tui_win_info *win_info) struct tui_win_element *src_element; int mode; - element = (struct tui_win_element *) exec_info_ptr->content[i]; - src_element = (struct tui_win_element *) - win_info->generic.content[i]; + element = exec_info_ptr->content[i]; + src_element = win_info->generic.content[i]; memset(element->which_element.simple_string, ' ', sizeof(element->which_element.simple_string)); @@ -569,8 +565,7 @@ tui_show_exec_info_content (struct tui_win_info *win_info) mvwaddstr (exec_info->handle, cur_line, 0, - ((struct tui_win_element *) - exec_info->content[cur_line - 1])->which_element.simple_string); + exec_info->content[cur_line - 1]->which_element.simple_string); tui_refresh_win (exec_info); exec_info->content_in_use = TRUE; } @@ -628,8 +623,8 @@ tui_alloc_source_buffer (struct tui_win_info *win_info) return TUI_FAILURE; } /* Allocate the content list. */ - if ((win_info->generic.content = - (void **) tui_alloc_content (max_lines, SRC_WIN)) == NULL) + win_info->generic.content = tui_alloc_content (max_lines, SRC_WIN); + if (win_info->generic.content == NULL) { xfree (src_line_buf); fputs_unfiltered ("Unable to Allocate Memory for " @@ -638,9 +633,8 @@ tui_alloc_source_buffer (struct tui_win_info *win_info) return TUI_FAILURE; } for (i = 0; i < max_lines; i++) - ((struct tui_win_element *) - win_info->generic.content[i])->which_element.source.line = - src_line_buf + (line_width * i); + win_info->generic.content[i]->which_element.source.line + = src_line_buf + (line_width * i); } return TUI_SUCCESS; @@ -665,12 +659,11 @@ tui_line_is_displayed (int line, while (i < win_info->generic.content_size - threshold && !is_displayed) { - is_displayed = (((struct tui_win_element *) - win_info->generic.content[i])->which_element.source.line_or_addr.loa - == LOA_LINE) - && (((struct tui_win_element *) - win_info->generic.content[i])->which_element.source.line_or_addr.u.line_no - == (int) line); + is_displayed + = win_info->generic.content[i] + ->which_element.source.line_or_addr.loa == LOA_LINE + && win_info->generic.content[i] + ->which_element.source.line_or_addr.u.line_no == (int) line; i++; } @@ -696,12 +689,11 @@ tui_addr_is_displayed (CORE_ADDR addr, while (i < win_info->generic.content_size - threshold && !is_displayed) { - is_displayed = (((struct tui_win_element *) - win_info->generic.content[i])->which_element.source.line_or_addr.loa - == LOA_ADDRESS) - && (((struct tui_win_element *) - win_info->generic.content[i])->which_element.source.line_or_addr.u.addr - == addr); + is_displayed + = win_info->generic.content[i] + ->which_element.source.line_or_addr.loa == LOA_ADDRESS + && win_info->generic.content[i] + ->which_element.source.line_or_addr.u.addr == addr; i++; }