Subversion Repositories Kolibri OS

Rev

Rev 5222 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5222 Rev 6324
Line 1... Line 1...
1
/* coff object file format
1
/* coff object file format
2
   Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-
 
3
   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
-
 
4
   Free Software Foundation, Inc.
2
   Copyright (C) 1989-2015 Free Software Foundation, Inc.
Line 5... Line 3...
5
 
3
 
Line 6... Line 4...
6
   This file is part of GAS.
4
   This file is part of GAS.
7
 
5
 
Line 22... Line 20...
22
 
20
 
Line 23... Line 21...
23
#define OBJ_HEADER "obj-coff.h"
21
#define OBJ_HEADER "obj-coff.h"
24
 
22
 
25
#include "as.h"
-
 
26
#include "safe-ctype.h"
23
#include "as.h"
27
#include "obstack.h"
24
#include "safe-ctype.h"
Line 28... Line 25...
28
#include "subsegs.h"
25
#include "subsegs.h"
29
#include "struc-symbol.h"
26
#include "struc-symbol.h"
Line 388... Line 385...
388
  long   sz = (OBJ_COFF_MAX_AUXENTRIES + 1) * sizeof (combined_entry_type);
385
  long   sz = (OBJ_COFF_MAX_AUXENTRIES + 1) * sizeof (combined_entry_type);
389
  char * s  = xmalloc (sz);
386
  char * s  = xmalloc (sz);
Line 390... Line 387...
390
 
387
 
391
  memset (s, 0, sz);
388
  memset (s, 0, sz);
-
 
389
  coffsymbol (symbol_get_bfdsym (symbolP))->native = (combined_entry_type *) s;
Line 392... Line 390...
392
  coffsymbol (symbol_get_bfdsym (symbolP))->native = (combined_entry_type *) s;
390
  coffsymbol (symbol_get_bfdsym (symbolP))->native->is_sym = TRUE;
393
 
391
 
394
  S_SET_DATA_TYPE (symbolP, T_NULL);
392
  S_SET_DATA_TYPE (symbolP, T_NULL);
Line 603... Line 601...
603
      return;
601
      return;
604
    }
602
    }
Line 605... Line 603...
605
 
603
 
Line 606... Line -...
606
  SKIP_WHITESPACES ();
-
 
607
 
604
  SKIP_WHITESPACES ();
608
  symbol_name = input_line_pointer;
605
 
609
  name_end = get_symbol_end ();
606
  name_end = get_symbol_name (&symbol_name);
610
  symbol_name_length = strlen (symbol_name);
607
  symbol_name_length = strlen (symbol_name);
611
  symbol_name_copy = xmalloc (symbol_name_length + 1);
608
  symbol_name_copy = xmalloc (symbol_name_length + 1);
612
  strcpy (symbol_name_copy, symbol_name);
609
  strcpy (symbol_name_copy, symbol_name);
Line 620... Line 617...
620
  S_SET_VALUE (def_symbol_in_progress, 0);
617
  S_SET_VALUE (def_symbol_in_progress, 0);
Line 621... Line 618...
621
 
618
 
622
  if (S_IS_STRING (def_symbol_in_progress))
619
  if (S_IS_STRING (def_symbol_in_progress))
Line 623... Line 620...
623
    SF_SET_STRING (def_symbol_in_progress);
620
    SF_SET_STRING (def_symbol_in_progress);
Line 624... Line 621...
624
 
621
 
625
  *input_line_pointer = name_end;
622
  (void) restore_line_pointer (name_end);
Line 626... Line 623...
626
 
623
 
Line 973... Line 970...
973
      demand_empty_rest_of_line ();
970
      demand_empty_rest_of_line ();
974
      return;
971
      return;
975
    }
972
    }
Line 976... Line 973...
976
 
973
 
977
  S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1);
-
 
978
  symbol_name = input_line_pointer;
974
  S_SET_NUMBER_AUXILIARY (def_symbol_in_progress, 1);
Line 979... Line 975...
979
  name_end = get_symbol_end ();
975
  name_end = get_symbol_name (&symbol_name);
980
 
976
 
981
#ifdef tc_canonicalize_symbol_name
977
#ifdef tc_canonicalize_symbol_name
Line 988... Line 984...
988
		     tag_find_or_make (symbol_name));
984
		     tag_find_or_make (symbol_name));
989
  if (SA_GET_SYM_TAGNDX (def_symbol_in_progress) == 0L)
985
  if (SA_GET_SYM_TAGNDX (def_symbol_in_progress) == 0L)
990
    as_warn (_("tag not found for .tag %s"), symbol_name);
986
    as_warn (_("tag not found for .tag %s"), symbol_name);
Line 991... Line 987...
991
 
987
 
992
  SF_SET_TAGGED (def_symbol_in_progress);
-
 
Line -... Line 988...
-
 
988
  SF_SET_TAGGED (def_symbol_in_progress);
993
  *input_line_pointer = name_end;
989
 
994
 
990
  (void) restore_line_pointer (name_end);
Line 995... Line 991...
995
  demand_empty_rest_of_line ();
991
  demand_empty_rest_of_line ();
996
}
992
}
Line 1024... Line 1020...
1024
      return;
1020
      return;
1025
    }
1021
    }
Line 1026... Line 1022...
1026
 
1022
 
1027
  if (is_name_beginner (*input_line_pointer))
1023
  if (is_name_beginner (*input_line_pointer))
1028
    {
1024
    {
1029
      char *symbol_name = input_line_pointer;
1025
      char *symbol_name;
Line 1030... Line 1026...
1030
      char name_end = get_symbol_end ();
1026
      char name_end = get_symbol_name (&symbol_name);
1031
 
1027
 
1032
#ifdef tc_canonicalize_symbol_name
1028
#ifdef tc_canonicalize_symbol_name
1033
  symbol_name = tc_canonicalize_symbol_name (symbol_name);
1029
      symbol_name = tc_canonicalize_symbol_name (symbol_name);
Line 1059... Line 1055...
1059
	     debugging information.  We ignore the rest of the line
1055
	     debugging information.  We ignore the rest of the line
1060
	     just below.  */
