mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-25 05:00:01 +00:00
* sunos.c: (choose_reloc_size) added: (sunos4_callback) calls
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 rrgs I hate VI) ~ ~ ~ ~
This commit is contained in:
parent
c42538adaf
commit
1a602d6e61
25
bfd/aout.c
25
bfd/aout.c
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user