aboutsummaryrefslogtreecommitdiff
path: root/gas/read.c
diff options
context:
space:
mode:
Diffstat (limited to 'gas/read.c')
-rw-r--r--gas/read.c37
1 files changed, 30 insertions, 7 deletions
diff --git a/gas/read.c b/gas/read.c
index 04d6bd2..f347c8e 100644
--- a/gas/read.c
+++ b/gas/read.c
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#if 0
#define MASK_CHAR (0xFF) /* If your chars aren't 8 bits, you will
@@ -378,6 +378,10 @@ read_a_source_file (name)
*/
if (is_end_of_line[(unsigned char) input_line_pointer[-1]])
{
+#ifdef md_start_line_hook
+ md_start_line_hook ();
+#endif
+
if (input_line_pointer[-1] == '\n')
bump_line_counters ();
@@ -714,6 +718,11 @@ read_a_source_file (name)
input_line_pointer--; /* Report unknown char as ignored. */
ignore_rest_of_line ();
} /* while (input_line_pointer<buffer_limit) */
+
+#ifdef md_after_pass_hook
+ md_after_pass_hook ();
+#endif
+
if (old_buffer)
{
bump_line_counters ();
@@ -1126,15 +1135,17 @@ s_lcomm (needs_align)
}
#if defined (TC_MIPS) || defined (TC_ALPHA)
-#if defined (OBJ_ECOFF) || defined (OBJ_ELF)
- /* For MIPS and Alpha ECOFF or ELF, small objects are put in .sbss. */
- if (temp <= bfd_get_gp_size (stdoutput))
+ if (OUTPUT_FLAVOR == bfd_target_ecoff_flavour
+ || OUTPUT_FLAVOR == bfd_target_elf_flavour)
{
- bss_seg = subseg_new (".sbss", 1);
- seg_info (bss_seg)->bss = 1;
+ /* For MIPS and Alpha ECOFF or ELF, small objects are put in .sbss. */
+ if (temp <= bfd_get_gp_size (stdoutput))
+ {
+ bss_seg = subseg_new (".sbss", 1);
+ seg_info (bss_seg)->bss = 1;
+ }
}
#endif
-#endif
if (!needs_align)
{
/* FIXME. This needs to be machine independent. */
@@ -1425,6 +1436,10 @@ s_space (mult)
long temp_fill;
char *p = 0;
+#ifdef md_flush_pending_output
+ md_flush_pending_output ();
+#endif
+
/* Just like .fill, but temp_size = 1 */
expression (&exp);
if (exp.X_op == O_constant)
@@ -1676,6 +1691,10 @@ cons (nbytes)
{
expressionS exp;
+#ifdef md_flush_pending_output
+ md_flush_pending_output ();
+#endif
+
if (is_it_end_of_statement ())
{
demand_empty_rest_of_line ();
@@ -2265,6 +2284,10 @@ stringer (append_zero) /* Worker to do .ascii etc statements. */
{
register unsigned int c;
+#ifdef md_flush_pending_output
+ md_flush_pending_output ();
+#endif
+
/*
* The following awkward logic is to parse ZERO or more strings,
* comma seperated. Recall a string expression includes spaces