]> git.eshelyaron.com Git - emacs.git/commit
ELF unexec: Don't insert a new section
authorAlan Modra <amodra@gmail.com>
Sun, 8 Nov 2015 17:29:00 +0000 (09:29 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 8 Nov 2015 18:01:00 +0000 (10:01 -0800)
commit3008c521740c5ad46a4eaf343b438b02c25e4de5
treeeb462389b75765063f4331005e3cbd918a5a5010
parent0d6442265e5b709af5eebedf8f0d6b82974f4c31
ELF unexec: Don't insert a new section

Reuse the .bss section instead, making it SHT_PROGBITS.  This way we
don't need to mess with symbol st_shndx, or section sh_link and
sh_info.

This does lead to eu-elflint complaints about symbols defined in .bss
with a needed version, because normally it is undefined symbols that
have needed versions;  Defined symbols have version definitions.
The exception is symbols defined by the linker in .dynbss for
variables copied from a shared library in order to avoid text
relocations, with copy relocs to copy their initial values from the
shared library.  These symbols are both defined and have needed
versions, and eu-elflink only expects to see them in SHT_NOBITS
sections.  Of course there is no real problem with having such symbols
in SHT_PROGBITS sections.  glibc ld.so handles them fine.

* unexelf.c: Delete outdated comments.
(PATCH_INDEX): Delete.
(find_section): Delete.
(unexec): Don't add a new section.  Instead reuse the last bss
section, extending it to cover dumped data.  Make bss sections
SHT_PROGBITS.  Remove all patching of sh_link, sh_info and
st_shndx.  Rename bss sections.
src/unexelf.c