- void *saved_offsets;
- bfd_boolean saved_reloc_done = sec->reloc_done;
-
-#undef RETURN
-#define RETURN(x) \
- do \
- { \
- sec->reloc_done = saved_reloc_done; \
- return (x); \
- } \
- while (0)
-
- /* Foul hack to prevent bfd_section_size aborts. The reloc_done flag
- only controls that macro (and the related size macros), selecting
- between _raw_size and _cooked_size. We may be called with relocation
- done or not, so we need to save the done-flag and mark the section as
- not relocated.
-
- Debug sections won't change size while we're only relocating. There
- may be trouble here someday if it tries to run relaxation
- unexpectedly, so make sure. */
- BFD_ASSERT (sec->_raw_size == sec->_cooked_size);
- sec->reloc_done = 0;
-
- if (! (sec->flags & SEC_RELOC))
- {
- bfd_size_type size = bfd_section_size (abfd, sec);
-
- if (outbuf == NULL)
- contents = bfd_malloc (size);
- else
- contents = outbuf;