Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Update.
1997-10-13 03:14  Ulrich Drepper  <drepper@cygnus.com>

	* libc.map: Move _IO_fopen, fopen, _IO_stdin_, _IO_stdout_,
	_IO_stderr_, _IO_list_all, and freopen to GLIBC_2.1 version.
	* include/libc-symbol.h: Define define_symbol.
	* libio/Makefile [$(versioning)=yes] (routines): Add oldiofopen and
	oldfreopen.
	[$(versioning)=yes] (aux): Add oldfileops and oldstdfiles.
	* libio/fileops.c: Use _IO_FILE_complete when accessing _offset field.
	* libio/freopen.c: Use versioning.
	* libio/iofopen.c: Likewise.  Generate object of type
	_IO_FILE_complete.
	* libio/iofopen64.c: Generate object of type _IO_FILE_complete.
	* libio/iolibio.h: Declare _IO_{old,new}_fopen and __{old,new}_freopen.
	Define _IO_old_freopen.
	* libio/libio.h: Remove _offset field from _IO_FILE.  Rename _unused2
	field to _old_offset.  Declare _IO_std*_ streams as of type
	_IO_FILE_complete.
	* libio/libioP.h: Define _IO_FILE_complete.
	Declare callbacks for old fileops implementation.
	* libio/stdfile.c: Define standard stream of type _IO_FILE_complete.
	* libio/stdio.c: Correctly address FILE part of standard streams.
	* libio/oldfileops.c: New file.
	* libio/oldfreopen.c: New file.
	* libio/oldiofopen.c: New file.
	* libio/oldstdfiles.c: New file.

	* sysdeps/i386/fpu/bits/mathinline.h: Define fma optimization.

	* sysdeps/libm-i387/e_scalb.S: Make sure code gets into .text section.
	* sysdeps/libm-i387/e_scalbl.S: Likewise.
	* sysdeps/libm-i387/s_fma.S: Fix typo.
	* sysdeps/libm-i387/s_fmaf.S: Likewise.
	* sysdeps/libm-i387/s_fmal.S: Likewise.

1997-10-12 20:14  Zack Weinberg  <zack@rabi.phys.columbia.edu>

	* sysdeps/stub/getsid.c: Add a stub_warning.
	* sysdeps/stub/mmap.c: Likewise.
	* sysdeps/stub/munmap.c: Likewise.

	* sysdeps/libm-ieee754/s_fma.c: New file.
	* sysdeps/libm-ieee754/s_fmaf.c: New file.
	* sysdeps/libm-ieee754/s_fmal.c: New file.
	* sysdeps/libm-ieee754/s_llrintf.c: New file.
	* sysdeps/libm-ieee754/s_llrintl.c: New file.
	* sysdeps/libm-ieee754/s_lrintf.c: New file.
	* sysdeps/libm-ieee754/s_lrintl.c: New file.
  • Loading branch information
Ulrich Drepper committed Oct 13, 1997
1 parent dfd2257 commit 1ea89a4
Show file tree
Hide file tree
Showing 26 changed files with 1,101 additions and 91 deletions.
55 changes: 48 additions & 7 deletions ChangeLog
@@ -1,3 +1,44 @@
1997-10-13 03:14 Ulrich Drepper <drepper@cygnus.com>

* libc.map: Move _IO_fopen, fopen, _IO_stdin_, _IO_stdout_,
_IO_stderr_, _IO_list_all, and freopen to GLIBC_2.1 version.
* include/libc-symbol.h: Define define_symbol.
* libio/Makefile [$(versioning)=yes] (routines): Add oldiofopen and
oldfreopen.
[$(versioning)=yes] (aux): Add oldfileops and oldstdfiles.
* libio/fileops.c: Use _IO_FILE_complete when accessing _offset field.
* libio/freopen.c: Use versioning.
* libio/iofopen.c: Likewise. Generate object of type
_IO_FILE_complete.
* libio/iofopen64.c: Generate object of type _IO_FILE_complete.
* libio/iolibio.h: Declare _IO_{old,new}_fopen and __{old,new}_freopen.
Define _IO_old_freopen.
* libio/libio.h: Remove _offset field from _IO_FILE. Rename _unused2
field to _old_offset. Declare _IO_std*_ streams as of type
_IO_FILE_complete.
* libio/libioP.h: Define _IO_FILE_complete.
Declare callbacks for old fileops implementation.
* libio/stdfile.c: Define standard stream of type _IO_FILE_complete.
* libio/stdio.c: Correctly address FILE part of standard streams.
* libio/oldfileops.c: New file.
* libio/oldfreopen.c: New file.
* libio/oldiofopen.c: New file.
* libio/oldstdfiles.c: New file.

