Compaq: FreePort Express User's Guide Chapter 3

United States

| About AMT

Migration Tools
FX!32
FreePort Express
Download
Quick Start
User's Guide
White Papers
DECmigrate

| Performance Tools
| Documentation & White Papers

User's Guide

Introduction |Translating | Debugging | Performance | fpx messages | fpxr messages

Chapter 3: Debugging a Translation

This chapter provides information on using the dbx debugging tool with fpx and what to do when the problems described in this chapter occur. Specifically, the topics are:

Using the dbx debugging tool with fpx
fpx fails during translation
Executable crashes at run time
Executable runs, but produces different results
Executable runs slowly

Note: If a translated executable runs, but is slow, you can usually improve performance by retranslating the original SPARC executable. Check the section Executable runs slowly and refer to Chapter 4, Enhancing performance, for detailed instructions on enhancing run-time performance.

Using the dbx debugging tool with fpx

The fpx command includes options that are useful if you plan to use the dbx debugging tool on a translated executable. For example, the -m option produces a machine code listing. Chapter 2, Translating and running an executable, lists all the translation options.

There are limitations when you use dbx on a translated executable. The version of dbx that is distributed with the Digital UNIX operating system is built to work on executables in which addresses are 64 bits wide. dbx assumes a conventional assignment of Alpha CPU registers, in particular, $ra and $gp. Since translated SPARC executables do not use these conventions, dbx:

| Cannot provide stack traceback information
| Cannot dereference pointers
| Cannot correctly execute the next or nexti instructions (in some cases)

However, when it translates the symbol table, fpx changes the data type of long variables to 32-bit integers. This allows the dbx tool to process long values correctly, even though they may not be described the same way they are in the source code.

Therefore, dbx:

| Can set symbolic break points
| Can single-step instructions (step and stepi)
| Does allow you to examine and modify most external, local, register, and static variables (other than addresses)

When a breakpoint is encountered, the dbx tool reports addresses in code in symbolic form.

fpx fails during translation

If fpx fails during translation, try the following suggestion:

Symptom: fpx issues a fatal error message during translation. | Check: Is the executable eligible for translation? Further Instruction: See the list of required characteristics and restrictions for input executables in the section What kinds of executables can be translated, in Chapter 1. See Appendix A, fpx command messages, for a list of fpx error messages and suggested user actions.

Executable crashes at run time

If the translated executable crashes at run time, try the following suggestions:

Symptom: Executable crashes at run time. | Check: Does the original executable run? Further Instruction: Run the original user executable on the SunOS SPARC system to be sure it works; check that you have all the shared libraries and any other required files. Do not translate broken code.
Check: Does the executable have the correct name? Executables often require a specific name to run properly. Further Instruction: Give the translated executable the same name that the original executable had onSunOS, either by using the -o option during translation or by restoring the original file name before you run the translated executable.
Check : Are the required support files, if any, available to the executable on the Alpha system? Further Instruction: Make sure all the shared libraries and other support files are available on the Digital UNIX system. Place the files in directories that correspond to their original directories. You can often find the name of a missing support file by setting FPXR_TRACE_SYSCALLS to open, stat and by watching the trace output at run time
Check: Are the appropriate environment variables set? Some executables require specific environment conditions. Further Instruction: Make sure all the required variables are set at run time. See Correcting for nonfinite numbers and SIGFPEs in Chapter 4.

Executable runs, but produces different results

If the translated executable runs but produces results different from the untranslated executable, try the following suggestions:

Symptom: Executable runs, but results are not the same as on SPARC. | Check: Some executables read the name that they were invoked with to determine aspects of behavior. Further Instruction: Rename the executable to its original name for running on the Alpha system.

Check: Some executables look at the stack and use the return address to examine the SPARC code stream. This includes

- Some Ada executables that use exceptions
- Some PL/I executables that use PL/I signals
- Some classes of FORTRAN executables

Further Instruction: These executables do not work properly when translated. fpx does not correct this behavior. If you can locate the routine that expects to see a SPARC address, you can manually create a feedback file with a `to_sparc` entry in it. See Chapter 4, Enhancing performance.

Symptom: Error message indicates the translated program attempted a floating-point calculation with a nonfinite value. | Check: Some SPARC executables expect nonfinite floating-point numbers, such as infinities, denormalized numbers, and Not-a-Numbers(NaNs), to behave as specified in IEEE/ANSI Standard 754-1985. Further Instruction: The results of the translated executable may be different from the original executable or may abort with a floating-point exception. Floating-point exception errors can be corrected using the -full_fp option. See the item about SIGFPEs in the section Executable crashes at run time and, in Chapter 4, Correcting for nonfinite numbers and SIGFPEs.

Executable runs slowly

If the translated executable runs, but slowly, try the following suggestions:

Symptom: Executable runs, but slowly. | Check: Run the executable with the FPXR_GENERATE_FEEDBACK environment variable. If entries are written to the .hif file, retranslate. Further Instruction: See Chapter 4, Enhancing performance.
Check: Perform any actions specified in fpxr messages. Further Instruction: See Appendix B, fpxr run-time messages.
Check: Is the executable stripped? Stripping an executable before translation may cause fpxr to emulate more instructions at run time, which degrades performance. Further Instruction: If possible, translate an unstripped executable, and then run the executable with feedback.

If you have questions about FreePort Express, send email to fpx-info@scrugs.lkg.dec.com.

| Click to send feedback

privacy and legal statement