Patch Name: PHSS_9065 Patch Description: s700_800 10.X Cumulative patch to DDE v4.01 Creation Date: 96/10/30 Post Date: 96/11/11 Hardware Platforms - OS Releases: s700: 10.00 10.01 10.10 10.20 s800: 10.00 10.01 10.10 10.20 Products: DDE v4.01 Filesets: DDE.DDE Automatic Reboot?: No Status: General Superseded Critical: No Path Name: /hp-ux_patches/s700_800/10.X/PHSS_9065 Symptoms: PHSS_9065: The following symptoms correspond to the descriptions in the defect descriptions field for PHSS_9065: Note: some of these lines were wrapped to fit into a (required) 60 column format. 1) Debugging optimized code:DDE can get a SIGSEGV and lock up 2) C++ exception handling (intercept) unsupported for non-archive programs. 3) Arrow disappears in main after restart with optimized code 4) Describe does not work properly on arrays with variable bounds 5) Debugging optimized code: Missing logicals from inner scope 6) Calls to alloca() cause DDE to incorrectly state the value of local vars 7) Fake stars bug to push out this patch. Defect Description: PHSS_9065: The following defect descriptions are for PHSS_9065: Note: some of these lines were wrapped to fit into a (required) 60 column format. This will make some message text look different from how it appears to the user. 1) While debuging an optimized program with DDE, bring the assembly display, and then step -crit five (or is it six) times. DDE will report a SIGSEGV, and DDE is hung. The assembly display must be up for the bug to occur. 2) The "intercept throw" and "intercept catch" commands are broken for C++ programs that are linked with shared language support libraries. dde will issue an error after the commands are issued: dde> inter throw C++ library not linked into target or out of date. Interception of C++ exception handling events unavailable. 3) After a restart the source display sometimes loses track of the Logical location mark - the arrow. This doesn't happen immediately, but once it does, there is no way to get it back. It also only loses the arrow in the main program. When it enters a subroutine, it displays the arrow correctly. Then when it returns to main, it loses it, again. 4) When debugging the program below, program B294 integer ida1(2:10) call ja001(ida1,8) end SUBROUTINE JA001(NDS7) INTEGER IDA1(10-NDS7:10) IDA1(3) = 5 END DDE describes ida1 in subroutine as symbol "\\`image(a.out)\ja001\ja001\ida1" type: datatype: array size: 0 bits (0 bytes) base type: "integer*4" dimensions: dimension: 1 lower bound: 1075466492 upper bound: 2147483647 index type: datatype: subrange precision: 32 bits (4 bytes) size: 32 bits (4 bytes) base type: "integer*4" low: 1075466492 high: 2147483647 attributes: formal parameter, by reference The high bound is correct with the current beta version of the F90 compiler. In the first release, the high bound would be set correctly. The low bound is incorrect. If one prints this dynamic variable, we get "2" which is correct for this program. This program also fails with F77. {Note that the upper is "correct", this is a special flag value that conveys the the upper bound is variable based} 5) The problem is that dde fails to record the logicals for line 13, 14 and 15, and hence steps over them. The line table info for these lines is present, but dde's assembly and stepping behavior indicates that these lines are not present in dde's line table. test program: foo.c. On running dde and stopping in verify() line 12, dde's assembly doesn't show logicals. 6) /* Compile with: * cc -Aa -g -o alloc alloc.c */ #include #include int main (void) { int a, b, c; int *pi; a = 1; b = 2; c = 3; /* First debug breakpoint here */ /* Use dde to print the values a, b, c * Observe that their values are 1, 2, and 3. */ pi = alloca (3 * sizeof (int)); if (!pi) { fprintf (stderr, "Unable to alloca space!\n"); exit (1); } /* Second debug breakpoint here */ /* Use dde to print the values a, b, c. * DDE will incorrectly show that they are 0, 0, and 0, * whereas executing the next printf statement will * correctly print that they are * 1, 2, 3, respectively. */ printf ("a = %d, b = %d, c = %d\n", a, b, c); return (0); } The problem is that the value of local variables are displayed incorrectly in frames that call alloca(). 7) Fake stars bug to push out this patch. SR: 1653153460 Patch Files: /opt/langtools/bin/dde.bin /opt/langtools/dde/mgrs/obj_som_som /opt/langtools/dde/mgrs/tgt_hpux_pa /opt/langtools/dde/mgrs/ui_gui /opt/langtools/dde/ui/ddegui /opt/langtools/dde/softbench/config/softtypes/config/C/ softtypes what(1) Output: /opt/langtools/bin/dde.bin: HP92453-02A.10.00 HP-UX SYMBOLIC DEBUGGER (END.O) $R evision: 74.03 $ HP Distributed Debugging Environment (HP/DDE) - Vers ion 4.01.P1 Series 700 B3477AA Series 800 B3472AA REV: 950209.102443, 9000/7 /opt/langtools/dde/mgrs/obj_som_som: HP/DDE Object manager obj_som_som: HP SOM - Version 4.01.P1 Series 700 B3477AA Series 800 B3472AA /opt/langtools/dde/mgrs/tgt_hpux_pa: HP/DDE Target manager tgt_hpux_pa: HP-UX PA-RISC - V ersion 4.01.P1 Series 700 B3477AA Series 800 B3472AA /opt/langtools/dde/mgrs/ui_gui: HP DDE User interface manager ui_softdde: SoftBench UI interface to Softdebug+ - Version 4.01.P1 Series 700 B3477AA Series 800 B3472AA REV: 960125.181932, 9000/715 HP-UX B.10.01 masonbld@ hydra /opt/langtools/dde/ui/ddegui: REV: 961028.144134, 9000/735 HP-UX B.10.01 mann_k@to aster /opt/langtools/dde/softbench/config/softtypes/config/C/ softtypes: None cksum(1) Output: 1864904992 2347412 /opt/langtools/bin/dde.bin 2508779538 176641 /opt/langtools/dde/mgrs/obj_som_som 3974005259 899571 /opt/langtools/dde/mgrs/tgt_hpux_pa 3306424437 382330 /opt/langtools/dde/mgrs/ui_gui 2027797712 3721181 /opt/langtools/dde/ui/ddegui 2171382099 2478 /opt/langtools/dde/softbench/config/ softtypes/config/C/softtypes Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: None Equivalent Patches: None Patch Package Size: 7450 Kbytes Installation Instructions: Please review all instructions and the Hewlett-Packard SupportLine User Guide or your Hewlett-Packard support terms and conditions for precautions, scope of license, restrictions, and, limitation of liability and warranties, before installing this patch. ------------------------------------------------------------ 1. Back up your system before installing a patch. 2. Login as root. 3. Copy the patch to the /tmp directory. 4. Move to the /tmp directory and unshar the patch: cd /tmp sh PHSS_9065 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHSS_9065.depot 5b. For a homogeneous NFS Diskless cluster run swcluster on the server to install the patch on the server and the clients: swcluster -i -b This will invoke swcluster in the interactive mode and force all clients to be shut down. WARNING: All cluster clients must be shut down prior to the patch installation. Installing the patch while the clients are booted is unsupported and can lead to serious problems. The swcluster command will invoke an swinstall session in which you must specify: alternate root path - default is /export/shared_root/OS_700 source depot path - /tmp/PHSS_9065.depot To complete the installation, select the patch by choosing "Actions -> Match What Target Has" and then "Actions -> Install" from the Menubar. 5c. For a heterogeneous NFS Diskless cluster: - run swinstall on the server as in step 5a to install the patch on the cluster server. - run swcluster on the server as in step 5b to install the patch on the cluster clients. By default swinstall will archive the original software in /var/adm/sw/patch/PHSS_9065. If you do not wish to retain a copy of the original software, you can create an empty file named /var/adm/sw/patch/PATCH_NOSAVE. Warning: If this file exists when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. It is recommended that you move the PHSS_9065.text file to /var/adm/sw/patch for future reference. To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHSS_9065.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: This patch only patches DDE 4.01. If you have an earlier version of DDE, then you must install DDE 4.01 before you can apply the patch. Force applying this patch to an earlier version of DDE (earlier than 4.01) will totally break the older installed version of DDE.