I was about to finalize a compilation how-to for FFMPEG last evening and by "testing before publishing" my instructions I've noticed that the compiler on both Slack 14.2 SF and Slack ARM current HF are producing inconsistent results. I've performed my last update on both systems around 13-18 Aug 2017 and noticed that glibc was updated.
Here are the findings:
On a pi2B (armv7) running SlackARM-current-HF by trying to produce armv6 SF code:
uname -a
Linux Goofy 4.4.50-v7+ #970 SMP Mon Feb 20 19:18:29 GMT 2017 armv7l BCM2709 GNU/Linux
x264# ./configure --enable-shared --disable-win32thread --enable-strip --extra-cflags='-march=armv6zk -mtune=arm1176jzf-s -mfloat-abi=soft'
No working C compiler found.
On a pi0 (armv6) running SlackARM-14.2-SF trying to produce armv6 SF code:
uname -a
Linux JunkPi 4.4.50+ #970 Mon Feb 20 19:12:50 GMT 2017 armv6l BCM2708 GNU/Linux
x264# ./configure --enable-shared --disable-win32thread --enable-strip --extra-cflags='-march=armv6zk -mtune=arm1176jzf-s -mfloat-abi=soft'
The result:
readelf -A libx264.so.152
Attribute Section: aeabi
File Attributes
Tag_CPU_name: "7-A"
Tag_CPU_arch: v7
Tag_CPU_arch_profile: Application
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-2
Tag_FP_arch: VFPv3
Tag_Advanced_SIMD_arch: NEONv1
Tag_ABI_PCS_wchar_t: 4
Tag_ABI_FP_denormal: Needed
Tag_ABI_FP_exceptions: Needed
Tag_ABI_FP_number_model: IEEE 754
Tag_ABI_align_needed: 8-byte
Tag_ABI_enum_size: int
Tag_CPU_unaligned_access: v6
Tag_Virtualization_use: TrustZone
Compared with the result compiled before the update with the same ./configure switches:
ls -al /usr/local/lib/libx264.so
lrwxrwxrwx 1 root root 14 Aug 14 11:55 /usr/local/lib/libx264.so -> libx264.so.152
readelf -A /usr/local/lib/libx264.so
Attribute Section: aeabi
File Attributes
Tag_CPU_name: "6ZK"
Tag_CPU_arch: v6KZ
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_ABI_PCS_wchar_t: 4
Tag_ABI_FP_denormal: Needed
Tag_ABI_FP_exceptions: Needed
Tag_ABI_FP_number_model: IEEE 754
Tag_ABI_align_needed: 8-byte
Tag_ABI_align_preserved: 8-byte, except leaf SP
Tag_ABI_enum_size: int
Tag_CPU_unaligned_access: v6
Tag_Virtualization_use: TrustZone
I've also noticed that on the pi0 - SlackARM 14.2 SF when compiling without any CFLAGS options I get armv8 code with NEON FP code:
....
gcc -Wno-maybe-uninitialized -Wshadow -O3 -ffast-math -Wall -I. -I. -std=gnu99 -D_GNU_SOURCE -mcpu=cortex-a8 -mfpu=neon
....
readelf -A libx264.so.152
Attribute Section: aeabi
File Attributes
Tag_CPU_name: "Cortex-A8"
Tag_CPU_arch: v7
Tag_CPU_arch_profile: Application
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-2
Tag_FP_arch: VFPv3
Tag_Advanced_SIMD_arch: NEONv1
Tag_ABI_PCS_wchar_t: 4
Tag_ABI_FP_denormal: Needed
Tag_ABI_FP_exceptions: Needed
Tag_ABI_FP_number_model: IEEE 754
Tag_ABI_align_needed: 8-byte
Tag_ABI_enum_size: int
Tag_CPU_unaligned_access: v6
Tag_Virtualization_use: TrustZone
I wish my pi0 had such a CPU, not to mention how happy I would have been to get NEON implementation in the FPU
Please check what's going on.
I edited the post to add my latest observations:
- I've done (actually it's an automated script that runs in the morning) the packages update on 13 Aug 2017 (when glibc was updated) and on 18 Aug 2017 and on 14&15 August I was still compiling without any issues. Only after 18 August and after rebooting both systems I started to observe the issues.