aboutsummaryrefslogtreecommitdiff
path: root/gas/config/obj-aout.c
diff options
context:
space:
mode:
Diffstat (limited to 'gas/config/obj-aout.c')
-rw-r--r--gas/config/obj-aout.c303
1 files changed, 0 insertions, 303 deletions
diff --git a/gas/config/obj-aout.c b/gas/config/obj-aout.c
index eb71397..e99e63d 100644
--- a/gas/config/obj-aout.c
+++ b/gas/config/obj-aout.c
@@ -22,51 +22,10 @@
#define OBJ_HEADER "obj-aout.h"
#include "as.h"
-#ifdef BFD_ASSEMBLER
#undef NO_RELOC
#include "aout/aout64.h"
-#endif
#include "obstack.h"
-#ifndef BFD_ASSEMBLER
-/* in: segT out: N_TYPE bits. */
-const short seg_N_TYPE[] =
-{
- N_ABS,
- N_TEXT,
- N_DATA,
- N_BSS,
- N_UNDF, /* Unknown. */
- N_UNDF, /* Error. */
- N_UNDF, /* Expression. */
- N_UNDF, /* Debug. */
- N_UNDF, /* Ntv. */
- N_UNDF, /* Ptv. */
- N_REGISTER, /* Register. */
-};
-
-const segT N_TYPE_seg[N_TYPE + 2] =
-{ /* N_TYPE == 0x1E = 32-2 */
- SEG_UNKNOWN, /* N_UNDF == 0 */
- SEG_GOOF,
- SEG_ABSOLUTE, /* N_ABS == 2 */
- SEG_GOOF,
- SEG_TEXT, /* N_TEXT == 4 */
- SEG_GOOF,
- SEG_DATA, /* N_DATA == 6 */
- SEG_GOOF,
- SEG_BSS, /* N_BSS == 8 */
- SEG_GOOF,
- SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF,
- SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF,
- SEG_GOOF, SEG_GOOF, SEG_GOOF, SEG_GOOF,
- SEG_REGISTER, /* Dummy N_REGISTER for regs = 30. */
- SEG_GOOF,
-};
-#endif
-
-#ifdef BFD_ASSEMBLER
-
void
obj_aout_frob_symbol (symbolS *sym, int *punt ATTRIBUTE_UNUSED)
{
@@ -176,137 +135,6 @@ obj_aout_frob_file_before_fix (void)
assert (x);
}
-#else /* ! BFD_ASSEMBLER */
-
-/* Relocation. */
-
-/** Crawl along a fixS chain. Emit the segment's relocations. */
-
-void
-obj_emit_relocations (char **where,
- fixS *fixP, /* Fixup chain for this segment. */
- relax_addressT segment_address_in_file)
-{
- for (; fixP; fixP = fixP->fx_next)
- if (fixP->fx_done == 0)
- {
- symbolS *sym;
-
- sym = fixP->fx_addsy;
- while (sym->sy_value.X_op == O_symbol
- && (! S_IS_DEFINED (sym) || S_IS_COMMON (sym)))
- sym = sym->sy_value.X_add_symbol;
- fixP->fx_addsy = sym;
-
- if (! sym->sy_resolved && ! S_IS_DEFINED (sym))
- {
- char *file;
- unsigned int line;
-
- if (expr_symbol_where (sym, &file, &line))
- as_bad_where (file, line, _("unresolved relocation"));
- else
- as_bad (_("bad relocation: symbol `%s' not in symbol table"),
- S_GET_NAME (sym));
- }
-
- tc_aout_fix_to_chars (*where, fixP, segment_address_in_file);
- *where += md_reloc_size;
- }
-}
-
-#ifndef obj_header_append
-/* Aout file generation & utilities. */
-
-/* An AOUT header on disk is laid out in target byte order. */
-
-void
-obj_header_append (char **where, object_headers *headers)
-{
- char *p;
-
- tc_headers_hook (headers);
-
-#ifdef __A_OUT_GNU_H__
-#define SIZEOF_HEADER(PIECE) (sizeof (((struct exec_bytes *) 0)->PIECE))
-#else
-#define SIZEOF_HEADER(PIECE) 4
-#endif
-#define DO(PIECE) \
- md_number_to_chars (p, headers->header.PIECE, SIZEOF_HEADER (PIECE)); \
- p += SIZEOF_HEADER (PIECE);
-
- p = *where;
- DO (a_info);
- DO (a_text);
- DO (a_data);
- DO (a_bss);
- DO (a_syms);
- DO (a_entry);
- DO (a_trsize);
- DO (a_drsize);
- *where = p;
-#undef DO
-#undef SIZEOF_HEADER
-}
-#endif /* ! defined (obj_header_append) */
-
-void
-obj_symbol_to_chars (char **where, symbolS *symbolP)
-{
- char *p = *where;
- md_number_to_chars (p, S_GET_OFFSET (symbolP), 4);
- p += 4;
- /* Can't use S_GET_TYPE here as it masks. */
- *p++ = symbolP->sy_symbol.n_type;
- *p++ = symbolP->sy_symbol.n_other;
- md_number_to_chars (p, S_GET_DESC (symbolP), 2);
- p += 2;
- md_number_to_chars (p, S_GET_VALUE (symbolP), 4);
- p += 4;
- *where = p;
-}
-
-void
-obj_emit_symbols (char **where, symbolS *symbol_rootP)
-{
- symbolS *symbolP;
-
- /* Emit all symbols left in the symbol chain. */
- 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. */
- 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. */
- if (!S_IS_DEBUG (symbolP) && !S_IS_DEFINED (symbolP))
- S_SET_EXTERNAL (symbolP);
-
- /* Adjust the type of a weak symbol. */
- if (S_GET_WEAK (symbolP))
- {
- switch (S_GET_TYPE (symbolP))
- {
- case N_UNDF: S_SET_TYPE (symbolP, N_WEAKU); break;
- case N_ABS: S_SET_TYPE (symbolP, N_WEAKA); break;
- case N_TEXT: S_SET_TYPE (symbolP, N_WEAKT); break;
- case N_DATA: S_SET_TYPE (symbolP, N_WEAKD); break;
- case N_BSS: S_SET_TYPE (symbolP, N_WEAKB); break;
- default: as_bad (_("%s: bad type for weak symbol"), temp); break;
- }
- }
-
- obj_symbol_to_chars (where, symbolP);
- S_SET_NAME (symbolP, temp);
- }
-}
-
-#endif /* ! BFD_ASSEMBLER */
-
static void
obj_aout_line (int ignore ATTRIBUTE_UNUSED)
{
@@ -381,136 +209,6 @@ obj_aout_type (int ignore ATTRIBUTE_UNUSED)
s_ignore (0);
}
-#ifndef BFD_ASSEMBLER
-
-void
-obj_crawl_symbol_chain (object_headers *headers)
-{
- symbolS *symbolP;
- symbolS **symbolPP;
- int symbol_number = 0;
-
- tc_crawl_symbol_chain (headers);
-
- symbolPP = &symbol_rootP; /*->last symbol chain link. */
- while ((symbolP = *symbolPP) != NULL)
- {
- if (symbolP->sy_mri_common)
- {
- if (S_IS_EXTERNAL (symbolP))
- as_bad (_("%s: global symbols not supported in common sections"),
- S_GET_NAME (symbolP));
- *symbolPP = symbol_next (symbolP);
- continue;
- }
-
- if (flag_readonly_data_in_text && (S_GET_SEGMENT (symbolP) == SEG_DATA))
- {
- S_SET_SEGMENT (symbolP, SEG_TEXT);
- }
-
- resolve_symbol_value (symbolP);
-
- /* Skip symbols which were equated to undefined or common
- symbols. Also skip defined uncommon symbols which can
- be resolved since in this case they should have been
- resolved to a non-symbolic constant. */
- if (symbolP->sy_value.X_op == O_symbol
- && (! S_IS_DEFINED (symbolP)
- || S_IS_COMMON (symbolP)
- || symbol_resolved_p (symbolP)))
- {
- *symbolPP = symbol_next (symbolP);
- continue;
- }
-
- /* OK, here is how we decide which symbols go out into the brave
- new symtab. Symbols that do are:
-
- * symbols with no name (stabd's?)
- * symbols with debug info in their N_TYPE
-
- Symbols that don't are:
- * symbols that are registers
- * symbols with \1 as their 3rd character (numeric labels)
- * "local labels" as defined by S_LOCAL_NAME(name) if the -L
- switch was passed to gas.
-
- All other symbols are output. We complain if a deleted
- symbol was marked external. */
-
- if (!S_IS_REGISTER (symbolP)
- && (!S_GET_NAME (symbolP)
- || S_IS_DEBUG (symbolP)
- || !S_IS_DEFINED (symbolP)
- || S_IS_EXTERNAL (symbolP)
- || (S_GET_NAME (symbolP)[0] != '\001'
- && (flag_keep_locals || !S_LOCAL_NAME (symbolP)))))
- {
- symbolP->sy_number = symbol_number++;
-
- /* The + 1 after strlen account for the \0 at the
- end of each string */
- if (!S_IS_STABD (symbolP))
- {
- /* Ordinary case. */
- symbolP->sy_name_offset = string_byte_count;
- string_byte_count += strlen (S_GET_NAME (symbolP)) + 1;
- }
- else /* .Stabd case. */
- symbolP->sy_name_offset = 0;
- symbolPP = &symbolP->sy_next;
- }
- else
- {
- if (S_IS_EXTERNAL (symbolP) || !S_IS_DEFINED (symbolP))
- /* This warning should never get triggered any more.
- Well, maybe if you're doing twisted things with
- register names... */
- as_bad (_("Local symbol %s never defined."),
- decode_local_label_name (S_GET_NAME (symbolP)));
-
- /* Unhook it from the chain */
- *symbolPP = symbol_next (symbolP);
- }
- }
-
- H_SET_SYMBOL_TABLE_SIZE (headers, symbol_number);
-}
-
-/* Find strings by crawling along symbol table chain. */
-
-void
-obj_emit_strings (char **where)
-{
- symbolS *symbolP;
-
- md_number_to_chars (*where, string_byte_count, 4);
- *where += 4;
-
- for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP))
- if (S_GET_NAME (symbolP))
- append (where, S_GET_NAME (symbolP),
- (unsigned long) (strlen (S_GET_NAME (symbolP)) + 1));
-}
-
-#ifndef AOUT_VERSION
-#define AOUT_VERSION 0
-#endif
-
-void
-obj_pre_write_hook (object_headers *headers)
-{
- H_SET_DYNAMIC (headers, 0);
- H_SET_VERSION (headers, AOUT_VERSION);
- H_SET_MACHTYPE (headers, AOUT_MACHTYPE);
- tc_aout_pre_write_hook (headers);
-}
-
-#endif /* ! BFD_ASSEMBLER */
-
-#ifdef BFD_ASSEMBLER
-
/* Support for an AOUT emulation. */
static void
@@ -614,7 +312,6 @@ const struct format_ops aout_format_ops =
0, /* read_begin_hook. */
0 /* symbol_new_hook. */
};
-#endif /* BFD_ASSEMBLER */
const pseudo_typeS aout_pseudo_table[] =
{