1056
	     just below.  */
1061
	}
1057
	}
1062
      /* Otherwise, it is the name of a non debug symbol and its value
1058
      /* Otherwise, it is the name of a non debug symbol and its value
1063
         will be calculated later.  */
1059
         will be calculated later.  */
1064
      *input_line_pointer = name_end;
1060
      (void) restore_line_pointer (name_end);
1065
    }
1061
    }
1066
  else
1062
  else
1067
    {
1063
    {
1068
      S_SET_VALUE (def_symbol_in_progress, get_absolute_expression ());
1064
      S_SET_VALUE (def_symbol_in_progress, get_absolute_expression ());
1069
    }
1065
    }
Line 1170... Line 1166...
1170
  int c;
1166
  int c;
1171
  symbolS *symbolP;
1167
  symbolS *symbolP;
Line 1172... Line 1168...
1172
 
1168
 
1173
  do
1169
  do
1174
    {
-
 
1175
      name = input_line_pointer;
1170
    {
1176
      c = get_symbol_end ();
1171
      c = get_symbol_name (&name);
1177
      if (*name == 0)
1172
      if (*name == 0)
1178
	{
1173
	{
1179
	  as_warn (_("badly formed .weak directive ignored"));
1174
	  as_warn (_("badly formed .weak directive ignored"));
1180
	  ignore_rest_of_line ();
1175
	  ignore_rest_of_line ();
1181
	  return;
1176
	  return;
1182
	}
1177
	}
1183
      c = 0;
1178
      c = 0;
1184
      symbolP = symbol_find_or_make (name);
1179
      symbolP = symbol_find_or_make (name);
1185
      *input_line_pointer = c;
1180
      *input_line_pointer = c;
1186
      SKIP_WHITESPACE ();
1181
      SKIP_WHITESPACE_AFTER_NAME ();
Line 1187... Line 1182...
1187
      S_SET_WEAK (symbolP);
1182
      S_SET_WEAK (symbolP);
1188
 
1183
 
1189
      if (c == ',')
1184
      if (c == ',')
Line 1564... Line 1559...
1564
 
1559
 
1565
      s_mri_sect (&type);
1560
      s_mri_sect (&type);
1566
      return;
1561
      return;
Line 1567... Line -...
1567
    }
-
 
1568
 
1562
    }
1569
  section_name = input_line_pointer;
-
 
1570
  c = get_symbol_end ();
1563
 
1571
 
1564
  c = get_symbol_name (§ion_name);
1572
  name = xmalloc (input_line_pointer - section_name + 1);
-
 
1573
  strcpy (name, section_name);
1565
  name = xmalloc (input_line_pointer - section_name + 1);
1574
 
-
 
1575
  *input_line_pointer = c;
1566
  strcpy (name, section_name);
Line 1576... Line 1567...
1576
 
1567
  *input_line_pointer = c;
1577
  SKIP_WHITESPACE ();
1568
  SKIP_WHITESPACE_AFTER_NAME ();
Line 1578... Line 1569...
1578
 
1569