summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2014-11-16 12:51:54 +0200
committerMartin Storsjö <martin@martin.st>2014-12-09 11:43:25 +0200
commitf963f80399deb1a2b44c1bac3af7123e8a0c9e46 (patch)
tree8d0a9e61779857e987d90fa492c93350ada93bf3
parent3c01039e0bc7d269900e15551f8171c4328a0223 (diff)
arm: Use .data.rel.ro for const data with relocations
Signed-off-by: Martin Storsjö <martin@martin.st>
-rwxr-xr-xconfigure3
-rw-r--r--libavcodec/arm/fft_fixed_neon.S2
-rw-r--r--libavcodec/arm/fft_neon.S2
-rw-r--r--libavcodec/arm/fft_vfp.S2
-rw-r--r--libavutil/arm/asm.S6
5 files changed, 11 insertions, 4 deletions
diff --git a/configure b/configure
index 9ac4a8e5fe..ed8316fbb7 100755
--- a/configure
+++ b/configure
@@ -1543,6 +1543,7 @@ HAVE_LIST="
libdc1394_1
libdc1394_2
sdl
+ section_data_rel_ro
threads
vdpau_x11
xlib
@@ -3415,6 +3416,7 @@ case $target_os in
;;
android)
disable symver
+ enable section_data_rel_ro
SLIB_INSTALL_NAME='$(SLIBNAME)'
SLIB_INSTALL_LINKS=
# soname not set on purpose
@@ -3549,6 +3551,7 @@ case $target_os in
;;
linux)
enable dv1394
+ enable section_data_rel_ro
;;
irix*)
target_os=irix
diff --git a/libavcodec/arm/fft_fixed_neon.S b/libavcodec/arm/fft_fixed_neon.S
index faddc0095a..c70a18991a 100644
--- a/libavcodec/arm/fft_fixed_neon.S
+++ b/libavcodec/arm/fft_fixed_neon.S
@@ -242,7 +242,7 @@ function ff_fft_fixed_calc_neon, export=1
bx r3
endfunc
-const fft_fixed_tab_neon
+const fft_fixed_tab_neon, relocate=1
.word fft4_neon
.word fft8_neon
.word fft16_neon
diff --git a/libavcodec/arm/fft_neon.S b/libavcodec/arm/fft_neon.S
index c4d89189ea..b161015e39 100644
--- a/libavcodec/arm/fft_neon.S
+++ b/libavcodec/arm/fft_neon.S
@@ -348,7 +348,7 @@ function ff_fft_permute_neon, export=1
pop {r4,pc}
endfunc
-const fft_tab_neon
+const fft_tab_neon, relocate=1
.word fft4_neon
.word fft8_neon
.word fft16_neon
diff --git a/libavcodec/arm/fft_vfp.S b/libavcodec/arm/fft_vfp.S
index 9c7b54e79e..c2801fa1a9 100644
--- a/libavcodec/arm/fft_vfp.S
+++ b/libavcodec/arm/fft_vfp.S
@@ -33,7 +33,7 @@ function ff_fft_calc_vfp, export=1
movrel a2, (fft_tab_vfp - 8)
ldr pc, [a2, ip, lsl #2]
endfunc
-const fft_tab_vfp
+const fft_tab_vfp, relocate=1
.word fft4_vfp
.word fft8_vfp
.word X(ff_fft16_vfp) @ this one alone is exported
diff --git a/libavutil/arm/asm.S b/libavutil/arm/asm.S
index 93d74b65e1..8479304f5f 100644
--- a/libavutil/arm/asm.S
+++ b/libavutil/arm/asm.S
@@ -89,12 +89,16 @@ FUNC .func \name
.endif
.endm
-.macro const name, align=2
+.macro const name, align=2, relocate=0
.macro endconst
ELF .size \name, . - \name
.purgem endconst
.endm
+.if HAVE_SECTION_DATA_REL_RO && \relocate
+ .section .data.rel.ro
+.else
.section .rodata
+.endif
.align \align
\name:
.endm