Soft Float for PC386
Angelo Fraietta
angelo at hunterlink.net.au
Mon Feb 19 21:00:38 UTC 2001
I have also checked for the co-processor commands in the ts_386ex and the i386ex builds. They also exist there in the same
functions.
Angelo Fraietta wrote:
> 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)
--
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