2000-08-11 Kazu Hirata <kazu@hxi.com>
* config/obj-bout.c: Fix formatting.
This commit is contained in:
parent
8d72000704
commit
351aa9f657
|
@ -1,6 +1,7 @@
|
|||
2000-08-11 Kazu Hirata <kazu@hxi.com>
|
||||
|
||||
* expr.c: Fix formatting.
|
||||
* config/obj-bout.c: Likewise.
|
||||
|
||||
2000-08-10 Jason Eckhardt <jle@cygnus.com>
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* b.out object file format
|
||||
Copyright (C) 1989, 90, 91, 92, 93, 94, 95, 1996
|
||||
Copyright (C) 1989, 90, 91, 92, 93, 94, 95, 96, 2000
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
|
@ -21,8 +21,9 @@
|
|||
|
||||
#include "as.h"
|
||||
#include "obstack.h"
|
||||
const short /* in: segT out: N_TYPE bits */
|
||||
seg_N_TYPE[] =
|
||||
|
||||
/* In: segT Out: N_TYPE bits */
|
||||
const short seg_N_TYPE[] =
|
||||
{
|
||||
N_ABS,
|
||||
N_TEXT,
|
||||
|
@ -60,9 +61,9 @@ static void obj_bout_line PARAMS ((int));
|
|||
|
||||
const pseudo_typeS obj_pseudo_table[] =
|
||||
{
|
||||
{"line", obj_bout_line, 0}, /* source code line number */
|
||||
{"line", obj_bout_line, 0}, /* Source code line number. */
|
||||
|
||||
/* coff debugging directives. Currently ignored silently */
|
||||
/* coff debugging directives. Currently ignored silently. */
|
||||
{"def", s_ignore, 0},
|
||||
{"dim", s_ignore, 0},
|
||||
{"endef", s_ignore, 0},
|
||||
|
@ -77,16 +78,13 @@ const pseudo_typeS obj_pseudo_table[] =
|
|||
{"ABORT", s_ignore, 0},
|
||||
{"ident", s_ignore, 0},
|
||||
|
||||
{NULL} /* end sentinel */
|
||||
}; /* obj_pseudo_table */
|
||||
{NULL} /* End sentinel. */
|
||||
};
|
||||
|
||||
/* Relocation. */
|
||||
|
||||
/*
|
||||
* emit_relocations()
|
||||
*
|
||||
* Crawl along a fixS chain. Emit the segment's relocations.
|
||||
*/
|
||||
/* Crawl along a fixS chain. Emit the segment's relocations. */
|
||||
|
||||
void
|
||||
obj_emit_relocations (where, fixP, segment_address_in_file)
|
||||
char **where;
|
||||
|
@ -110,31 +108,33 @@ obj_emit_relocations (where, fixP, segment_address_in_file)
|
|||
*where += sizeof (struct relocation_info);
|
||||
} /* if there's a symbol */
|
||||
} /* for each fixup */
|
||||
}
|
||||
|
||||
} /* emit_relocations() */
|
||||
/* Aout file generation & utilities . */
|
||||
|
||||
/* Aout file generation & utilities */
|
||||
/* Convert a lvalue to machine dependent data. */
|
||||
|
||||
/* Convert a lvalue to machine dependent data */
|
||||
void
|
||||
obj_header_append (where, headers)
|
||||
char **where;
|
||||
object_headers *headers;
|
||||
{
|
||||
/* Always leave in host byte order */
|
||||
/* Always leave in host byte order. */
|
||||
|
||||
headers->header.a_talign = section_alignment[SEG_TEXT];
|
||||
|
||||
/* Force to at least 2. */
|
||||
if (headers->header.a_talign < 2)
|
||||
{
|
||||
headers->header.a_talign = 2;
|
||||
} /* force to at least 2 */
|
||||
}
|
||||
|
||||
headers->header.a_dalign = section_alignment[SEG_DATA];
|
||||
headers->header.a_balign = section_alignment[SEG_BSS];
|
||||
|
||||
headers->header.a_tload = 0;
|
||||
headers->header.a_dload = md_section_align (SEG_DATA, H_GET_TEXT_SIZE (headers));
|
||||
headers->header.a_dload =
|
||||
md_section_align (SEG_DATA, H_GET_TEXT_SIZE (headers));
|
||||
|
||||
headers->header.a_relaxable = linkrelax;
|
||||
|
||||
|
@ -170,19 +170,27 @@ obj_header_append (where, headers)
|
|||
#else /* ! CROSS_COMPILE */
|
||||
append (where, (char *) &headers->header, sizeof (headers->header));
|
||||
#endif /* ! CROSS_COMPILE */
|
||||
} /* a_header_append() */
|
||||
}
|
||||
|
||||
void
|
||||
obj_symbol_to_chars (where, symbolP)
|
||||
char **where;
|
||||
symbolS *symbolP;
|
||||
{
|
||||
md_number_to_chars ((char *) &(S_GET_OFFSET (symbolP)), S_GET_OFFSET (symbolP), sizeof (S_GET_OFFSET (symbolP)));
|
||||
md_number_to_chars ((char *) &(S_GET_DESC (symbolP)), S_GET_DESC (symbolP), sizeof (S_GET_DESC (symbolP)));
|
||||
md_number_to_chars ((char *) &symbolP->sy_symbol.n_value, S_GET_VALUE (symbolP), sizeof (symbolP->sy_symbol.n_value));
|
||||
md_number_to_chars ((char *) &(S_GET_OFFSET (symbolP)),
|
||||
S_GET_OFFSET (symbolP),
|
||||
sizeof (S_GET_OFFSET (symbolP)));
|
||||
|
||||
md_number_to_chars ((char *) &(S_GET_DESC (symbolP)),
|
||||
S_GET_DESC (symbolP),
|
||||
sizeof (S_GET_DESC (symbolP)));
|
||||
|
||||
md_number_to_chars ((char *) &symbolP->sy_symbol.n_value,
|
||||
S_GET_VALUE (symbolP),
|
||||
sizeof (symbolP->sy_symbol.n_value));
|
||||
|
||||
append (where, (char *) &symbolP->sy_symbol, sizeof (obj_symbol_type));
|
||||
} /* obj_symbol_to_chars() */
|
||||
}
|
||||
|
||||
void
|
||||
obj_emit_symbols (where, symbol_rootP)
|
||||
|
@ -191,13 +199,11 @@ obj_emit_symbols (where, symbol_rootP)
|
|||
{
|
||||
symbolS *symbolP;
|
||||
|
||||
/*
|
||||
* Emit all symbols left in the symbol chain.
|
||||
*/
|
||||
/* 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. */
|
||||
/* 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);
|
||||
|
@ -210,7 +216,7 @@ obj_emit_symbols (where, symbol_rootP)
|
|||
obj_symbol_to_chars (where, symbolP);
|
||||
S_SET_NAME (symbolP, temp);
|
||||
}
|
||||
} /* emit_symbols() */
|
||||
}
|
||||
|
||||
void
|
||||
obj_symbol_new_hook (symbolP)
|
||||
|
@ -225,11 +231,11 @@ obj_bout_line (ignore)
|
|||
int ignore;
|
||||
{
|
||||
/* Assume delimiter is part of expression. */
|
||||
/* BSD4.2 as fails with delightful bug, so we */
|
||||
/* are not being incompatible here. */
|
||||
/* BSD4.2 as fails with delightful bug, so we are not being
|
||||
incompatible here. */
|
||||
new_logical_line ((char *) NULL, (int) (get_absolute_expression ()));
|
||||
demand_empty_rest_of_line ();
|
||||
} /* obj_bout_line() */
|
||||
}
|
||||
|
||||
void
|
||||
obj_read_begin_hook ()
|
||||
|
@ -280,7 +286,6 @@ obj_crawl_symbol_chain (headers)
|
|||
All other symbols are output. We complain if a deleted
|
||||
symbol was marked external. */
|
||||
|
||||
|
||||
if (1
|
||||
&& !S_IS_REGISTER (symbolP)
|
||||
&& (!S_GET_NAME (symbolP)
|
||||
|
@ -290,12 +295,13 @@ obj_crawl_symbol_chain (headers)
|
|||
|| !S_IS_DEFINED (symbolP)
|
||||
|| S_IS_EXTERNAL (symbolP)
|
||||
#endif /* TC_I960 */
|
||||
|| (S_GET_NAME (symbolP)[0] != '\001' && (flag_keep_locals || !S_LOCAL_NAME (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 */
|
||||
/* The + 1 after strlen account for the \0 at the end of
|
||||
each string. */
|
||||
if (!S_IS_STABD (symbolP))
|
||||
{
|
||||
/* Ordinary case. */
|
||||
|
@ -310,10 +316,11 @@ obj_crawl_symbol_chain (headers)
|
|||
{
|
||||
if (S_IS_EXTERNAL (symbolP) || !S_IS_DEFINED (symbolP))
|
||||
{
|
||||
as_bad (_("Local symbol %s never defined"), S_GET_NAME (symbolP));
|
||||
} /* oops. */
|
||||
as_bad (_("Local symbol %s never defined"),
|
||||
S_GET_NAME (symbolP));
|
||||
} /* Oops. */
|
||||
|
||||
/* Unhook it from the chain */
|
||||
/* Unhook it from the chain. */
|
||||
*symbolPP = symbol_next (symbolP);
|
||||
} /* if this symbol should be in the output */
|
||||
} /* for each symbol */
|
||||
|
@ -321,9 +328,7 @@ obj_crawl_symbol_chain (headers)
|
|||
H_SET_SYMBOL_TABLE_SIZE (headers, symbol_number);
|
||||
}
|
||||
|
||||
/*
|
||||
* Find strings by crawling along symbol table chain.
|
||||
*/
|
||||
/* Find strings by crawling along symbol table chain. */
|
||||
|
||||
void
|
||||
obj_emit_strings (where)
|
||||
|
@ -336,14 +341,14 @@ obj_emit_strings (where)
|
|||
md_number_to_chars (*where, string_byte_count, sizeof (string_byte_count));
|
||||
*where += sizeof (string_byte_count);
|
||||
#else /* CROSS_COMPILE */
|
||||
append (where, (char *) &string_byte_count, (unsigned long) sizeof (string_byte_count));
|
||||
append (where, (char *) &string_byte_count,
|
||||
(unsigned long) sizeof (string_byte_count));
|
||||
#endif /* CROSS_COMPILE */
|
||||
|
||||
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));
|
||||
} /* walk symbol chain */
|
||||
append (where, S_GET_NAME (symbolP),
|
||||
(unsigned long) (strlen (S_GET_NAME (symbolP)) + 1));
|
||||
} /* Walk symbol chain. */
|
||||
}
|
||||
|
||||
/* end of obj-bout.c */
|
||||
|
|
Loading…
Reference in New Issue