[gnu.gdb.bug] unused variables

abrossard@watcgl.waterloo.edu (Alain Brossard) (10/13/88)

    Compiler: gcc-1.28 -gg -O
    Gdb:  version 2.7
    
    Problem:	When a routine defines a variable but doesn't use it,
      it goes into the symbol list.  When locals_info is called, it
      tries to print the variable in question via a call to
      print_variable_value() which is given incorrect information.
      This has happened twice in two different routines:
    (ps the line numbering is not going to correspond with the one in the
     distribution)

 kill(0x2fb, 0x4) at 0x1b84c
 abort(0x7fffe1d0) at 0x1b258
 read_memory(memaddr = 2147476160, myaddr = "x\0342\0377\0177\0271\0325", len = 4), line 612 in "core.c"
 read_var_value.$b10, line 331 in "findvar.c"
 read_var_value(var = 0x887c0, frame = 1132892), line 331 in "findvar.c"
 print_variable_value(var = 0x887c0, frame = 1132892, stream = 0x4152c), line 986 in "printcmd.c"
  print_block_frame_locals(b = 0x88844, frame = 1132892, stream = 0x4152c, detail = 0), line 391 in "stack.c"
  print_frame_local_vars(frame = 1132892, stream = 0x4152c, detail = 0), line 422 in "stack.c"
  locals_info(detail = 0), line 446 in "stack.c"
(dbx) print *var
(name = "n", namespace = VAR_NAMESPACE, class = LOC_REGISTER, type = 0x874fc, va
lue = [union]) 
(dbx) print var->value.value
59 

	As can be seen, the variable is declared as a REGISTER variable, but
with an impossible register number.  I ``think'' that this problem didn't
exist prior to gcc-1.26, but I could be mistaken.  Updating gdb from
2.3 to 2.7 didn't help.


						Alain Brossard

vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

Alain Brossard, CS Dept., U. Waterloo, Waterloo, Ontario, Canada N2L 3G1
INTERNET:abrossard@watcgl.uwaterloo.ca
INTERNET:abrossard@watcgl.waterloo.edu
UUCP :uunet!watmath!watcgl!abrossard
EAN :abrossard@cgl.waterloo.cdn