From: Thomas Guillem <thomas@gllm.fr> To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH 2/2] libavcodec: Set hidden visibility on global symbols accessed from x86_64 assembly Date: Wed, 27 Jul 2022 14:00:00 +0200 Message-ID: <20220727120000.3596575-1-thomas@gllm.fr> (raw) DECLARE_ALIGNED, DECLARE_ASM_ALIGNED, and DECLARE_ASM_CONST will include attribute_visibility_hidden. ld: error: relocation R_X86_64_PC32 cannot be used against symbol 'ff_h264_cabac_tables'; recompile with -fPIC >>> defined in /home/tom/work/git/vlc-android/vlc/contrib/x86_64-linux-android/lib/libavcodec.a(cabac.o) >>> referenced by cabac.h:187 (libavcodec/x86/cabac.h:187) >>> h264_cabac.o:(ff_h264_decode_mb_cabac) in archive /home/tom/work/git/vlc-android/vlc/contrib/x86_64-linux-android/lib/libavcodec.a --- libavcodec/ac3dsp.h | 3 +- libavcodec/cabac.h | 3 +- libavcodec/h263dsp.h | 3 +- libavcodec/x86/constants.h | 81 +++++++++++++++++++------------------- libavutil/mem.h | 6 +-- libswscale/x86/rgb2rgb.c | 2 +- 6 files changed, 51 insertions(+), 47 deletions(-) diff --git a/libavcodec/ac3dsp.h b/libavcodec/ac3dsp.h index a23b11526e..f8c03a7c23 100644 --- a/libavcodec/ac3dsp.h +++ b/libavcodec/ac3dsp.h @@ -23,12 +23,13 @@ #define AVCODEC_AC3DSP_H #include <stdint.h> +#include "libavutil/internal.h" /** * Number of mantissa bits written for each bap value. * bap values with fractional bits are set to 0 and are calculated separately. */ -extern const uint16_t ff_ac3_bap_bits[16]; +extern const uint16_t attribute_visibility_hidden ff_ac3_bap_bits[16]; typedef struct AC3DSPContext { /** diff --git a/libavcodec/cabac.h b/libavcodec/cabac.h index 38d06b2842..356aa368d0 100644 --- a/libavcodec/cabac.h +++ b/libavcodec/cabac.h @@ -28,8 +28,9 @@ #define AVCODEC_CABAC_H #include <stdint.h> +#include "libavutil/internal.h" -extern const uint8_t ff_h264_cabac_tables[512 + 4*2*64 + 4*64 + 63]; +extern const uint8_t attribute_visibility_hidden ff_h264_cabac_tables[512 + 4*2*64 + 4*64 + 63]; #define H264_NORM_SHIFT_OFFSET 0 #define H264_LPS_RANGE_OFFSET 512 #define H264_MLPS_STATE_OFFSET 1024 diff --git a/libavcodec/h263dsp.h b/libavcodec/h263dsp.h index 1abea3ca8c..514a148fb1 100644 --- a/libavcodec/h263dsp.h +++ b/libavcodec/h263dsp.h @@ -20,8 +20,9 @@ #define AVCODEC_H263DSP_H #include <stdint.h> +#include "libavutil/internal.h" -extern const uint8_t ff_h263_loop_filter_strength[32]; +extern const uint8_t attribute_visibility_hidden ff_h263_loop_filter_strength[32]; typedef struct H263DSPContext { void (*h263_h_loop_filter)(uint8_t *src, int stride, int qscale); diff --git a/libavcodec/x86/constants.h b/libavcodec/x86/constants.h index 85da38b7b9..c84b0d4324 100644 --- a/libavcodec/x86/constants.h +++ b/libavcodec/x86/constants.h @@ -22,51 +22,52 @@ #define AVCODEC_X86_CONSTANTS_H #include <stdint.h> +#include "libavutil/internal.h" #include "libavutil/x86/asm.h" -extern const ymm_reg ff_pw_1; -extern const ymm_reg ff_pw_2; -extern const xmm_reg ff_pw_3; -extern const ymm_reg ff_pw_4; -extern const xmm_reg ff_pw_5; -extern const xmm_reg ff_pw_8; -extern const xmm_reg ff_pw_9; -extern const uint64_t ff_pw_15; -extern const xmm_reg ff_pw_16; -extern const xmm_reg ff_pw_18; -extern const xmm_reg ff_pw_20; -extern const xmm_reg ff_pw_32; -extern const uint64_t ff_pw_42; -extern const uint64_t ff_pw_53; -extern const xmm_reg ff_pw_64; -extern const uint64_t ff_pw_96; -extern const uint64_t ff_pw_128; -extern const ymm_reg ff_pw_255; -extern const ymm_reg ff_pw_256; -extern const ymm_reg ff_pw_512; -extern const ymm_reg ff_pw_1023; -extern const ymm_reg ff_pw_1024; -extern const ymm_reg ff_pw_2048; -extern const ymm_reg ff_pw_4095; -extern const ymm_reg ff_pw_4096; -extern const ymm_reg ff_pw_8192; -extern const ymm_reg ff_pw_m1; +extern const ymm_reg attribute_visibility_hidden ff_pw_1; +extern const ymm_reg attribute_visibility_hidden ff_pw_2; +extern const xmm_reg attribute_visibility_hidden ff_pw_3; +extern const ymm_reg attribute_visibility_hidden ff_pw_4; +extern const xmm_reg attribute_visibility_hidden ff_pw_5; +extern const xmm_reg attribute_visibility_hidden ff_pw_8; +extern const xmm_reg attribute_visibility_hidden ff_pw_9; +extern const uint64_t attribute_visibility_hidden ff_pw_15; +extern const xmm_reg attribute_visibility_hidden ff_pw_16; +extern const xmm_reg attribute_visibility_hidden ff_pw_18; +extern const xmm_reg attribute_visibility_hidden ff_pw_20; +extern const xmm_reg attribute_visibility_hidden ff_pw_32; +extern const uint64_t attribute_visibility_hidden ff_pw_42; +extern const uint64_t attribute_visibility_hidden ff_pw_53; +extern const xmm_reg attribute_visibility_hidden ff_pw_64; +extern const uint64_t attribute_visibility_hidden ff_pw_96; +extern const uint64_t attribute_visibility_hidden ff_pw_128; +extern const ymm_reg attribute_visibility_hidden ff_pw_255; +extern const ymm_reg attribute_visibility_hidden ff_pw_256; +extern const ymm_reg attribute_visibility_hidden ff_pw_512; +extern const ymm_reg attribute_visibility_hidden ff_pw_1023; +extern const ymm_reg attribute_visibility_hidden ff_pw_1024; +extern const ymm_reg attribute_visibility_hidden ff_pw_2048; +extern const ymm_reg attribute_visibility_hidden ff_pw_4095; +extern const ymm_reg attribute_visibility_hidden ff_pw_4096; +extern const ymm_reg attribute_visibility_hidden ff_pw_8192; +extern const ymm_reg attribute_visibility_hidden ff_pw_m1; -extern const ymm_reg ff_pb_0; -extern const ymm_reg ff_pb_1; -extern const ymm_reg ff_pb_2; -extern const ymm_reg ff_pb_3; -extern const ymm_reg ff_pb_80; -extern const ymm_reg ff_pb_FE; -extern const uint64_t ff_pb_FC; +extern const ymm_reg attribute_visibility_hidden ff_pb_0; +extern const ymm_reg attribute_visibility_hidden ff_pb_1; +extern const ymm_reg attribute_visibility_hidden ff_pb_2; +extern const ymm_reg attribute_visibility_hidden ff_pb_3; +extern const ymm_reg attribute_visibility_hidden ff_pb_80; +extern const ymm_reg attribute_visibility_hidden ff_pb_FE; +extern const uint64_t attribute_visibility_hidden ff_pb_FC; -extern const xmm_reg ff_ps_neg; +extern const xmm_reg attribute_visibility_hidden ff_ps_neg; -extern const ymm_reg ff_pd_1; -extern const ymm_reg ff_pd_16; -extern const ymm_reg ff_pd_32; -extern const ymm_reg ff_pd_8192; -extern const ymm_reg ff_pd_65535; +extern const ymm_reg attribute_visibility_hidden ff_pd_1; +extern const ymm_reg attribute_visibility_hidden ff_pd_16; +extern const ymm_reg attribute_visibility_hidden ff_pd_32; +extern const ymm_reg attribute_visibility_hidden ff_pd_8192; +extern const ymm_reg attribute_visibility_hidden ff_pd_65535; #endif /* AVCODEC_X86_CONSTANTS_H */ diff --git a/libavutil/mem.h b/libavutil/mem.h index d91174196c..88fea4bfe7 100644 --- a/libavutil/mem.h +++ b/libavutil/mem.h @@ -113,9 +113,9 @@ #define DECLARE_ASM_ALIGNED(n,t,v) t av_used __attribute__ ((aligned (FFMIN(n, 16)))) v #define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (FFMIN(n, 16)))) v #elif defined(__GNUC__) || defined(__clang__) - #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v - #define DECLARE_ASM_ALIGNED(n,t,v) t av_used __attribute__ ((aligned (n))) v - #define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (n))) v + #define DECLARE_ALIGNED(n,t,v) attribute_visibility_hidden t __attribute__ ((aligned (n))) v + #define DECLARE_ASM_ALIGNED(n,t,v) attribute_visibility_hidden t av_used __attribute__ ((aligned (n))) v + #define DECLARE_ASM_CONST(n,t,v) attribute_visibility_hidden static const t av_used __attribute__ ((aligned (n))) v #elif defined(_MSC_VER) #define DECLARE_ALIGNED(n,t,v) __declspec(align(n)) t v #define DECLARE_ASM_ALIGNED(n,t,v) __declspec(align(n)) t v diff --git a/libswscale/x86/rgb2rgb.c b/libswscale/x86/rgb2rgb.c index b325e5dbd5..100f608d04 100644 --- a/libswscale/x86/rgb2rgb.c +++ b/libswscale/x86/rgb2rgb.c @@ -70,7 +70,7 @@ DECLARE_ASM_CONST(8, uint64_t, mul15_hi) = 0x0210021002100210ULL; DECLARE_ASM_CONST(8, uint64_t, mul16_mid) = 0x2080208020802080ULL; DECLARE_ALIGNED(8, extern const uint64_t, ff_bgr2YOffset); -DECLARE_ALIGNED(8, extern const uint64_t, ff_w1111); +attribute_visibility_hidden DECLARE_ALIGNED(8, extern const uint64_t, ff_w1111); DECLARE_ALIGNED(8, extern const uint64_t, ff_bgr2UVOffset); #define BY ((int)( 0.098*(1<<RGB2YUV_SHIFT)+0.5)) -- 2.35.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next reply other threads:[~2022-07-27 12:01 UTC|newest] Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-07-27 12:00 Thomas Guillem [this message] 2022-08-04 11:20 ` Martin Storsjö 2022-08-04 12:51 ` Andreas Rheinhardt
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220727120000.3596575-1-thomas@gllm.fr \ --to=thomas@gllm.fr \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git