From 3aaa66f813d099dbb04e637459e168800d231aa3 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Mon, 29 Jan 2001 22:40:50 +0000 Subject: [PATCH] 2001-01-29 Jeff Johnston * libc/include/math.h (signgam): Change to errno-like solution using a function to return the address of the real signgam. * libc/reent/signgam.c: New file containing __signgam(). * libc/reent/Makefile.am: Added signgam.c to list of files. * libc/reent/Makefile.in: Regenerated. --- newlib/ChangeLog | 8 ++++++++ newlib/libc/include/math.h | 6 +++++- newlib/libc/reent/Makefile.am | 1 + newlib/libc/reent/Makefile.in | 8 +++++--- newlib/libc/reent/signgam.c | 16 ++++++++++++++++ 5 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 newlib/libc/reent/signgam.c diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 0e05f7e1e..994eee936 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,11 @@ +2001-01-29 Jeff Johnston + + * libc/include/math.h (signgam): Change to errno-like solution + using a function to return the address of the real signgam. + * libc/reent/signgam.c: New file containing __signgam(). + * libc/reent/Makefile.am: Added signgam.c to list of files. + * libc/reent/Makefile.in: Regenerated. + 2001-01-25 Alexandre Oliva * libc/sys/sh/syscalls.c (_times): New. diff --git a/newlib/libc/include/math.h b/newlib/libc/include/math.h index f092aff19..255bf3bff 100644 --- a/newlib/libc/include/math.h +++ b/newlib/libc/include/math.h @@ -185,8 +185,12 @@ extern float dremf _PARAMS((float, float)); #endif /* ! defined (_REENT_ONLY) */ /* The gamma functions use a global variable, signgam. */ +#ifndef _REENT_ONLY +#define signgam (*__signgam()) +extern int *__signgam _PARAMS((void)); +#endif /* ! defined (_REENT_ONLY) */ -extern __IMPORT int signgam; +#define __signgam_r(ptr) ((ptr)->_new._reent._gamma_signgam) /* The exception structure passed to the matherr routine. */ diff --git a/newlib/libc/reent/Makefile.am b/newlib/libc/reent/Makefile.am index 87a847e65..655168aa6 100644 --- a/newlib/libc/reent/Makefile.am +++ b/newlib/libc/reent/Makefile.am @@ -18,6 +18,7 @@ lib_a_SOURCES = \ readr.c \ signalr.c \ sbrkr.c \ + signgam.c \ statr.c \ timer.c \ unlinkr.c \ diff --git a/newlib/libc/reent/Makefile.in b/newlib/libc/reent/Makefile.in index 7c1f93134..568d42d73 100644 --- a/newlib/libc/reent/Makefile.in +++ b/newlib/libc/reent/Makefile.in @@ -100,6 +100,7 @@ lib_a_SOURCES = \ readr.c \ signalr.c \ sbrkr.c \ + signgam.c \ statr.c \ timer.c \ unlinkr.c \ @@ -141,7 +142,8 @@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ lib_a_LIBADD = lib_a_OBJECTS = closer.o reent.o impure.o execr.o fstatr.o linkr.o \ -lseekr.o openr.o readr.o signalr.o sbrkr.o statr.o timer.o unlinkr.o writer.o +lseekr.o openr.o readr.o signalr.o sbrkr.o signgam.o statr.o timer.o \ +unlinkr.o writer.o CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -151,7 +153,7 @@ DIST_COMMON = Makefile.am Makefile.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -TAR = tar +TAR = gtar GZIP_ENV = --best SOURCES = $(lib_a_SOURCES) OBJECTS = $(lib_a_OBJECTS) @@ -237,7 +239,7 @@ distdir: $(DISTFILES) @for file in $(DISTFILES); do \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ - cp -pr $$/$$file $(distdir)/$$file; \ + cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ diff --git a/newlib/libc/reent/signgam.c b/newlib/libc/reent/signgam.c new file mode 100644 index 000000000..905386686 --- /dev/null +++ b/newlib/libc/reent/signgam.c @@ -0,0 +1,16 @@ +/* The signgam variable is stored in the reentrancy structure. This + function returns its address for use by the macro signgam defined in + math.h. */ + +#include +#include + +#ifndef _REENT_ONLY + +int * +__signgam () +{ + return &_REENT->_new._reent._gamma_signgam; +} + +#endif