SA_SET_FILE_FNAME_OFFSET (symbolP, 0);
SA_SET_FILE_FNAME_OFFSET (symbolP, 1);
c_dot_file_symbol (filename)     char *filename;{  symbolS *symbolP;  symbolP = symbol_new (".file",			SEG_DEBUG,			0,			&zero_address_frag);  S_SET_STORAGE_CLASS (symbolP, C_FILE);  S_SET_NUMBER_AUXILIARY (symbolP, 1);  if (strlen (filename) > FILNMLEN)    {      /* Filename is too long to fit into an auxent,	 we stick it into the string table instead.  We keep	 a linked list of the filenames we find so we can emit	 them later.*/      struct filename_list *f = ((struct filename_list *)				 xmalloc (sizeof (struct filename_list)));      f->filename = filename;      f->next = 0;      SA_SET_FILE_FNAME_ZEROS (symbolP, 0);      SA_SET_FILE_FNAME_OFFSET (symbolP, 0);      if (filename_list_tail) 	filename_list_tail->next = f;      else	filename_list_head = f;      filename_list_tail = f;          }  else     {      SA_SET_FILE_FNAME (symbolP, filename);    }#ifndef NO_LISTING  {    extern int listing;    if (listing)      {	listing_source_file (filename);      }  }#endif  SF_SET_DEBUG (symbolP);  S_SET_VALUE (symbolP, (valueT) previous_file_symbol);  previous_file_symbol = symbolP;  /* Make sure that the symbol is first on the symbol chain */  if (symbol_rootP != symbolP)    {      if (symbolP == symbol_lastP)	{	  symbol_lastP = symbol_lastP->sy_previous;	}			/* if it was the last thing on the list */      symbol_remove (symbolP, &symbol_rootP, &symbol_lastP);      symbol_insert (symbolP, symbol_rootP, &symbol_rootP, &symbol_lastP);      symbol_rootP = symbolP;    }				/* if not first on the list */}				/* c_dot_file_symbol() */