uwx man page on HP-UX

Man page or keyword search:  
man Server   10987 pages
apropos Keyword Search (all sections)
Output format
HP-UX logo
[printable version]

uwx(3X)								       uwx(3X)

NAME
       uwx() - Unwind Express Library

SYNOPSIS
       [flag... ] file...  [library] ...

DESCRIPTION
       The  Unwind  Express  Library  is a lightweight library for unwinding a
       process stack on Integrity systems.  It may be used  for	 "self-unwind‐
       ing,"  where a thread traces back through its own stack, or for "cross-
       unwinding," where a debugger or other tool can  examine	the  stack  of
       another target thread or process.

       To  use	the  Unwind  Express  Library,	link your application with the
       option on the compiler or linker command line.  All source code	should
       include	the  header  file  Source code that uses the library for self-
       unwinding should also include the header file

       The Unwind Express Library maintains its entire state within  a	single
       unwind  environment  structure.	To unwind a stack, the client applica‐
       tion provides an	 initial  context  to  the  unwind  environment,  then
       unwinds	the  stack  one frame at a time.  After reaching the bottom of
       the stack, the unwind environment may be reused for a subsequent unwind
       operation  simply by providing a new initial context, or it may be dis‐
       carded, freeing the memory it was using.

       A client application may create any number of separate unwind  environ‐
       ments,  and each one will operate independently of and completely unaf‐
       fected by the others.

       The Unwind Express Library consists of a core unwind engine that can be
       adapted	to specific environments through the use of callback routines.
       For self-unwinding, a set of standard callback routines are provided as
       part of the library.  For cross-unwinding, the client must supply call‐
       back routines to interface the unwind engine to the  target  thread  or
       process.

   Self-Unwinding
       To  prepare  for	 self-unwinding, a client application must perform the
       following steps to create and initialize a new unwind environment:

	 1. Call to create a new unwind environment.  The return  value	 is  a
	    pointer to the unwind environment.

	 2. Call  to initialize the standard callback environment.  The return
	    value is a pointer to the callback info structure.

	 3. Call to register the standard callbacks: and

       The steps above may be performed at any time in advance of performing a
       stack  unwind.	The  resulting	unwind	environment  can  then be used
       repeatedly.

       To perform a stack unwind from  some  point  in	the  application,  the
       client must perform the following steps:

	 1. Call  to  provide the current thread's context as a starting point
	    for unwinding.  The stack frame for the caller  of	this  function
	    becomes the current frame.

	 2. Call  to  step back one frame in the call stack.  After each step,
	    the new frame becomes the current frame, and the client  may  call
	    to obtain values from the reconstructed context for the new frame.
	    This step can be repeated until the process reaches the bottom  of
	    the stack or a signal context frame.

	 3. When  a  signal  context  frame is reached, the client may call to
	    provide a new starting point for unwinding based on the context at
	    the	 point	of  interruption.   The	 stack	frame for the function
	    interrupted by the signal becomes the current  frame.   Subsequent
	    calls to will proceed from there.

   Cross-Unwinding
       To  prepare  for cross-unwinding, a client application must perform the
       following steps to create and initialize a new unwind environment:

	 1. Call to create a new unwind environment.  The return  value	 is  a
	    pointer to the unwind environment.

	 2. Call  to  setup  the unwind environment for cross unwinding.  This
	    call also allows the client to specify  the	 byte  order  (little-
	    endian or big-endian) of the target process.

	 3. Call  to  register	the  client-provided  callback functions.  See
	    uwx_register_callbacks(3X) for  information	 on  writing  callback
	    routines.

       The steps above may be performed at any time in advance of performing a
       stack unwind.  The  resulting  unwind  environment  can	then  be  used
       repeatedly.

       To perform a stack unwind, the client must perform the following steps:

	 1. Call  to provide the basic initial context as a starting point for
	    unwinding.	This initial context consists  of  the	values	of  ip
	    (instruction  pointer),  sp	 (stack	 pointer),  bsp (backing store
	    pointer), and cfm (current frame marker).  The frame described  by
	    these  values  becomes  the	 current  frame.  If the unwind engine
	    needs values from additional registers in the target thread's con‐
	    text,  it  will request them as needed through the callback inter‐
	    face.

	 2. Call to step back one frame in the call stack.  After  each	 step,
	    the	 new  frame becomes the current frame, and the client may call
	    to obtain values from the reconstructed context for the new frame.
	    This  step can be repeated until the process reaches the bottom of
	    the stack or a signal context frame.

	 3. When a signal context frame is reached, the	 client	 may  call  to
	    obtain  the	 abi  and  context  parameters	recorded in the unwind
	    descriptors for the frame.	This routine returns the two values in
	    a single int as ((abi << 8) | context).  It should then call again
	    to provide a new starting point for unwinding based on the context
	    at	the  point  of interruption.  The stack frame for the function
	    interrupted by the signal becomes the current  frame.   Subsequent
	    calls to will proceed from there.

   Obtaining Information From the Current Frame's Context
       Registers from the current frame may be read using and

       The starting address of the current function may be obtained by calling

       Symbolic	 information  may  be  obtained, if available, for the current
       frame's IP by calling and

