From: Richard M. Stallman Date: Mon, 19 Aug 1996 16:53:35 +0000 (+0000) Subject: (unexec): Copy the .got section. X-Git-Tag: emacs-20.1~4059 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=7d7134484ace48209757c4df34685e684a94a408;p=emacs.git (unexec): Copy the .got section. --- diff --git a/src/unexalpha.c b/src/unexalpha.c index 2bbffde05ab..48b4059fcaf 100644 --- a/src/unexalpha.c +++ b/src/unexalpha.c @@ -266,6 +266,8 @@ unexec (new_name, a_name, data_start, bss_start, entry_address) #ifdef _GOT if (got_section != NULL) { + bcopy (got_section, buffer, sizeof (struct scnhdr)); + got_section->s_vaddr = vaddr; got_section->s_paddr = vaddr; got_section->s_size = 0; @@ -292,6 +294,21 @@ unexec (new_name, a_name, data_start, bss_start, entry_address) WRITE (new, (char *)DATA_START, nhdr.aout.dsize, "writing data section to %s", new_name); +#ifdef _GOT +#define old_got_section ((struct scnhdr *)buffer) + + if (got_section != NULL) + { + SEEK (new, old_got_section->s_scnptr, + "seeking to start of got_section in %s", new_name); + WRITE (new, oldptr + old_got_section->s_scnptr, old_got_section->s_size, + "writing new got_section of %s", new_name); + SEEK (new, nhdr.aout.tsize + nhdr.aout.dsize, + "seeking to end of data section of %s", new_name); + } + +#undef old_got_section +#endif /* * Construct new symbol table header