build: mark binary data as read-only with objcopy
authorDavid Herrmann <dh.herrmann@gmail.com>
Fri, 15 Mar 2013 15:10:45 +0000 (16:10 +0100)
committerDavid Herrmann <dh.herrmann@gmail.com>
Sun, 3 Nov 2013 11:18:08 +0000 (12:18 +0100)
Check for objcopy in configure.ac and then mark binary data as read-only
by renaming .data to .rodata and setting the correct flags.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Makefile.am
configure.ac

index 9cd8326..ee84429 100644 (file)
@@ -131,6 +131,7 @@ CLEANFILES += src/*.bin.lo src/*.bin.o
 
 src/%.bin.lo: src/%.bin
        $(AM_V_GEN)$(LD) -r -o "src/$*.bin.o" -z noexecstack --format=binary "$<"
+       $(AM_V_at)$(OBJCOPY) --rename-section .data=.rodata,alloc,load,readonly,data,contents "src/$*.bin.o"
        $(AM_V_at)echo "# $@ - a libtool object file" >"$@"
        $(AM_V_at)echo "# Generated by $(shell $(LIBTOOL) --version | head -n 1)" >>"$@"
        $(AM_V_at)echo "#" >>"$@"
index ac942b8..eb3020f 100644 (file)
@@ -777,6 +777,14 @@ fi
 # gles2 helpers
 AM_CONDITIONAL([BUILD_HAVE_GLES2], [test "x$have_gles2" = "xyes"])
 
+# check for mandatory objcopy program
+AC_ARG_VAR([OBJCOPY], [objcopy program])
+AC_CHECK_TOOL([OBJCOPY], [objcopy], "")
+
+if test "x$OBJCOPY" = "x" ; then
+        AC_ERROR([Cannot find "objcopy" program])
+fi
+
 #
 # Makefile vars
 # After everything is configured, we correctly substitute the values for the