ok - hackey way to get at the info. This works on solaris and should work on HPUX too.
use "dis -C <exe name>" to get a disassembly of the executable. "dis" is the disassember, the -C option outputs C++ calls in a de-mangled format (otherwise you get them in a mangled C format with the parameters mashed into the name, which is ok but not easy to read).
You can then use egrep on the output to find for each function/method what it calls. Note that this only will help for information in the file that you disassemble. You will have to disassemble each library and/or object separately to get their call tree. However this is an advantage as it allows you to target the dissasembly.
Solaris output is of the format :
main()
10ef8: 94 10 20 00 clr %o2
11228: 91 3a 20 18 sra %o0, 24, %o0
1122c: 80 a2 20 00 cmp %o0, 0
11014: 7f ff fe eb call Outputter:

rint(char*) [__0fJOutputterFPrintPc]
Outputter:

rint(char*) [__0fJOutputterFPrintPc]()
10bc0: 9d e3 bf 90 save %sp, -112, %sp
10bc4: 40 00 00 02 call 0x10bcc
10bc8: 13 00 00 42 sethi %hi(0x10800), %o1
so the following should do the trick IF YOUR DISASSEMBLY IS IN THE SAME SORT OF FORMAT AND IF HP PROCESSORS USE "call" IN THEIR ASSEMBLY LANGUAGE TO CALL SUBROUTINES.:
dis -C myprog > dis.txt
egrep "^[^ ]|call" dis.txt
where the spaces in the egrep command are a space followed by a tab. (the first ^ means at the start of the line, the second ^ means NOT any of the characters in between the [ and ] i.e. show any lines
1) NOT starting with a space or tab
2) which contain the text "call"
The sort of output I get is as follows (you can use awk to pretty things up)
DoHello(Outputter&) [__0FHDoHelloR6JOutputter]()
10fec: 40 00 00 02 call 0x10ff4
11014: 7f ff fe eb call Outputter:

rint(char*) [__0fJOutputterFPrintPc]
DoGoodbye(Outputter&) [__0FJDoGoodbyeR6JOutputter]()
11030: 40 00 00 02 call 0x11038
11058: 7f ff fe da call Outputter:

rint(char*) [__0fJOutputterFPrintPc]
main()
11074: 40 00 00 02 call 0x1107c
11084: 7f ff fe c9 call Outputter::Outputter(void) [__0oJOutputterctv]
1108c: 7f ff ff d7 call DoHello(Outputter&) [__0FHDoHelloR6JOutputter]
11094: 7f ff ff e6 call DoGoodbye(Outputter&) [__0FJDoGoodbyeR6JOutputter]
110ec: 40 00 00 b3 call stream_locker::do_lock(void) [__0fNstream_lockerHdo_lockv]
110f4: 40 00 00 af call unsafe_ios::rdbuf(void) [__0fKunsafe_iosFrdbufv]
1112c: 40 00 00 9a call stream_locker::lock(void) [__0fNstream_lockerElockv]
1114c: 40 00 00 73 call stream_locker::~stream_locker(void) [__0oNstream_lockerdtv]
11158: 40 00 00 70 call stream_locker::~stream_locker(void) [__0oNstream_lockerdtv]
11160: 7f ff fe eb call Outputter::GetCounter(void) [__0fJOutputterKGetCounterv]
1116c: 40 00 00 33 call ostream:

perator <<(int) [__0oHostreamlsi]
11190: 40 00 00 62 call stream_locker::~stream_locker(void) [__0oNstream_lockerdtv]
1119c: 40 00 00 5f call stream_locker::~stream_locker(void) [__0oNstream_lockerdtv]
111a4: 40 00 41 4b call _ex_rethrow_q
ostream:

perator <<(ostream& (*)(ostream&)) [__0oHostreamlsPFR6Hostream_R6Hostream]()
111f8: 40 00 00 67 call stream_locker::lock(void) [__0fNstream_lockerElockv]
1120c: 40 00 00 43 call stream_locker::~stream_locker(void) [__0oNstream_lockerdtv]
You can pretty this up a bit on solaris with
egrep "^[^ ]|call" dis.txt | sed 's/^.*[ ]call[ ]/ /'
where again all the spaces in the [ ] are a single space followed by a single tab. This replaces all the addresses and assembly language junk and the "call" with a couple of spaces.
Hope this is finally what you need!!!!!!!
Philip