From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17869 invoked by alias); 13 Sep 2003 00:03:31 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 17860 invoked from network); 13 Sep 2003 00:03:31 -0000 Received: from unknown (HELO zenia.home) (12.223.225.216) by sources.redhat.com with SMTP; 13 Sep 2003 00:03:31 -0000 Received: by zenia.home (Postfix, from userid 5433) id 6E14D20758; Fri, 12 Sep 2003 19:01:34 -0500 (EST) To: gdb-patches@sources.redhat.com Subject: PATCH: Add FIXME about section offsets in dbxread From: Jim Blandy Date: Sat, 13 Sep 2003 00:03:00 -0000 Message-ID: User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-SW-Source: 2003-09/txt/msg00279.txt.bz2 2003-09-12 Jim Blandy * dbxread.c (read_dbx_symtab): Add FIXME about finding section offsets for global and static variables. Index: gdb/dbxread.c =================================================================== RCS file: /cvs/src/src/gdb/dbxread.c,v retrieving revision 1.51 diff -c -r1.51 dbxread.c *** gdb/dbxread.c 12 Sep 2003 22:49:25 -0000 1.51 --- gdb/dbxread.c 12 Sep 2003 23:31:37 -0000 *************** *** 1357,1363 **** textlow_not_set = 1; has_line_numbers = 0; ! /* If the objfile has no .data section, try using the .bss section. */ data_sect_index = objfile->sect_index_data; if (data_sect_index == -1) data_sect_index = SECT_OFF_BSS (objfile); --- 1357,1382 ---- textlow_not_set = 1; has_line_numbers = 0; ! /* FIXME: jimb/2003-09-12: We don't apply the right section's offset ! to global and static variables. The stab for a global or static ! variable doesn't give us any indication of which section it's in, ! so we can't tell immediately which offset in ! objfile->section_offsets we should apply to the variable's ! address. ! ! We could certainly find out which section contains the variable ! by looking up the variable's unrelocated address with ! find_pc_section, but that would be expensive; this is the ! function that constructs the partial symbol tables by examining ! every symbol in the entire executable, and it's ! performance-critical. So that expense would not be welcome. I'm ! not sure what to do about this at the moment. ! ! What we have done for years is to simply assume that the .data ! section's offset is appropriate for all global and static ! variables. Recently, this was expanded to fall back to the .bss ! section's offset if there is no .data section, and then to the ! .rodata section's offset. */ data_sect_index = objfile->sect_index_data; if (data_sect_index == -1) data_sect_index = SECT_OFF_BSS (objfile);