DEFUN(print_size,(value),
size_t value)
{
- printf("%5x", (unsigned)value);
+ fprintf(config.map_file, "%5x", (unsigned)value);
}
static void
DEFUN(print_alignment,(value),
unsigned int value)
{
- printf("2**%1u",value);
+ fprintf(config.map_file, "2**%1u",value);
}
static void
DEFUN(print_fill,(value),
fill_type value)
{
- printf("%04x",(unsigned)value);
+ fprintf(config.map_file, "%04x",(unsigned)value);
}
DEFUN(print_section,(name),
CONST char *CONST name)
{
- printf("%*s", -longest_section_name, name);
+ fprintf(config.map_file, "%*s", -longest_section_name, name);
}
/*----------------------------------------------------------------------
static void
-DEFUN(print_flags, (outfile, ignore_flags),
- FILE *outfile AND
+DEFUN(print_flags, ( ignore_flags),
int *ignore_flags)
{
- fprintf(outfile,"(");
+ fprintf(config.map_file, "(");
#if 0
if (flags->flag_read) fprintf(outfile,"R");
if (flags->flag_write) fprintf(outfile,"W");
if (flags->flag_executable) fprintf(outfile,"X");
if (flags->flag_loadable) fprintf(outfile,"L");
#endif
- fprintf(outfile,")");
+ fprintf(config.map_file, ")");
}
void
-DEFUN(lang_map,(outfile),
- FILE *outfile)
+DEFUN_VOID(lang_map)
{
lang_memory_region_type *m;
- fprintf(outfile,"**MEMORY CONFIGURATION**\n\n");
+ fprintf(config.map_file,"**MEMORY CONFIGURATION**\n\n");
#ifdef HOST_64_BIT
- fprintf(outfile,"name\t\torigin\t\tlength\t\tattributes\n");
+ fprintf(config.map_file,"name\t\torigin\t\tlength\t\tattributes\n");
#else
- fprintf(outfile,"name\t\torigin length\t\tattributes\n");
+ fprintf(config.map_file,"name\t\torigin length\t\tattributes\n");
#endif
for (m = lang_memory_region_list;
m != (lang_memory_region_type *)NULL;
m = m->next)
{
- fprintf(outfile,"%-16s", m->name);
+ fprintf(config.map_file,"%-16s", m->name);
print_address(m->origin);
print_space();
print_address(m->length);
print_space();
- print_flags(outfile, &m->flags);
- fprintf(outfile,"\n");
+ print_flags( &m->flags);
+ fprintf(config.map_file,"\n");
}
- fprintf(outfile,"\n\n**LINK EDITOR MEMORY MAP**\n\n");
- fprintf(outfile,"output input virtual\n");
- fprintf(outfile,"section section address tsize\n\n");
+ fprintf(config.map_file,"\n\n**LINK EDITOR MEMORY MAP**\n\n");
+ fprintf(config.map_file,"output input virtual\n");
+ fprintf(config.map_file,"section section address tsize\n\n");
print_statements();
print_alignment(section->alignment_power);
print_space();
#if 0
- printf("%s flags", output_section_statement->region->name);
+ fprintf(config.map_file, "%s flags", output_section_statement->region->name);
print_flags(stdout, &output_section_statement->flags);
#endif
if (section->flags & SEC_LOAD)
- printf("load ");
+ fprintf(config.map_file, "load ");
if (section->flags & SEC_ALLOC)
- printf("alloc ");
+ fprintf(config.map_file, "alloc ");
if (section->flags & SEC_RELOC)
- printf("reloc ");
+ fprintf(config.map_file, "reloc ");
if (section->flags & SEC_HAS_CONTENTS)
- printf("contents ");
+ fprintf(config.map_file, "contents ");
}
else {
- printf("No attached output section");
+ fprintf(config.map_file, "No attached output section");
}
print_nl();
print_statement(output_section_statement->children.head,
}
else
{
- printf("*undefined*");
+ fprintf(config.map_file, "*undefined*");
}
print_space();
- exp_print_tree(stdout, assignment->exp);
- printf("\n");
+ exp_print_tree(assignment->exp);
+ fprintf(config.map_file, "\n");
}
static void
lang_input_statement_type *statm)
{
if (statm->filename != (char *)NULL) {
- printf("LOAD %s\n",statm->filename);
+ fprintf(config.map_file, "LOAD %s\n",statm->filename);
}
}
asymbol *q)
{
print_section("");
- printf(" ");
+ fprintf(config.map_file, " ");
print_section("");
- printf(" ");
+ fprintf(config.map_file, " ");
print_address(outside_symbol_address(q));
- printf(" %s", q->name ? q->name : " ");
+ fprintf(config.map_file, " %s", q->name ? q->name : " ");
print_nl();
}
if(size != 0) {
print_section("");
- printf(" ");
+ fprintf(config.map_file, " ");
print_section(i->name);
- printf(" ");
+ fprintf(config.map_file, " ");
if (i->output_section) {
print_address(i->output_section->vma + i->output_offset);
- printf(" ");
+ fprintf(config.map_file, " ");
print_size(size);
- printf(" ");
+ fprintf(config.map_file, " ");
print_alignment(i->alignment_power);
- printf(" ");
+ fprintf(config.map_file, " ");
if (in->ifile) {
bfd *abfd = in->ifile->the_bfd;
if (in->ifile->just_syms_flag == true) {
- printf("symbols only ");
+ fprintf(config.map_file, "symbols only ");
}
- printf(" %s ",abfd->xvec->name);
+ fprintf(config.map_file, " %s ",abfd->xvec->name);
if(abfd->my_archive != (bfd *)NULL) {
- printf("[%s]%s", abfd->my_archive->filename,
+ fprintf(config.map_file, "[%s]%s", abfd->my_archive->filename,
abfd->filename);
}
else {
- printf("%s", abfd->filename);
+ fprintf(config.map_file, "%s", abfd->filename);
}
- printf("(overhead %d bytes)", (int)bfd_alloc_size(abfd));
+ fprintf(config.map_file, "(overhead %d bytes)", (int)bfd_alloc_size(abfd));
print_nl();
/* Find all the symbols in this file defined in this section */
print_dot = outside_section_address(i) + size;
}
else {
- printf("No output section allocated\n");
+ fprintf(config.map_file, "No output section allocated\n");
}
}
}
DEFUN(print_fill_statement,(fill),
lang_fill_statement_type *fill)
{
- printf("FILL mask ");
+ fprintf(config.map_file, "FILL mask ");
print_fill( fill->fill);
}
print_space();
switch (data->type) {
case BYTE :
- printf("BYTE ");
+ fprintf(config.map_file, "BYTE ");
print_dot += BYTE_SIZE;
break;
case SHORT:
- printf("SHORT ");
+ fprintf(config.map_file, "SHORT ");
print_dot += SHORT_SIZE;
break;
case LONG:
- printf("LONG ");
+ fprintf(config.map_file, "LONG ");
print_dot += LONG_SIZE;
break;
}
- exp_print_tree(stdout, data->exp);
+ exp_print_tree(data->exp);
- printf("\n");
+ fprintf(config.map_file, "\n");
}
lang_wild_statement_type *w AND
lang_output_section_statement_type *os)
{
- printf(" from ");
+ fprintf(config.map_file, " from ");
if (w->filename != (char *)NULL) {
- printf("%s",w->filename);
+ fprintf(config.map_file, "%s",w->filename);
}
else {
- printf("*");
+ fprintf(config.map_file, "*");
}
if (w->section_name != (char *)NULL) {
- printf("(%s)",w->section_name);
+ fprintf(config.map_file, "(%s)",w->section_name);
}
else {
- printf("(*)");
+ fprintf(config.map_file, "(*)");
}
print_nl();
print_statement(w->children.head, os);
switch (s->header.type)
{
case lang_constructors_statement_enum:
- printf("constructors:\n");
+ fprintf(config.map_file, "constructors:\n");
print_statement(constructor_list.head, os);
break;
case lang_wild_statement_enum:
print_wild_statement(&s->wild_statement, os);
break;
default:
- printf("Fail with %d\n",s->header.type);
+ fprintf(config.map_file, "Fail with %d\n",s->header.type);
FAIL();
break;
case lang_address_statement_enum:
- printf("address\n");
+ fprintf(config.map_file, "address\n");
break;
break;
case lang_object_symbols_statement_enum:
- printf("object symbols\n");
+ fprintf(config.map_file, "object symbols\n");
break;
case lang_fill_statement_enum:
print_fill_statement(&s->fill_statement);
os);
break;
case lang_target_statement_enum:
- printf("TARGET(%s)\n", s->target_statement.target);
+ fprintf(config.map_file, "TARGET(%s)\n", s->target_statement.target);
break;
case lang_output_statement_enum:
- printf("OUTPUT(%s %s)\n",
+ fprintf(config.map_file, "OUTPUT(%s %s)\n",
s->output_statement.name,
output_target);
break;
if (write_map)
{
- printf ("Allocating common %s: %x at %x %s\n",
+ fprintf (config.map_file, "Allocating common %s: %x at %x %s\n",
lgs->name,
(unsigned) size,
(unsigned) com->value,
ldsym_type *symbol_head = (ldsym_type *)NULL;
ldsym_type **symbol_tail_ptr = &symbol_head;
+extern ld_config_type config;
+
/*
incremented for each symbol in the ldsym_type table
no matter what flavour it is
lang_input_statement_type *entry;
{
asymbol **q;
- printf ( "\nLocal symbols of ");
- info("%I", entry);
- printf (":\n\n");
+ fprintf (config.map_file, "\nLocal symbols of ");
+ minfo("%I", entry);
+ fprintf (config.map_file, ":\n\n");
if (entry->asymbols) {
for (q = entry->asymbols; *q; q++)
{
static void
-print_file_stuff(f)
-lang_input_statement_type *f;
+DEFUN(print_file_stuff,(f),
+ lang_input_statement_type *f)
{
- fprintf (stdout, " %s\n", f->filename);
+ fprintf (config.map_file," %s\n", f->filename);
if (f->just_syms_flag)
{
- fprintf (stdout, " symbols only\n");
+ fprintf (config.map_file, " symbols only\n");
}
else
{
print_address(s->output_offset);
if (s->flags & SEC_HAS_CONTENTS)
{
- printf (" %08x 2**%2ud %s\n",
+ fprintf (config.map_file, " %08x 2**%2ud %s\n",
(unsigned)bfd_get_section_size_after_reloc(s),
s->alignment_power, s->name);
}
else
{
- printf (" %08x 2**%2ud %s\n",
+ fprintf (config.map_file, " %08x 2**%2ud %s\n",
(unsigned)bfd_get_section_size_before_reloc(s),
s->alignment_power, s->name);
}
for (s = f->the_bfd->sections;
s != (asection *)NULL;
s = s->next) {
- printf("%s ", s->name);
+ fprintf(config.map_file, "%s ", s->name);
print_address(s->output_offset);
- printf("(%x)", (unsigned)bfd_get_section_size_after_reloc(s));
+ fprintf(config.map_file, "(%x)", (unsigned)bfd_get_section_size_after_reloc(s));
}
- printf("hex \n");
+ fprintf(config.map_file, "hex \n");
}
}
- fprintf (stdout, "\n");
+ fprintf (config.map_file, "\n");
}
void
ldsym_print_symbol_table ()
{
- fprintf (stdout, "**FILES**\n\n");
+ fprintf (config.map_file, "**FILES**\n\n");
lang_for_each_file(print_file_stuff);
- fprintf(stdout, "**GLOBAL SYMBOLS**\n\n");
- fprintf(stdout, "offset section offset symbol\n");
+ fprintf(config.map_file, "**GLOBAL SYMBOLS**\n\n");
+ fprintf(config.map_file, "offset section offset symbol\n");
{
register ldsym_type *sp;
for (sp = symbol_head; sp; sp = sp->next)
{
if (sp->flags & SYM_INDIRECT) {
- fprintf(stdout,"indirect %s to %s\n",
+ fprintf(config.map_file,"indirect %s to %s\n",
sp->name, (((ldsym_type *)(sp->sdefs_chain))->name));
}
else {
print_address(defsym->value);
if (defsec)
{
- printf(" %-10s",
+ fprintf(config.map_file, " %-10s",
bfd_section_name(output_bfd,
defsec));
print_space();
}
else
{
- printf(" .......");
+ fprintf(config.map_file, " .......");
}
}
if (sp->scoms_chain) {
- printf("common ");
+ fprintf(config.map_file, "common ");
print_address((*(sp->scoms_chain))->value);
- printf(" %s ",sp->name);
+ fprintf(config.map_file, " %s ",sp->name);
}
else if (sp->sdefs_chain) {
- printf(" %s ",sp->name);
+ fprintf(config.map_file, " %s ",sp->name);
}
else {
- printf("undefined ");
- printf("%s ",sp->name);
+ fprintf(config.map_file, "undefined ");
+ fprintf(config.map_file, "%s ",sp->name);
}
}