aboutsummaryrefslogtreecommitdiff
path: root/gdb/symtab.c
diff options
context:
space:
mode:
authorPeter Schauer <Peter.Schauer@mytum.de>1993-11-08 07:51:23 +0000
committerPeter Schauer <Peter.Schauer@mytum.de>1993-11-08 07:51:23 +0000
commit2cacd1e3f63469c29a517fa1d59778905113013c (patch)
treedfc02a3a6ed74c5f7677c6389a9032151a792a0f /gdb/symtab.c
parent1d3e88472dad2b59ca3de6def408d5668a74b1a0 (diff)
downloadgdb-2cacd1e3f63469c29a517fa1d59778905113013c.zip
gdb-2cacd1e3f63469c29a517fa1d59778905113013c.tar.gz
gdb-2cacd1e3f63469c29a517fa1d59778905113013c.tar.bz2
* symtab.c (decode_line_1, decode_line_2): Do not adjust pc by
FUNCTION_START_OFFSET if funfirstline is not set.
Diffstat (limited to 'gdb/symtab.c')
-rw-r--r--gdb/symtab.c29
1 files changed, 20 insertions, 9 deletions
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;