Slackware - ARM This forum is for the discussion of Slackware ARM. |
Notices |
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
|
 |
|
10-28-2017, 11:44 AM
|
#1
|
Senior Member
Registered: Dec 2003
Location: Paris
Distribution: Slackware forever.
Posts: 2,534
Rep: 
|
Alien's libreoffice SlackBuild vpush {d0-d7} asm error
Hi,
Code:
[build CXX] codemaker/source/commonjava/commonjava.cxx
[build JCS] Jar/unoloader
[build C ] bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c
armhelper.s: Assembler messages:
armhelper.s:54: Error: selected processor does not support `vpush {d0-d7}' in ARM mode
make[1]: *** [/tmp/build/tmp-libreoffice/libreoffice-5.4.2.2/bridges/CustomTarget_gcc3_linux_arm.mk:18: /tmp/build/tmp-libreoffice/libreoffice-5.4.2.2/workdir/CustomTarget/bridges/source/cpp_uno/gcc3_linux_arm/armhelper.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:269: build] Error 2
I tried various CFLAGS without success.
|
|
|
10-29-2017, 03:03 AM
|
#2
|
Slackware Contributor
Registered: Apr 2008
Distribution: Slackware
Posts: 1,675
|
Quote:
Originally Posted by Linux.tar.gz
Hi,
Code:
[build CXX] codemaker/source/commonjava/commonjava.cxx
[build JCS] Jar/unoloader
[build C ] bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c
armhelper.s: Assembler messages:
armhelper.s:54: Error: selected processor does not support `vpush {d0-d7}' in ARM mode
make[1]: *** [/tmp/build/tmp-libreoffice/libreoffice-5.4.2.2/bridges/CustomTarget_gcc3_linux_arm.mk:18: /tmp/build/tmp-libreoffice/libreoffice-5.4.2.2/workdir/CustomTarget/bridges/source/cpp_uno/gcc3_linux_arm/armhelper.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:269: build] Error 2
I tried various CFLAGS without success.
|
1. What version of Slackware are you building it on?
2. What are the CFLAGS?
|
|
|
10-29-2017, 05:06 AM
|
#3
|
Senior Member
Registered: Dec 2003
Location: Paris
Distribution: Slackware forever.
Posts: 2,534
Original Poster
Rep: 
|
It's on -current.
I ended using only -O2, nothing works.
|
|
|
10-29-2017, 02:10 PM
|
#4
|
Slackware Contributor
Registered: Apr 2008
Distribution: Slackware
Posts: 1,675
|
Quote:
Originally Posted by Linux.tar.gz
It's on -current.
I ended using only -O2, nothing works.
|
The build script for libreoffice uses the "gnueabi" quadlet, but it should be "gnueabihf". Change that and see if it works.
If not, it might be that within part of the source, it's hard coding "-march" or "-mcpu" -- I've seen that before and had to rip them out.
After the configuration phase is done, abort and see what's there:
Code:
egrep -r -- '-m(float-abi|arch|cpu)=' .
|
|
|
10-29-2017, 03:13 PM
|
#5
|
Senior Member
Registered: Dec 2003
Location: Paris
Distribution: Slackware forever.
Posts: 2,534
Original Poster
Rep: 
|
Here's the grep :
Quote:
root@arm:/tmp/build/tmp-libreoffice# egrep -r -- '-m(float-abi|arch|cpu)=' .
./libreoffice-5.4.2.2/external/openssl/openssllnx.patch: "bsdi-elf-gcc", "gcc:-DPERL5 -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall: unknown)::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
./libreoffice-5.4.2.2/external/openssl/openssllnx.patch:+"debian-kfreebsd-i386","gcc:-DL_ENDIAN -DTERMIOS -O3 -Wa,--noexecstack -g -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
./libreoffice-5.4.2.2/workdir/UnpackedTarball/png/scripts/makefile.msys:#ARCH = -march=pentium3
./libreoffice-5.4.2.2/workdir/UnpackedTarball/png/scripts/makefile.msys:#ARCH = -march=i686
./libreoffice-5.4.2.2/bridges/source/cpp_uno/gcc3_linux_arm/uno2cpp.cxx: * -mfloat-abi=softfp should work. -mfloat-abi=hard won't; that would
./libreoffice-5.4.2.2/configure.ac: ANDROIDCFLAGS="$ANDROIDCFLAGS -march=armv7-a -mfloat-abi=softfp -mfpu=neon"
./libreoffice-5.4.2.2/configure.ac: ANDROIDCFLAGS="-march=atom"
./libreoffice-5.4.2.2/configure: ANDROIDCFLAGS="$ANDROIDCFLAGS -march=armv7-a -mfloat-abi=softfp -mfpu=neon"
./libreoffice-5.4.2.2/configure: ANDROIDCFLAGS="-march=atom"
./libreoffice-5.4.2.2/ChangeLog: since the -march=i486 is not supported on PPC, all further compile
./libreoffice-5.4.2.2/ChangeLog: Configury fixes for MSVC, avoid accidentally using -march=i486
./libreoffice-5.4.2.2/ChangeLog: #i105302# allow build with -mfloat-abi=softfp -mfpu=vfp
./libreoffice-5.4.2.2/config.log:Configured with: ../gcc-7.2.0/configure --with-march=armv7-a --with-float=hard --disable-werror --prefix=/usr --mandir=/usr/man --infodir=/usr/info --libdir=/usr/lib --enable-bootstrap --enable-checking=release --with-system-zlib --disable-libunwind-exceptions --enable-libstdcxx-dual-abi --with-default-libstdcxx-abi=gcc4-compatible --enable-shared --enable-languages=c,c++,ada,fortran,go,lto,objc --enable-objc-gc --enable-threads=posix --enable-__cxa_atexit --enable-libssp --enable-lto --with-gnu-ld --verbose --with-arch-directory= --disable-gtktest --disable-install-libiberty --host=arm-slackware-linux-gnueabihf --build=arm-slackware-linux-gnueabihf --target=arm-slackware-linux-gnueabihf
./libreoffice-5.4.2.2/config.log:Configured with: ../gcc-7.2.0/configure --with-march=armv7-a --with-float=hard --disable-werror --prefix=/usr --mandir=/usr/man --infodir=/usr/info --libdir=/usr/lib --enable-bootstrap --enable-checking=release --with-system-zlib --disable-libunwind-exceptions --enable-libstdcxx-dual-abi --with-default-libstdcxx-abi=gcc4-compatible --enable-shared --enable-languages=c,c++,ada,fortran,go,lto,objc --enable-objc-gc --enable-threads=posix --enable-__cxa_atexit --enable-libssp --enable-lto --with-gnu-ld --verbose --with-arch-directory= --disable-gtktest --disable-install-libiberty --host=arm-slackware-linux-gnueabihf --build=arm-slackware-linux-gnueabihf --target=arm-slackware-linux-gnueabihf
./libreoffice-5.4.2.2/autom4te.cache/output.0: ANDROIDCFLAGS="$ANDROIDCFLAGS -march=armv7-a -mfloat-abi=softfp -mfpu=neon"
./libreoffice-5.4.2.2/autom4te.cache/output.0: ANDROIDCFLAGS="-march=atom"
./libreoffice-5.4.2.2/autom4te.cache/output.1: ANDROIDCFLAGS="$ANDROIDCFLAGS -march=armv7-a -mfloat-abi=softfp -mfpu=neon"
./libreoffice-5.4.2.2/autom4te.cache/output.1: ANDROIDCFLAGS="-march=atom"
|
|
|
|
10-30-2017, 04:25 PM
|
#6
|
Senior Member
Registered: Dec 2003
Location: Paris
Distribution: Slackware forever.
Posts: 2,534
Original Poster
Rep: 
|
Very strange. I checked Gentoo patches, nothing helpful there.
Slackware is still the only ARM distribution without LibreOffice...
|
|
|
10-30-2017, 05:13 PM
|
#7
|
Senior Member
Registered: Jul 2017
Location: EU
Distribution: Slackware
Posts: 1,634
|
@Linux.tar.gz
I haven't tried it myself but I presume that AlienBoB's LibreOffice SlackBuild script will work under Slack ARM 14.2. What you're trying to achieve is to use that script under Slack ARM - current, which is still in development and a different beast when it comes to ARM architecture.
By looking forward to get an ARM-powered basic desktop system in the near future I might share your interest in getting this resolved under Slack ARM current.
The error you stumbled upon looks like an ARM architecture (SF/HF included) mismatch, between what the configure script has guessed, the CFLAGS and compiler target "ARCH-slackware-linux-gnueabi" that are provided in the build script.
From your last post:
Quote:
./libreoffice-5.4.2.2/config.log:Configured with: ../gcc-7.2.0/configure --with-march=armv7-a --with-float=hard
|
I guess you're using this build script:
http://www.slackware.com/~alien/slac...ice.SlackBuild
Relevant lines from the SlackBuild script:
Code:
armv7hl) SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16 -std=c++98"
SLKLDFLAGS=""; LIBDIRSUFFIX=""
and
Code:
case "$ARCH" in
arm*) TARGET=$ARCH-slackware-linux-gnueabi ;;
*) TARGET=$ARCH-slackware-linux ;;
esac
You haven't specified the ARM architecture you are compiling on and I guess it's an armv7 which is HF and has the NEON SIMD instructions, therefore you should first change the line (not sure if -std=c++98 is really needed):
SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16 -std=c++98"
to
SLKCFLAGS="-O3 -march=armv7-a -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -std=c++98"
And then, as @drmozes suggested, change the Target:
arm*) TARGET=$ARCH-slackware-linux-gnueabi ;;
to
arm*) TARGET=$ARCH-slackware-linux-gnueabihf ;;
Give it a try please and see if it works. I'm kinda busy these days and have no time to setup an environment (Raspbery Pi2 + external HDD) and start a compilation on my own, but I'll deffo do it during the weekend.
P.S. This looks to be were your compilation breaks - a patch for ARM HardFloat:
https://bitbucket.org/markjenkins/li...rm/armhelper.S
Last edited by abga; 10-30-2017 at 06:41 PM.
Reason: typo & adding the missed -std=c++98 flag & rephrasing - beginning/ending
|
|
|
10-31-2017, 02:39 AM
|
#8
|
Senior Member
Registered: Dec 2003
Location: Paris
Distribution: Slackware forever.
Posts: 2,534
Original Poster
Rep: 
|
I try to build LO every once in a while since 2012, and I also tried on soft float recently, but the error may not have been the same.
Anyway, I did change the flags without success.
I'll take a look at your patch, thanks.
|
|
|
10-31-2017, 07:17 AM
|
#9
|
Slackware Contributor
Registered: Apr 2008
Distribution: Slackware
Posts: 1,675
|
Quote:
Originally Posted by abga
@Linux.tar.gz
Code:
armv7hl) SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16 -std=c++98"
SLKLDFLAGS=""; LIBDIRSUFFIX=""
|
This should actually be "arm)" - the architecture name "armv7hl" was for Eric's own ARM port. Doing this will set the CFLAGS correctly.
All Slackware ARM always uses the architecture of "arm" regardless of software or hardware floating point ABI. 3rd party scripts need to check an existing binary and determine how the OS is built:
I've put this code here -- this is how 3rd parties should differentiate between 14.2 (and prior) and -current going forwards.
http://armed.slackware.com/scripts/cflagsarm
Code:
# Automatically determine the architecture we're building on:
MARCH=$( uname -m )
if [ -z "$ARCH" ]; then
case "$MARCH" in
i?86) export ARCH=i586 ;;
arm*) export ARCH=arm
export LIBDIRSUFFIX=""
export SLK_ARCH_BUILDTARGET="$ARCH-slackware-linux"
gcc -v 2>&1| egrep -q ".*slack.*gnueabihf" && ARMARCH=hard || ARMARCH=soft
[ $ARMARCH == soft ] && {
export SLKCFLAGS="-O2 -march=armv5te"
export SLK_ARCH_BUILDTARGET="${SLK_ARCH_BUILDTARGET}-gnueabi" ;}
[ $ARMARCH == hard ] && {
export SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard"
export SLK_ARCH_BUILDTARGET="${SLK_ARCH_BUILDTARGET}-gnueabihf" ;} ;;
aarch64) export ARCH=aarch64
export LIBDIRSUFFIX="64"
export SLKCFLAGS="-O2"
export SLK_ARCH_BUILDTARGET="$MARCH-slackware-linux" ;;
# Unless $ARCH is already set, use uname -m for all other archs:
*) export ARCH=$MARCH ;;
esac
fi
cat << EOF
ARCH: $ARCH
SLKCFLAGS: $SLKCFLAGS
SLK_ARCH_BUILDTARGET: $SLK_ARCH_BUILDTARGET (used for ./configure --build=$SLK_ARCH_BUILDTARGET)
LIBDIRSUFFIX: $LIBDIRSUFFIX
EOF
Last edited by drmozes; 11-01-2017 at 02:56 AM.
|
|
|
10-31-2017, 01:52 PM
|
#10
|
Senior Member
Registered: Dec 2003
Location: Paris
Distribution: Slackware forever.
Posts: 2,534
Original Poster
Rep: 
|
Too bad you're not sub-checking 32 bit neon-friendly CPUs for -mfpu=neon.
It would ease the recompile and greatly improve the performance on many applications.
|
|
|
10-31-2017, 02:52 PM
|
#11
|
Slackware Contributor
Registered: Apr 2008
Distribution: Slackware
Posts: 1,675
|
Quote:
Originally Posted by Linux.tar.gz
Too bad you're not sub-checking 32 bit neon-friendly CPUs for -mfpu=neon.
It would ease the recompile and greatly improve the performance on many applications.
|
I'm not sure what this means, but VFPv3-D16 is the lowest common baseline which is supported by the Tegra20.
|
|
|
10-31-2017, 03:24 PM
|
#12
|
Senior Member
Registered: Dec 2003
Location: Paris
Distribution: Slackware forever.
Posts: 2,534
Original Poster
Rep: 
|
Indeed, not all armv7 have a neon pipeline.
I meant that i usually use sed to enable neon in SLKCFLAGS= , but it would be convenient to get a neon auto-detection for SB and/or at least SBo files.
|
|
|
10-31-2017, 06:08 PM
|
#13
|
Senior Member
Registered: Jul 2017
Location: EU
Distribution: Slackware
Posts: 1,634
|
@Linux.tar.gz
- it's not "my patch" I just googled after armhelper.S, learned that it's an Ubuntu/Debian patch and inserted the link for reference 
- the vpush instruction that broke your compilation (the compiler/build scripts considered (I guess) that your CPU is not able to use it - e.g. doesn't have VFP) seems to be VFP specific and only shared with NEON:
http://infocenter.arm.com/help/topic.../Bcfchhif.html
http://infocenter.arm.com/help/topic.../CHDIIHGF.html
- my first attempt would be to uncomment (wondering what was the reason to comment it in the first place?) the conditional checking from armhelper.S and try the compilation again:
Code:
#ifdef __ARM_PCS_VFP
vpush {d0-d7} @ floating point parameter on stack
#endif
- if it still doesn't work and since you have already the whole LO source tree, either edit the configure script or just run:
Code:
./configure --help | more
and look for a directive to disable any use of ASM code. While not optimal, the resulted build will be slower without the optimizations, at least you can narrow down the cause of the issue. There could be some other scripts, not Slackware related, in the LO source that are not properly recognizing your CPU and I still don't know what platform you are trying to compile it on, I just hope you're not cross-compiling.
- I'm wondering what the configure directive --with-system-neon is for, enabling the NEON SIMD code?:
http://www.slackware.com/~alien/slac...ice.SlackBuild
- you're right, while NEON was introduced with Cortex-A7, it seems not all Cortex-A7 come with these NEON SIMD extension enabled/implemented, I forgot that and considered that it's the same as with Cortex-A8, which has it by default. You should check your CPU if it's NEON-able.
https://en.wikipedia.org/wiki/ARM_ar...IMD_.28NEON.29
- furthermore, the source code needs to make explicit use of the NEON instructions, a compiler directive won't really help if there's no such code in the source. And, it looks like the compiler (gcc) needs the third stage of optimization (-O3) to produce usable VFP code:
https://community.arm.com/tools/b/bl...-command-lines
I'll team up with you in the weekend, until then I wish you good luck with your attempts. 
Last edited by abga; 10-31-2017 at 06:09 PM.
|
|
|
11-01-2017, 04:14 PM
|
#14
|
Senior Member
Registered: Dec 2003
Location: Paris
Distribution: Slackware forever.
Posts: 2,534
Original Poster
Rep: 
|
Thanks.
I commented the failing asm code, it's actually compiling using only -O2 as flags.
I'll report back.
|
|
|
11-01-2017, 06:04 PM
|
#15
|
Senior Member
Registered: Dec 2003
Location: Paris
Distribution: Slackware forever.
Posts: 2,534
Original Poster
Rep: 
|
Fail :
Code:
Failed to install: No such file or directory at /tmp/build/tmp-libreoffice/libreoffice-5.4.2.2/solenv/bin/ooinstall line 92.
make: *** [Makefile:314: install] Error 2
Installing XML files because 'make distro-pack-install' fails to do so...
install: target '/tmp/build/package-libreoffice/usr/share/appdata/' is not a directory: No such file or directory
libreoffice.SlackBuild FAILED at line 1274
/tmp/install-libreoffice.log :
Code:
ERROR: Failure in installer.pm
ERROR: ERROR: Script setup_osl.ins not found! at /tmp/build/tmp-libreoffice/libreoffice-5.4.2.2/solenv/bin/modules/installer/setupscript.pm line 76.
...
: ERROR: Source for setup_osl.ins not found!
...
Wed Nov 1 23:44:12 2017 (00:00 min.)
Failed to install: No such file or directory at /tmp/build/tmp-libreoffice/libreoffice-5.4.2.2/solenv/bin/ooinstall line 92.
Code:
root@arm:/tmp# find . -name "setup_osl.ins"
root@arm:/tmp#
On a positive note, soffice is there :
Code:
root@arm:/tmp# find . -name "soffice"
./build/tmp-libreoffice/libreoffice-5.4.2.2/workdir/CustomTarget/desktop/soffice
./build/tmp-libreoffice/libreoffice-5.4.2.2/instdir/program/soffice
Last edited by Linux.tar.gz; 11-01-2017 at 06:26 PM.
|
|
|
All times are GMT -5. The time now is 01:46 AM.
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|