"lang_statement_union_type and its usage?"

Xinan Tang xinant@cognigine.com
Thu May 31 11:57:00 GMT 2001


Hi

  In ld/ldlang.h, lang_statement_union_type is defined as:

typedef union lang_statement_union
{
  lang_statement_header_type header;
  union lang_statement_union *next;
  ... /* Other stuffs */
} lang_statement_union_type;


  However, I saw in many places in `ldlang.c', the list is traversed as
follows:

   for (; s != (lang_statement_union_type *) NULL; s = s->next)
    {
      switch (s->header.type)
    ...
    }

  The question is that the 'next' and 'header' fields are exclusive, how
could they be used at the same time. Could some one inlight me why
this usage is SAFE?

  My goal is to traverse the statement list at the linking time. I have
difficulty to understand why the list is searched in this way.

Thanks



-- 
Dr. Xinan Tang                    Member of Technical Staff
EMail: xinant@cognigine.com  	  Cognigine Corp.
Voice: 510.743.4930               6120 Stevenson Boulevard
Fax:   510.743.4910               Fremont, CA  94538



More information about the Binutils mailing list