Vanfanel
Posts: 531
Joined: Sat Aug 18, 2012 5:58 pm

gcc and armhf binaries

Tue Dec 11, 2012 2:44 pm

Hi there,

Sorry for the newbie question but, would g++ produce arm-hardfloat binaries automatically in latest debian wheezy if I don't specify any compiler options? (no "-march=armv6 -mfpu=vfp -mfloat-abi=hard" or anything).

g++ -v seems to suggest it's configured with these options:

Code: Select all

pi@raspberrypi ~/nx $ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.6/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Debian 4.6.3-12+rpi1' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
gcc version 4.6.3 (Debian 4.6.3-12+rpi1) 
...but I don't know if these are the options the compiler was compiled with, or the options that will be used when compiling new binaries without need of specifying them, or both.

Running "readelf -A" on a binary I compiled on raspbian wheezy with g++ without any of these options gives this result:

Code: Select all

pi@raspberrypi ~/nx $ readelf -A nx
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "6"
  Tag_CPU_arch: v6
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-1
  Tag_FP_arch: VFPv2
  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_ABI_HardFP_use: SP and DP
  Tag_ABI_VFP_args: VFP registers
  Tag_DIV_use: Not allowed
...wich seems to suggest this binary is a hardfloar one and it's using the FPU on the SOC.
Am I right on this?

plugwash
Forum Moderator
Forum Moderator
Posts: 3845
Joined: Wed Dec 28, 2011 11:45 pm

Re: gcc and armhf binaries

Wed Dec 12, 2012 3:20 am

Yes gcc and g++ on raspbian will by default produce binaries that are correct for raspbian.

Vanfanel
Posts: 531
Joined: Sat Aug 18, 2012 5:58 pm

Re: gcc and armhf binaries

Wed Dec 12, 2012 4:54 pm

Thanks, plugwash :)

Return to “C/C++”