From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 27993 invoked from network); 6 Dec 2020 17:07:04 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 6 Dec 2020 17:07:04 -0000 Received: (qmail 8022 invoked by uid 550); 6 Dec 2020 17:07:02 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 8004 invoked from network); 6 Dec 2020 17:07:01 -0000 Date: Sun, 6 Dec 2020 12:06:49 -0500 From: Rich Felker To: Ariadne Conill Cc: Szabolcs Nagy , musl@lists.openwall.com, Drew DeVault Message-ID: <20201206170647.GF534@brightrain.aerifal.cx> References: <3879728.LAGH0JGj17@nanabozho> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3879728.LAGH0JGj17@nanabozho> User-Agent: Mutt/1.5.21 (2010-09-15) Subject: Re: [musl] [PATCH v2] riscv64: correct struct __ucontext name On Sun, Dec 06, 2020 at 04:55:39PM +0000, Ariadne Conill wrote: > > Hello, > > On Sunday, December 6, 2020 5:49:25 AM MST Drew DeVault wrote: > > On Sun Dec 6, 2020 at 3:51 AM EST, Szabolcs Nagy wrote: > > > * Drew DeVault [2020-12-05 18:10:06 +0000]: > > > > This makes it consistent with other architectures and fixes some issues > > > > with downstream software. > > > > > > which software? > > > > > > glibc uses struct ucontext_t too and user code should use ucontext_t > > > without struct. > > Some glibc architecture ports use the struct __ucontext and even struct > ucontext names, or at least did in the past. > > > libucontext, which does use ucontext_t. > > > > In fact, the issue was more related to the type conflict with > > ucontext.h, which declared struct __ucontext in the scope of its > > function declarations due to the naming mismatch. > > glibc uses the POSIX 2004 standardized ucontext_t type in its public > definitions. I believe musl should do the same. This produces a compile-time error is ucontext.h is included without the right feature test macros, since signal.h will not have defined ucontext_t in that case. That's why the public declarations must use the struct tag. > As far as libucontext goes, this is increasingly moot because 0.13 will > introduce freestanding mode which avoids the musl definitions entirely, instead > using simplified (though ABI compatible) definitions, allowing it to not only be > used on musl but on other libc and other OS entirely (for example, it is known > to now build on AmigaOS and Darwin). > > libucontext using its own definitions is an important step toward eventually > taking ucontext.h out of musl entirely, and providing it in libucontext > instead, too, which I think musl should do since the ucontext API was dropped > from POSIX. It's still an open question whether musl will eventually add these, but the contents of ucontext.h are independent of the implementation; they're just function declarations. The *type* declarations are in signal.h and are *not* dropped from POSIX, so they can't be removed. > But right now, I think the best way forward is to leave the architecture > headers alone and just fix the ucontext.h definitions instead. I can send a > patch doing that if you want to focus on other things. As described above this does not work. Rich