summaryrefslogtreecommitdiffstats
path: root/contrib/binutils/gas/config/obj-aout.c
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2001-05-28 05:21:37 +0000
committerobrien <obrien@FreeBSD.org>2001-05-28 05:21:37 +0000
commit328e45595b12375b6d16a846069507d25086abdb (patch)
treeae2a6f4f4987889b7bd2af7bdf0b86fa580df011 /contrib/binutils/gas/config/obj-aout.c
parent7fbb72605a1c3bcb81f8b6bb6297ffef30f84335 (diff)
downloadFreeBSD-src-328e45595b12375b6d16a846069507d25086abdb.zip
FreeBSD-src-328e45595b12375b6d16a846069507d25086abdb.tar.gz
Import of GNU Binutils version 2.11.0.
Believe it or not, this is heavily stripped down.
Diffstat (limited to 'contrib/binutils/gas/config/obj-aout.c')
-rw-r--r--contrib/binutils/gas/config/obj-aout.c140
1 files changed, 103 insertions, 37 deletions
diff --git a/contrib/binutils/gas/config/obj-aout.c b/contrib/binutils/gas/config/obj-aout.c
index eabbe92..67bb18e 100644
--- a/contrib/binutils/gas/config/obj-aout.c
+++ b/contrib/binutils/gas/config/obj-aout.c
@@ -17,7 +17,7 @@ the 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, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA. */
+02111-1307, USA. */
#define OBJ_HEADER "obj-aout.h"
@@ -99,13 +99,12 @@ const pseudo_typeS aout_pseudo_table[] =
{NULL, NULL, 0} /* end sentinel */
}; /* aout_pseudo_table */
-
#ifdef BFD_ASSEMBLER
void
obj_aout_frob_symbol (sym, punt)
symbolS *sym;
- int *punt;
+ int *punt ATTRIBUTE_UNUSED;
{
flagword flags;
asection *sec;
@@ -223,7 +222,7 @@ obj_aout_frob_file ()
#else /* ! BFD_ASSEMBLER */
-/* Relocation. */
+/* Relocation. */
/*
* emit_relocations()
@@ -233,7 +232,7 @@ obj_aout_frob_file ()
void
obj_emit_relocations (where, fixP, segment_address_in_file)
char **where;
- fixS *fixP; /* Fixup chain for this segment. */
+ fixS *fixP; /* Fixup chain for this segment. */
relax_addressT segment_address_in_file;
{
for (; fixP; fixP = fixP->fx_next)
@@ -322,13 +321,13 @@ obj_emit_symbols (where, symbol_rootP)
for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP))
{
/* Used to save the offset of the name. It is used to point
- to the string in memory but must be a file offset. */
+ to the string in memory but must be a file offset. */
register char *temp;
temp = S_GET_NAME (symbolP);
S_SET_OFFSET (symbolP, symbolP->sy_name_offset);
- /* Any symbol still undefined and is not a dbg symbol is made N_EXT. */
+ /* Any symbol still undefined and is not a dbg symbol is made N_EXT. */
if (!S_IS_DEBUG (symbolP) && !S_IS_DEFINED (symbolP))
S_SET_EXTERNAL (symbolP);
@@ -355,11 +354,11 @@ obj_emit_symbols (where, symbol_rootP)
static void
obj_aout_line (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
/* Assume delimiter is part of expression.
BSD4.2 as fails with delightful bug, so we
- are not being incompatible here. */
+ are not being incompatible here. */
new_logical_line ((char *) NULL, (int) (get_absolute_expression ()));
demand_empty_rest_of_line ();
} /* obj_aout_line() */
@@ -368,7 +367,7 @@ obj_aout_line (ignore)
static void
obj_aout_weak (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char *name;
int c;
@@ -396,12 +395,12 @@ obj_aout_weak (ignore)
/* Handle .type. On {Net,Open}BSD, this is used to set the n_other field,
which is then apparently used when doing dynamic linking. Older
- versions ogas ignored the .type pseudo-op, so we also ignore it if
+ versions of gas ignored the .type pseudo-op, so we also ignore it if
we can't parse it. */
static void
obj_aout_type (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char *name;
int c;
@@ -409,31 +408,28 @@ obj_aout_type (ignore)
name = input_line_pointer;
c = get_symbol_end ();
- sym = symbol_find (name);
+ sym = symbol_find_or_make (name);
*input_line_pointer = c;
- if (sym != NULL)
+ SKIP_WHITESPACE ();
+ if (*input_line_pointer == ',')
{
+ ++input_line_pointer;
SKIP_WHITESPACE ();
- if (*input_line_pointer == ',')
+ if (*input_line_pointer == '@')
{
++input_line_pointer;
- SKIP_WHITESPACE ();
- if (*input_line_pointer == '@')
- {
- ++input_line_pointer;
- if (strncmp (input_line_pointer, "object", 6) == 0)
+ if (strncmp (input_line_pointer, "object", 6) == 0)
#ifdef BFD_ASSEMBLER
- aout_symbol (symbol_get_bfdsym (sym))->other = 1;
+ aout_symbol (symbol_get_bfdsym (sym))->other = 1;
#else
- S_SET_OTHER (sym, 1);
+ S_SET_OTHER (sym, 1);
#endif
- else if (strncmp (input_line_pointer, "function", 8) == 0)
+ else if (strncmp (input_line_pointer, "function", 8) == 0)
#ifdef BFD_ASSEMBLER
- aout_symbol (symbol_get_bfdsym (sym))->other = 2;
+ aout_symbol (symbol_get_bfdsym (sym))->other = 2;
#else
- S_SET_OTHER (sym, 2);
+ S_SET_OTHER (sym, 2);
#endif
- }
}
}
@@ -453,7 +449,7 @@ obj_crawl_symbol_chain (headers)
tc_crawl_symbol_chain (headers);
- symbolPP = &symbol_rootP; /*->last symbol chain link. */
+ symbolPP = &symbol_rootP; /*->last symbol chain link. */
while ((symbolP = *symbolPP) != NULL)
{
if (symbolP->sy_mri_common)
@@ -494,8 +490,7 @@ obj_crawl_symbol_chain (headers)
switch was passed to gas.
All other symbols are output. We complain if a deleted
- symbol was marked external. */
-
+ symbol was marked external. */
if (!S_IS_REGISTER (symbolP)
&& (!S_GET_NAME (symbolP)
@@ -511,11 +506,11 @@ obj_crawl_symbol_chain (headers)
end of each string */
if (!S_IS_STABD (symbolP))
{
- /* Ordinary case. */
+ /* Ordinary case. */
symbolP->sy_name_offset = string_byte_count;
string_byte_count += strlen (S_GET_NAME (symbolP)) + 1;
}
- else /* .Stabd case. */
+ else /* .Stabd case. */
symbolP->sy_name_offset = 0;
symbolPP = &symbolP->sy_next;
}
@@ -527,7 +522,7 @@ obj_crawl_symbol_chain (headers)
register names... */
{
as_bad (_("Local symbol %s never defined."), decode_local_label_name (S_GET_NAME (symbolP)));
- } /* oops. */
+ } /* oops. */
/* Unhook it from the chain */
*symbolPP = symbol_next (symbolP);
@@ -578,7 +573,7 @@ obj_pre_write_hook (headers)
}
void
-DEFUN_VOID (s_sect)
+s_sect ()
{
/* Strip out the section name */
char *section_name;
@@ -641,7 +636,14 @@ DEFUN_VOID (s_sect)
static void aout_pop_insert PARAMS ((void));
static int obj_aout_s_get_other PARAMS ((symbolS *));
+static void obj_aout_s_set_other PARAMS ((symbolS *, int));
static int obj_aout_s_get_desc PARAMS ((symbolS *));
+static void obj_aout_s_set_desc PARAMS ((symbolS *, int));
+static int obj_aout_s_get_type PARAMS ((symbolS *));
+static void obj_aout_s_set_type PARAMS ((symbolS *, int));
+static int obj_aout_separate_stab_sections PARAMS ((void));
+static int obj_aout_sec_sym_ok_for_reloc PARAMS ((asection *));
+static void obj_aout_process_stab PARAMS ((segT, int, const char *, int, int, int));
static void
aout_pop_insert ()
@@ -656,6 +658,33 @@ obj_aout_s_get_other (sym)
return aout_symbol (symbol_get_bfdsym (sym))->other;
}
+static void
+obj_aout_s_set_other (sym, o)
+ symbolS *sym;
+ int o;
+{
+ aout_symbol (symbol_get_bfdsym (sym))->other = o;
+}
+
+static int
+obj_aout_sec_sym_ok_for_reloc (sec)
+ asection *sec ATTRIBUTE_UNUSED;
+{
+ return obj_sec_sym_ok_for_reloc (sec);
+}
+
+static void
+obj_aout_process_stab (seg, w, s, t, o, d)
+ segT seg ATTRIBUTE_UNUSED;
+ int w;
+ const char *s;
+ int t;
+ int o;
+ int d;
+{
+ aout_process_stab (w, s, t, o, d);
+}
+
static int
obj_aout_s_get_desc (sym)
symbolS *sym;
@@ -663,30 +692,67 @@ obj_aout_s_get_desc (sym)
return aout_symbol (symbol_get_bfdsym (sym))->desc;
}
+static void
+obj_aout_s_set_desc (sym, d)
+ symbolS *sym;
+ int d;
+{
+ aout_symbol (symbol_get_bfdsym (sym))->desc = d;
+}
+
+static int
+obj_aout_s_get_type (sym)
+ symbolS *sym;
+{
+ return aout_symbol (symbol_get_bfdsym (sym))->type;
+}
+static void
+obj_aout_s_set_type (sym, t)
+ symbolS *sym;
+ int t;
+{
+ aout_symbol (symbol_get_bfdsym (sym))->type = t;
+}
+
+static int
+obj_aout_separate_stab_sections ()
+{
+ return 0;
+}
+
+/* When changed, make sure these table entries match the single-format
+ definitions in obj-aout.h. */
const struct format_ops aout_format_ops =
{
bfd_target_aout_flavour,
1, /* dfl_leading_underscore */
0, /* emit_section_symbols */
+ 0, /* begin */
+ 0, /* app_file */
obj_aout_frob_symbol,
obj_aout_frob_file,
+ 0, /* frob_file_before_adjust */
0, /* frob_file_after_relocs */
0, /* s_get_size */
0, /* s_set_size */
0, /* s_get_align */
0, /* s_set_align */
obj_aout_s_get_other,
+ obj_aout_s_set_other,
obj_aout_s_get_desc,
+ obj_aout_s_set_desc,
+ obj_aout_s_get_type,
+ obj_aout_s_set_type,
0, /* copy_symbol_attributes */
0, /* generate_asm_lineno */
- 0, /* process_stab */
- 0, /* sec_sym_ok_for_reloc */
+ obj_aout_process_stab,
+ obj_aout_separate_stab_sections,
+ 0, /* init_stab_section */
+ obj_aout_sec_sym_ok_for_reloc,
aout_pop_insert,
0, /* ecoff_set_ext */
0, /* read_begin_hook */
0 /* symbol_new_hook */
};
#endif BFD_ASSEMBLER
-
-/* end of obj-aout.c */
OpenPOWER on IntegriCloud