Patch Name: PHSS_10393 Patch Description: s700_800 10.X Cumulative patch to DDE v4.01 (DDE 4.01.P3) Creation Date: 97/05/20 Post Date: 97/06/10 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 Release Critical: No Path Name: /hp-ux_patches/s700_800/10.X/PHSS_10393 Symptoms: PHSS_10393: The following symptoms correspond to the descriptions in the defect descriptions field for PHSS_10393: Note: some of these lines were wrapped to fit into a (required) 60 column format. 1) dde taking a very long time to load alternative debug information. 2) No way to add directory with a comma in it to prop sdir list. 3) suggest more helpful msg re unwritable library inefficient execution. 4) Args cmd faults in main on ftn program. 5) Column headings misaligned in Intercepts dialog box. 6) Wrong After Count field aren't diagn-d in Intcpt window. 7) call cmnd can't find f90 routine that the break cmnd can find. 8) x parm on dde cmd line or debug cmd works but confuses dde 9) can set X resources from startup line in DDE 10) environment with file/line args fails with unnamed blocks 11) Shared lib available messages are backward. 12) SIGSEGV when displaying a DynamicCharacter array in FTN patch needed 13) Cannot step into shared library functions 14) DDE cannot debug DEMAND_MAGIC (cc -q a.out) program file 15) Accessing a variable by its full symbol path does not work. 16) Loading shared library that only contains definitions causes SIGSEGV PHSS_9731: The following symptoms correspond to the descriptions in the defect descriptions field for PHSS_9731: Note: some of these lines were wrapped to fit into a (required) 60 column format. 1) DDE warning Illegal modifier kind with -g on pure virtual template 2) DDE is not printing a constant allocated in VT correctly 3) When stepping over self recursive call, dde continues past initial call 4) real number not displayed correctly when using NLS. 5) Describe does not work properly on arrays with variable bounds 6) "Failed to attach" message could be more helpful 7) For deb -att, dde warns can't find file even though I provided full path. 8) On a PA-8000, if you attach, reg window shows 32-bits 9) DDE ignores image name with -attach 10) Can't debug dld bootstrap code (assembly window problem) 11) DDE 4.01 thru 4.01.P1 cannot run on pa1.0 12) HP ANSI C++ generated namespace member functions are not supported 13) SIGSEGV for printing class member via ptr to member (ANSI C++ only) 14) long double type incorrectly handled in overloaded name resolution 15) ANSI C++ template signatures with pointer types are never found. 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_10393: The following defect descriptions are for PHSS_10393: 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) I'm currently having a problem with dde performance. bill-main> ls -l xtest.1* -rwxr-xr-x 1 bill test 80311876 Jan 16 13:52 xtest.18 -rwxr-xr-x 1 bill test 82454900 Jan 16 14:34 xtest.19 xtest.18 was build mostly at +O3. xtest.19 was build at +O2 and +O4, so neither version was built with debug info. If I start dde up with xtest18 and do an "init -alt" to load in the alternative debug information, dde takes about 1 minute to complete the operation. If I do the same thing with the other xtest, it takes about 25-30 minutes. I'm doing an init -alt, so I can set breakpoints. A workaround that would allow me to do this another way, without the wait would be a good enough solution for now. I'm running this on a c180 at 10.20 with 256Mb of memory. The problem doesn't seem swap related. 2) There is no way to add a directory that has a comma in it to the prop sdir list. All of the following commands fail (where 'a,b' is a directory name): prop sdir "a,b" prop sdir 'a,b' prop sdir "a\,b" prop sdir 'a\,b' The third part CM tool 'Continuous' uses such name all over the place! 3) When attaching to a program, libraries it uses are typically unwritable, so it's impossible for breakpoints to be set. All execution becomes interrupted per machine-instruction, and DDE issues a warning about inefficient execution. Please make the warning provide a pointer to how to address this problem with "pxdb -s on ". This is documented in the DDE User's Guide, but it would be good to add a pointer to the "inefficient execution" diagnostic. 4) Compiled unoptimized, with debug info, a simple test program fails: Break at: \\foo\main\33 dde> args Unexpected error occurred: SIGSEGV (invalid memory accesss) 5) Intercepts dialog has column headings at the top of the window which do not line up with data columns. 6) This bug was encountered when running sesd test suite, file icpt/scenario.2.aftercnt. This scenario tests the Intercepts features in Softbench UI. A little been modified subtest that demonstrate a problem is following: ACTION : a. START softdebug with any target process. b. Press Execution:Intercepts... c. In the After Count text field double click on 0 d. Enter abcd (or 11abcd or 12 24 ). f. Press Apply The test expects the error dialog appears, which doesn't happen. 7) In a f90 program compiled with the f90 compiler there is a routine called SIMULATE. A call of simulate produces ?(dde) "simulate" not found in current environment. while setting a breakpoint works. 8) A shell command to invoke dde with an X option confuses dde. For examples: dde -bg black dde -bg black target dde target -bg black All three cause the X option to work on DDE (it gets a black background), but the "-bg" and "black" seem to remain in the command and confuse either dde or the target. For the first and second, dde thinks that "-bg" is a program to be loaded, and cannot find it. For the third, "-bg" and "black" get passed as args to target. 9) Trying to start dde passing it X options. The x options are taken and work but they are also interpreted as the name of the program to debug. Used dde -bg yellow -fg black conv. Sets the foreground and background but it also uses the -bg as the name of the program to debug. Get the error '/home/rdh/comsat/-bg' does not exist. Target program load of "/home/rdh/comsat/-bg" failed Also: Duplicate problem with a not so clean workaround dde -do "debug progname " -bg yellow -fg black this kinda works but dde still tries to bring in -bg as a program, a restart cleans this up. 10) // The following steps do not produce the correct // output with the included program. Using the // environment statement with the file syntax does not // take you to the correct environment. // // This impacts softdebug, because it uses this // mechanism to reset the environment to the current // location after a sequence of actions. // // -------------------------------------------------- // steps // -------------------------------------------------- // // step -over // step -over // print b // environment "test9.cc"\30 // print b // (b is not found at this point.) // // -------------------------------------------------- // program test9.cc // -------------------------------------------------- #include class A { public: int x, y; }; class B { public: int s, t; B() {s = 100; t = 100;} }; class C : public A { public: int u, v; B b; B c; }; void f(int i) { cout << "hello: " << i << endl; } int main() { f(7); { C b; B x; A w; b.x = 3; b.y = 4; b.u = 5; b.v = 6; cout << "hello" << endl; A a; a.x = 1; a.y = 2; cout << "hello" << endl; } return 0; } 11) Following is a transcript that demonstrates the problem. Note that the message "Shared library information now available" is printed when "Shared library information will not be available" should be printed and vice-versa. gish:~/bugs/10.0> dde.bin -ui line (Warning) Commands dealing with key definitions are not supported in line mode. (Warning) The 'property display' command is not supported in line mode. dde> prop sys -on dde> deb t01 (Warning) Shared library information now available. Executing image in process 9480: "/disk2/testing/bugs/10.0/t01". Stopped at: $START$ (00001848) dde> bre main dde> go Shared library information will not be available. Break at: \\t01\main\67 Source File: /disk2/testing/bugs/10.0/t01.c 67 B > liv = 1; 12) DDE cannot display dynamic character arrays > 15 subroutine sub(har,n,m) > 16 character*(*) har(n,m) > 17 B > do i=1,2 > 18 do j=1,2 > 19 har(i,j) = 'jetzt' > 20 enddo > 21 enddo > 22 return > 23 end > 24 > dde> p har(1,1) > ?(dde) Unexpected error occurred: SIGSEGV (invalid memory accesss) > (Warning) Continuing despite the error... > ?(dde) *** Inhibit count not zero in main command loop. Count was 1. 13) I am compiling the attached files with aCC -- the new ansi C++ compiler and am having the following trouble: 1. cannot step into a function declared in the shared library. (step appears as step over). 2. cannot print the values in an object defined in the shared library. (print s) after the declaration prints: s: (record). # This is a shell archive. # # Wrapped by Evan on Fri Jan 31 13:00:39 1997 # # This archive contains: # play.C shared.C Makefile # LANG=""; export LANG PATH=/bin:/usr/bin:/usr/sbin:/usr/ccs/bin:$PATH; export PATH echo x - play.C cat >play.C <<'@EOF' #include "shared.H" int main() { shared1(3); shared2(2); S s(4,3); s.foo(3); } @EOF chmod 664 play.C echo x - shared.C cat >shared.C <<'@EOF' #include "shared.H" void shared1(int x) { if (x > 0) shared1(x-1); } void shared2(int x) { shared1(x); } S::S(int x, int y) { s = x; t = y; } void S::foo(int x) { s += x; t += x; } @EOF chmod 664 shared.C echo x - Makefile cat >Makefile <<'@EOF' CCC=aCC play: play.C shared.sl shared.H $(CCC) -g -o play play.C shared.sl shared.sl: shared.o $(CCC) -g -b -o shared.sl shared.o shared.o: shared.H shared.C $(CCC) -g +Z -c shared.C @EOF chmod 664 Makefile exit 0 14) Customer was compiling a C program with `-q` option, which will "cause the output file from the linker to be marked as demand loadable." When invoking dde(1), he received the message: Invalid SOM object file. Cannot process debug information. 15) Here's an example of a problem that we're running into. This is another case where accessing a variable by its full symbol pathname is not working correctly. The integers j and k are defined in inner blocks of a C++ function. For some reason, we can print k using the full symbol path, but not j. We would like to be able to print both (even when they are not strictly in scope). That is, the behavior of printing k is what we want. ------------------------------------------------------ "dde -ui line" transcript: ------------------------------------------------------ dde> debug locals Executing image in process 10801: "/users/kittle/ddeprob/locals". Break at: \\locals\main\19 Source File: /users/kittle/ddeprob/locals.cpp 19 B > func1(123,345); dde> break 6 dde> break 10 dde> go Break at: \\locals\func1\6 6 B > i = a + b; dde> list blocks -full func1 block \\locals\func1 (symbols not yet initialized) symbol \\locals\func1\a symbol \\locals\func1\b symbol \\locals\func1\i block \\locals\func1 block \\locals\func1\ub.1 (symbols not yet initialized) symbol \\locals\func1\ub.1\j block \\locals\func1\ub.1 block \\locals\func1\ub.1 block \\locals\func1\ub.1\ub.1 (symbols not yet initialized) symbol \\locals\func1\ub.1\ub.1\k block \\locals\func1\ub.1\ub.1 dde> print \\locals\func1\ub.1\ub.1\k \\locals\func1\ub.1\ub.1\k: 0 dde> print \\locals\func1\ub.1\j ?(dde) "j" not found in specified environment. dde> go Break at: \\locals\func1\ub.1\ub.1\10 10 B > i = j*k; dde> print \\locals\func1\ub.1\ub.1\k \\locals\func1\ub.1\ub.1\k: 0 dde> print \\locals\func1\ub.1\j ?(dde) "j" not found in specified environment. dde> quit ---------------------------------------------------- Source code: ---------------------------------------------------- void func1(int a, int b) { int i; i = a + b; for (int j=0; j < 5; j++) { for (int k=0; k<5; k++) { i = j*k; } } } void main() { func1(123,345); } 16) I am debugging a program that uses a shared library. The shared library contains variable definitions, but no executable code. I bring up DDE and load the application. When I try to load the symbols for the shared library (prop lib -add), DDE recieves a SIGSEGV, recovers,) and then properly loads the shared library symbol information. ---- debug session ----------- /opt/langtools/bin/dde.bin -root /opt/langtools/dde -ui line Using /opt/langtools/dde as the alternate install location. dde> debug file7 Executing image in process 7770: "/tmp/file7". Break at: \\file7\main\41 Source File: /tmp/file7.c 41 B > printf("Test started\n"); dde> prop lib -add lib9.sl Loading symbol information for "/tmp/lib9.sl". ?(dde) Unexpected error occurred: SIGSEGV (invalid memory accesss) (Warning) Continuing despite the error... ?(dde) *** Inhibit count not zero in main command loop. Count was 1. dde> ver dde, version 4.10.0.4 User interface manager ui_line: Line-Mode UI, version 4.10.0.4 Target manager tgt_hpux_pa: HP-UX PA-RISC, version 4.10.0.4 DBGK 4.10.0.4 Object manager obj_som_som: HP SOM, version 4.10.0.4 Language manager lang_c: ANSI C, version 4.10.0 dde> print foobar \\foobar: 0 dde> ---- application ------------ ****** file7.c #include #include #include #include extern int foobar; extern int bar; void worker(id) int id; { shl_t handle = NULL; long addr; foobar = 10 + id; if (shl_findsym (&handle, "bar", 0, &addr) == 0) { printf("Thread %d found symbol bar %d\n", id, (*(int *)addr)); } else { printf("Thread %d: bar not found %d\n", id, errno); } /* NOTE: if not initialize handle to NULL, lib6.sl will be used * to search for foobar, which will return the symbol in the lib6.sl * instead of the data copied one */ handle = NULL; if (shl_findsym (&handle, "foobar", 0, &addr) == 0) { printf("Thread %d found symbol foobar %d\n", id, (* (int*) addr)); } else { printf("Thread %d: foobar not found %d\n", id, errno); } } main() { int i; printf("Test started\n"); foobar = 100; bar = 200; for (i=0; i < 5; i++) { worker(i); } printf("Test ended\n"); } ***** lib9.c int foobar; int bar; ------ where the files can be found The test program and sources currently reside in /users/eps/ddeInfo/ddeThreads/kernThreads/tls : file7.c file7.h file7.o file7 lib9.c lib9.o lib9.sl file7.script (to compile) ----- to run file7 You may have to fix the SHLIB_PATH and use chatr to change the search path for lib9.sl in the executable. I had to do this because I compiled on fenimore and executed the program on whale. For example, 1] copy executable and source to /tmp on whale 2] setenv SHLIB_PATH /tmp 3] chatr file7 4] chatr -l /users/eps/tls/lib6.sl 5] chatr +s enable file7 PHSS_9731: The following defect descriptions are for PHSS_9731: 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) Illegal modifier kind at DNTT index 0x.. encountered for a function Workaround: Ignore the DDE message. A nasty DDE warning that is not Serious. $ dde -ui line arc Illegal modifier kind at DNTT index 0xa32 encountered for a function. For the 10 different member functions of the template class allocator. Dennis This is a DDE error. See file small.c. It seems any pure virtual function in a template gives an error. Illegal modifier kind at DNTT index 0xe9 encountered for a function. VFUNC points to FUNCT. $ more small.c template class barf { public: virtual T* foo(T)=0; // causes the problem virtual T* roo(T); }; template T* barf::foo(T) { return 0; } template T* barf::roo(T) { return 0; } template class barf_der : public barf { public: int I; virtual T* foo(T); virtual T* roo(T); }; template T* barf_der::foo(T) { return 0; } template T* barf_der::roo(T) { return 0; } int main() { barf_der B; B.foo(0); B.roo(0); return 0; } 2) DDE seems to print out the wrong value when trying to display the value of a float point constant allocated in the VT. In the following program program test_l1 double precision GR4,x parameter( GR4 = 4e5 ) x = GR4 end DDE will print gr4: 400011.0625112881 when it should print 400000. In hex, gr4 is : 0x41186A000C0B0000 when it should be 0x41186A0000000000. 3) Enter a recursive function. "Step -over" a call to the function you are currently in. The target program does not stop until you are past the very first call to the function. Test program is in ~dschmitz/bugs/10.0 > e_dde -ui line bug.10631 Break at: \\bug.10631\main\30 Source File: /tmp_mnt/net/ishmael/disk2/ testing/bugs/10.0/bug.10631.c 30 B > for (i=0; i < LOOPS; ++i) { xdde> go -unt 18 DRILL 3 X 3 X 3 18 > num *= plunge (local_depth+1); Stopped at: \\bug.10631\plunge\18 xdde> step -over Break at: \\bug.10631\main\44 44 B > } 4) When using all versions of dde the display of real numbers when using LANG=fr_FR.iso885910 displays incorrectly 2 Program main0 3 real*4 myvar 4 B> myvar=10.3 5 B end 6 dde> b 5 dde> go Break at: \\main0\5 5 B> end asm: B> 5: 000023D4 _start+005c NOP tb: 1 > \\main0\5 dde> p myvar \\main0\myvar: 10,3.0 To duplicate export LANG=fr_FR.iso885910 prior to running dde. 5) 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. In the debug info, the lowbound is marked as a dnttptr point to a DVAR _lb__1. If one prints this dynamic variable, we get "2" which is correct for this program. This program also fails with F77. 6) While attaching to a process that is invoked over NFS, the following message was seen: Failed to attach to process 9613 - Permission denied ?(dde) Target program attach of "9613" failed 7) deb -att 26287 /tmp/vanderbilt Unable to locate program file of attached process. Object file "vanderbilt" not found in current directory. Attached to process 26287; initializing "/tmp/vanderbilt". Unable to access object: vanderbilt.c Block address range has end before start. Stopped at: \\vanderbilt\electrician\27 (00003260) 8) Debugging on a PA-8000 system, I start a program in the background, and attach. If I bring up the general register window, it displays 32 bits for each register. It is probably the top 32 bits, since most everything is zero. If I don't attach to the program, I see 64 bit register values. 9) While debugging a program that invokes another program, sometimes the other program is incorrectly invoked. 10) Set a breakpoint in crt0, then rerun the executable. Then open an assembly window and start single-stepping by instruction. Four clicks will put you at 0xc0004560. The address that DDE displays, however, is 0xc00043d0. Scroll the window down so that you can see 0xc0004560. Note that the PC is not marked. Click on step instruction again, and DDE will automatically scroll the PC out of view, as it puts you back at 0xc00043d0. 11) Starting with V4.01 of DDE, the files tgt_hpux_pa and obj_som_som are shipped as PA.RISC 1.1 compiled files. This means they will not run correctly on most series 800 systems. obj_som_som: PA-RISC1.1 shared library -not stripped tgt_hpux_pa: PA-RISC1.1 shared library -not stripped 12) The problem is that a function in a namespace is now emitted into the debug information with the prepended namespace name (in the example below the "func" in M would be seen in SOM as M::func) and DDE is not able to find this in its symbol table. In the example below try, "break M::func". Note, that all the data members are available in the namespaces. Try "pri N::a" or "pri M::a". Here is a test case that may be used with the beta 2 HP ANSI C++ compiler to reproduce the problem: namespace N { int a = 1; } namespace M { int a = 2; int func() { return a; } } int a = 3; int func() { return a; } int main () { return func(); } 13) Using the "square_a" test in the DDE test suite with the DART 30 ANSI C++ compiler the following results (break at line 48 ): dde> pri s1.*pmi ?(dde/catgets) NLS message catalog access error. Unexpected error occurred: SIGSEGV (invalid memory accesss) Continuing despite the error... The problems stems from the fact that the compiler has implemented pointers to members differently. They are no longer 0 based. They are an offset from the start of the object but a BIAS of 2**29 is now added in to differenciate the first member of an object with the value for NULL. 14) lang_c++.c (which is also lang_c.c) isn't properly handling the long double type. Specifically, function determine_type doesn't grok it. This can cause DDE to choose the wrong function when trying to resolve a 'call' command to an overloaded C++ function name. For example, compile the following code, debug it, and try to do: % dde overloads dde> step -over dde> call x.add(L'c') (You may need to compile with the -ext option and the /CLO/BUILD_ENV CC to have it accept the long double type.) I would imagine C rules probably would cast L'c' to int or perhaps long, but we're choosing the long double case! It happens not because we explicitly think L'c' ==> long double is the correct implicit cast, but because determine_type returns LANG_C_DTC_UNKNOWN, and because compare_data_types thinks that if either of a pair of DTC's is "unknown", that an exact match is the result. (!) (I expect to soon add a test that covers this case, among others to better exercise our paramter-matching/name-resolution code in the C++ language manager.) ---------------- #include #include class overloads { public : add (long double ld); add (int i); overloads (void); ~overloads (void); private : }; overloads::add (long double ld) { printf ("add (long double)\n"); } overloads::add (int i) { printf ("add (int)\n"); } overloads::overloads(void) { printf ("ctor (overloads)\n"); } overloads::~overloads(void) { printf ("dtor (overloads)\n"); } main () { overloads x; x.add (1); x.add (1.0); } 15) Try: desc Q > or desc Q > with ts12135 in the debugger test suite using the ANSI C++ compiler. The result is either a syntax error or the class is not found. This class is not available because the type signature never matches. Another problem has just appeared - desc P This doesn't work anymore. With some of the BETA versions of aCC this was OK but now it seems that the signature of the function has changed. Cfront and the old aCC compilers enter the type as "P" in the SOM and now the signature looks like "P". 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 5003342808 5003347245 5003348805 5003353102 5003358200 5003354563 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/mgrs/ui_line /opt/langtools/dde/mgrs/lang_c++ /opt/langtools/dde/ui/ddegui /opt/langtools/dde/ui/dde_ui_io_channel /opt/langtools/dde/lib/nls/msg/C/obj_mgr.cat /opt/langtools/dde/lib/nls/msg/C/dbgk_hpux_pa.cat /opt/langtools/dde/lib/nls/msg/C/sys.cat /opt/langtools/dde/softbench/config/softtypes/config/C/ softtypes /opt/langtools/dde/contrib/support_macros.tar.Z 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.P3 Rev: 970520.122602 /opt/langtools/dde/mgrs/obj_som_som: HP/DDE Object manager obj_som_som: HP SOM - Version 4.01.P3 Rev: 970520.123558 /opt/langtools/dde/mgrs/tgt_hpux_pa: HP/DDE Target manager tgt_hpux_pa: HP-UX PA-RISC - V ersion 4.01.P3 Rev: 970520.124024 /opt/langtools/dde/mgrs/ui_gui: HP DDE User interface manager ui_softdde: SoftBench UI interface to Softdebug+ - Version 4.01.P3 Rev: 970520.122908 REV: 960125.181932, 9000/715 HP-UX B.10.01 masonbld@ hydra /opt/langtools/dde/mgrs/ui_line: HP/DDE User interface manager ui_line: Line-Mode UI - Version 4.01.P3 Rev: 970520.123403 /opt/langtools/dde/mgrs/lang_c++: HP/DDE Language manager lang_c++: C++ - Version 4.01 .P3 Rev: 970520.124320 /opt/langtools/dde/ui/ddegui: REV: 970110.165953, 9000/735 HP-UX B.10.01 dde@gish /opt/langtools/dde/ui/dde_ui_io_channel: REV: 960125.181915, 9000/715 HP-UX B.10.01 masonbld@ hydra /opt/langtools/dde/lib/nls/msg/C/obj_mgr.cat: None /opt/langtools/dde/lib/nls/msg/C/dbgk_hpux_pa.cat: None /opt/langtools/dde/lib/nls/msg/C/sys.cat: None /opt/langtools/dde/softbench/config/softtypes/config/C/ softtypes: None /opt/langtools/dde/contrib/support_macros.tar.Z: None cksum(1) Output: 757899948 2351520 /opt/langtools/bin/dde.bin 2292646650 180753 /opt/langtools/dde/mgrs/obj_som_som 84208136 903698 /opt/langtools/dde/mgrs/tgt_hpux_pa 2990104794 390525 /opt/langtools/dde/mgrs/ui_gui 868397771 250457 /opt/langtools/dde/mgrs/ui_line 3296184348 459230 /opt/langtools/dde/mgrs/lang_c++ 3445697467 3721181 /opt/langtools/dde/ui/ddegui 3995015052 41106 /opt/langtools/dde/ui/dde_ui_io_channel 1690142497 4750 /opt/langtools/dde/lib/nls/msg/C/obj_mgr.cat 3527007111 5477 /opt/langtools/dde/lib/nls/msg/C/ dbgk_hpux_pa.cat 3700570339 805 /opt/langtools/dde/lib/nls/msg/C/sys.cat 2171382099 2478 /opt/langtools/dde/softbench/config/ softtypes/config/C/softtypes 2790708368 67483 /opt/langtools/dde/contrib/ support_macros.tar.Z Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: PHSS_9065 PHSS_9731 Equivalent Patches: None Patch Package Size: 8290 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_10393 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHSS_10393.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_10393.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_10393. 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_10393.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_10393.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.