if (flag_print_statistics) { extern char **environ; #ifdef HAVE_SBRK char *lim = (char *) sbrk (0); #endif long run_time = get_run_time () - start_time;  fprintf (stderr, "%s: total time in assembly: %ld.%06ld\n", myname, run_time / 1000000, run_time % 1000000); #ifdef HAVE_SBRK fprintf (stderr, "%s: data size %ld\n", myname, (long) (lim - (char *) &environ)); #endif }
main (argc, argv)     int argc;     char **argv;{  int macro_alternate;  int macro_strip_at;  int keep_it;  long start_time = get_run_time ();  if (debug_memory)    {#ifdef BFD_ASSEMBLER      extern long _bfd_chunksize;      _bfd_chunksize = 64;#endif      chunksize = 64;    }#ifdef HOST_SPECIAL_INIT  HOST_SPECIAL_INIT (argc, argv);#endif  myname = argv[0];  xmalloc_set_program_name (myname);  START_PROGRESS (myname, 0);#ifndef OBJ_DEFAULT_OUTPUT_FILE_NAME#define OBJ_DEFAULT_OUTPUT_FILE_NAME "a.out"#endif  out_file_name = OBJ_DEFAULT_OUTPUT_FILE_NAME;  hex_init ();#ifdef BFD_ASSEMBLER  bfd_init ();#endif#ifdef USE_EMULATIONS  select_emulation_mode (argc, argv);#endif  PROGRESS (1);  symbol_begin ();  frag_init ();  subsegs_begin ();  read_begin ();  parse_args (&argc, &argv);  input_scrub_begin ();  expr_begin ();  macro_alternate = 0;  macro_strip_at = 0;#ifdef TC_I960  macro_strip_at = flag_mri;#endif#ifdef TC_A29K  /* For compatibility with the AMD 29K family macro assembler     specification.  */  macro_alternate = 1;  macro_strip_at = 1;#endif  macro_init (macro_alternate, flag_mri, macro_strip_at, macro_expr);  PROGRESS (1);#ifdef BFD_ASSEMBLER  output_file_create (out_file_name);  assert (stdoutput != 0);#endif#ifdef tc_init_after_args  tc_init_after_args ();#endif  PROGRESS (1);  perform_an_assembly_pass (argc, argv);	/* Assemble it. */#ifdef md_end  md_end ();#endif  if (seen_at_least_1_file ()      && !((had_warnings () && flag_always_generate_output)	   || had_errors () > 0))    keep_it = 1;  else    keep_it = 0;  if (keep_it)    write_object_file ();#ifndef NO_LISTING  listing_print (listing_filename);#endif#ifndef OBJ_VMS /* does its own file handling */#ifndef BFD_ASSEMBLER  if (keep_it)#endif    output_file_close (out_file_name);#endif  if (!keep_it)    unlink (out_file_name);  input_scrub_end ();  END_PROGRESS (myname);  if (flag_print_statistics)    {      extern char **environ;#ifdef HAVE_SBRK      char *lim = (char *) sbrk (0);#endif      long run_time = get_run_time () - start_time;      fprintf (stderr, "%s: total time in assembly: %ld.%06ld\n",	       myname, run_time / 1000000, run_time % 1000000);#ifdef HAVE_SBRK      fprintf (stderr, "%s: data size %ld\n",	       myname, (long) (lim - (char *) &environ));#endif    }  /* Use exit instead of return, because under VMS environments they     may not place the same interpretation on the value given.  */  if ((had_warnings () && flag_always_generate_output)      || had_errors () > 0)    exit (EXIT_FAILURE);  exit (EXIT_SUCCESS);}