DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
DW_ADDR (attr) = (cu->header.offset + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
read_attribute_value (struct attribute *attr, unsigned form,		      bfd *abfd, char *info_ptr,		      struct dwarf2_cu *cu){  struct comp_unit_head *cu_header = &cu->header;  unsigned int bytes_read;  struct dwarf_block *blk;  attr->form = form;  switch (form)    {    case DW_FORM_addr:    case DW_FORM_ref_addr:      DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);      info_ptr += bytes_read;      break;    case DW_FORM_block2:      blk = dwarf_alloc_block ();      blk->size = read_2_bytes (abfd, info_ptr);      info_ptr += 2;      blk->data = read_n_bytes (abfd, info_ptr, blk->size);      info_ptr += blk->size;      DW_BLOCK (attr) = blk;      break;    case DW_FORM_block4:      blk = dwarf_alloc_block ();      blk->size = read_4_bytes (abfd, info_ptr);      info_ptr += 4;      blk->data = read_n_bytes (abfd, info_ptr, blk->size);      info_ptr += blk->size;      DW_BLOCK (attr) = blk;      break;    case DW_FORM_data2:      DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);      info_ptr += 2;      break;    case DW_FORM_data4:      DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);      info_ptr += 4;      break;    case DW_FORM_data8:      DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);      info_ptr += 8;      break;    case DW_FORM_string:      DW_STRING (attr) = read_string (abfd, info_ptr, &bytes_read);      info_ptr += bytes_read;      break;    case DW_FORM_strp:      DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,					       &bytes_read);      info_ptr += bytes_read;      break;    case DW_FORM_block:      blk = dwarf_alloc_block ();      blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);      info_ptr += bytes_read;      blk->data = read_n_bytes (abfd, info_ptr, blk->size);      info_ptr += blk->size;      DW_BLOCK (attr) = blk;      break;    case DW_FORM_block1:      blk = dwarf_alloc_block ();      blk->size = read_1_byte (abfd, info_ptr);      info_ptr += 1;      blk->data = read_n_bytes (abfd, info_ptr, blk->size);      info_ptr += blk->size;      DW_BLOCK (attr) = blk;      break;    case DW_FORM_data1:      DW_UNSND (attr) = read_1_byte (abfd, info_ptr);      info_ptr += 1;      break;    case DW_FORM_flag:      DW_UNSND (attr) = read_1_byte (abfd, info_ptr);      info_ptr += 1;      break;    case DW_FORM_sdata:      DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);      info_ptr += bytes_read;      break;    case DW_FORM_udata:      DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);      info_ptr += bytes_read;      break;    case DW_FORM_ref1:      DW_UNSND (attr) = read_1_byte (abfd, info_ptr);      info_ptr += 1;      break;    case DW_FORM_ref2:      DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);      info_ptr += 2;      break;    case DW_FORM_ref4:      DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);      info_ptr += 4;      break;    case DW_FORM_ref8:      DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);      info_ptr += 8;      break;    case DW_FORM_ref_udata:      DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);      info_ptr += bytes_read;      break;    case DW_FORM_indirect:      form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);      info_ptr += bytes_read;      info_ptr = read_attribute_value (attr, form, abfd, info_ptr, cu);      break;    default:      error ("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]",	     dwarf_form_name (form),	     bfd_get_filename (abfd));    }  return info_ptr;}