🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by "tpopovic.US2" Tue, 08 Aug 1989 00:48
GDB 3.2 (sequent symmetry port)
#229
Author: "tpopovic.US2"
Date: Tue, 08 Aug 1989 00:48
364 lines
16717 bytes
Some bugs on GDB 3.2  - set up for use with a symmetry.

	NOTE: I fixed an error (in dep.c) when
	the following error msg was produced:
	make CC="gcc -g -traditional"
	 :
	        gcc -g  -c -g -I. dep.c
	dep.c: In function i386_follow_jump:
	dep.c:1141: conflicting types for `i386_follow_jump'
	dep.c:38: previous declaration of `i386_follow_jump'
	*** Error code 1
	Make: .  Stop.

	<in dep.c, I fixed the following:>
	/* next instruction is a jump, move to target */
	static
	long/*added*/ i386_follow_jump ()
	{
	  int long_delta;

Below is a transaction of a session with GDB.  I was using gdb
to debug GNU's C preprocessor (cccp) and discovered that values returned
from "[p]rint function()" calls are sometimes are incorrect.
Specifically, when I entered 
  p lookup(...)
the result is somehow truncated to 16 bits.  I.e. below the value returned
is 0x41c0 when it should be 0x141c0.  THIS ALWAYS OCCURRED.
<The CCCP code works but GDB isn't returning correct values.>
----------------------------------------------------------------------
Bpt 15, lookup (name=(unsigned char *) 0x30d0 "unix", len=4, hash=1370) (cccp.c line 4932)
(gdb) p bucket
$41 = (struct hashnode *) 0x141c0
Run till exit from #0  lookup (name=(unsigned char *) 0x30d0 "unix", len=4, hash=1370) (cccp.c line 4932)
0x3fffe829 in ?? ()
Value returned is $42 = (struct hashnode *) 0x41c0
(gdb) p $41->value.defn
----------------------------------------------------------------------
$41 != $42, BUT they should be EQUAL we are returning val $41, i.e.
$42 = return $41

Furthermore I examined the routine "install()"
but was unable to do a "p hp"  or "i lo" see below
----------------------------------------------------------------------
Bpt 6, install (name=(unsigned char *) 0x3fffeaa8 "sequent 1", len=7, type=T_MACRO, value=86080, hash=1344) (cccp.c line 4894)
(gdb) i lo
hp = Invalid cast.
(gdb) i lo
hp = Invalid cast.
(gdb) p hp
Invalid cast.
(gdb) i ar
name = (unsigned char *) 0x3fffeaa8 "sequent 1"
len = 7
type = T_MACRO
value = 86080
hash = 1344
----------------------------------------------------------------------

Also, I think that there is an error in routine:

                dump_defn_1 (base, start, length);    <in file cccp.c>
                :
                  while (p < limit) {
                    if (*p != '\n')
                      putchar (*p);
                    else if (*p == '\"' || *p =='\'') {
                      U_CHAR *p1 = skip_quoted_string (p, limit, 0, 0, 0, 0);
                      fwrite (p, p1 - p, 1, stdout);
                      p = p1 - 1;
                    }

        the if (y!='\n') xxx; else if (y=='xx'...)... doesn't make sense
        (the else part is only executed if y=='\n'  -  we
         hit this piece of code if y is '\n'...we will never have a true
         condition for the 2nd if statement) 

Overall, I think that GDB is an excellent product and these are the first
errors I have encountered.
Is there a quick fix for this (truncation) behavior?

-thxs,
Tom Popovich                      (415) 598-8028
Oracle Corporation
20 Davis Drive
Belmont, CA 94002
..!{uunet|apple|pyramid|...}!oracle.com!tpopovic


-----------------------[ session log ]--------------------------------

Current directory is /baseqa/tpopovic/gnu/gcc-1.35/
GDB 3.2, Copyright (C) 1988 Free Software Foundation, Inc.
There is ABSOLUTELY NO WARRANTY for GDB; type "info warranty" for details.
GDB is free software and you are welcome to distribute copies of it
 under certain conditions; type "info copying" to see the conditions.
Reading symbol data from /baseqa/tpopovic/gnu/gcc-1.35/cccp...done.
Breakpoint 1 at 0xa9cf
Type "help" for a list of commands.
(gdb) b do_include
Reading in symbols for cccp.c...done.
Breakpoint 2 at 0x46a4: file cccp.c, line 2362.
(gdb) run T/t1.c
Starting program: /baseqa/tpopovic/gnu/gcc-1.35/cccp T/t1.c

Bpt 2, do_include (buf=(unsigned char *) 0xeca0 "{\354\377?\001", limit=(unsigned char *) 0xec80 "", op=(struct file_buf *) 0x3fffebd8, keyword=(struct directive *) 0x16054) (cccp.c line 2362)
$1 = 0
(gdb) quit
The program is running.  Quit anyway? (y or n) y

Inferior Gdb finished
Current directory is /baseqa/tpopovic/gnu/gcc-1.35/
GDB 3.2, Copyright (C) 1988 Free Software Foundation, Inc.
There is ABSOLUTELY NO WARRANTY for GDB; type "info warranty" for details.
GDB is free software and you are welcome to distribute copies of it
 under certain conditions; type "info copying" to see the conditions.
Reading symbol data from /baseqa/tpopovic/gnu/gcc-1.35/cccp...done.
Breakpoint 1 at 0xa9cf
Type "help" for a list of commands.
(gdb) b do_define
Undefined command: "g".
(gdb) b do_define
Reading in symbols for cccp.c...done.
Breakpoint 2 at 0x50a6: file cccp.c, line 2823.
(gdb) b do_include
Breakpoint 3 at 0x46a4: file cccp.c, line 2362.
(gdb) run T/t2.c
Starting program: /baseqa/tpopovic/gnu/gcc-1.35/cccp T/t2.c

Bpt 2, do_define (buf=(unsigned char *) 0x3fffeaac "unix 1", limit=(unsigned char *) 0x3fffeab2 "", op=(struct file_buf *) 0x0, keyword=(struct directive *) 0xd064) (cccp.c line 2823)
(gdb) Breakpoint 4 at 0x510f: file cccp.c, line 2844.
(gdb) Continuing.

Bpt 4, do_define (buf=(unsigned char *) 0x3fffeaac "unix 1", limit=(unsigned char *) 0x3fffeab2 "", op=(struct file_buf *) 0x0, keyword=(struct directive *) 0xd064) (cccp.c line 2844)
(gdb) i lo
bp = (unsigned char *) 0x3fffeab0 " 1"
symname = (unsigned char *) 0x3fffeaac "unix 1"
sym_length = 4
defn = (DEFINITION *) 0x0
arglengths = 0
hashcode = 0
(gdb) Breakpoint 5 at 0x5350: file cccp.c, line 2917.
(gdb) c
Continuing.

Bpt 5, do_define (buf=(unsigned char *) 0x3fffeaac "unix 1", limit=(unsigned char *) 0x3fffeab2 "", op=(struct file_buf *) 0x0, keyword=(struct directive *) 0xd064) (cccp.c line 2917)
(gdb) i lo
bp = (unsigned char *) 0x3fffeab1 "1"
symname = (unsigned char *) 0x3fffeaac "unix 1"
sym_length = 4
defn = (DEFINITION *) 0x15000
arglengths = 0
hashcode = 0
(gdb) p defn
$1 = (DEFINITION *) 0x15000
install (name=(unsigned char *) 0x3fffeaac "unix 1", len=4, type=T_MACRO, value=86016, hash=1370) (cccp.c line 4871)
(gdb) i ar
name = (unsigned char *) 0x3fffeaac "unix 1"
len = 4
type = T_MACRO
value = 86016
hash = 1370
(gdb) p *(DEFINITION)value
ptrace: I/O error .
Cannot read memory: address 0xffffffff out of bounds.
(gdb) p *(DEFINITION*)value
Attempt to take contents of a non-pointer value.
(gdb) p *(DEFINITION*)value
$2 = {nargs = -1, length = 3, expansion = 0x15014 "1\n ", pattern = 0x0, argnames = 0x11d9 ""}
(gdb) Run till exit from #0  install (name=(unsigned char *) 0x3fffeaac "unix 1", len=4, type=T_MACRO, value=86016, hash=1370) (cccp.c line 4878)
0x5405 in do_define (buf=(unsigned char *) 0x3fffeaac "unix 1", limit=(unsigned char *) 0x3fffeab2 "", op=(struct file_buf *) 0x0, keyword=(struct directive *) 0xd064) (cccp.c line 2934)
Value returned is $3 = (struct hashnode *) 0x41c0
(gdb) p *lookup("unix",-1,-1)
p lookup("unix",-1,-1)
$4 = (struct hashnode *) 0x41c0
(gdb) p lookup("tunix",-1,-1)
$5 = {next = 0x40c968, prev = 0x3d76e800, bucket_hdr = 0x49e90000, type = -1962934269, length = 1082853445, name = 0xf1c0830c <Address 0xf1c0830c out of bounds>, value = {ival = 252311683, cpval = 0xf09f883 <Address 0xf09f883 out of bounds>, defn = 0xf09f
883}}
$6 = T_MACRO
(gdb) set $l=lookup("unix",-1,-1)
(gdb) p *$l
$7 = -1962934269
(gdb) p *$l
$8 = {next = 0x40c968, prev = 0x3d76e800, bucket_hdr = 0x49e90000, type = -1962934269, length = 1082853445, name = 0xf1c0830c <Address 0xf1c0830c out of bounds>, value = {ival = 252311683, cpval = 0xf09f883 <Address 0xf09f883 out of bounds>, defn = 0xf09f
883}}
(gdb) p lookup("tunix",-1,-1)
$9 = (struct hashnode *) 0x0
(gdb) c
Continuing.

Bpt 2, do_define (buf=(unsigned char *) 0x3fffeaac "i386 1", limit=(unsigned char *) 0x3fffeab2 "", op=(struct file_buf *) 0x0, keyword=(struct directive *) 0xd064) (cccp.c line 2823)
(gdb) set $i=lookup("i386",-1,-1)
(gdb) p *$l
p *$l->name
$10 = {next = 0x40c968, prev = 0x3d76e800, bucket_hdr = 0x49e90000, type = -1962934269, length = 1082853445, name = 0xf1c0830c <Address 0xf1c0830c out of bounds>, value = {ival = 252311683, cpval = 0xf09f883 <Address 0xf09f883 out of bounds>, defn = 0xf09
f883}}
(gdb) p *$l->name
ptrace: I/O error.
Cannot read memory: address 0xf1c0830c out of bounds.
Run till exit from #0  do_define (buf=(unsigned char *) 0x3fffeaac "i386 1", limit=(unsigned char *) 0x3fffeab2 "", op=(struct file_buf *) 0x0, keyword=(struct directive *) 0xd064) (cccp.c line 2823)

Bpt 4, do_define (buf=(unsigned char *) 0x3fffeaac "i386 1", limit=(unsigned char *) 0x3fffeab2 "", op=(struct file_buf *) 0x0, keyword=(struct directive *) 0xd064) (cccp.c line 2844)
Run till exit from #0  do_define (buf=(unsigned char *) 0x3fffeaac "i386 1", limit=(unsigned char *) 0x3fffeab2 "", op=(struct file_buf *) 0x0, keyword=(struct directive *) 0xd064) (cccp.c line 2844)

Bpt 5, do_define (buf=(unsigned char *) 0x3fffeaac "i386 1", limit=(unsigned char *) 0x3fffeab2 "", op=(struct file_buf *) 0x0, keyword=(struct directive *) 0xd064) (cccp.c line 2917)
Run till exit from #0  do_define (buf=(unsigned char *) 0x3fffeaac "i386 1", limit=(unsigned char *) 0x3fffeab2 "", op=(struct file_buf *) 0x0, keyword=(struct directive *) 0xd064) (cccp.c line 2917)
make_definition (str=(unsigned char *) 0x3fffeb19 "i386") (cccp.c line 5198)
Value returned is $11 = 0
$12 = 0
(gdb) p indepth
$13 = -1
0x1d23 in main (argc=2, argv=(char **) 0x3fffebd8, 1073736676) (cccp.c line 785)

Bpt 2, do_define (buf=(unsigned char *) 0x3fffeaa8 "sequent 1", limit=(unsigned char *) 0x3fffeab1 "", op=(struct file_buf *) 0x0, keyword=(struct directive *) 0xd064) (cccp.c line 2823)
(gdb) set $i=lookup("i386",-1,-1)
(gdb) p *$i
$14 = (struct hashnode *) 0x4200
(gdb) p *$i
$15 = {next = 0x42a90000, prev = 0x44ae0000, bucket_hdr = 0x44ae0000, type = 1134362624, length = 1166737408, name = 0xc788308 <Address 0xc788308 out of bounds>, value = {ival = -1962248943, cpval = 0x8b0a7511 <Address 0x8b0a7511 out of bounds>, defn = 0x
8b0a7511}}
(gdb) c
Continuing.

Bpt 4, do_define (buf=(unsigned char *) 0x3fffeaa8 "sequent 1", limit=(unsigned char *) 0x3fffeab1 "", op=(struct file_buf *) 0x0, keyword=(struct directive *) 0xd064) (cccp.c line 2844)

Bpt 5, do_define (buf=(unsigned char *) 0x3fffeaa8 "sequent 1", limit=(unsigned char *) 0x3fffeab1 "", op=(struct file_buf *) 0x0, keyword=(struct directive *) 0xd064) (cccp.c line 2917)
install (name=(unsigned char *) 0x3fffeaa8 "sequent 1", len=7, type=T_MACRO, value=86080, hash=1344) (cccp.c line 4871)
(gdb) Breakpoint 6 at 0x83b2: file cccp.c, line 4894.
(gdb) 






c
Note: breakpoint 6  also set at pc 0x83b2
Breakpoint 7 at 0x83b2: file cccp.c, line 4894.
(gdb) Note: breakpoints 6 and 7  also set at pc 0x83b2
Breakpoint 8 at 0x83b2: file cccp.c, line 4894.
(gdb) Note: breakpoints 6, 7 and 8  also set at pc 0x83b2
Breakpoint 9 at 0x83b2: file cccp.c, line 4894.
(gdb) Note: breakpoints 6, 7, 8 and 9  also set at pc 0x83b2
Breakpoint 10 at 0x83b2: file cccp.c, line 4894.
(gdb) Note: breakpoints 6, 7, 8, 9 and 10  also set at pc 0x83b2
Breakpoint 11 at 0x83b2: file cccp.c, line 4894.
(gdb) Note: breakpoints 6, 7, 8, 9, 10 and 11  also set at pc 0x83b2
Breakpoint 12 at 0x83b2: file cccp.c, line 4894.
(gdb) Note: breakpoints 6, 7, 8, 9, 10, 11 and 12  also set at pc 0x83b2
Breakpoint 13 at 0x83b2: file cccp.c, line 4894.
(gdb) Continuing.

Bpt 6, install (name=(unsigned char *) 0x3fffeaa8 "sequent 1", len=7, type=T_MACRO, value=86080, hash=1344) (cccp.c line 4894)
(gdb) i lo
hp = Invalid cast.
(gdb) i lo
hp = Invalid cast.
(gdb) p hp
Invalid cast.
(gdb) i ar
name = (unsigned char *) 0x3fffeaa8 "sequent 1"
len = 7
type = T_MACRO
value = 86080
hash = 1344
(gdb) p hp
Invalid cast.
(gdb) p p
$16 = (unsigned char *) 0x1425c ""
(gdb) 
(gdb) p q
$17 = (unsigned char *) 0x3fffeaa8 "sequent 1"
(gdb) p {unsigned long}hp
Invalid cast.
(gdb) p {unsigned long}hp
Invalid cast.
Run till exit from #0  install (name=(unsigned char *) 0x3fffeaa8 "sequent 1", len=7, type=T_MACRO, value=86080, hash=1344) (cccp.c line 4897)
0x5405 in do_define (buf=(unsigned char *) 0x3fffeaa8 "sequent 1", limit=(unsigned char *) 0x3fffeab1 "", op=(struct file_buf *) 0x0, keyword=(struct directive *) 0xd064) (cccp.c line 2934)
Value returned is $18 = (struct hashnode *) 0x4240
(gdb) p *$18
$19 = {next = 0x24648d03, prev = 0x7de85004, bucket_hdr = 0x89000064, type = 1979710533, length = 1088907492, name = 0x75ff0000 <Address 0x75ff0000 out of bounds>, value = {ival = 1808460028, cpval = 0x6bcae8fc <Address 0x6bcae8fc out of bounds>, defn = 0
x6bcae8fc}}
(gdb) (gdb) (gdb) make_definition (str=(unsigned char *) 0x3fffeb20 "sequent") (cccp.c line 5198)
(gdb) (gdb) 



c
0x1d23 in main (argc=2, argv=(char **) 0x3fffebd8, 1073736676) (cccp.c line 785)
(gdb) (gdb) (gdb) (gdb) Continuing.

Bpt 2, do_define (buf=(unsigned char *) 0x16007 " TESTING 1\n\n#ifndef  STDIO\n#include <stdio.h>\n#endif\n", limit=(unsigned char *) 0x16011 "\n\n#ifndef  STDIO\n#include <stdio.h>\n#endif\n", op=(struct file_buf *) 0xec80, keyword=(struct directive *) 0
xd064) (cccp.c line 2823)
(gdb) c
Continuing.

Bpt 4, do_define (buf=(unsigned char *) 0x16007 " TESTING 1\n\n#ifndef  STDIO\n#include <stdio.h>\n#endif\n", limit=(unsigned char *) 0x16011 "\n\n#ifndef  STDIO\n#include <stdio.h>\n#endif\n", op=(struct file_buf *) 0xec80, keyword=(struct directive *) 0
xd064) (cccp.c line 2844)

Bpt 5, do_define (buf=(unsigned char *) 0x16007 " TESTING 1\n\n#ifndef  STDIO\n#include <stdio.h>\n#endif\n", limit=(unsigned char *) 0x16011 "\n\n#ifndef  STDIO\n#include <stdio.h>\n#endif\n", op=(struct file_buf *) 0xec80, keyword=(struct directive *) 0
xd064) (cccp.c line 2917)
install (name=(unsigned char *) 0x16008 "TESTING 1\n\n#ifndef  STDIO\n#include <stdio.h>\n#endif\n", len=7, type=T_MACRO, value=86112, hash=950) (cccp.c line 4871)
(gdb) c
Continuing.

Bpt 6, install (name=(unsigned char *) 0x16008 "TESTING 1\n\n#ifndef  STDIO\n#include <stdio.h>\n#endif\n", len=7, type=T_MACRO, value=86112, hash=950) (cccp.c line 4894)
(gdb) p hp
Invalid cast.
(gdb) p i
$20 = 36
(gdb) p name
$21 = (unsigned char *) 0x16008 "TESTING 1\n\n#ifndef  STDIO\n#include <stdio.h>\n#endif\n"
(gdb) p *hp
Invalid cast.
(gdb) whatis hp
type = struct hashnode  {
    struct hashnode *next;
    struct hashnode *prev;
    struct hashnode **bucket_hdr;
    enum node_type type;
    int length;
    unsigned char *name;
    union hashval value;
} *
(gdb) p (unsigned long)hp
Invalid cast.
(gdb) p (unsigned long)hp
Invalid cast.
(gdb) p hashtab[bucket]
$22 = (struct hashnode *) 0x14280
(gdb) p *$22
$23 = {next = 0x0, prev = 0x0, bucket_hdr = 0x11788, type = T_MACRO, length = 7, name = 0x1429c "", value = {ival = 86112, cpval = 0x15060 "\377\377\377\377\003", defn = 0x15060}}
(gdb) whatis hashtab[bucket]
type = struct hashnode  {
    struct hashnode *next;
    struct hashnode *prev;
    struct hashnode **bucket_hdr;
    enum node_type type;
    int length;
    unsigned char *name;
    union hashval value;
} *
(gdb) set hp=hashtab[bucket]
Invalid cast.
(gdb) whatis hp
No symbol "is" in current context.
(gdb) whatis hp
type = struct hashnode  {
    struct hashnode *next;
    struct hashnode *prev;
    struct hashnode **bucket_hdr;
    enum node_type type;
    int length;
    unsigned char *name;
    union hashval value;
} *
(gdb) p hashtab[bucket]
$24 = (struct hashnode *) 0x14280
Run till exit from #0  install (name=(unsigned char *) 0x16008 "TESTING 1\n\n#ifndef  STDIO\n#include <stdio.h>\n#endif\n", len=7, type=T_MACRO, value=86112, hash=950) (cccp.c line 4894)
0x5405 in do_define (buf=(unsigned char *) 0x16007 " TESTING 1\n\n#ifndef  STDIO\n#include <stdio.h>\n#endif\n", limit=(unsigned char *) 0x16011 "\n\n#ifndef  STDIO\n#include <stdio.h>\n#endif\n", op=(struct file_buf *) 0xec80, keyword=(struct directive *
) 0xd064) (cccp.c line 2934)
Value returned is $25 = (struct hashnode *) 0x4280
(gdb) p lookup("TESTING",-1,-1)
?
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads