From owner-freebsd-hackers@FreeBSD.ORG Mon May 11 22:14:26 2009 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 505081065673; Mon, 11 May 2009 22:14:26 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 21E218FC0A; Mon, 11 May 2009 22:14:26 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id CB47946B09; Mon, 11 May 2009 18:14:25 -0400 (EDT) Received: from jhbbsd.hudson-trading.com (unknown [209.249.190.8]) by bigwig.baldwin.cx (Postfix) with ESMTPA id B107C8A025; Mon, 11 May 2009 18:14:24 -0400 (EDT) From: John Baldwin To: Kostik Belousov Date: Mon, 11 May 2009 16:23:52 -0400 User-Agent: KMail/1.9.7 References: <46FDBAFC.1010000@gmail.com> <200905111446.14439.jhb@freebsd.org> <20090511185814.GD1948@deviant.kiev.zoral.com.ua> In-Reply-To: <20090511185814.GD1948@deviant.kiev.zoral.com.ua> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200905111623.52881.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Mon, 11 May 2009 18:14:24 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.95 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.5 required=4.2 tests=AWL,BAYES_00,RDNS_NONE autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: freebsd-hackers@freebsd.org, Ighighi Subject: Re: POSIXfy readlink() call X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 May 2009 22:14:26 -0000 On Monday 11 May 2009 2:58:14 pm Kostik Belousov wrote: > On Mon, May 11, 2009 at 02:46:14PM -0400, John Baldwin wrote: > > On Monday 11 May 2009 2:33:09 pm Kostik Belousov wrote: > > > On Mon, May 11, 2009 at 02:05:07PM -0400, John Baldwin wrote: > > > > On Friday 28 September 2007 10:39:56 pm Ighighi wrote: > > > ^^^^^ > > > > Yes, I had this stuck in the back of my head from when it first appeared. > > > > > > > The POXIX prototype for readlink(2) is: > > > > > ssize_t readlink(const char *restrict path, char *restrict buf, size_t > > > > > bufsize); > > > > > > > > It can't simply be corrected as it would change the ABI and thus requires > > a > > > > new system call, etc. However, do you really expect a symlink to be > > longer > > > > than 2^31 on a 64-bit machine? > > > > > > Yes, I agree that this is ABI change. > > > > > > Meantime, > > > r176215 | ru | 2008-02-12 22:09:04 +0200 (Tue, 12 Feb 2008) | 5 lines > > > > > > Change readlink(2)'s return type and type of the last argument > > > to match POSIX. > > > > > > Prodded by: Alexey Lyashkov > > > > > > I tried to convince ru@ that ABI breakage is not good, but has not > > > succeeded. > > > > Ugh, is this only in HEAD? If so, I will back it out for 8.0. If this made > > it into a release then this is a far bigger mess. Oh, good, this is only in > > 8. I will fix this ASAP. I can just add the new syscall I guess. > > You need to symver the syscalls. It requires some ugly games with our > syscall stubs, because gnu ld only honor .symver in the same object where > the symbol is defined. I did prototyped this some time ago, by including > a file with appropriate .symver from all stubs. So, after thinking about this out loud some more, it seems the ABI breakage would only be for 64-bit platforms that passed a -ve value as the buffer size. However, doing so would already either panic due to triggering an assertion, or result in otherwise undefined behavior and that making the new parameter unsigned actually results in the same undefined behavior in the non-panic case. -- John Baldwin