diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/symtab.c | 29 |
2 files changed, 25 insertions, 9 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d346183..06239ba 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +Sun Nov 7 23:49:21 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) + + * symtab.c (decode_line_1, decode_line_2): Do not adjust pc by + FUNCTION_START_OFFSET if funfirstline is not set. + Fri Nov 5 17:19:30 1993 Kung Hsu (kung@cirdan.cygnus.com) * gdbtypes.h : add a field 'ignore_field_bits in cplus_specific, diff --git a/gdb/symtab.c b/gdb/symtab.c index ae91118..582ca04 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -1830,9 +1830,12 @@ decode_line_1 (argptr, funfirstline, default_symtab, default_line, canonical) if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK) { /* Arg is the name of a function */ - pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) + FUNCTION_START_OFFSET; + pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym)); if (funfirstline) - SKIP_PROLOGUE (pc); + { + pc += FUNCTION_START_OFFSET; + SKIP_PROLOGUE (pc); + } values.sals = (struct symtab_and_line *)xmalloc (sizeof (struct symtab_and_line)); values.nelts = 1; values.sals[0] = find_pc_line (pc, 0); @@ -2006,9 +2009,12 @@ decode_line_1 (argptr, funfirstline, default_symtab, default_line, canonical) if (SYMBOL_CLASS (sym) == LOC_BLOCK) { /* Arg is the name of a function */ - pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) + FUNCTION_START_OFFSET; + pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym)); if (funfirstline) - SKIP_PROLOGUE (pc); + { + pc += FUNCTION_START_OFFSET; + SKIP_PROLOGUE (pc); + } val = find_pc_line (pc, 0); #ifdef PROLOGUE_FIRSTLINE_OVERLAP /* Convex: no need to suppress code on first line, if any */ @@ -2070,9 +2076,12 @@ decode_line_1 (argptr, funfirstline, default_symtab, default_line, canonical) { val.symtab = 0; val.line = 0; - val.pc = SYMBOL_VALUE_ADDRESS (msymbol) + FUNCTION_START_OFFSET; + val.pc = SYMBOL_VALUE_ADDRESS (msymbol); if (funfirstline) - SKIP_PROLOGUE (val.pc); + { + val.pc += FUNCTION_START_OFFSET; + SKIP_PROLOGUE (val.pc); + } values.sals = (struct symtab_and_line *)xmalloc (sizeof (struct symtab_and_line)); values.sals[0] = val; values.nelts = 1; @@ -2143,10 +2152,12 @@ decode_line_2 (sym_arr, nelts, funfirstline, canonical) if (sym_arr[i] && SYMBOL_CLASS (sym_arr[i]) == LOC_BLOCK) { /* Arg is the name of a function */ - pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym_arr[i])) - + FUNCTION_START_OFFSET; + pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym_arr[i])); if (funfirstline) - SKIP_PROLOGUE (pc); + { + pc += FUNCTION_START_OFFSET; + SKIP_PROLOGUE (pc); + } values.sals[i] = find_pc_line (pc, 0); values.sals[i].pc = (values.sals[i].end && values.sals[i].pc != pc) ? values.sals[i].end : pc; |