aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>1997-08-22 18:14:35 +0000
committerNick Clifton <nickc@redhat.com>1997-08-22 18:14:35 +0000
commitd72d8c59f902c893c8f8abf0bc7fca0046673c49 (patch)
tree3e8a937203002c9113e5618299341fb925873147
parent5f044499774d79bf332211a8b9ef9ef6847d976c (diff)
downloadgdb-d72d8c59f902c893c8f8abf0bc7fca0046673c49.zip
gdb-d72d8c59f902c893c8f8abf0bc7fca0046673c49.tar.gz
gdb-d72d8c59f902c893c8f8abf0bc7fca0046673c49.tar.bz2
Make the NUL character be considered to be a line terminator.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/read.c42
2 files changed, 41 insertions, 6 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 5a8f637..40bce64 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+Fri Aug 22 11:16:14 1997 Nick Clifton <nickc@cygnus.com>
+
+ * read.c (is_end_of_line): Make NUL character be considered to be
+ a line terminator.
+
start-sanitize-v850
Fri Aug 22 10:45:33 1997 Nick Clifton <nickc@cygnus.com>
diff --git a/gas/read.c b/gas/read.c
index ab66ffe..bdd8864 100644
--- a/gas/read.c
+++ b/gas/read.c
@@ -128,9 +128,9 @@ char lex_type[256] =
char is_end_of_line[256] =
{
#ifdef CR_EOL
- _, _, _, _, _, _, _, _, _, _, 99, _, _, 99, _, _, /* @abcdefghijklmno */
+ 99, _, _, _, _, _, _, _, _, _, 99, _, _, 99, _, _, /* @abcdefghijklmno */
#else
- _, _, _, _, _, _, _, _, _, _, 99, _, _, _, _, _, /* @abcdefghijklmno */
+ 99, _, _, _, _, _, _, _, _, _, 99, _, _, _, _, _, /* @abcdefghijklmno */
#endif
_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, /* */
#ifdef TC_HPPA
@@ -1318,7 +1318,7 @@ s_align_bytes (arg)
s_align (arg, 1);
}
-/* Handle the .align pseud-op on machines where ".align 4" means align
+/* Handle the .align pseudo-op on machines where ".align 4" means align
to a 2**4 boundary. */
void
@@ -1866,11 +1866,14 @@ s_linkonce (ignore)
demand_empty_rest_of_line ();
}
-void
-s_lcomm (needs_align)
+static void
+s_lcomm_internal (needs_align, bytes_p)
/* 1 if this was a ".bss" directive, which may require a 3rd argument
(alignment); 0 if it was an ".lcomm" (2 args only) */
int needs_align;
+ /* 1 if the alignment value should be interpreted as the byte boundary,
+ rather than the power of 2. */
+ int bytes_p;
{
register char *name;
register char c;
@@ -1965,6 +1968,20 @@ s_lcomm (needs_align)
return;
}
align = get_absolute_expression ();
+ if (bytes_p)
+ {
+ /* Convert to a power of 2. */
+ if (align != 0)
+ {
+ unsigned int i;
+
+ for (i = 0; (align & 1) == 0; align >>= 1, ++i)
+ ;
+ if (align != 1)
+ as_bad ("Alignment not a power of 2");
+ align = i;
+ }
+ }
if (align > max_alignment)
{
align = max_alignment;
@@ -2040,7 +2057,20 @@ s_lcomm (needs_align)
subseg_set (current_seg, current_subseg);
demand_empty_rest_of_line ();
-} /* s_lcomm() */
+} /* s_lcomm_internal() */
+
+void
+s_lcomm (needs_align)
+ int needs_align;
+{
+ s_lcomm_internal (needs_align, 0);
+}
+
+void s_lcomm_bytes (needs_align)
+ int needs_align;
+{
+ s_lcomm_internal (needs_align, 1);
+}
void
s_lsym (ignore)