Add relro support

Add support for PT_GNU_RELRO. This allows the static linker to
indicate that certain regions of memory should be marked as
"read-only" after dynamic linking is complete.

See:
  * http://www.akkadia.org/drepper/nonselsec.pdf (section 6)
  * http://tk-blog.blogspot.com/2009/02/relro-not-so-well-known-memory.html

Note that this change has no effect on Android right now, because
we don't compile our code with relro enabled.

Change-Id: I6541f8775367e8558b4388f7d105b1ae6e8f046b
This commit is contained in:
Nick Kralevich
2012-02-28 10:40:00 -08:00
parent 1fe109ecf3
commit 9ec0f03a0d
4 changed files with 69 additions and 7 deletions

View File

@@ -31,7 +31,8 @@
#include <unistd.h>
#include <sys/types.h>
#include <linux/elf.h>
#include <elf.h>
#include <sys/exec_elf.h>
#undef PAGE_MASK
#undef PAGE_SIZE
@@ -143,6 +144,10 @@ struct soinfo
struct link_map linkmap;
int constructors_called;
Elf32_Addr gnu_relro_start;
unsigned gnu_relro_len;
};