Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ xlate_address(3E) — IRIX 6.5.3f

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

libelfutil(5)

xlate(4)

xlate_init_fd(3e)

xlate_init_elf(3e)

xlate_finish(3e)

xlate_pro_init(3e)

xlate_pro_finish(3e)



XLATEADDRESS(3E)                                            XLATEADDRESS(3E)



NAME
     xlateaddress - do address translation

SYNOPSIS
     #include <elf.h>
     #include <libelf.h>
     #include <dwarf.h>
     #include <libdwarf.h>
     #include <cmplrs/xlate.h>
     #include <libXlate.h>

int xlateaddress(xlatetablecon contableptr,
int isnewaddress,
Elf64Addr addressin,
Elf64Addr *addressout,
xlateblock *range
);
DESCRIPTION
xlate_address does the address translation needed by tools such as dbx(1)
and dis(1).
If address_in is an address that does not exist in the translation table
the identity translation is returned through the pointers and
XLATE_TB_STATUS_NO_ERROR is returned by the function.
The data structure xlateblock is defined to contain
Elf64Addr xenewaddress;
Elf64Xword xenewrange;
Elf64Addr xeoldaddress;
Elf64Xword xeoldrange;
This data structure is used for both 32 and 64 bit applications and DSOs.
xlate_address translates an individual address. Its arguments are:
con_table_ptr
must be a valid open translation table handle.
is_new_address
specifies which direction the translation is to be done. If
XLATE_ADDRESS_INPUT_NEW_ADDRESS (1), then the translation is done
from a new (translated) to an old (original, untranslated)
address. If XLATE_ADDRESS_INPUT_OLD_ADDRESS (0), then the
translation is done from an old (original, untranslated text)
address to a new (translated) address. Any value other than 0 or
1 passed in can produce invalid results (the library reserves all
other values for its own internal use).
Page 1


XLATEADDRESS(3E)                                            XLATEADDRESS(3E)



     address_in
             is the input address.  Addresses must be a multiple of 4.  The
             library does not check the alignment of the passed-in address.

     address_out
             is the output address (returned thru the pointer argument).  The
             output address value will be a multiple of 4.

     range   must be the NULL pointer (0) or a valid pointer to an xlate_block
             structure provided by the caller.  If range is 0 then it is
             ignored.  If range is non-0 then the structure  pointed to is
             filled in by xlate_address.  In the filled-in structure
             xe_new_address and xe_range always refer to the new (translated)
             text and xe_old_address and xe_old_range always refer to the old
             (untranslated) text regardless of the value of is_new_address .
             All the xe_* values will be a multiple of 4.

FILES
     /usr/include/libXlate.h
     /usr/include/cmplrs/xlate.h
     /usr/include/elf.h
     /usr/include/dwarf.h
     /usr/include/libdwarf.h
     /usr/lib/libelfutil.a

DIAGNOSTICS
     Returns XLATE_TB_STATUS_NO_ERROR (0) on success.  In case of error, a
     negative number is returned indicating the error.  In case of error,
     nothing is returned thru the pointer arguments which would return values
     on successful call (values might have been changed thru these pointers
     but any such changes are not meaningful).  Error codes that may be
     returned are:

     XLATE_TB_STATUS_INVALID_TABLE
             means that the tab argument is not a valid open consumer table or
             that the data pointed at has been corrupted by a malloc arena
             corruption.

     XLATE_TB_STATUS_BAD_BLOCK_INDEX
             indicates that the library has somehow made an internal error
             (should not happen unless a portion of memory was corrupted).

     XLATE_TB_STATUS_NOT_YET_IMPLEMENT
             means that a table kind that was thought not to exist has been
             encountered.  This should be impossible since it should have been
             caught by a table initialization call (xlate_init_fd or
             xlate_init_elf).  Suggests that there was a memory corruption or
             internal library logic error.







                                                                        Page 2





XLATEADDRESS(3E)                                            XLATEADDRESS(3E)



SEE ALSO
     libelfutil(5), xlate(4), xlate_init_fd(3e), xlate_init_elf(3e),
     xlate_finish(3e), xlate_pro_init(3e), xlate_pro_finish(3e)




















































                                                                        Page 3



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026