X-Authentication-Warning: delorie.com: mail set sender to djgpp-workers-bounces using -f Date: Sat, 01 Jan 2005 09:32:31 -0700 From: Brian Inglis Subject: Re: More complaints from tests/libclink/check In-reply-to: <01c4eff0$Blat.v2.2.2$d6643f20@zahav.net.il> To: djgpp-workers AT delorie DOT com Message-id: <3sjdt059iqbg168tchivs4j1b6e77bc1jn@4ax.com> Organization: Systematic Software MIME-version: 1.0 X-Mailer: Forte Agent 1.93/32.576 English (American) Content-type: text/plain; charset=us-ascii References: <200501010313 DOT j013Do4F018246 AT speedy DOT ludd DOT ltu DOT se> <01c4eff0$Blat.v2.2.2$d6643f20 AT zahav DOT net DOT il> Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id j01GWgUr012869 Reply-To: djgpp-workers AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk On Sat, 01 Jan 2005 12:57:25 +0200, Eli Zaretskii wrote: >> Date: Fri, 31 Dec 2004 23:01:02 -0700 >> From: Brian Inglis >> >> >You just define your (POSIX) functions that does the real work, adding >> >them as stubs to and letting the C (89 or 99) call them >> >as necessary. >> >> I am not sure what you mean by stubs here? > >See src/libc/stubs/mkstubs.c. This program is invoked during the >library build; it scans the libc/stubs.h header and for each stub >there produces a stubNN.S file that defines a function which simply >jmp's to its alias. Thus, e.g., localtime_r will simply jmp to >localtime. The resulting stubNN.S files are then assembled and linked >into libc.a. > >> If the POSIX functions are not declared by including the appropriate >> header, or by calling them with a local declaration in scope, or if >> compiler options specify -ansi, we should not pollute the ISO Standard >> C namespace. > >The stub method solves this problem, as you only get localtime_r >linked in if you reference it in your program. > >The question is, as I wrote elsewhere in this thread, do we want the >*_r functions as simple aliases for the non-*_r functions, or do we >really want reentrancy. The *_r _POSIX_THREAD_SAFE_FUNCTIONS have different interfaces that support reentrancy/threads by allowing the caller to pass a buffer/struct pointer instead of using/returning an internal static buffer/struct. The ISO interfaces can just allocate their static buffer/struct and call the internal _*_r function, whereas the POSIX *_r interface can be stubbed jumps to the internal _*_r function. -- Thanks. Take care, Brian Inglis