- /* Create the sections. This is raunchy, but bfd_close wants to free
- them separately. */
-
- core_stacksec(abfd) = (asection *) bfd_zmalloc (sizeof (asection));
- if (core_stacksec (abfd) == NULL) {
- loser:
- bfd_set_error (bfd_error_no_memory);
- free ((void *)rawptr);
- return 0;
- }
- core_datasec (abfd) = (asection *) bfd_zmalloc (sizeof (asection));
- if (core_datasec (abfd) == NULL) {
- loser1:
- free ((void *)core_stacksec (abfd));
- goto loser;
- }
- core_regsec (abfd) = (asection *) bfd_zmalloc (sizeof (asection));
- if (core_regsec (abfd) == NULL) {
- free ((void *)core_datasec (abfd));
- goto loser1;
- }
-
- core_stacksec (abfd)->name = ".stack";
- core_datasec (abfd)->name = ".data";
- core_regsec (abfd)->name = ".reg";
-
- core_stacksec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS;
- core_datasec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS;
- core_regsec (abfd)->flags = SEC_ALLOC + SEC_HAS_CONTENTS;
-
- core_datasec (abfd)->_raw_size = NBPG * u.u_dsize
+ /* Create the sections. */
+
+ flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS;
+ core_stacksec(abfd) = bfd_make_section_anyway_with_flags (abfd, ".stack",
+ flags);
+ if (core_stacksec (abfd) == NULL)
+ goto fail;
+ core_datasec (abfd) = bfd_make_section_anyway_with_flags (abfd, ".data",
+ flags);
+ if (core_datasec (abfd) == NULL)
+ goto fail;
+ core_regsec (abfd) = bfd_make_section_anyway_with_flags (abfd, ".reg",
+ SEC_HAS_CONTENTS);
+ if (core_regsec (abfd) == NULL)
+ goto fail;
+
+ core_datasec (abfd)->size = NBPG * u.u_dsize