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 |