Re: [PATCH] Emulate clock and other stubs on nvptx

Joel Sherrill <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <CAF9ehCUeBBS9Nv_B==bRRY8Gt9d8xJWXKZGVr2Oz2yhdRxMozA@mail.gmail.com>
Should these be in a machine directory or a libgloss directory? If you ran
a different run-time/OS on the CPU, at least some of these wouldn't make
sense to be there.

--joel

On Wed, Aug 18, 2021, 11:43 AM Roger Sayle <[email protected]>
wrote:

>
> Please be gentle, this is my first patch to newlib.
>
> This patch to the libc/machine/nvptx port of newlib implements an
> approximation
> of "clock" and provides some additional stub routines.  These changes not
> only
> reduce the number of (link) failures in the GCC testsuite when targeting
> nvptx-none,
> but also allow the NIST scimark4 benchmark to compile and run without
> modification.
>
> newlib already contains support for backends to provide their own clock
> implementations
> via -DCLOCK_PROVIDED.  That functionality is used here to return an
> approximate
> elapsed time based on the NVidia GPU's clock64 cycle counter.  Although not
> great,
> this is better than the current behaviour of link error from the unresolved
> symbol
> _times_r.
>
> The other part of the patch is to add a small number of stub functions to
> nvptx's
> misc.c.  Adding isatty, for example, resolves linking problems in libc from
> the
> dependency in __smakebuf_r, and the sync stub, for example, fixes the
> failure
> with GCC's testsuite/gfortran.dg/ISO_Fortran_binding_14.f90 [which simply
> tests that gfortran can call a/any C function].
>
> Hopefully, these changes are acceptable.  If so, if someone could please
> commit
> them for me that would be much appreciated (as I don't have repository
> access).
> Likewise, these changes should be obvious enough to not require a copyright
> assignment, but to avoid any objections, I'm happy to put them in the
> public
> domain.
>
> 2021-08-18  Roger Sayle  <[email protected]>
>
> newlib/
>         configure.host: Add -DCLOCK_PROVIDED to newlib_cflags on nvptx*.
>
> newlib/libc/machine/nvptx
>         Makefile.am: Add clock.c to lib_a_SOURCES.
>         clock.c: New source file to implement/approximate clock().
>         misc.c: Add stubs for fstat, isatty, open, sync and unlink.
>         Makefile.in: Regenerate.
>
> Many thanks in advance,
> Roger
> --
> Roger Sayle
> NextMove Software Limited
> Cambridge, UK
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.