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?
next prev 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