mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Rich Felker <dalias@libc.org>
To: musl@lists.openwall.com
Subject: Re: [musl] Minor style patch to exit.c
Date: Sun, 19 Jan 2020 12:38:04 -0500	[thread overview]
Message-ID: <20200119173804.GH30412@brightrain.aerifal.cx> (raw)
In-Reply-To: <alpine.LNX.2.20.13.2001192026520.7204@monopod.intra.ispras.ru>

On Sun, Jan 19, 2020 at 08:32:57PM +0300, Alexander Monakov wrote:
> 
> 
> On Sun, 19 Jan 2020, Rich Felker wrote:
> 
> > > I would suggest
> > > 
> > >   void (**ptr)(void);
> > > 
> > >   __asm__ ("" : "=g"(ptr) : "0"(..._end), "X"(..._start));
> > > 
> > >   while (ptr != _start) (*--ptr)();
> > 
> > I think we could just put the assignment outside the asm and use "+g".
> > Not clear why _start is needed as an input operand. It's external so
> > asm must be assumed to be able to see it.
> 
> In the context of LTO asms really need to mention referenced symbols in
> constraints. Plus, it's good to have "the pointer is related to _start"
> spelled out in the code.

I think this is true for objects defined in C code, but not for ones
defined in external asm or by the linker, which are not subject to any
analysis by LTO. Both the contents of inline asm statements and the
contents of external asm are black boxes, no? I think if they're not
treated as such lots of reasonable things would break.

> > BTW does the "X" constraint work all the way back to ancient gcc (and
> > then presumably with pcc, clang)? The first time I ever saw it was in
> > one of your other patches.
> 
> gcc documentation says 2.95 already had it.

Thanks! I tried looking at 3.x docs but forgot how to construct the
URLs.

Rich

  reply	other threads:[~2020-01-19 17:38 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-19 11:07 Markus Wichmann
2020-01-19 11:12 ` Markus Wichmann
2020-01-19 11:31 ` Szabolcs Nagy
2020-01-19 12:17   ` Markus Wichmann
2020-01-19 13:33   ` Alexander Cherepanov
2020-01-19 14:24     ` Markus Wichmann
2020-01-19 14:49       ` Pascal Cuoq
2020-01-19 15:53       ` Alexander Cherepanov
2020-01-19 16:22         ` Rich Felker
2020-01-19 21:02           ` Alexander Cherepanov
2020-01-19 14:46     ` Alexander Monakov
2020-01-19 16:18       ` Rich Felker
2020-01-19 17:11         ` Alexander Monakov
2020-01-19 17:17           ` Alexander Monakov
2020-01-19 17:19           ` Rich Felker
2020-01-19 17:32             ` Alexander Monakov
2020-01-19 17:38               ` Rich Felker [this message]
2020-01-19 19:13                 ` Alexander Monakov
2020-01-19 16:33       ` Alexander Cherepanov
2020-01-19 16:39         ` Rich Felker
2020-01-19 21:34           ` Alexander Cherepanov

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=20200119173804.GH30412@brightrain.aerifal.cx \
    --to=dalias@libc.org \
    --cc=musl@lists.openwall.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.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

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 NNTP newsgroup(s).