baton->size = dwarf_loc_size - DW_UNSND (attr); baton->data = dwarf_loc_buffer + DW_UNSND (attr);
baton->size = dwarf2_per_objfile->loc_size - DW_UNSND (attr); baton->data = dwarf2_per_objfile->loc_buffer + DW_UNSND (attr);
dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,			     struct dwarf2_cu *cu){  if (attr->form == DW_FORM_data4 || attr->form == DW_FORM_data8)    {      struct dwarf2_loclist_baton *baton;      baton = obstack_alloc (&cu->objfile->objfile_obstack,			     sizeof (struct dwarf2_loclist_baton));      baton->objfile = cu->objfile;      /* We don't know how long the location list is, but make sure we	 don't run off the edge of the section.  */      baton->size = dwarf_loc_size - DW_UNSND (attr);      baton->data = dwarf_loc_buffer + DW_UNSND (attr);      baton->base_address = cu->header.base_address;      if (cu->header.base_known == 0)	complaint (&symfile_complaints,		   "Location list used without specifying the CU base address.");      SYMBOL_OPS (sym) = &dwarf2_loclist_funcs;      SYMBOL_LOCATION_BATON (sym) = baton;    }  else    {      struct dwarf2_locexpr_baton *baton;      baton = obstack_alloc (&cu->objfile->objfile_obstack,			     sizeof (struct dwarf2_locexpr_baton));      baton->objfile = cu->objfile;      if (attr_form_is_block (attr))	{	  /* Note that we're just copying the block's data pointer	     here, not the actual data.  We're still pointing into the	     dwarf_info_buffer for SYM's objfile; right now we never	     release that buffer, but when we do clean up properly	     this may need to change.  */	  baton->size = DW_BLOCK (attr)->size;	  baton->data = DW_BLOCK (attr)->data;	}      else	{	  dwarf2_invalid_attrib_class_complaint ("location description",						 SYMBOL_NATURAL_NAME (sym));	  baton->size = 0;	  baton->data = NULL;	}            SYMBOL_OPS (sym) = &dwarf2_locexpr_funcs;      SYMBOL_LOCATION_BATON (sym) = baton;    }}