where do I get these lib/nof/* files?

Roman Duka rduka@mail.ru
Sun Feb 1 15:16:00 GMT 2004


David Wuertele wrote:
>>>My CPU has no floating point unit.  I looked around for nof/*, but
>>>didn't find anything.  Any suggestions?
> 
> 
> Roman> what sort of cpu is that? is that some kind of embedded system?
> 
> Yep:  ATI Xilleon (MIPS 4k).

OK mate, here is what i think of this:

roman@athlon1000:~/crosstool/mips-unknown/bin> cat ftest.c
#include <stdio.h>

int main(void) {
     float fnum1=1;
     float fnum2=2;

     printf("Result: %f\n", fnum1*fnum2);

     return 0;
}

Compile test program with "-msoft-float" flag, but do not assemble:

roman@athlon1000:~/crosstool/mips-unknown/bin> ./*gcc -msoft-float -S 
ftest.c
roman@athlon1000:~/crosstool/mips-unknown/bin> mv ftest.s ftest-soft.s

Compile test program with default hard float support, but do not assemble

roman@athlon1000:~/crosstool/mips-unknown/bin> ./*gcc -S ftest.c
roman@athlon1000:~/crosstool/mips-unknown/bin> mv ftest.s ftest-hard.s

Now check the difference between the two assembly files:

roman@athlon1000:~/crosstool/mips-unknown/bin> diff -c ftest-hard.s 
ftest-soft.s
*** ftest-hard.s        Sun Feb  1 13:21:33 2004
--- ftest-soft.s        Sun Feb  1 13:21:17 2004
***************
*** 2,7 ****
--- 2,9 ----
         .section .mdebug.abi32
         .previous
         .abicalls
+       .globl  __mulsf3
+       .globl  __extendsfdf2
         .rdata
         .align  2
   $LC2:
***************
*** 30,46 ****
         sw      $fp,36($sp)
         sw      $28,32($sp)
         move    $fp,$sp
!       l.s     $f0,$LC0
!       s.s     $f0,24($fp)
!       l.s     $f0,$LC1
!       s.s     $f0,28($fp)
!       l.s     $f2,24($fp)
!       l.s     $f0,28($fp)
!       mul.s   $f0,$f2,$f0
!       cvt.d.s $f0,$f0
         la      $4,$LC2
!       mfc1    $7,$f0
!       mfc1    $6,$f1
         la      $25,printf
         jal     $31,$25
         move    $2,$0
--- 32,51 ----
         sw      $fp,36($sp)
         sw      $28,32($sp)
         move    $fp,$sp
!       lw      $2,$LC0
!       sw      $2,24($fp)
!       lw      $2,$LC1
!       sw      $2,28($fp)
!       lw      $4,24($fp)
!       lw      $5,28($fp)
!       la      $25,__mulsf3
!       jal     $31,$25
!       move    $4,$2
!       la      $25,__extendsfdf2
!       jal     $31,$25
         la      $4,$LC2
!       move    $6,$2
!       move    $7,$3
         la      $25,printf
         jal     $31,$25
         move    $2,$0

I'm not familiar with mips assembly, but from the diff output, it looks 
like the ftest-soft.s has calls to external subroutines "__mulsf3" and 
"__extendsfdf2" So we look for shared libraries in our cross lib 
directory, which define symbol "__mulsf3", for example:

roman@athlon1000:~/crosstool/mips-unknown/mips-unknown-linux-gnu/lib> 
find ./ -type f -exec 
/home/roman/crosstool/mips-unknown/bin/mips-unknown-linux-gnu-nm -o {} 
2> /dev/null \; | grep '__mulsf3'
./libgcc_s.so.1:00005210 T __mulsf3

So from this i conclude, "libgcc" has provisions for software floating 
point emulation, but "libgcc" itself depends on "glibc", i.e. if you run 
"objdump" on "libgcc" you'll see a section:

Dynamic Section:
   NEEDED      libc.so.6
   SONAME      libgcc_s.so.1

Hence, my understanding of this is: when you configure glibc with 
"--with-fp" or something like that, it will include support for 
floating point emulation etc, and the final gcc compiler which builds 
"libgcc" and depends on glibc, will also include support for floating 
point emulation, without it you'll get an error message:

roman@athlon1000:~/crosstool/alpha-unknown/bin> ./*gcc -msoft-float ftest.c
/tmp/ccz24CuL.o(.text+0x38): In function `main':
: undefined reference to `__mulsf3'
/tmp/ccz24CuL.o(.text+0x50): In function `main':
: undefined reference to `__extendsfdf2'
collect2: ld returned 1 exit status
roman@athlon1000:~/crosstool/alpha-unknown/bin>

But don't take my work for it, try it out yourself, cause i could be 
wrong, i'm just guessing.

Cheers


------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com



More information about the crossgcc mailing list