_fix_armhf
authorDebian BOINC Maintainers <pkg-boinc-devel@lists.alioth.debian.org>
Tue, 30 Sep 2014 12:49:40 +0000 (12:49 +0000)
committerGianfranco Costamagna <costamagnagianfranco@yahoo.it>
Tue, 30 Sep 2014 12:49:40 +0000 (12:49 +0000)
Basically, the original assembly code for analyzeFuncs_neon.S and analyzeFuncs_vfp.S is writen for soft-float call convention. Since ARM has changed the way the function call with vfp, you will get a compilation error like the following if you don't modify the code.

/usr/bin/ld: error: seti_boinc uses VFP register arguments, analyzeFuncs_neon.o does not
/usr/bin/ld: failed to merge target specific data of file analyzeFuncs_neon.o
/usr/bin/ld: error: seti_boinc uses VFP register arguments, analyzeFuncs_vfp.o does not
/usr/bin/ld: failed to merge target specific data of file analyzeFuncs_vfp.o
collect2: error: ld returned 1 exit status
make[2]: *** [seti_boinc] Error 1

May be I should talk to Eric about making the changes in the main tree with #ifdef _armhf_ or somthing like that. meanwhile if you come across the compilation error above, you have the solution.

Gbp-Pq: Name 214_fix_armhf.patch

client/vector/analyzeFuncs_neon.S
client/vector/analyzeFuncs_vfp.S

index b57f639298708ac939ecaaf0d798e42fef42f3d2..4ea422bcfc71061565db8623e716cc97cbae4a60 100644 (file)
  * Author: Mateusz Szpakowski
  */
  
+#if defined(__VFP_FP__) && !defined(__SOFTFP__)
+                .syntax unified
+#endif
                 .arch armv7-a
                 .fpu neon
+#if defined(__VFP_FP__) && !defined(__SOFTFP__)
+                .eabi_attribute 27, 3
+                .eabi_attribute 28, 1
+#endif
+
                 .eabi_attribute 20, 1
                 .eabi_attribute 21, 1
                 .eabi_attribute 23, 3
index 739322bbf9321dfbe124db8b9f153aa40527d6a5..fee885c55343695e9275241451f63e0d8a0233dd 100644 (file)
  * Author: Mateusz Szpakowski
  */
  
+#if defined(__VFP_FP__) && !defined(__SOFTFP__)
+                .syntax unified
+#endif
                 .arch armv6
                 .fpu vfp
+#if defined(__VFP_FP__) && !defined(__SOFTFP__)
+                .eabi_attribute 27, 3
+                .eabi_attribute 28, 1
+#endif
+
                 .eabi_attribute 20, 1
                 .eabi_attribute 21, 1
                 .eabi_attribute 23, 3