public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug symtab/29318] New: [gdb] FAIL: gdb.base/gcore-relro-pie.exp: x/i $pc
@ 2022-07-04 19:08 vries at gcc dot gnu.org
  2022-07-04 19:19 ` [Bug symtab/29318] " vries at gcc dot gnu.org
  2022-07-05  7:37 ` vries at gcc dot gnu.org
  0 siblings, 2 replies; 3+ messages in thread
From: vries at gcc dot gnu.org @ 2022-07-04 19:08 UTC (permalink / raw)
  To: gdb-prs

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

            Bug ID: 29318
           Summary: [gdb] FAIL: gdb.base/gcore-relro-pie.exp: x/i $pc
           Product: gdb
           Version: HEAD
            Status: NEW
          Severity: normal
          Priority: P2
         Component: symtab
          Assignee: unassigned at sourceware dot org
          Reporter: vries at gcc dot gnu.org
  Target Milestone: ---

On a rather specific setup (SLE 15 SP4 with binutils from the development
package in OBS), I ran into:
...
FAIL: gdb.base/gcore-relro-pie.exp: x/i $pc
FAIL: gdb.base/gcore-relro-pie.exp: unstripped + core ok
...

More specifically:
...
(gdb) x/i $pc^M
=> 0x55555555466e:      mov    $0x0,%eax^M
(gdb) FAIL: gdb.base/gcore-relro-pie.exp: x/i $pc
frame^M
#0  0x000055555555466e in ?? ()^M
(gdb) FAIL: gdb.base/gcore-relro-pie.exp: unstripped + core ok
...

I managed to reproduce the same without the "ldflags=-Wl,-z,relro" in the
test-case, so it doesn't seem to be specific to that setting.

After some debugging, I found that with "set verbose on", and a passing setup I
have:
...
Using PIE (Position Independent Executable) displacement 0x555555554000 for
"/home/vries/gdb_versions/devel/build/gdb/testsuite/outputs/gdb.base/gcore-relro-pie/gcore-relro-pie".
...
but this is missing, so we're failing in svr4_exec_displacement.

That seems to be caused by this alignment mismatch introduced by strip:
...
$ readelf -l -W  gcore-relro-pie | grep GNU_ST
  GNU_STACK      0x000000 0x0000000000000000 0x0000000000000000 0x000000
0x000000 RW  0x10
$ readelf -l -W  gcore-relro-pie.stripped | grep GNU_ST
  GNU_STACK      0x000000 0x0000000000000000 0x0000000000000000 0x000000
0x000000 RW  0x8
...

I have not been able to reproduce this outside the specific setup, so the strip
problem may be specific to the package.

Anyway, so we're failing to match core file with unstripped file due to this
difference, and we've already matched buildid, confirming the match.

So, we may be too eager to mismatch.  We could just match based on the buildid,
and produce warnings about unexpected mismatches like the one mentioned above.

A similar idea was mentioned earlier at PR21126.

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug symtab/29318] [gdb] FAIL: gdb.base/gcore-relro-pie.exp: x/i $pc
  2022-07-04 19:08 [Bug symtab/29318] New: [gdb] FAIL: gdb.base/gcore-relro-pie.exp: x/i $pc vries at gcc dot gnu.org
@ 2022-07-04 19:19 ` vries at gcc dot gnu.org
  2022-07-05  7:37 ` vries at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: vries at gcc dot gnu.org @ 2022-07-04 19:19 UTC (permalink / raw)
  To: gdb-prs

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

--- Comment #1 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #0)
> That seems to be caused by this alignment mismatch introduced by strip:
> ...
> $ readelf -l -W  gcore-relro-pie | grep GNU_ST
>   GNU_STACK      0x000000 0x0000000000000000 0x0000000000000000 0x000000
> 0x000000 RW  0x10
> $ readelf -l -W  gcore-relro-pie.stripped | grep GNU_ST
>   GNU_STACK      0x000000 0x0000000000000000 0x0000000000000000 0x000000
> 0x000000 RW  0x8
> ...
> 
> I have not been able to reproduce this outside the specific setup, so the
> strip problem may be specific to the package.
> 

I was able to reproduce this with binutils trunk from today, using
--disable-separate-code, which has an effect here in bfd/elf64-x86-64.c:
...
#if DEFAULT_LD_Z_SEPARATE_CODE
# define ELF_MAXPAGESIZE                    0x1000
#else
# define ELF_MAXPAGESIZE                    0x200000
#endif
...
which causes elf_is_p_align_valid to behave differently, which is called from
copy_elf_program_header.

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug symtab/29318] [gdb] FAIL: gdb.base/gcore-relro-pie.exp: x/i $pc
  2022-07-04 19:08 [Bug symtab/29318] New: [gdb] FAIL: gdb.base/gcore-relro-pie.exp: x/i $pc vries at gcc dot gnu.org
  2022-07-04 19:19 ` [Bug symtab/29318] " vries at gcc dot gnu.org
@ 2022-07-05  7:37 ` vries at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: vries at gcc dot gnu.org @ 2022-07-05  7:37 UTC (permalink / raw)
  To: gdb-prs

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

--- Comment #2 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #1)
> (In reply to Tom de Vries from comment #0)
> > That seems to be caused by this alignment mismatch introduced by strip:
> > ...
> > $ readelf -l -W  gcore-relro-pie | grep GNU_ST
> >   GNU_STACK      0x000000 0x0000000000000000 0x0000000000000000 0x000000
> > 0x000000 RW  0x10
> > $ readelf -l -W  gcore-relro-pie.stripped | grep GNU_ST
> >   GNU_STACK      0x000000 0x0000000000000000 0x0000000000000000 0x000000
> > 0x000000 RW  0x8
> > ...
> > 
> > I have not been able to reproduce this outside the specific setup, so the
> > strip problem may be specific to the package.
> > 
> 
> I was able to reproduce this with binutils trunk from today, using
> --disable-separate-code, which has an effect here in bfd/elf64-x86-64.c:
> ...
> #if DEFAULT_LD_Z_SEPARATE_CODE
> # define ELF_MAXPAGESIZE                    0x1000
> #else
> # define ELF_MAXPAGESIZE                    0x200000
> #endif
> ...
> which causes elf_is_p_align_valid to behave differently, which is called
> from copy_elf_program_header.

Filed binutils counterpart, PR29319.

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-07-05  7:37 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-04 19:08 [Bug symtab/29318] New: [gdb] FAIL: gdb.base/gcore-relro-pie.exp: x/i $pc vries at gcc dot gnu.org
2022-07-04 19:19 ` [Bug symtab/29318] " vries at gcc dot gnu.org
2022-07-05  7:37 ` vries at gcc dot gnu.org

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).