Itanium® Architecture for Programmers

Limitations with Certain System Software and Simulator Versions

Older HP-UX compilers

Certain versions of compilers for HP-UX 11.20 (aCC A.05.30, cc B.11.20, f90 2.5) do not correctly propagate the +DD64 option from the command line to handle assembly language files as input. If you get an error message from the linker when using one of these compilers, you should upgrade to a newer version of the compiler, use cc_bundled instead, or omit the +DD64 option and work with ELF-32 executable files instead.

Older Ski versions for Linux

Certain versions of Ski have some restrictions that would require different instructions than those shown in Appendix B.2.3 in the book. Those older versions with issues include v0.943l-2 (April 2001) contained in the package ski-0.943l-2.i386.rpm and v.0.9.81-l1 (February 2003) contained in the tar-ball ski-0.9.81-l1-i686.tar.gz. If you cannot upgrade Ski, then use the following workaround.

Debugging an assembly language program with older Ski versions in NUE. Unlike a full debugger, the older versions of Ski do not provide access to symbolic labels like sq1 or done in the SQUARES program (Fig. 1-3). You can set breakpoints using offsets from main. You can find items in the data segment using explicit addresses derived from the nm command or using the offsets from the global pointer that Ski shows for the disassembled program.

As an example, assume that you have previously moved squares.s into your NUE directory, /nue/home/user. Then you could proceed as follows:

L> startx       [start X windows if you're not there already]
L>                           [now bring up a terminal window]
L> xhost +localhost                [enable X windows for NUE]
L> nue
bash> gcc -Wall -O0 -o bin/squares squares.s       [assemble]
bash> DISPLAY=localhost:0         [define a display location]
bash> export DISPLAY           [direct X windows accordingly]
bash> xski -forceuser bin/squares                [launch Ski]
xski> pj main               [jump to show vicinity of 'main']
xski> pf                            [find vicinity of 'done']
xski> bs main+0070                 [set breakpoint at 'done']
xski> run                          [simulate Itanium running]
xski> eval *(r1-0d56) *(r1-0d48) *(r1-0d40)         [results]
xski> q               [quitting removes all the xski windows]

where L> is the ordinary Linux prompt, bash> is the prompt within NUE, and we use xski> to point to what you should enter into Ski's command window. All the other Ski windows display their results dynamically. Some versions of Ski may require the use of the -forceuser option in order to prevent interpretation of your application program as a system program instead.

You should see the values 1, 4, 9 that the program computed for the squares of the first three integers (compare with the use of the native gdb debugger, Section 3.8.2). The authors of Ski informed us that it would be possible to make a variant of gdb for NUE, but that they were unlikely ever to do so because it would involve special interactions between Ski and the debugger.

Upgrading from an older Ski version

We assume that you have installed NUE and an older version of Ski (as described in Appendix B.2.3) and thus already have the following configuration: a populated /nue tree containing NUE and Ski; the pdf Ski manual; and at least one ordinary user account set up for use with NUE.

Information about newer Ski versions and download links can be found here. Then you would proceed somewhat as follows.

  1. Log into the root account, where we will further assume that the new tar-ball is in the directory /root.
  2. Change to the system root directory: cd /
  3. Decompress the archive: gunzip /root/ski-0.9.81-l2-i686.tar.gz
  4. Unpack the archive: tar -xvf /root/ski-0.9.81-l2-i686.tar
  5. Log out of the root account, and log into a regular user account set up for using NUE.

You should now have the new version of the Ski executable, symbolic links that provide the xski and other alternate commands, and a man page for Ski. Be sure to test the process of assembling and debugging a sample program (as shown in Appendix B.2.3).

In the event you see discrepancies between our instructions here and the newer documentation about Ski, be skeptical of what we say and try the other information first. We ourselves have not actively worked with Ski since the time when we were writing our book.

Multiply defined user symbols can confuse Ski

In our book, we used the standard label done for convenience in using symbolic debuggers. When a program consists of several modules, there might thus be two or more instances of the label done, all accessible to Ski. Depending on the order in which the .s source files are specified as input to the gcc command, Ski may or may not select the specific instance of done that best suits your purpose for a breakpoint. Suppose you want done in the module containing the label main. Since main is usually unique, you can use the Ski pj command to find done, relative to main. For instance, with DECNUM3 linked with the BOOTH function, you could say bs main+030.

  [viika]  [Itanium Architecture home]  [Top of Page]  [e-mail the author(s)]