public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
From: "pedro at palves dot net" <sourceware-bugzilla@sourceware.org>
To: gdb-prs@sourceware.org
Subject: [Bug gdb/30525] gdb cannot read shared libraries on SPARC64
Date: Wed, 07 Jun 2023 09:05:21 +0000	[thread overview]
Message-ID: <bug-30525-4717-pEwBoWUvud@http.sourceware.org/bugzilla/> (raw)
In-Reply-To: <bug-30525-4717@http.sourceware.org/bugzilla/>

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

--- Comment #3 from Pedro Alves <pedro at palves dot net> ---
> (gdb) info sharedlibrary
> Cannot access memory at address 0xfff80001002011e0
> Cannot access memory at address 0xfff80001002011d8
> Cannot access memory at address 0xfff80001002011d8

Those addresses look suspiciously high for userspace.  They are 64-bit
addresses, with the high bits set.  When interpreted as signed, they'd be
negative.  Are they really correct?

We have, in gdb/linux-nat.c:

static enum target_xfer_status
linux_proc_xfer_memory_partial_fd (int fd, int pid,
                                   gdb_byte *readbuf, const gdb_byte *writebuf,
                                   ULONGEST offset, LONGEST len,
                                   ULONGEST *xfered_len)
{
  ssize_t ret;

  gdb_assert (fd != -1);

  /* Use pread64/pwrite64 if available, since they save a syscall and can
     handle 64-bit offsets even on 32-bit platforms (for instance, SPARC
     debugging a SPARC64 application).  */
#ifdef HAVE_PREAD64
  ret = (readbuf ? pread64 (fd, readbuf, len, offset)
         : pwrite64 (fd, writebuf, len, offset));
#else
  ret = lseek (fd, offset, SEEK_SET);
  if (ret != -1)
    ret = (readbuf ? read (fd, readbuf, len)
           : write (fd, writebuf, len));
#endif


So one thing to check is whether the HAVE_PREAD64 code is enabled.  And then,
that may be failing due to a negative offset, give pread64's offset parameter
is an off_t.

Try enabling "set debug linux-nat 1", so that the following log is output:

  if (ret == -1)
    {
      linux_nat_debug_printf ("accessing fd %d for pid %d failed: %s (%d)",
                              fd, pid, safe_strerror (errno), errno);
      return TARGET_XFER_E_IO;
    }

Maybe the errno gives us some clue.

Does hacking the linux-nat.c:proc_mem_file_is_writable to always return false
paper over the problem?

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

  parent reply	other threads:[~2023-06-07  9:05 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-06 19:19 [Bug gdb/30525] New: " mattst88 at gmail dot com
2023-06-06 19:19 ` [Bug gdb/30525] " mattst88 at gmail dot com
2023-06-06 22:27 ` mattst88 at gmail dot com
2023-06-07  8:36 ` sam at gentoo dot org
2023-06-07  8:37 ` sam at gentoo dot org
2023-06-07  9:05 ` pedro at palves dot net [this message]
2023-06-07 10:19 ` pedro at palves dot net
2023-06-07 10:44 ` pedro at palves dot net
2023-06-07 14:43 ` mattst88 at gmail dot com
2023-06-07 15:18 ` mattst88 at gmail dot com
2023-06-07 15:33 ` mattst88 at gmail dot com
2023-06-07 22:11 ` pedro at palves dot net
2023-06-07 22:12 ` pedro at palves dot net
2023-06-07 23:57 ` mattst88 at gmail dot com
2023-06-14 23:42 ` mattst88 at gmail dot com
2023-06-15 10:39 ` pedro at palves dot net
2023-07-05 13:43 ` pedro at palves dot net
2023-07-06 16:58 ` cvs-commit at gcc dot gnu.org
2023-07-06 20:55 ` sam at gentoo dot 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-30525-4717-pEwBoWUvud@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).