On Thu, Jul 14, 2022 at 12:14:38AM +0300, Martin Storsjö wrote: > The AArch64 assembly accesses those symbols directly, without > indirection via e.g. the GOT on ELF. In order for this not to > require text relocations, those symbols need to be resolved fully > at link time, i.e. those symbols can't be interposable. > > Normally, so far, this is achieved when linking shared libraries > in two ways; we have a version script (libavcodec/libavcodec.v) which > marks all symbols that don't start with av* as local. Additionally, > we try to add -Wl,-Bsymbolic to the linker options if supported, > making sure that such symbol references are resolved fully at link > time, instead of making them interposable. > > When the libavcodec static library is linked into another shared > library, there's no guarantee that it uses similar options (even though > that would be favourable), which would end up requiring text relocations > in the AArch64 assembly. > > Explicitly mark the symbols that are accessed from AArch64 assembly > as hidden, so that they are resolved fully at link time even without > the version script and -Wl,-Bsymbolic. > > Signed-off-by: Martin Storsjö <[email protected]> > --- > Moved the attribute to libavutil/internal.h, renamed to a different > namespace (not av_ prefixed), moved the attribute on ff_vp9_subpel_filters > to the header, as suggested. > --- > libavcodec/aacsbrdata.h | 2 +- > libavcodec/fft.h | 2 +- > libavcodec/vp9dsp.h | 2 +- > libavutil/internal.h | 6 ++++++ > 4 files changed, 9 insertions(+), 3 deletions(-)
This seems to break build on linux x86-64, i guess iam missing something
MAN doc/ffprobe-all.1
In file included from libavcodec/x86/vp9dsp_init_16bpp.c:26:0:
./libavcodec/vp9dsp.h:123:50: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or
‘__attribute__’ before ‘ff_vp9_subpel_filters’
extern const int16_t attribute_visibility_hidden
ff_vp9_subpel_filters[3][16][8];
^~~~~~~~~~~~~~~~~~~~~
ffbuild/common.mak:81: recipe for target 'libavcodec/x86/vp9dsp_init_16bpp.o'
failed
make: *** [libavcodec/x86/vp9dsp_init_16bpp.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from libavcodec/x86/vp9dsp_init_16bpp_template.c:26:0,
from libavcodec/x86/vp9dsp_init_12bpp.c:25:
./libavcodec/vp9dsp.h:123:50: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or
‘__attribute__’ before ‘ff_vp9_subpel_filters’
extern const int16_t attribute_visibility_hidden
ff_vp9_subpel_filters[3][16][8];
^~~~~~~~~~~~~~~~~~~~~
In file included from libavcodec/x86/vp9dsp_init_16bpp_template.c:26:0,
from libavcodec/x86/vp9dsp_init_10bpp.c:25:
./libavcodec/vp9dsp.h:123:50: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or
‘__attribute__’ before ‘ff_vp9_subpel_filters’
extern const int16_t attribute_visibility_hidden
ff_vp9_subpel_filters[3][16][8];
^~~~~~~~~~~~~~~~~~~~~
ffbuild/common.mak:81: recipe for target 'libavcodec/x86/vp9dsp_init_12bpp.o'
failed
make: *** [libavcodec/x86/vp9dsp_init_12bpp.o] Error 1
ffbuild/common.mak:81: recipe for target 'libavcodec/x86/vp9dsp_init_10bpp.o'
failed
make: *** [libavcodec/x86/vp9dsp_init_10bpp.o] Error 1
In file included from libavcodec/x86/vp9dsp_init.c:26:0:
./libavcodec/vp9dsp.h:123:50: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or
‘__attribute__’ before ‘ff_vp9_subpel_filters’
extern const int16_t attribute_visibility_hidden
ff_vp9_subpel_filters[3][16][8];
^~~~~~~~~~~~~~~~~~~~~
ffbuild/common.mak:81: recipe for target 'libavcodec/x86/vp9dsp_init.o' failed
make: *** [libavcodec/x86/vp9dsp_init.o] Error 1
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Dictatorship: All citizens are under surveillance, all their steps and
actions recorded, for the politicians to enforce control.
Democracy: All politicians are under surveillance, all their steps and
actions recorded, for the citizens to enforce control.
signature.asc
Description: PGP signature
_______________________________________________ ffmpeg-devel mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
