delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/2005/01/01/11:32:43

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 <Brian DOT Inglis AT SystematicSw DOT ab DOT ca>
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)
References: <b24ct0djfmkn9sq8tjr2df792rfhdf4d0e AT 4ax DOT com>
<200501010313 DOT j013Do4F018246 AT speedy DOT ludd DOT ltu DOT se>
<m4ect01p964inq4g0pb0dtk3u90p4e3mn2 AT 4ax DOT com>
<01c4eff0$Blat.v2.2.2$d6643f20 AT zahav DOT net DOT il>
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

On Sat, 01 Jan 2005 12:57:25 +0200, Eli Zaretskii <eliz AT gnu DOT org>
wrote:

>> Date: Fri, 31 Dec 2004 23:01:02 -0700
>> From: Brian Inglis <Brian DOT Inglis AT SystematicSw DOT ab DOT ca>
>> 
>> >You just define your (POSIX) functions that does the real work, adding
>> >them as stubs to <libc/stubs.h> 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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019