* sunos.c: (choose_reloc_size) added: (sunos4_callback) calls
authorSteve Chamberlain <steve@cygnus>
Mon, 13 May 1991 21:02:56 +0000 (21:02 +0000)
committerSteve Chamberlain <steve@cygnus>
Mon, 13 May 1991 21:02:56 +0000 (21:02 +0000)
choose_reloc_size. (sunos4_write_object_contents) now calls
choose_reloc_size so outputs relocs correctly, also calculates the
size of the sections correctly.
* aout.c: (look in the \ 1rrgs I hate VI)

~
~
~
~
\10\10

bfd/aout.c
bfd/sunos.c

index 00290ae..3550179 100755 (executable)
@@ -201,6 +201,11 @@ some_aout_object_p (abfd, callback_to_real_object_p)
   obj_bsssec (abfd)->size = execp->a_bss;
   obj_textsec (abfd)->size = execp->a_text;
 
+  if (abfd->flags & D_PAGED) {
+    obj_textsec (abfd)->size -=  EXEC_BYTES_SIZE;
+  }
+    
+
   obj_textsec (abfd)->flags = (execp->a_trsize != 0 ?
                                (SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_HAS_CONTENTS) :
                                (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS));
@@ -413,21 +418,23 @@ aout_set_section_contents (abfd, section, location, offset, count)
        obj_textsec(abfd)->filepos = sizeof(struct exec);
        obj_textsec(abfd)->size = align_power(obj_textsec(abfd)->size,
                                              obj_textsec(abfd)->alignment_power);
-       obj_datasec(abfd)->filepos =  obj_textsec (abfd)->size;
+       obj_datasec(abfd)->filepos =  obj_textsec (abfd)->size + EXEC_BYTES_SIZE;
        obj_datasec(abfd)->size = align_power(obj_datasec(abfd)->size,
                                              obj_datasec(abfd)->alignment_power);
 
+
       }
   /* regardless, once we know what we're doing, we might as well get going */
-  if (section != obj_bsssec(abfd)) {
-    bfd_seek (abfd, section->filepos + offset, SEEK_SET);
+  if (section != obj_bsssec(abfd)) 
+      {
+       bfd_seek (abfd, section->filepos + offset, SEEK_SET);
 
-    if (count) {
-      return (bfd_write ((PTR)location, 1, count, abfd) == count) ?
-       true : false;
-    }
-    return false;
-  }
+       if (count) {
+         return (bfd_write ((PTR)location, 1, count, abfd) == count) ?
+           true : false;
+       }
+       return false;
+      }
   return true;
 }
 \f
index d9235da..a451a48 100644 (file)
@@ -271,11 +271,8 @@ sunos4_write_object_contents (abfd)
     /* This is not strictly true, but will probably do for the default
        case.  FIXME.  
        */
-    /* Also the size has already had the sizeof the header taken into
-       account. It may be wrong for the application to have to do this
-       (though this is what sizeof_headers is for), but it's the way
-       it is, so that's the way it will stay for the moment.*/
-    execp->a_text = obj_textsec (abfd)->size ; /*+ sizeof(struct exec);*/
+
+    execp->a_text = obj_textsec (abfd)->size + EXEC_BYTES_SIZE;
     N_SET_MAGIC (*execp, ZMAGIC);
   } else if (abfd->flags & WP_TEXT) {
     N_SET_MAGIC (*execp, NMAGIC);