public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
From: "vries at gcc dot gnu.org" <sourceware-bugzilla@sourceware.org>
To: gdb-prs@sourceware.org
Subject: [Bug tdep/30021] New: [gdb/tdep, powerpc64le] previous frame inner to this frame (corrupt stack?)
Date: Wed, 18 Jan 2023 16:01:42 +0000	[thread overview]
Message-ID: <bug-30021-4717@http.sourceware.org/bugzilla/> (raw)

https://sourceware.org/bugzilla/show_bug.cgi?id=30021

            Bug ID: 30021
           Summary: [gdb/tdep, powerpc64le] previous frame inner to this
                    frame (corrupt stack?)
           Product: gdb
           Version: HEAD
            Status: NEW
          Severity: normal
          Priority: P2
         Component: tdep
          Assignee: unassigned at sourceware dot org
          Reporter: vries at gcc dot gnu.org
  Target Milestone: ---

Consider the following two-source test-case:
...
$ cat test.c
extern void foo (const char *);

int
main (void)
{
  foo ("foo");
  return 0;
}
$ cat test2.c
void
foo (const char *s)
{
}
...

Compiled like so:
...
$ gcc test2.c -c; gcc test.c -g test2.o
...
So, test2.c without debug info, test.c with debug info.

Disassembly of foo:
...
00000000100006b0 <foo>:
    100006b0:   f8 ff e1 fb     std     r31,-8(r1)
    100006b4:   c1 ff 21 f8     stdu    r1,-64(r1)
    100006b8:   78 0b 3f 7c     mr      r31,r1
    100006bc:   20 00 7f f8     std     r3,32(r31)
    100006c0:   00 00 00 60     nop
    100006c4:   40 00 3f 38     addi    r1,r31,64
    100006c8:   f8 ff e1 eb     ld      r31,-8(r1)
    100006cc:   20 00 80 4e     blr
        ...
    100006d8:   80 01 00 01     .long 0x1000180
    100006dc:   00 00 00 60     nop
...

Disassembly of main:
...
000000001000065c <main>:
    1000065c:   02 10 40 3c     lis     r2,4098
    10000660:   00 7f 42 38     addi    r2,r2,32512
    10000664:   a6 02 08 7c     mflr    r0
    10000668:   10 00 01 f8     std     r0,16(r1)
    1000066c:   f8 ff e1 fb     std     r31,-8(r1)
    10000670:   d1 ff 21 f8     stdu    r1,-48(r1)
    10000674:   78 0b 3f 7c     mr      r31,r1
    10000678:   fe ff 62 3c     addis   r3,r2,-2
    1000067c:   40 89 63 38     addi    r3,r3,-30400
    10000680:   31 00 00 48     bl      100006b0 <foo>
    10000684:   00 00 00 60     nop
    10000688:   00 00 20 39     li      r9,0
    1000068c:   78 4b 23 7d     mr      r3,r9
    10000690:   30 00 3f 38     addi    r1,r31,48
    10000694:   10 00 01 e8     ld      r0,16(r1)
    10000698:   a6 03 08 7c     mtlr    r0
    1000069c:   f8 ff e1 eb     ld      r31,-8(r1)
    100006a0:   20 00 80 4e     blr
    100006a4:   00 00 00 00     .long 0x0
    100006a8:   00 00 00 01     .long 0x1000000
    100006ac:   80 01 00 01     .long 0x1000180
...

With this gdb session, we get a 'corrupt stack?' message:
...
$ gdb -q -batch a.out \
    -ex start \
    -ex "display /i \$pc" \
    -ex "si 9" \
    -ex up \
    -ex "info frame"
Temporary breakpoint 1 at 0x10000678: file test.c, line 6.

Temporary breakpoint 1, main () at test.c:6
6         foo ("foo");
0x00000000100006c8 in foo ()
1: x/i $pc
=> 0x100006c8 <foo+24>: ld      r31,-8(r1)
#1  0x0000000010000684 in main () at test.c:6
6         foo ("foo");
Stack level 1, frame at 0x7fffffffeec0:
 pc = 0x10000684 in main (test.c:6); saved pc = <not saved>
 Outermost frame: previous frame inner to this frame (corrupt stack?)
 caller of frame at 0x7fffffffeed0
 source language c.
 Arglist at 0x7fffffffee90, args: 
 Locals at 0x7fffffffee90, Previous frame's sp is 0x7fffffffeec0
 Saved registers:
  r31 at 0x7fffffffeeb8, pc at 0x7fffffffeed0, lr at 0x7fffffffeed0
...

We don't get that message with "si 8" or "si 10".

Also, if I drop the -g, we don't get that message.

Likewise, if I add -g for both source files, we don't get that message.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

             reply	other threads:[~2023-01-18 16:01 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-18 16:01 vries at gcc dot gnu.org [this message]
2023-01-19 11:14 ` [Bug tdep/30021] " vries at gcc dot gnu.org
2023-01-23 15:33 ` vries at gcc dot gnu.org
2023-01-23 15:38 ` vries at gcc dot gnu.org
2023-01-24  0:14 ` vries at gcc dot gnu.org
2023-01-24 10:46 ` vries at gcc dot gnu.org
2023-01-24 11:46 ` vries at gcc dot gnu.org
2023-01-25 12:27 ` cvs-commit at gcc dot gnu.org
2023-01-26 16:12 ` cel at us dot ibm.com
2023-01-26 16:14 ` cel at us dot ibm.com
2023-01-26 16:16 ` vries at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-30021-4717@http.sourceware.org/bugzilla/ \
    --to=sourceware-bugzilla@sourceware.org \
    --cc=gdb-prs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).