#define DOT_DEBUG ".debug"
#define GNU_LINKONCE_WI ".gnu.linkonce.wi."
+#define GNU_LINKONCE_WT ".gnu.linkonce.wt."
#define DOT_RELOC ".reloc"
#if defined (COFF_LONG_SECTION_NAMES)
styp_flags = STYP_DEBUG_INFO;
}
#ifdef COFF_LONG_SECTION_NAMES
- else if (CONST_STRNEQ (sec_name, GNU_LINKONCE_WI))
+ else if (CONST_STRNEQ (sec_name, GNU_LINKONCE_WI)
+ || CONST_STRNEQ (sec_name, GNU_LINKONCE_WT))
{
styp_flags = STYP_DEBUG_INFO;
}
if (CONST_STRNEQ (sec_name, DOT_DEBUG)
#ifdef COFF_LONG_SECTION_NAMES
|| CONST_STRNEQ (sec_name, GNU_LINKONCE_WI)
+ || CONST_STRNEQ (sec_name, GNU_LINKONCE_WT)
#endif
|| CONST_STRNEQ (sec_name, ".stab"))
is_dbg = TRUE;
#endif
#ifdef COFF_LONG_SECTION_NAMES
|| CONST_STRNEQ (name, GNU_LINKONCE_WI)
+ || CONST_STRNEQ (name, GNU_LINKONCE_WT)
#endif
|| CONST_STRNEQ (name, ".stab"))
{
if (! ((isym.n_sclass == C_STAT
|| isym.n_sclass == C_EXT)
- && isym.n_type == T_NULL
+ && BTYPE (isym.n_type) == T_NULL
&& isym.n_value == 0))
abort ();
if (CONST_STRNEQ (name, DOT_DEBUG)
#ifdef COFF_LONG_SECTION_NAMES
|| CONST_STRNEQ (name, GNU_LINKONCE_WI)
+ || CONST_STRNEQ (name, GNU_LINKONCE_WT)
#endif
|| CONST_STRNEQ (name, ".stab"))
is_dbg = TRUE;
file_ptr oldpos = bfd_tell (abfd);
bfd_size_type relsz = bfd_coff_relsz (abfd);
- bfd_seek (abfd, (file_ptr) hdr->s_relptr, 0);
+ if (bfd_seek (abfd, (file_ptr) hdr->s_relptr, 0) != 0)
+ return;
if (bfd_bread (& dst, relsz, abfd) != relsz)
return;
coff_swap_reloc_in (abfd, &dst, &n);
- bfd_seek (abfd, oldpos, 0);
+ if (bfd_seek (abfd, oldpos, 0) != 0)
+ return;
section->reloc_count = hdr->s_nreloc = n.r_vaddr - 1;
section->rel_filepos += relsz;
}
if (!(current->flags & SEC_HAS_CONTENTS))
continue;
+ current->rawsize = current->size;
+
#ifdef COFF_IMAGE_WITH_PE
/* Make sure we skip empty sections in a PE image. */
if (current->size == 0)
#ifdef COFF_IMAGE_WITH_PE
/* Set the padded size. */
- current->size = (current->size + page_size -1) & -page_size;
+ current->size = (current->size + page_size - 1) & -page_size;
#endif
sofar += current->size;
to the symbol instead of the index. FIXME: This
should use a union. */
src->u.syment.n_value =
- (long) (native_symbols + src->u.syment.n_value);
+ (long) (intptr_t) (native_symbols + src->u.syment.n_value);
dst->symbol.value = src->u.syment.n_value;
src->fix_value = 1;
break;
&& src->u.syment.n_value == 0
&& src->u.syment.n_scnum == 0)
break;
+#ifdef RS6000COFF_C
+ /* XCOFF specific: deleted entry. */
+ if (src->u.syment.n_value == C_NULL_VALUE)
+ break;
+#endif
/* Fall through. */
case C_EXTDEF: /* External definition. */
case C_ULABEL: /* Undefined label. */