Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Michael Snyder <msnyder@redhat.com>
To: Daniel Jacobowitz <drow@mvista.com>
Cc: Jim Blandy <jimb@redhat.com>, Roland McGrath <roland@redhat.com>,
	gdb-patches@sources.redhat.com
Subject: Re: [PATCH] add-symbol-file-from-memory command
Date: Tue, 07 Oct 2003 23:32:00 -0000	[thread overview]
Message-ID: <3F834CF5.2080204@redhat.com> (raw)
In-Reply-To: <20031006154334.GA25069@nevyn.them.org>

Daniel Jacobowitz wrote:
> On Mon, Oct 06, 2003 at 10:29:05AM -0500, Jim Blandy wrote:
> 
>>It seems I'm confused about where the vsyscall support is useful.  I
>>thought it was Linux-specific, but folks disagreed.  I think it's
>>important to get this right, because that determines where the code
>>goes in GDB and what the interfaces are.
> 
> 
> No, I agree with you that vsyscalls are Linux-specific - for now at
> least.  But I think that the concept of add-symbol-file-from-memory is
> well separated from the concept of vsyscalls.  It seems like a useful
> thing to have for interacting with, say, a hypothetical minimalist ELF
> shared loader.
> 
> 
>>(This message rambles in a whiney sort of way, and then asks specific
>>questions at bottom.)
>>
>>One of the sources of my confusion is whether it's Linux-specific or
>>ELF-specific.  The vsyscall DSO only appears on Linux --- at the
>>moment.  But supporting it in GDB can be done without reference to
>>anything Linux-specific: you need to check the auxilliary vector (an
>>ELF thing) and read an ELF file out of memory.  It never makes
>>Linux-specific system calls, or relies on Linux-specific filesystem
>>layout stuff, for example.  So leaving linux-tdep.c and
>>config/nm-linux.h out of the picture entirely, and doing everything as
>>ELF-related code, will not introduce any interface violations.
> 
> 
> Except that the AT_SYSINFO tag is really Linux-specific.  There's no
> guarantee that nothing else would use the same auxv tag for something
> else.  I don't believe they're centrally registered, since they're
> ultimately system-specific by nature.
> 
> 
>>But although I understand that the Linux system call interface is
>>changing, and that the new interface requires the kernel to provide
>>unwinding information, because the old way of unwinding from system
>>calls no longer works, I've never understood why the system call
>>interface had to change in the first place.
>>
>>In a sense, it's irrelevant --- the interface *is* changing, and GDB
>>must continue to work.  But not understanding why the system call
>>interface must change makes it difficult for me to assess how likely
>>other systems are to adopt vsyscall DSO's, and thus whether it's
>>better to isolate the additional complexity to Linux-specific files,
>>even though the work is portable to all ELF targets, or whether it's
>>better to make it ELF-specific, to make it easy (or unnecessary) to
>>adapt GDB when the feature appears elsewhere.
>>
>>I think there's a good argument that one should simply always
>>implement everything using the smallest interface you can stand, even
>>if it's only used in a specific situation, because it makes the code
>>easier to reuse.  Since the vsyscall DSO support only really depends
>>on ELF stuff, and it automatically detects when it's needed (by the
>>presence of a specific element in the auxilliary vector), maybe that's
>>the best thing to do.
>>
>>
>>So, why did the kernel system call interface need to change?  How
>>likely are other Unices to begin using vsyscall DSO's?  I've seen
>>x86-64 and IA-64 mentioned; would it be useful on PPC and the S/390,
>>too?  (Just to pick random architectures out of the air.)
> 
> 
> This is all "as I understand it".  Feel free to correct, anyone.
> 
> The original motivation for x86 was that we have three different
> mechanisms for making a syscall:
>   - int $80
>   - sysenter
>   - syscall
> 
> It turns out that int $80 isn't the best way any more, on some
> processors.  sysenter (?) is much faster.  But changing the syscall
> interface is something that has to be done very delicately.... so the
> "new" way of doing syscalls isn't using sysenter, which wouldn't work
> everywhere etc.  It's "jump to this address in a preloaded DSO, on a
> kernel-mapped high memory page".  It's simple, powerful, extensible. 
> 
> The kernel can do other neat things with it too.  For ia64 there's been
> discussion of lightweight syscalls which can be implemented entirely
> within that page.  Gettimeofday is the best example.  I think there are
> some synchronization etc. issues with this (plus you lose strace
> ability if you're not careful!) so it hasn't been done yet.
> 
> And this page can also be used for signal trampolines, and is on some
> architectures.  Which is a beauteous and wonderful thing, because it
> can provide DWARF-2 CFI information for the signal trampoline.
> 
> I suspect at least the signal trampolines and lightweight syscalls
> could be useful on other architectures also.
> 

So, coming late to the discussion, is it fair to summarize that
a consensus is emerging that this is good and needful functionality,
which should go into gdb, pending only the resolution of a few
naming and placement issues?



  parent reply	other threads:[~2003-10-07 23:32 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-10-03  4:27 Roland McGrath
2003-10-03 21:41 ` Jim Blandy
2003-10-03 21:45   ` Daniel Jacobowitz
2003-10-03 22:08   ` Roland McGrath
2003-10-03 22:19   ` Elena Zannoni
2003-10-03 23:00     ` Roland McGrath
2003-10-04 12:57       ` Elena Zannoni
2003-10-04 20:14         ` Roland McGrath
2003-10-07  1:42           ` Andrew Cagney
2003-10-03 22:34   ` Andrew Cagney
2003-10-03 23:02     ` Roland McGrath
2003-10-04 14:39       ` Andrew Cagney
2003-10-06 15:30   ` Jim Blandy
2003-10-06 15:43     ` Daniel Jacobowitz
2003-10-06 19:57       ` Roland McGrath
2003-10-07 23:32       ` Michael Snyder [this message]
  -- strict thread matches above, loose matches on Subject: below --
2004-04-08 22:38 Roland McGrath
2004-04-15 18:11 ` Jim Blandy
2004-04-15 18:49   ` Andrew Cagney
2004-04-15 21:42   ` Roland McGrath
2004-04-08 20:47 Roland McGrath
2004-04-08 22:13 ` Jim Blandy
2004-04-08 22:28   ` Roland McGrath
2004-04-08 22:32     ` Daniel Jacobowitz
2004-04-08 22:35   ` Andrew Cagney
2004-04-08 22:42     ` Roland McGrath
2004-04-15 18:52       ` Andrew Cagney
2004-02-12  0:34 Roland McGrath
2004-02-13 15:54 ` Andrew Cagney
2004-02-13 19:13   ` Roland McGrath
2004-02-02  3:38 Roland McGrath
2004-02-02  4:06 ` Daniel Jacobowitz
2004-02-02  4:47   ` Roland McGrath
2004-02-02 15:02     ` Daniel Jacobowitz
2004-02-02 23:31       ` Roland McGrath
2004-02-02 23:34         ` Daniel Jacobowitz
2004-02-02  6:19 ` Eli Zaretskii
2004-02-02  7:35   ` Roland McGrath
2004-02-02 17:29     ` Eli Zaretskii
2003-05-20  7:01 Roland McGrath

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=3F834CF5.2080204@redhat.com \
    --to=msnyder@redhat.com \
    --cc=drow@mvista.com \
    --cc=gdb-patches@sources.redhat.com \
    --cc=jimb@redhat.com \
    --cc=roland@redhat.com \
    /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