On Thu, Feb 12, 2015 at 02:20:13PM +0000, Andreas Haupt wrote:
> 
> >
> >
> >Michael Niedermayer <michae...@gmx.at> schrieb am 13:01 Donnerstag, 
> >12.Februar 2015:
> > 
> >
> >On Thu, Feb 12, 2015 at 10:56:58AM +0000, Andreas Haupt wrote:
> >> Hi,
> >> 
> >> I found an issue when linking against the ffmpeg libavcodec.a static 
> >> libary on armhf which can probably consider to be a bug.
> >> 
> >> Summary of the bug:
> >> When I try to build a shared library in which I include libavcodec.a I 
> >> receive the following linker error (on ARM plattform - banana pi board).
> >> Affected versions of ffmpeg are at least 2.5.3 and git-master, affected 
> >> plattform is armhf (linux).
> >> 
> >> Error message from linker:
> >> 
> >> /home/hpt/ffmpeg/arm_gcc/2.5.3/lib/static/libavcodec.a(videodsp_armv5te.o):
> >>  In function `ff_prefetch_arm':
> >> /root/build_ffmpeg/ffmpeg/libavcodec/arm/videodsp_armv5te.S:29:(.text+0x8):
> >>  relocation truncated to fit: R_ARM_THM_JUMP19 against symbol 
> >> `ff_prefetch_arm' defined in .text section in 
> >> /home/hpt/ffmpeg/arm_gcc/2.5.3/lib/static/libavcodec.a(videodsp_armv5te.o)
> >> collect2: ld returned 1 exit status
> >> 
> >> How to reproduce:
> >> Use the attached cpp file to build a shared object library on arm.
> >> 
> >> When I try to create the shared object library I get the linker error from 
> >> above. I used the following command to create the shared object library:
> >> 
> >> % g++ -shared -D__STDC_CONSTANT_MACROS -o test.so 
> >> -I/home/hpt/ffmpeg/arm_gcc/2.5.3/include/ 
> >> sample_cpp_file_for_bug_reproduction.cpp 
> >> /home/hpt/ffmpeg/arm_gcc/2.5.3/lib/static/libavcodec.a
> >> 
> >> There seems to be some problem in the libavcodec/arm/videodsp_armv5te.S 
> >> assembler file. In that file the label 'ff_prefetch_arm' (line 25) is 
> >> exported and further down used by a conditional near jump (line 29). The 
> >> near jump cannot be done if the label is exported within a shared object 
> >> library. That's at least the explanation I found for myself.
> >> 
> >> I used the attached (untested) patch to fix the linker error from above. 
> >> As far as I can see this patch should fix the problem without any side 
> >> effects. At least it fixes the  linker error I get.
> >
> >does this work too: ?
> >diff --git a/libavcodec/arm/videodsp_armv5te.S 
> >b/libavcodec/arm/videodsp_armv5te.S
> >index 55bcce5..aff1161 100644
> >--- a/libavcodec/arm/videodsp_armv5te.S
> >+++ b/libavcodec/arm/videodsp_armv5te.S
> >@@ -23,9 +23,10 @@
> >#include "libavutil/arm/asm.S"
> >
> >function ff_prefetch_arm, export=1
> >
> >+1:
> >         subs            r2,  r2,  #1
> >         pld             [r0]
> >         add             r0,  r0,  r1
> >-        bne             X(ff_prefetch_arm)
> >+        bne             1b
> >         bx              lr
> >endfunc
> >
> >[...]
> >
> >-- 
> >Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
> >
> >Frequently ignored answer#1 FFmpeg bugs should be sent to our bugtracker. 
> >User
> >questions about the command line tools should be sent to the ffmpeg-user ML.
> >And questions about how to use libav* should be sent to the libav-user ML.
> >_______________________________________________
> >ffmpeg-devel mailing list
> >ffmpeg-devel@ffmpeg.org
> >http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >
> >
> 
> >
> 
> Yes, the diff you suggested does work. (They don't produce the earlier linker 
> error.)

patch applied

thanks

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The bravest are surely those who have the clearest vision
of what is before them, glory and danger alike, and yet
notwithstanding go out to meet it. -- Thucydides

Attachment: signature.asc
Description: Digital signature

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to