ERRORS
       For the APIs that return pointer values, a  NULL	 pointer  indicates  a
       memory  allocation  error;  otherwise  a pointer to an opaque object is
       returned.

       For other APIs, an integer status code is returned.   These  codes  are
       listed here.
       Request successfully completed.

       hit a signal context frame.

       hit bottom of stack.

       The cached information returned by the lookup-ip callback was invalid.

       The "Lookup IP" callback returned an invalid key in the result vector.

       The register id is invalid.

       The unwind information block contains an invalid descriptor.

       The unwind engine is unable to unwind from the current frame
	      because of an unsupported descriptor.

       There was an error reading a value from the memory stack.

       There was an error reading a register from the initial context.

       There  was  an  error  reading  a value from the register stack backing
       store.

       There was an error reading the unwind information block.

       There was an error reading the unwind table.

       No module information was found for the current frame's IP.

       The "Lookup IP" callback encountered an error.

       No callback routines have been registered.

       No initial context has been supplied.

       The    env parameter is NULL.

       An attempt to allocate additional memory failed.

       No symbolic information was found.

       An unwind information block was found, but it does not describe the
	      current frame's IP.

       No unwind information block was found for the current frame's IP.

       The unwind information block is invalid -- the nesting of prologue
	      regions is not balanced.

       An unidentified error was received from the
	      uc_access(3) library.

       The unwind information block is invalid -- an undefined label is refer‐
       enced.

EXAMPLES
       The  following  code  fragment  performs	 a stack unwind in the current
       thread:

LIMITATIONS
       The Unwind Express Library currently does not recognize X-format unwind
       descriptors.  These are not currently used by HP compilers.

AUTHOR
       The Unwind Express Library was developed by Hewlett-Packard.

SEE ALSO
       uc_access(3),	   uwx_add_to_bsp(3X),	     uwx_find_source_info(3X),
       uwx_find_symbol(3X),    uwx_free(3X),	 uwx_get_abi_context_code(3X),
       uwx_get_funcstart(3X),	  uwx_get_module_info(3X),    uwx_get_nat(3X),
       uwx_get_reg(3X),	    uwx_get_source_info(3X),	 uwx_get_sym_info(3X),
       uwx_init(3X), uwx_init_context(3X), uwx_register_alloc_cb(3X), uwx_reg‐
       ister_callbacks(3X),   uwx_release_symbol_cache(3X),   uwx_self_do_con‐
       text_frame(3X),	  uwx_self_free_info(3X),   uwx_self_init_context(3X),
       uwx_self_init_info(3X),	    uwx_set_nofr(3X),	   uwx_set_remote(3X),
       uwx_step(3X), uwx_step_inline(3X).

			    Integrity Systems Only		       uwx(3X)
[top]

List of man pages available for HP-UX

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net