Back to index

cell-binutils  2.17cvs20070401
Functions
mri.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void mri_output_section (const char *, etree_type *)
void mri_only_load (const char *)
void mri_base (etree_type *)
void mri_load (const char *)
void mri_order (const char *)
void mri_alias (const char *, const char *, int)
void mri_name (const char *)
void mri_format (const char *)
void mri_public (const char *, etree_type *)
void mri_align (const char *, etree_type *)
void mri_alignmod (const char *, etree_type *)
void mri_truncate (unsigned int)
void mri_draw_tree (void)

Function Documentation

void mri_alias ( const char *  ,
const char *  ,
int   
)

Definition at line 254 of file mri.c.

{
  if (!is)
    {
      char buf[20];

      /* Some sections are digits.  */
      sprintf (buf, "%d", isn);

      is = xstrdup (buf);

      if (is == NULL)
       abort ();
    }

  mri_add_to_list (&alias, is, 0, want, 0, 0);
}

Here is the call graph for this function:

void mri_align ( const char *  ,
etree_type  
)

Definition at line 301 of file mri.c.

{
  mri_add_to_list (&alignment, name, 0, 0, exp, 0);
}

Here is the call graph for this function:

void mri_alignmod ( const char *  ,
etree_type  
)

Definition at line 307 of file mri.c.

{
  mri_add_to_list (&subalignment, name, 0, 0, 0, exp);
}

Here is the call graph for this function:

void mri_base ( etree_type )

Definition at line 110 of file mri.c.

{
  base = exp;
}
void mri_draw_tree ( void  )

Definition at line 118 of file mri.c.

{
  if (done_tree)
    return;

  /* Now build the statements for the ldlang machine.  */

  /* Attach the addresses of any which have addresses,
     and add the ones not mentioned.  */
  if (address != NULL)
    {
      struct section_name_struct *alist;
      struct section_name_struct *olist;

      if (order == NULL)
       order = address;

      for (alist = address;
          alist != NULL;
          alist = alist->next)
       {
         int done = 0;

         for (olist = order; done == 0 && olist != NULL; olist = olist->next)
           {
             if (strcmp (alist->name, olist->name) == 0)
              {
                olist->vma = alist->vma;
                done = 1;
              }
           }

         if (!done)
           {
             /* Add this onto end of order list.  */
             mri_add_to_list (&order, alist->name, alist->vma, 0, 0, 0);
           }
       }
    }

  /* If we're only supposed to load a subset of them in, then prune
     the list.  */
  if (only_load != NULL)
    {
      struct section_name_struct *ptr1;
      struct section_name_struct *ptr2;

      if (order == NULL)
       order = only_load;

      /* See if this name is in the list, if it is then we can load it.  */
      for (ptr1 = only_load; ptr1; ptr1 = ptr1->next)
       for (ptr2 = order; ptr2; ptr2 = ptr2->next)
         if (strcmp (ptr2->name, ptr1->name) == 0)
           ptr2->ok_to_load = 1;
    }
  else
    {
      /* No only load list, so everything is ok to load.  */
      struct section_name_struct *ptr;

      for (ptr = order; ptr; ptr = ptr->next)
       ptr->ok_to_load = 1;
    }

  /* Create the order of sections to load.  */
  if (order != NULL)
    {
      /* Been told to output the sections in a certain order.  */
      struct section_name_struct *p = order;

      while (p)
       {
         struct section_name_struct *aptr;
         etree_type *align = 0;
         etree_type *subalign = 0;
         struct wildcard_list *tmp;

         /* See if an alignment has been specified.  */
         for (aptr = alignment; aptr; aptr = aptr->next)
           if (strcmp (aptr->name, p->name) == 0)
             align = aptr->align;

         for (aptr = subalignment; aptr; aptr = aptr->next)
           if (strcmp (aptr->name, p->name) == 0)
             subalign = aptr->subalign;

         if (base == 0)
           base = p->vma ? p->vma : exp_nameop (NAME, ".");

         lang_enter_output_section_statement (p->name, base,
                                          p->ok_to_load ? 0 : noload_section,
                                          align, subalign, NULL, 0);
         base = 0;
         tmp = xmalloc (sizeof *tmp);
         tmp->next = NULL;
         tmp->spec.name = p->name;
         tmp->spec.exclude_name_list = NULL;
         tmp->spec.sorted = none;
         lang_add_wild (NULL, tmp, FALSE);

         /* If there is an alias for this section, add it too.  */
         for (aptr = alias; aptr; aptr = aptr->next)
           if (strcmp (aptr->alias, p->name) == 0)
             {
              tmp = xmalloc (sizeof *tmp);
              tmp->next = NULL;
              tmp->spec.name = aptr->name;
              tmp->spec.exclude_name_list = NULL;
              tmp->spec.sorted = none;
              lang_add_wild (NULL, tmp, FALSE);
             }

         lang_leave_output_section_statement (0, "*default*", NULL, NULL);

         p = p->next;
       }
    }

  done_tree = 1;
}

Here is the call graph for this function:

void mri_format ( const char *  )

Definition at line 279 of file mri.c.

{
  if (strcmp (name, "S") == 0)
    lang_add_output_format ("srec", NULL, NULL, 1);

  else if (strcmp (name, "IEEE") == 0)
    lang_add_output_format ("ieee", NULL, NULL, 1);

  else if (strcmp (name, "COFF") == 0)
    lang_add_output_format ("coff-m68k", NULL, NULL, 1);

  else
    einfo (_("%P%F: unknown format type %s\n"), name);
}

Here is the call graph for this function:

void mri_load ( const char *  )

Definition at line 241 of file mri.c.

Here is the call graph for this function:

void mri_name ( const char *  )

Definition at line 273 of file mri.c.

Here is the call graph for this function:

void mri_only_load ( const char *  )

Definition at line 104 of file mri.c.

{
  mri_add_to_list (&only_load, name, 0, 0, 0, 0);
}

Here is the call graph for this function:

void mri_order ( const char *  )

Definition at line 248 of file mri.c.

{
  mri_add_to_list (&order, name, 0, 0, 0, 0);
}

Here is the call graph for this function:

void mri_output_section ( const char *  ,
etree_type  
)

Definition at line 95 of file mri.c.

{
  mri_add_to_list (&address, name, vma, 0, 0, 0);
}

Here is the call graph for this function:

void mri_public ( const char *  ,
etree_type  
)

Definition at line 295 of file mri.c.

Here is the call graph for this function:

void mri_truncate ( unsigned  int)

Definition at line 313 of file mri.c.