if (objfile->ei.entry_point >= lowpc && objfile->ei.entry_point < highpc) { objfile->ei.deprecated_entry_file_lowpc = lowpc; objfile->ei.deprecated_entry_file_highpc = highpc; }
read_file_scope (struct die_info *die, struct dwarf2_cu *cu){  struct objfile *objfile = cu->objfile;  struct comp_unit_head *cu_header = &cu->header;  struct cleanup *back_to = make_cleanup (null_cleanup, 0);  CORE_ADDR lowpc = ((CORE_ADDR) -1);  CORE_ADDR highpc = ((CORE_ADDR) 0);  struct attribute *attr;  char *name = "<unknown>";  char *comp_dir = NULL;  struct die_info *child_die;  bfd *abfd = objfile->obfd;  struct line_header *line_header = 0;  CORE_ADDR baseaddr;    baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));  get_scope_pc_bounds (die, &lowpc, &highpc, cu);  /* If we didn't find a lowpc, set it to highpc to avoid complaints     from finish_block.  */  if (lowpc == ((CORE_ADDR) -1))    lowpc = highpc;  lowpc += baseaddr;  highpc += baseaddr;  attr = dwarf2_attr (die, DW_AT_name, cu);  if (attr)    {      name = DW_STRING (attr);    }  attr = dwarf2_attr (die, DW_AT_comp_dir, cu);  if (attr)    {      comp_dir = DW_STRING (attr);      if (comp_dir)	{	  /* Irix 6.2 native cc prepends <machine>.: to the compilation	     directory, get rid of it.  */	  char *cp = strchr (comp_dir, ':');	  if (cp && cp != comp_dir && cp[-1] == '.' && cp[1] == '/')	    comp_dir = cp + 1;	}    }  if (objfile->ei.entry_point >= lowpc &&      objfile->ei.entry_point < highpc)    {      objfile->ei.deprecated_entry_file_lowpc = lowpc;      objfile->ei.deprecated_entry_file_highpc = highpc;    }  attr = dwarf2_attr (die, DW_AT_language, cu);  if (attr)    {      set_cu_language (DW_UNSND (attr), cu);    }  /* We assume that we're processing GCC output. */  processing_gcc_compilation = 2;#if 0  /* FIXME:Do something here.  */  if (dip->at_producer != NULL)    {      handle_producer (dip->at_producer);    }#endif  /* The compilation unit may be in a different language or objfile,     zero out all remembered fundamental types.  */  memset (cu->ftypes, 0, FT_NUM_MEMBERS * sizeof (struct type *));  start_symtab (name, comp_dir, lowpc);  record_debugformat ("DWARF 2");  initialize_cu_func_list (cu);  /* Process all dies in compilation unit.  */  if (die->child != NULL)    {      child_die = die->child;      while (child_die && child_die->tag)	{	  process_die (child_die, cu);	  child_die = sibling_die (child_die);	}    }  /* Decode line number information if present.  */  attr = dwarf2_attr (die, DW_AT_stmt_list, cu);  if (attr)    {      unsigned int line_offset = DW_UNSND (attr);      line_header = dwarf_decode_line_header (line_offset, abfd, cu);      if (line_header)        {          make_cleanup ((make_cleanup_ftype *) free_line_header,                        (void *) line_header);          dwarf_decode_lines (line_header, comp_dir, abfd, cu);        }    }  /* Decode macro information, if present.  Dwarf 2 macro information     refers to information in the line number info statement program     header, so we can only read it if we've read the header     successfully.  */  attr = dwarf2_attr (die, DW_AT_macro_info, cu);  if (attr && line_header)    {      unsigned int macro_offset = DW_UNSND (attr);      dwarf_decode_macros (line_header, macro_offset,                           comp_dir, abfd, cu);    }  do_cleanups (back_to);}