* [Buildroot] [PATCH] gst-ffmpeg: work-around bogus configure logic on SPARC
@ 2017-03-22 23:04 Thomas Petazzoni
2017-04-04 9:46 ` Thomas Petazzoni
2017-04-04 21:47 ` Peter Korsgaard
0 siblings, 2 replies; 3+ messages in thread
From: Thomas Petazzoni @ 2017-03-22 23:04 UTC (permalink / raw)
To: buildroot
The libav version built into the gst-ffmpeg code produces a bogus
binary on SPARC, which causes the following error of the
check-bin-arch script:
ERROR: architecture for ./usr/lib/gstreamer-0.10/libgstffmpeg.so is Sparc v8+, should be Sparc
ERROR: architecture for ./usr/lib/gstreamer-0.10/libgstpostproc.so is Sparc v8+, should be Sparc
ERROR: architecture for ./usr/lib/gstreamer-0.10/libgstffmpegscale.so is Sparc v8+, should be Sparc
The problem is the following bit of code in
gst-lib/ext/libav/configure:
elif enabled sparc; then
enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc &&
add_cflags -mcpu=ultrasparc -mtune=ultrasparc
I.e, it checks if the architecture supports the pdist
instruction... but forces -mcpu to ultrasparc while doing so. So it's
like "let's see if this Ultrasparc instruction exists when I force the
compiler to think I'm using Ultrasparc", which is non-sensical. This
has been fixed later on in libav upstream:
https://git.libav.org/?p=libav.git;a=commit;h=6aa93689abe8c095cec9fa828c2dee3131008995
However, this commit cannot be backported as-is since the shell
function check_inline_asm did not exist in the old libav version
bundled in gst-ffmpeg.
Therefore, we take the simpler route of disabling the VIS
optimizations on SPARCv8 and Leon3.
Fixes:
http://autobuild.buildroot.net/results/e82d179c3d4f92ad7423693a4b1d42379a3f5411/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk b/package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk
index b1d8f8b..3992fdf 100644
--- a/package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk
+++ b/package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk
@@ -80,6 +80,12 @@ else
GST_FFMPEG_CONF_EXTRA_OPTS += --disable-altivec
endif
+# libav configure script misdetects the VIS optimizations as being
+# available, so forcefully disable them.
+ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y)
+GST_FFMPEG_CONF_EXTRA_OPTS += --disable-vis
+endif
+
ifeq ($(BR2_STATIC_LIBS),)
GST_FFMPEG_CONF_EXTRA_OPTS += --enable-pic
endif
--
2.7.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Buildroot] [PATCH] gst-ffmpeg: work-around bogus configure logic on SPARC
2017-03-22 23:04 [Buildroot] [PATCH] gst-ffmpeg: work-around bogus configure logic on SPARC Thomas Petazzoni
@ 2017-04-04 9:46 ` Thomas Petazzoni
2017-04-04 21:47 ` Peter Korsgaard
1 sibling, 0 replies; 3+ messages in thread
From: Thomas Petazzoni @ 2017-04-04 9:46 UTC (permalink / raw)
To: buildroot
Hello,
On Thu, 23 Mar 2017 00:04:56 +0100, Thomas Petazzoni wrote:
> The libav version built into the gst-ffmpeg code produces a bogus
> binary on SPARC, which causes the following error of the
> check-bin-arch script:
>
> ERROR: architecture for ./usr/lib/gstreamer-0.10/libgstffmpeg.so is Sparc v8+, should be Sparc
> ERROR: architecture for ./usr/lib/gstreamer-0.10/libgstpostproc.so is Sparc v8+, should be Sparc
> ERROR: architecture for ./usr/lib/gstreamer-0.10/libgstffmpegscale.so is Sparc v8+, should be Sparc
>
> The problem is the following bit of code in
> gst-lib/ext/libav/configure:
>
> elif enabled sparc; then
>
> enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc &&
> add_cflags -mcpu=ultrasparc -mtune=ultrasparc
>
> I.e, it checks if the architecture supports the pdist
> instruction... but forces -mcpu to ultrasparc while doing so. So it's
> like "let's see if this Ultrasparc instruction exists when I force the
> compiler to think I'm using Ultrasparc", which is non-sensical. This
> has been fixed later on in libav upstream:
>
> https://git.libav.org/?p=libav.git;a=commit;h=6aa93689abe8c095cec9fa828c2dee3131008995
>
> However, this commit cannot be backported as-is since the shell
> function check_inline_asm did not exist in the old libav version
> bundled in gst-ffmpeg.
>
> Therefore, we take the simpler route of disabling the VIS
> optimizations on SPARCv8 and Leon3.
>
> Fixes:
>
> http://autobuild.buildroot.net/results/e82d179c3d4f92ad7423693a4b1d42379a3f5411/
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> ---
> package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk | 6 ++++++
> 1 file changed, 6 insertions(+)
Applied to master, thanks.
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Buildroot] [PATCH] gst-ffmpeg: work-around bogus configure logic on SPARC
2017-03-22 23:04 [Buildroot] [PATCH] gst-ffmpeg: work-around bogus configure logic on SPARC Thomas Petazzoni
2017-04-04 9:46 ` Thomas Petazzoni
@ 2017-04-04 21:47 ` Peter Korsgaard
1 sibling, 0 replies; 3+ messages in thread
From: Peter Korsgaard @ 2017-04-04 21:47 UTC (permalink / raw)
To: buildroot
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:
> The libav version built into the gst-ffmpeg code produces a bogus
> binary on SPARC, which causes the following error of the
> check-bin-arch script:
> ERROR: architecture for ./usr/lib/gstreamer-0.10/libgstffmpeg.so is Sparc v8+, should be Sparc
> ERROR: architecture for ./usr/lib/gstreamer-0.10/libgstpostproc.so is Sparc v8+, should be Sparc
> ERROR: architecture for ./usr/lib/gstreamer-0.10/libgstffmpegscale.so is Sparc v8+, should be Sparc
> The problem is the following bit of code in
> gst-lib/ext/libav/configure:
> elif enabled sparc; then
> enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc &&
> add_cflags -mcpu=ultrasparc -mtune=ultrasparc
> I.e, it checks if the architecture supports the pdist
> instruction... but forces -mcpu to ultrasparc while doing so. So it's
> like "let's see if this Ultrasparc instruction exists when I force the
> compiler to think I'm using Ultrasparc", which is non-sensical. This
> has been fixed later on in libav upstream:
> https://git.libav.org/?p=libav.git;a=commit;h=6aa93689abe8c095cec9fa828c2dee3131008995
> However, this commit cannot be backported as-is since the shell
> function check_inline_asm did not exist in the old libav version
> bundled in gst-ffmpeg.
> Therefore, we take the simpler route of disabling the VIS
> optimizations on SPARCv8 and Leon3.
> Fixes:
> http://autobuild.buildroot.net/results/e82d179c3d4f92ad7423693a4b1d42379a3f5411/
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
I take these VIS instructions cause runtime errors with the older sparc
cores?
Committed to 2017.02.x, thanks.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-04-04 21:47 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-22 23:04 [Buildroot] [PATCH] gst-ffmpeg: work-around bogus configure logic on SPARC Thomas Petazzoni
2017-04-04 9:46 ` Thomas Petazzoni
2017-04-04 21:47 ` Peter Korsgaard
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.