[libav-commits] arm: Use .data.rel.ro for const data with relocations

Martin Storsjö git at libav.org
Tue Dec 9 11:03:18 CET 2014


Module: libav
Branch: master
Commit: f963f80399deb1a2b44c1bac3af7123e8a0c9e46

Author:    Martin Storsjö <martin at martin.st>
Committer: Martin Storsjö <martin at martin.st>
Date:      Sun Nov 16 12:51:54 2014 +0200

arm: Use .data.rel.ro for const data with relocations

Signed-off-by: Martin Storsjö <martin at martin.st>

---

 configure                       |    3 +++
 libavcodec/arm/fft_fixed_neon.S |    2 +-
 libavcodec/arm/fft_neon.S       |    2 +-
 libavcodec/arm/fft_vfp.S        |    2 +-
 libavutil/arm/asm.S             |    6 +++++-
 5 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/configure b/configure
index 9ac4a8e..ed8316f 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 faddc00..c70a189 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 c4d8918..b161015 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 9c7b54e..c2801fa 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 93d74b6..8479304 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



More information about the libav-commits mailing list