Soft Float for PC386

Angelo Fraietta angelo at hunterlink.net.au
Wed Feb 14 22:50:57 UTC 2001


I can see what's happening here.  The ends of the routines are packed with 00 in stead of 90, so objdump thinks that
they are instructions. I changed the packed 00 to 90 with a hex editor and re-ran program, but there was no change.
This is because the packed 00 only tricks the de-compiler, not the executable.  The decompiler, however, still showed
fld1 at that address. So I changed the code at 10BA8B and at 102036 (an fstpl command) to 90 (NOP) and the program
executed passed the float part of the program without an exception. The answer of course was wrong, but that is not the
issue, rather that there is almost definitely co-processor commands in the floating point library that is being linked.

One other issue, how could we make the ends of the routines pad with 90 instead of 00, which would make reading the
disassembly accurate?

Angelo Fraietta wrote:

> Tell me if I am right here,
>
> The .num file has the symbol table.  I should be able to find the appropriate symbol because it is the same or the
> one before the number, ie 10BA8B
>
> I look in the symbol table and find these
>
>     0010b958 T __pack_d
>     0010ba90 T __pack_f
>
>  so I would assume that the fault is in __pack_d, however, when I decompiled the exe, I found lots of call 10ba58,
> but
> when I look for it I find this instead of 10b958:
>
>         10b957: 00 55 89              add    %dl,0xffffff89(%ebp)
>
> This means that the call will go to the 55 instead of the 00. Am I on the right track??
>
> Angelo Fraietta wrote:
>
> > when I do objdump -t, it says there are no symbols. Does this mean that I have to do it with the debug build?
> >
> > Joel Sherrill wrote:
> >
> > > Ralf Corsepius wrote:
> > > >
> > > > Angelo Fraietta wrote:
> > > > >
> > > > > I have noticed during the configure stage of the script, the following is shown (this is from the ts_386 so
> > > > > it should be soft float)
> > > > > running /bin/sh ../../../../../RTEMS4.5.0ss/c/src/make/configure  --host=i386-rt
> > > > > ems --build=i586-pc-linux-gnu --target=i386-rtems --prefix=/opt/rtems --disable-
> > > > > hwapi --enable-multiprocessing --enable-cxx --enable-rdbg --disable-tests --disa
> > > > > ble-networking --enable-posix --disable-itron --with-target-subdir=i386-rtems --
> > > > > libdir=/opt/rtems/i386-rtems/lib --cache-file=.././config.cache --srcdir=../../.
> > > > >
> > > > > does libdir=/opt/rtems/i386-rtems/lib mean that it would be linking with the libraries in that directory
> > > > > instead of the soft-float directory?
> > > > No. libdir is used by autoconf and automake to specify the path to
> > > > the directory where libraries shall be install during "make
> > > > install".
> > > > Currently is not used at all by RTEMS,and therefore should not have
> > > > any influence at all.
> > > >
> > > > > Shouldn't that be /opt/rtems/i386-rtems/lib/soft-float ??
> > > > No. libdir can vary inside of the build tree and should better not
> > > > be passed manually to the toplevel configure script at all.
> > > >
> > > > However, there should neither be a need to set it, nor should having
> > > > set it have any effect on building RTEMS. (Warning: Future versions
> > > > of RTEMS probably will be using it.)
> > > >
> > > > > I copied the files from the soft-float directory to that directory but still had the same fault, i.e.
> > > > > exception 7.
> > > > >  Is there anywhere else I should be looking
> > > > You could try to isolate the location of the offending FPU-call
> > > > (find the caller, eg. by debugging paranoia.exe, disassembly,
> > > > linker-map analysis).
> > >
> > > My guess is that incorrectly/accidentally there is an FP instruction.
> > > It could be by linking against the wrong library, incorrect code
> > > generation, or simply a piece of code assuming an FPU.  Given the
> > > fault address, you can do an objdump on the executable and see
> > > what instruction is at that address.  Using the objdump and symbol
> > > table (nm), you can tell what routine the offending instruction is
> > > in.  That plus possible the output of linking with -v should be
> > > enough to figure out where to look.
> > >
> > > > > or am I off the track completely??
> > > > :)
> > > >
> > > > >
> > > > > angelo wrote:
> > > > >
> > > > > > Is it possible that the wrong libraries are being linked.
> > > > You might want to add -v to the linker invocation in your BSP's
> > > > make-exe (make/custom/<BSP>.cfg) and try to analyse the what it
> > > > reports for linking paranoia.exe.
> > > >
> > > > Ralf
> > > >
> > > > --
> > > > Ralf Corsepius
> > > > Forschungsinstitut fuer Anwendungsorientierte Wissensverarbeitung
> > > > (FAW)
> > > > Helmholtzstr. 16, 89081 Ulm, Germany     Tel: +49/731/501-8690
> > > > mailto:corsepiu at faw.uni-ulm.de           FAX: +49/731/501-999
> > > > http://www.faw.uni-ulm.de
> > >
> > > --
> > > Joel Sherrill, Ph.D.             Director of Research & Development
> > > joel at OARcorp.com                 On-Line Applications Research
> > > Ask me about RTEMS: a free RTOS  Huntsville AL 35805
> > > Support Available                (256) 722-9985
> >
> > --
> > Angelo Fraietta
> >
> > PO Box 859
> > Hamilton NSW 2303
> >
> > Home Page
> >
> > http://users.hunterlink.net.au/~maaaf/
> >
> > There are those who seek knowledge for the sake of knowledge - that is CURIOSITY
> > There are those who seek knowledge to be known by others - that is VANITY
> > There are those who seek knowledge in order to serve - that is LOVE
> >     Bernard of Clairvaux (1090 - 1153)
>
> --
> Angelo Fraietta
>
> PO Box 859
> Hamilton NSW 2303
>
> Home Page
>
> http://users.hunterlink.net.au/~maaaf/
>
> There are those who seek knowledge for the sake of knowledge - that is CURIOSITY
> There are those who seek knowledge to be known by others - that is VANITY
> There are those who seek knowledge in order to serve - that is LOVE
>     Bernard of Clairvaux (1090 - 1153)

--
Angelo Fraietta

PO Box 859
Hamilton NSW 2303

Home Page

http://users.hunterlink.net.au/~maaaf/

There are those who seek knowledge for the sake of knowledge - that is CURIOSITY
There are those who seek knowledge to be known by others - that is VANITY
There are those who seek knowledge in order to serve - that is LOVE
    Bernard of Clairvaux (1090 - 1153)





More information about the users mailing list