2000-11-06 Kazu Hirata <kazu@hxi.com>
* input-file.c: Fix formatting. * input-file.h: Likewise. * input-scrub.c: Likewise.
This commit is contained in:
parent
c7db355bcd
commit
7152f1dc45
4 changed files with 79 additions and 90 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2000-11-06 Kazu Hirata <kazu@hxi.com>
|
||||||
|
|
||||||
|
* input-file.c: Fix formatting.
|
||||||
|
* input-file.h: Likewise.
|
||||||
|
* input-scrub.c: Likewise.
|
||||||
|
|
||||||
2000-11-06 Nick Clifton <nickc@redhat.com>
|
2000-11-06 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* doc/as.texinfo: Add GNU Free Documentation License.
|
* doc/as.texinfo: Add GNU Free Documentation License.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* input_file.c - Deal with Input Files -
|
/* input_file.c - Deal with Input Files -
|
||||||
Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 98, 1999
|
Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 98, 99, 2000
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GAS, the GNU Assembler.
|
This file is part of GAS, the GNU Assembler.
|
||||||
|
@ -57,13 +57,12 @@ static FILE *f_in;
|
||||||
static char *file_name;
|
static char *file_name;
|
||||||
|
|
||||||
/* Struct for saving the state of this module for file includes. */
|
/* Struct for saving the state of this module for file includes. */
|
||||||
struct saved_file
|
struct saved_file {
|
||||||
{
|
FILE *f_in;
|
||||||
FILE *f_in;
|
char *file_name;
|
||||||
char *file_name;
|
int preprocess;
|
||||||
int preprocess;
|
char *app_save;
|
||||||
char *app_save;
|
};
|
||||||
};
|
|
||||||
|
|
||||||
/* These hooks accomodate most operating systems. */
|
/* These hooks accomodate most operating systems. */
|
||||||
|
|
||||||
|
@ -188,7 +187,7 @@ input_file_close ()
|
||||||
fclose (f_in);
|
fclose (f_in);
|
||||||
} /* don't close a null file pointer */
|
} /* don't close a null file pointer */
|
||||||
f_in = 0;
|
f_in = 0;
|
||||||
} /* input_file_close() */
|
}
|
||||||
|
|
||||||
/* This function is passed to do_scrub_chars. */
|
/* This function is passed to do_scrub_chars. */
|
||||||
|
|
||||||
|
@ -245,5 +244,3 @@ input_file_give_next_buffer (where)
|
||||||
}
|
}
|
||||||
return (return_value);
|
return (return_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* end of input-file.c */
|
|
||||||
|
|
|
@ -14,12 +14,12 @@
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with GAS; see the file COPYING. If not, write to
|
along with GAS; see the file COPYING. If not, write to the Free
|
||||||
the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
02111-1307, USA. */
|
||||||
|
|
||||||
/*"input_file.c":Operating-system dependant functions to read source files.*/
|
/*"input_file.c":Operating-system dependant functions to read source files.*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* No matter what the operating system, this module must provide the
|
* No matter what the operating system, this module must provide the
|
||||||
* following services to its callers.
|
* following services to its callers.
|
||||||
|
@ -64,5 +64,3 @@ void input_file_close PARAMS ((void));
|
||||||
void input_file_end PARAMS ((void));
|
void input_file_end PARAMS ((void));
|
||||||
void input_file_open PARAMS ((char *filename, int pre));
|
void input_file_open PARAMS ((char *filename, int pre));
|
||||||
void input_file_pop PARAMS ((char *arg));
|
void input_file_pop PARAMS ((char *arg));
|
||||||
|
|
||||||
/* end of input_file.h */
|
|
||||||
|
|
|
@ -59,14 +59,15 @@
|
||||||
static char *buffer_start; /*->1st char of full buffer area. */
|
static char *buffer_start; /*->1st char of full buffer area. */
|
||||||
static char *partial_where; /*->after last full line in buffer. */
|
static char *partial_where; /*->after last full line in buffer. */
|
||||||
static int partial_size; /* >=0. Number of chars in partial line in buffer. */
|
static int partial_size; /* >=0. Number of chars in partial line in buffer. */
|
||||||
|
|
||||||
|
/* Because we need AFTER_STRING just after last full line, it clobbers
|
||||||
|
1st part of partial line. So we preserve 1st part of partial line
|
||||||
|
here. */
|
||||||
static char save_source[AFTER_SIZE];
|
static char save_source[AFTER_SIZE];
|
||||||
/* Because we need AFTER_STRING just after last */
|
|
||||||
/* full line, it clobbers 1st part of partial */
|
/* What is the largest size buffer that input_file_give_next_buffer()
|
||||||
/* line. So we preserve 1st part of partial */
|
could return to us? */
|
||||||
/* line here. */
|
static unsigned int buffer_length;
|
||||||
static unsigned int buffer_length; /* What is the largest size buffer that */
|
|
||||||
/* input_file_give_next_buffer() could */
|
|
||||||
/* return to us? */
|
|
||||||
|
|
||||||
/* The index into an sb structure we are reading from. -1 if none. */
|
/* The index into an sb structure we are reading from. -1 if none. */
|
||||||
static int sb_index = -1;
|
static int sb_index = -1;
|
||||||
|
@ -101,24 +102,23 @@ static line_numberT physical_input_line;
|
||||||
static int logical_input_line;
|
static int logical_input_line;
|
||||||
|
|
||||||
/* Struct used to save the state of the input handler during include files */
|
/* Struct used to save the state of the input handler during include files */
|
||||||
struct input_save
|
struct input_save {
|
||||||
{
|
char *buffer_start;
|
||||||
char *buffer_start;
|
char *partial_where;
|
||||||
char *partial_where;
|
int partial_size;
|
||||||
int partial_size;
|
char save_source[AFTER_SIZE];
|
||||||
char save_source[AFTER_SIZE];
|
unsigned int buffer_length;
|
||||||
unsigned int buffer_length;
|
char *physical_input_file;
|
||||||
char *physical_input_file;
|
char *logical_input_file;
|
||||||
char *logical_input_file;
|
line_numberT physical_input_line;
|
||||||
line_numberT physical_input_line;
|
int logical_input_line;
|
||||||
int logical_input_line;
|
int sb_index;
|
||||||
int sb_index;
|
sb from_sb;
|
||||||
sb from_sb;
|
int from_sb_is_expansion; /* Should we do a conditional check? */
|
||||||
int from_sb_is_expansion; /* Should we do a conditional check? */
|
struct input_save *next_saved_file; /* Chain of input_saves */
|
||||||
struct input_save *next_saved_file; /* Chain of input_saves */
|
char *input_file_save; /* Saved state of input routines */
|
||||||
char *input_file_save; /* Saved state of input routines */
|
char *saved_position; /* Caller's saved position in buf */
|
||||||
char *saved_position; /* Caller's saved position in buf */
|
};
|
||||||
};
|
|
||||||
|
|
||||||
static struct input_save *input_scrub_push PARAMS ((char *saved_position));
|
static struct input_save *input_scrub_push PARAMS ((char *saved_position));
|
||||||
static char *input_scrub_pop PARAMS ((struct input_save *arg));
|
static char *input_scrub_pop PARAMS ((struct input_save *arg));
|
||||||
|
@ -132,6 +132,7 @@ static struct input_save *next_saved_file;
|
||||||
/* Push the state of input reading and scrubbing so that we can #include.
|
/* Push the state of input reading and scrubbing so that we can #include.
|
||||||
The return value is a 'void *' (fudged for old compilers) to a save
|
The return value is a 'void *' (fudged for old compilers) to a save
|
||||||
area, which can be restored by passing it to input_scrub_pop(). */
|
area, which can be restored by passing it to input_scrub_pop(). */
|
||||||
|
|
||||||
static struct input_save *
|
static struct input_save *
|
||||||
input_scrub_push (saved_position)
|
input_scrub_push (saved_position)
|
||||||
char *saved_position;
|
char *saved_position;
|
||||||
|
@ -166,7 +167,7 @@ input_scrub_push (saved_position)
|
||||||
memcpy (buffer_start, BEFORE_STRING, (int) BEFORE_SIZE);
|
memcpy (buffer_start, BEFORE_STRING, (int) BEFORE_SIZE);
|
||||||
|
|
||||||
return saved;
|
return saved;
|
||||||
} /* input_scrub_push() */
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
input_scrub_pop (saved)
|
input_scrub_pop (saved)
|
||||||
|
@ -196,12 +197,12 @@ input_scrub_pop (saved)
|
||||||
return saved_position;
|
return saved_position;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
input_scrub_begin ()
|
input_scrub_begin ()
|
||||||
{
|
{
|
||||||
know (strlen (BEFORE_STRING) == BEFORE_SIZE);
|
know (strlen (BEFORE_STRING) == BEFORE_SIZE);
|
||||||
know (strlen (AFTER_STRING) == AFTER_SIZE || (AFTER_STRING[0] == '\0' && AFTER_SIZE == 1));
|
know (strlen (AFTER_STRING) == AFTER_SIZE
|
||||||
|
|| (AFTER_STRING[0] == '\0' && AFTER_SIZE == 1));
|
||||||
|
|
||||||
input_file_begin ();
|
input_file_begin ();
|
||||||
|
|
||||||
|
@ -229,9 +230,10 @@ input_scrub_end ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Start reading input from a new file. */
|
/* Start reading input from a new file.
|
||||||
|
Return start of caller's part of buffer. */
|
||||||
|
|
||||||
char * /* Return start of caller's part of buffer. */
|
char *
|
||||||
input_scrub_new_file (filename)
|
input_scrub_new_file (filename)
|
||||||
char *filename;
|
char *filename;
|
||||||
{
|
{
|
||||||
|
@ -311,16 +313,17 @@ input_scrub_next_buffer (bufp)
|
||||||
if (sb_index >= from_sb.len)
|
if (sb_index >= from_sb.len)
|
||||||
{
|
{
|
||||||
sb_kill (&from_sb);
|
sb_kill (&from_sb);
|
||||||
if (from_sb_is_expansion
|
if (from_sb_is_expansion
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
cond_finish_check (macro_nest);
|
cond_finish_check (macro_nest);
|
||||||
#ifdef md_macro_end
|
#ifdef md_macro_end
|
||||||
/* allow the target to clean up per-macro expansion data */
|
/* Allow the target to clean up per-macro expansion
|
||||||
md_macro_end ();
|
data. */
|
||||||
|
md_macro_end ();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
--macro_nest;
|
--macro_nest;
|
||||||
partial_where = NULL;
|
partial_where = NULL;
|
||||||
if (next_saved_file != NULL)
|
if (next_saved_file != NULL)
|
||||||
*bufp = input_scrub_pop (next_saved_file);
|
*bufp = input_scrub_pop (next_saved_file);
|
||||||
|
@ -404,15 +407,13 @@ input_scrub_next_buffer (bufp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (partial_where);
|
return (partial_where);
|
||||||
} /* input_scrub_next_buffer() */
|
}
|
||||||
|
|
||||||
/*
|
/* The remaining part of this file deals with line numbers, error
|
||||||
* The remaining part of this file deals with line numbers, error
|
messages and so on. Return TRUE if we opened any file. */
|
||||||
* messages and so on.
|
|
||||||
*/
|
|
||||||
|
|
||||||
int
|
int
|
||||||
seen_at_least_1_file () /* TRUE if we opened any file. */
|
seen_at_least_1_file ()
|
||||||
{
|
{
|
||||||
return (physical_input_file != NULL);
|
return (physical_input_file != NULL);
|
||||||
}
|
}
|
||||||
|
@ -428,20 +429,17 @@ bump_line_counters ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/* Tells us what the new logical line number and file are.
|
||||||
* new_logical_line()
|
If the line_number is -1, we don't change the current logical line
|
||||||
*
|
number. If it is -2, we decrement the logical line number (this is
|
||||||
* Tells us what the new logical line number and file are.
|
to support the .appfile pseudo-op inserted into the stream by
|
||||||
* If the line_number is -1, we don't change the current logical line
|
do_scrub_chars).
|
||||||
* number. If it is -2, we decrement the logical line number (this is
|
If the fname is NULL, we don't change the current logical file name.
|
||||||
* to support the .appfile pseudo-op inserted into the stream by
|
Returns nonzero if the filename actually changes. */
|
||||||
* do_scrub_chars).
|
|
||||||
* If the fname is NULL, we don't change the current logical file name.
|
|
||||||
* Returns nonzero if the filename actually changes.
|
|
||||||
*/
|
|
||||||
int
|
int
|
||||||
new_logical_line (fname, line_number)
|
new_logical_line (fname, line_number)
|
||||||
char *fname; /* DON'T destroy it! We point to it! */
|
char *fname; /* DON'T destroy it! We point to it! */
|
||||||
int line_number;
|
int line_number;
|
||||||
{
|
{
|
||||||
if (line_number >= 0)
|
if (line_number >= 0)
|
||||||
|
@ -458,15 +456,12 @@ new_logical_line (fname, line_number)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
} /* new_logical_line() */
|
}
|
||||||
|
|
||||||
/*
|
/* Return the current file name and line number.
|
||||||
* a s _ w h e r e ()
|
namep should be char * const *, but there are compilers which screw
|
||||||
*
|
up declarations like that, and it's easier to avoid it. */
|
||||||
* Return the current file name and line number.
|
|
||||||
* namep should be char * const *, but there are compilers which screw
|
|
||||||
* up declarations like that, and it's easier to avoid it.
|
|
||||||
*/
|
|
||||||
void
|
void
|
||||||
as_where (namep, linep)
|
as_where (namep, linep)
|
||||||
char **namep;
|
char **namep;
|
||||||
|
@ -491,22 +486,17 @@ as_where (namep, linep)
|
||||||
if (linep != NULL)
|
if (linep != NULL)
|
||||||
*linep = 0;
|
*linep = 0;
|
||||||
}
|
}
|
||||||
} /* as_where() */
|
}
|
||||||
|
|
||||||
|
/* Output to given stream how much of line we have scanned so far.
|
||||||
|
Assumes we have scanned up to and including input_line_pointer.
|
||||||
|
No free '\n' at end of line. */
|
||||||
|
|
||||||
/*
|
|
||||||
* a s _ h o w m u c h ()
|
|
||||||
*
|
|
||||||
* Output to given stream how much of line we have scanned so far.
|
|
||||||
* Assumes we have scanned up to and including input_line_pointer.
|
|
||||||
* No free '\n' at end of line.
|
|
||||||
*/
|
|
||||||
void
|
void
|
||||||
as_howmuch (stream)
|
as_howmuch (stream)
|
||||||
FILE *stream; /* Opened for write please. */
|
FILE *stream; /* Opened for write please. */
|
||||||
{
|
{
|
||||||
register char *p; /* Scan input line. */
|
register char *p; /* Scan input line. */
|
||||||
/* register char c; JF unused */
|
|
||||||
|
|
||||||
for (p = input_line_pointer - 1; *p != '\n'; --p)
|
for (p = input_line_pointer - 1; *p != '\n'; --p)
|
||||||
{
|
{
|
||||||
|
@ -536,5 +526,3 @@ as_1_char (c, stream)
|
||||||
}
|
}
|
||||||
(void) putc (c, stream);
|
(void) putc (c, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* end of input_scrub.c */
|
|
||||||
|
|
Loading…
Reference in a new issue