pexecute.c: Updates from gcc.
* pexecute.c: Updates from gcc. Copy in gcc has been removed. This is the canonical copy. Define ISSPACE if !IN_GCC. * alloca.c, vfprintf.c: Similarly. From-SVN: r22249
This commit is contained in:
parent
39802f419a
commit
29382d668f
2 changed files with 49 additions and 15 deletions
|
@ -22,10 +22,26 @@
|
|||
your main control loop, etc. to force garbage collection. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
/* If compiling with GCC, this file's not needed. */
|
||||
#ifdef HAVE_STRING_H
|
||||
#include <string.h>
|
||||
#endif
|
||||
#ifdef HAVE_STDLIB_H
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
|
||||
#ifdef emacs
|
||||
#include "blockinput.h"
|
||||
#endif
|
||||
|
||||
/* If compiling with GCC 2, this file's not needed. Except of course if
|
||||
the C alloca is explicitly requested. */
|
||||
#if defined (USE_C_ALLOCA) || !defined (__GNUC__) || __GNUC__ < 2
|
||||
|
||||
/* If someone has defined alloca as a macro,
|
||||
there must be some other way alloca is supposed to work. */
|
||||
#ifndef alloca
|
||||
|
||||
#ifdef emacs
|
||||
|
@ -53,11 +69,9 @@ long i00afunc ();
|
|||
#endif
|
||||
|
||||
#if __STDC__
|
||||
#include <stddef.h>
|
||||
typedef void *pointer;
|
||||
#else
|
||||
typedef char *pointer;
|
||||
typedef unsigned size_t;
|
||||
#endif
|
||||
|
||||
#ifndef NULL
|
||||
|
@ -76,8 +90,8 @@ typedef unsigned size_t;
|
|||
|
||||
#ifndef emacs
|
||||
#define malloc xmalloc
|
||||
extern pointer xmalloc ();
|
||||
#endif
|
||||
extern pointer malloc ();
|
||||
|
||||
/* Define STACK_DIRECTION if you know the direction of stack
|
||||
growth for your system; otherwise it will be automatically
|
||||
|
@ -156,7 +170,7 @@ static header *last_alloca_header = NULL; /* -> last alloca header. */
|
|||
|
||||
pointer
|
||||
alloca (size)
|
||||
size_t size;
|
||||
unsigned size;
|
||||
{
|
||||
auto char probe; /* Probes stack depth: */
|
||||
register char *depth = ADDRESS_FUNCTION (probe);
|
||||
|
@ -167,11 +181,15 @@ alloca (size)
|
|||
#endif
|
||||
|
||||
/* Reclaim garbage, defined as all alloca'd storage that
|
||||
was allocated from deeper in the stack than currently. */
|
||||
was allocated from deeper in the stack than currently. */
|
||||
|
||||
{
|
||||
register header *hp; /* Traverses linked list. */
|
||||
|
||||
#ifdef emacs
|
||||
BLOCK_INPUT;
|
||||
#endif
|
||||
|
||||
for (hp = last_alloca_header; hp != NULL;)
|
||||
if ((STACK_DIR > 0 && hp->h.deep > depth)
|
||||
|| (STACK_DIR < 0 && hp->h.deep < depth))
|
||||
|
@ -186,6 +204,10 @@ alloca (size)
|
|||
break; /* Rest are not deeper. */
|
||||
|
||||
last_alloca_header = hp; /* -> last valid storage. */
|
||||
|
||||
#ifdef emacs
|
||||
UNBLOCK_INPUT;
|
||||
#endif
|
||||
}
|
||||
|
||||
if (size == 0)
|
||||
|
@ -197,6 +219,9 @@ alloca (size)
|
|||
register pointer new = malloc (sizeof (header) + size);
|
||||
/* Address of header. */
|
||||
|
||||
if (new == 0)
|
||||
abort();
|
||||
|
||||
((header *) new)->h.next = last_alloca_header;
|
||||
((header *) new)->h.deep = depth;
|
||||
|
||||
|
@ -326,7 +351,7 @@ struct stk_trailer
|
|||
|
||||
#ifdef CRAY2
|
||||
/* Determine a "stack measure" for an arbitrary ADDRESS.
|
||||
I doubt that "lint" will like this much. */
|
||||
I doubt that "lint" will like this much. */
|
||||
|
||||
static long
|
||||
i00afunc (long *address)
|
||||
|
@ -477,3 +502,4 @@ i00afunc (long address)
|
|||
#endif /* CRAY */
|
||||
|
||||
#endif /* no alloca */
|
||||
#endif /* not GCC version 2 */
|
||||
|
|
|
@ -1,13 +1,21 @@
|
|||
#include <stdio.h>
|
||||
/* Provide a version vfprintf in terms of _doprnt.
|
||||
By Kaveh Ghazi (ghazi@caip.rutgers.edu) 3/29/98
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
*/
|
||||
|
||||
#ifdef __STDC__
|
||||
#include <stdarg.h>
|
||||
#else
|
||||
#include <varargs.h>
|
||||
#include <ansidecl.h>
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
#undef vfprintf
|
||||
|
||||
int
|
||||
vfprintf (file, format, ap)
|
||||
FILE *file;
|
||||
const char *format;
|
||||
va_list ap;
|
||||
vfprintf (stream, format, ap)
|
||||
FILE * stream;
|
||||
const char * format;
|
||||
va_list ap;
|
||||
{
|
||||
return _doprnt (format, ap, file);
|
||||
return _doprnt (format, ap, stream);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue