summaryrefslogtreecommitdiff
path: root/gas/input-scrub.c
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2007-03-09 07:14:23 +0000
committerAlexandre Oliva <aoliva@redhat.com>2007-03-09 07:14:23 +0000
commitf01abef7802dfa3249583bf97e907df2fc90cff1 (patch)
tree56bbf5c111208b6cd02afd00f0d6c1590fa6029b /gas/input-scrub.c
parent8c5b9a5287cdc1aaf0dc1811c297bb7799879b50 (diff)
downloadbinutils-redhat-f01abef7802dfa3249583bf97e907df2fc90cff1.tar.gz
* app.c (do_scrub_chars): Turn #<line>"file"flags into .linefile.
* as.h (new_logical_line_flags): New. * input-scrub.c (new_logical_line): Turned into wrapper for... (new_logical_line_flags): this. Handle flags. * read.c (potable): Add linefile. Adjust appline argument. (s_app_file): Fake .appfiles no more. (s_app_line): For .linefile, accept file name and flags.
Diffstat (limited to 'gas/input-scrub.c')
-rw-r--r--gas/input-scrub.c38
1 files changed, 33 insertions, 5 deletions
diff --git a/gas/input-scrub.c b/gas/input-scrub.c
index 9efea1100e..5698a6dc22 100644
--- a/gas/input-scrub.c
+++ b/gas/input-scrub.c
@@ -1,6 +1,6 @@
/* input_scrub.c - Break up input buffers into whole numbers of lines.
Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 2000, 2001, 2003, 2006
+ 2000, 2001, 2003, 2006, 2007
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -435,13 +435,34 @@ bump_line_counters (void)
Returns nonzero if the filename actually changes. */
int
-new_logical_line (char *fname, /* DON'T destroy it! We point to it! */
- int line_number)
+new_logical_line_flags (char *fname, /* DON'T destroy it! We point to it! */
+ int line_number,
+ int flags)
{
+ switch (flags)
+ {
+ case 0:
+ break;
+ case 1:
+ if (line_number != -1)
+ abort ();
+ break;
+ case 1 << 1:
+ case 1 << 2:
+ /* FIXME: we could check that include nesting is correct. */
+ break;
+ default:
+ abort ();
+ }
+
if (line_number >= 0)
logical_input_line = line_number;
- else if (line_number == -2 && logical_input_line > 0)
- --logical_input_line;
+ else if (line_number == -1 && fname && !*fname && (flags & (1 << 2)))
+ {
+ logical_input_file = physical_input_file;
+ logical_input_line = physical_input_line;
+ fname = NULL;
+ }
if (fname
&& (logical_input_file == NULL
@@ -453,6 +474,13 @@ new_logical_line (char *fname, /* DON'T destroy it! We point to it! */
else
return 0;
}
+
+int
+new_logical_line (char *fname, int line_number)
+{
+ return new_logical_line_flags (fname, line_number, 0);
+}
+
/* Return the current file name and line number.
namep should be char * const *, but there are compilers which screw