* sysdeps/i386/fpu/bits/mathinline.h: Define fma optimization.

* sysdeps/libm-i387/e_scalb.S: Make sure code gets into .text section.
* sysdeps/libm-i387/e_scalbl.S: Likewise.
* sysdeps/libm-i387/s_fma.S: Fix typo.
* sysdeps/libm-i387/s_fmaf.S: Likewise.
* sysdeps/libm-i387/s_fmal.S: Likewise.

1997-10-12 20:14 Zack Weinberg <zack@rabi.phys.columbia.edu>

* sysdeps/stub/getsid.c: Add a stub_warning.
* sysdeps/stub/mmap.c: Likewise.
* sysdeps/stub/munmap.c: Likewise.

1997-10-12 05:09 Ulrich Drepper <drepper@cygnus.com>

* libio/Makefile (routines): Remove iofprintf.
Expand Down Expand Up @@ -36,9 +77,9 @@
* math/bits/mathcalls.h: Add nextafterx, scalbln, fma, lrint, llrint,
lround, and llround.
Change second argument of scalbn to `int'.
* sysdeps/libm-ieee754/s_fma.S: New file.
* sysdeps/libm-ieee754/s_fmaf.S: New file.
* sysdeps/libm-ieee754/s_fmal.S: New file.
* sysdeps/libm-ieee754/s_fma.c: New file.
* sysdeps/libm-ieee754/s_fmaf.c: New file.
* sysdeps/libm-ieee754/s_fmal.c: New file.
* sysdeps/libm-i387/s_fma.S: New file.
* sysdeps/libm-i387/s_fmaf.S: New file.
* sysdeps/libm-i387/s_fmal.S: New file.
Expand All @@ -51,10 +92,10 @@
* sysdeps/libm-ieee754/s_llrint.c: Remove version which works on
80bit double.
* sysdeps/libm-ieee754/s_lrint.c: Likewise.
* sysdeps/libm-ieee754/s_llrintf.S: New file.
* sysdeps/libm-ieee754/s_llrintl.S: New file.
* sysdeps/libm-ieee754/s_lrintf.S: New file.
* sysdeps/libm-ieee754/s_lrintl.S: New file.
* sysdeps/libm-ieee754/s_llrintf.c: New file.
* sysdeps/libm-ieee754/s_llrintl.c: New file.
* sysdeps/libm-ieee754/s_lrintf.c: New file.
* sysdeps/libm-ieee754/s_lrintl.c: New file.
* sysdeps/libm-i387/s_scalbln.c: New file. Empty file.
* sysdeps/libm-i387/s_scalblnf.c: New file. Empty file.
* sysdeps/libm-i387/s_scalblnl.c: New file. Empty file.
Expand Down
7 changes: 7 additions & 0 deletions include/libc-symbols.h
Expand Up @@ -325,4 +325,11 @@ extern const char _libc_intl_domainname[];
# endif /* ELF. */
#endif /* Have GNU ld. */

#if DO_VERSIONING
# define symbol_version(real, name, version) \
__asm__ (".symver " #real "," #name "@" #version)
#else
# define symbol_version(real, name, version)
#endif

#endif /* libc-symbols.h */
13 changes: 9 additions & 4 deletions libc.map
Expand Up @@ -3,7 +3,6 @@ GLIBC_2.0 {
# global variables
_errno; _itoa_lower_digits; _itoa_upper_digits;
__ctype_b; __ctype_tolower; __ctype_toupper;
_IO_stderr_; _IO_stdin_; _IO_stdout_;
_nl_msg_cat_cntr; __environ; _environ; _res;
___brk_addr; __curbrk; _nl_current_LC_CTYPE; _libc_intl_domainname;
_sys_errlist; _sys_siglist; __progname; _nl_default_dirname;
Expand Down Expand Up @@ -86,7 +85,7 @@ GLIBC_2.0 {
_IO_remove_marker; _IO_marker_difference; _IO_marker_delta;
_IO_seekmark; _IO_unsave_markers; _IO_str_overflow;
_IO_str_underflow; _IO_str_init_static; _IO_str_init_readonly;
_IO_str_seekoff; _IO_str_pbackfail; _IO_list_all; _IO_file_jumps;
_IO_str_seekoff; _IO_str_pbackfail; _IO_file_jumps;
_IO_peekc_locked;
__vsscanf; __vfscanf; __vsnprintf;
_rpc_dtablesize; _null_auth; _seterr_reply;
Expand Down Expand Up @@ -178,9 +177,9 @@ GLIBC_2.0 {
ferror_unlocked; fexecve; fflush; fflush_unlocked; ffs; fgetc;
fgetgrent; fgetgrent_r; fgetpos; fgetpos64; fgetpwent; fgetpwent_r; fgets;
fgetspent; fgetspent_r; fileno; fileno_unlocked; finite; finitef;
finitel; flock; flockfile; fmtmsg; fnmatch; fopen; fopen64; fopencookie;
finitel; flock; flockfile; fmtmsg; fnmatch; fopen64; fopencookie;
fork; fpathconf; fprintf; fputc; fputc_unlocked; fputs; fread; free;
freeaddrinfo; freopen; freopen64; frexp; frexpf; frexpl; fscanf; fseek;
freeaddrinfo; freopen64; frexp; frexpf; frexpl; fscanf; fseek;
fseeko; fseeko64; fsetpos; fsetpos64; fstatfs; fstatfs64; fsync; ftell;
ftello; ftello64; ftime; ftok; ftruncate; ftruncate64; ftrylockfile;
fts_children; fts_close; fts_open; fts_read; fts_set; ftw; ftw64;
Expand Down Expand Up @@ -417,3 +416,9 @@ GLIBC_2.0 {
local:
*;
};

GLIBC_2.1 {
global:
_IO_fopen; fopen; _IO_stdin_; _IO_stdout_; _IO_stderr_; _IO_list_all;
freopen;
} GLIBC_2.0;
8 changes: 8 additions & 0 deletions libio/Makefile
Expand Up @@ -42,6 +42,10 @@ all: # Make this the default target; it will be defined in Rules.

include ../Makeconfig

ifeq ($(versioning),yes)
routines += oldiofopen oldfreopen
endif

CPPFLAGS-.o += -DIO_DEBUG

ifneq (,$(filter %REENTRANT, $(defines)))
Expand All @@ -54,6 +58,10 @@ endif
aux := \
fileops genops stdfiles stdio strops

ifeq ($(versioning),yes)
aux += oldfileops oldstdfiles
endif

distribute := iolibio.h libioP.h strfile.h Banner

include ../Rules
40 changes: 24 additions & 16 deletions libio/fileops.c
Expand Up @@ -109,10 +109,11 @@ void
_IO_file_init (fp)
_IO_FILE *fp;
{
struct _IO_FILE_complete *fc = (struct _IO_FILE_complete *) fp;
/* POSIX.1 allows another file handle to be used to change the position
of our file descriptor. Hence we actually don't know the actual
position before we do the first fseek (and until a following fflush). */
fp->_offset = _IO_pos_BAD;
fc->_offset = _IO_pos_BAD;
fp->_IO_file_flags |= CLOSED_FILEBUF_FLAGS;

_IO_link_in(fp);
Expand All @@ -123,6 +124,7 @@ int
_IO_file_close_it (fp)
_IO_FILE *fp;
{
struct _IO_FILE_complete *fc = (struct _IO_FILE_complete *) fp;
int write_status, close_status;
if (!_IO_file_is_open (fp))
return EOF;
Expand All @@ -141,7 +143,7 @@ _IO_file_close_it (fp)
_IO_un_link (fp);
fp->_flags = _IO_MAGIC|CLOSED_FILEBUF_FLAGS;
fp->_fileno = EOF;
fp->_offset = _IO_pos_BAD;
fc->_offset = _IO_pos_BAD;

return close_status ? close_status : write_status;
}
Expand Down Expand Up @@ -221,14 +223,15 @@ _IO_file_attach (fp, fd)
_IO_FILE *fp;
int fd;
{
struct _IO_FILE_complete *fc = (struct _IO_FILE_complete *) fp;
if (_IO_file_is_open (fp))
return NULL;
fp->_fileno = fd;
fp->_flags &= ~(_IO_NO_READS+_IO_NO_WRITES);
fp->_flags |= _IO_DELETE_DONT_CLOSE;
/* Get the current position of the file. */
/* We have to do that since that may be junk. */
fp->_offset = _IO_pos_BAD;
fc->_offset = _IO_pos_BAD;
if (_IO_SEEKOFF (fp, (_IO_off64_t)0, _IO_seek_cur, _IOS_INPUT|_IOS_OUTPUT)
== _IO_pos_BAD && errno != ESPIPE)
return NULL;
Expand Down Expand Up @@ -260,6 +263,7 @@ _IO_do_write (fp, data, to_do)
const char *data;
_IO_size_t to_do;
{
struct _IO_FILE_complete *fc = (struct _IO_FILE_complete *) fp;
_IO_size_t count;
if (to_do == 0)
return 0;
Expand All @@ -269,14 +273,14 @@ _IO_do_write (fp, data, to_do)
is not needed nor desirable for Unix- or Posix-like systems.
Instead, just indicate that offset (before and after) is
unpredictable. */
fp->_offset = _IO_pos_BAD;
fc->_offset = _IO_pos_BAD;
else if (fp->_IO_read_end != fp->_IO_write_base)
{
_IO_fpos64_t new_pos
= _IO_SYSSEEK (fp, fp->_IO_write_base - fp->_IO_read_end, 1);
if (new_pos == _IO_pos_BAD)
return EOF;
fp->_offset = new_pos;
fc->_offset = new_pos;
}
count = _IO_SYSWRITE (fp, data, to_do);
if (fp->_cur_column)
Expand All @@ -292,6 +296,7 @@ int
_IO_file_underflow (fp)
_IO_FILE *fp;
{
struct _IO_FILE_complete *fc = (struct _IO_FILE_complete *) fp;
_IO_ssize_t count;
#if 0
/* SysV does not make this test; take it out for compatibility */
Expand Down Expand Up @@ -338,8 +343,8 @@ _IO_file_underflow (fp)
fp->_IO_read_end += count;
if (count == 0)
return EOF;
if (fp->_offset != _IO_pos_BAD)
_IO_pos_adjust (fp->_offset, count);
if (fc->_offset != _IO_pos_BAD)
_IO_pos_adjust (fc->_offset, count);
return *(unsigned char *) fp->_IO_read_ptr;
}

Expand Down Expand Up @@ -398,6 +403,7 @@ int
_IO_file_sync (fp)
_IO_FILE *fp;
{
struct _IO_FILE_complete *fc = (struct _IO_FILE_complete *) fp;
_IO_size_t delta;
int retval = 0;

Expand All @@ -424,7 +430,7 @@ _IO_file_sync (fp)
retval = EOF;
}
if (retval != EOF)
fp->_offset = _IO_pos_BAD;
fc->_offset = _IO_pos_BAD;
/* FIXME: Cleanup - can this be shared? */
/* setg(base(), ptr, ptr); */
_IO_cleanup_region_end (1);
Expand All @@ -438,6 +444,7 @@ _IO_file_seekoff (fp, offset, dir, mode)
int dir;
int mode;
{
struct _IO_FILE_complete *fc = (struct _IO_FILE_complete *) fp;
_IO_fpos64_t result;
_IO_off64_t delta, new_offset;
long count;
Expand Down Expand Up @@ -473,10 +480,10 @@ _IO_file_seekoff (fp, offset, dir, mode)
case _IO_seek_cur:
/* Adjust for read-ahead (bytes is buffer). */
offset -= fp->_IO_read_end - fp->_IO_read_ptr;
if (fp->_offset == _IO_pos_BAD)
if (fc->_offset == _IO_pos_BAD)
goto dumb;
/* Make offset absolute, assuming current pointer is file_ptr(). */
offset += _IO_pos_as_off (fp->_offset);
offset += _IO_pos_as_off (fc->_offset);

dir = _IO_seek_set;
break;
Expand All @@ -497,11 +504,11 @@ _IO_file_seekoff (fp, offset, dir, mode)
/* At this point, dir==_IO_seek_set. */

/* If destination is within current buffer, optimize: */
if (fp->_offset != _IO_pos_BAD && fp->_IO_read_base != NULL
if (fc->_offset != _IO_pos_BAD && fp->_IO_read_base != NULL
&& !_IO_in_backup (fp))
{
/* Offset relative to start of main get area. */
_IO_fpos64_t rel_offset = (offset - fp->_offset
_IO_fpos64_t rel_offset = (offset - fc->_offset
+ (fp->_IO_read_end - fp->_IO_read_base));
if (rel_offset >= 0)
{
Expand Down Expand Up @@ -575,7 +582,7 @@ _IO_file_seekoff (fp, offset, dir, mode)
_IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base + delta,
fp->_IO_buf_base + count);
_IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
fp->_offset = result + count;
fc->_offset = result + count;
_IO_mask_flags (fp, 0, _IO_EOF_SEEN);
return offset;
dumb:
Expand All @@ -584,7 +591,7 @@ _IO_file_seekoff (fp, offset, dir, mode)
result = _IO_SYSSEEK (fp, offset, dir);
if (result != EOF)
_IO_mask_flags (fp, 0, _IO_EOF_SEEN);
fp->_offset = result;
fc->_offset = result;
_IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base);
_IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
return result;
Expand Down Expand Up @@ -637,6 +644,7 @@ _IO_file_write (f, data, n)
const void *data;
_IO_ssize_t n;
{
struct _IO_FILE_complete *fc = (struct _IO_FILE_complete *) f;
_IO_ssize_t to_do = n;
while (to_do > 0)
{
Expand All @@ -650,8 +658,8 @@ _IO_file_write (f, data, n)
data = (void *) ((char *) data + count);
}
n -= to_do;
if (f->_offset >= 0)
f->_offset += n;
if (fc->_offset >= 0)
fc->_offset += n;
return n;
}

Expand Down
4 changes: 3 additions & 1 deletion libio/freopen.c
Expand Up @@ -27,7 +27,7 @@
#include "stdio.h"

FILE*
freopen (filename, mode, fp)
__new_freopen (filename, mode, fp)
const char* filename;
const char* mode;
FILE* fp;
Expand All @@ -42,3 +42,5 @@ freopen (filename, mode, fp)
_IO_cleanup_region_end (1);
return result;
}

symbol_version (__new_freopen, freopen, GLIBC_2.1);
31 changes: 19 additions & 12 deletions libio/iofopen.c
Expand Up @@ -29,13 +29,13 @@
#endif

_IO_FILE *
_IO_fopen (filename, mode)
_IO_new_fopen (filename, mode)
const char *filename;
const char *mode;
{
struct locked_FILE
{
struct _IO_FILE_plus fp;
struct _IO_FILE_complete fp;
#ifdef _IO_MTSAFE_IO
_IO_lock_t lock;
#endif
Expand All @@ -44,21 +44,28 @@ _IO_fopen (filename, mode)
if (new_f == NULL)
return NULL;
#ifdef _IO_MTSAFE_IO
new_f->fp.file._lock = &new_f->lock;
new_f->fp.plus.file._lock = &new_f->lock;
#endif
_IO_init (&new_f->fp.file, 0);
_IO_JUMPS (&new_f->fp.file) = &_IO_file_jumps;
_IO_file_init (&new_f->fp.file);
_IO_init (&new_f->fp.plus.file, 0);
_IO_JUMPS (&new_f->fp.plus.file) = &_IO_file_jumps;
_IO_file_init (&new_f->fp.plus.file);
#if !_IO_UNIFIED_JUMPTABLES
new_f->fp.vtable = NULL;
new_f->fp.plus.vtable = NULL;
#endif
if (_IO_file_fopen (&new_f->fp.file, filename, mode, 0) != NULL)
return (_IO_FILE *) &new_f->fp;
_IO_un_link (&new_f->fp.file);
if (_IO_file_fopen (&new_f->fp.plus.file, filename, mode, 0) != NULL)
return (_IO_FILE *) &new_f->fp.plus;
_IO_un_link (&new_f->fp.plus.file);
free (new_f);
return NULL;
}

#ifdef weak_alias
weak_alias (_IO_fopen, fopen)
#ifdef DO_VERSIONING
strong_alias (_IO_new_fopen, __new_fopen)
symbol_version (_IO_new_fopen, _IO_fopen, GLIBC_2.1);
symbol_version (__new_fopen, fopen, GLIBC_2.1);
#else
# ifdef weak_alias
weak_symbol (_IO_new_fopen, _IO_fopen)
weak_symbol (_IO_new_fopen, fopen)
# endif
#endif

0 comments on commit 1ea89a4

Please sign in to comment.