+ /* The information provided by the loader does not include
+ the address of the .bss section, but we know that it gets
+ relocated by the same offset as the .data section. So,
+ compute the relocation offset for the .data section, and
+ apply it to the .bss section as well. If the .data section
+ is not defined (which seems highly unlikely), do our best
+ by assuming no relocation. */
+ struct bfd_section *data_sect
+ = bfd_get_section_by_name (abfd, ".data");
+ CORE_ADDR data_offset = 0;
+
+ if (data_sect != NULL)
+ data_offset = info->data_addr - bfd_section_vma (abfd, data_sect);
+
+ sec->addr = bfd_section_vma (abfd, bfd_sect) + data_offset;