background image
Tech Note #10: Portable Object Code
Ó1997 Bionic Buffalo Corporation; All Rights Reserved.
           19 October 1997
http://www.tatanka.com
Page 
ë
Why Not Sensible Source Code?
Our portable object code comes from two sources:
· Some portable object code is made by source code generators, which are programs that take
a higher-level representation of a program and generate a lower-level realization in one of
the standard programming languages. For example, we have tools which generate menus
and forms for interactive data entry and queries, and these tools may emit obscure source
code.
· Some code is deliberately obscured to hinder modification or reverse engineering.
Bionic Buffalo sometimes distributes portable object code as an alternative to standard object
code. By providing obscure source, we can distribute programs which can be recompiled to run
in alternative environments or on alternative platforms.
In some cases (when the code is created automatically by compilers and other tools), intelligible
source code is not possible. In other cases, it is not available from us for the same reason that
most software vendors do not offer source code: we are protecting our proprietary technology.
An Example
This section contains portions of an example program in one portable object code format. This
example is from a version of the CORBA library. It is a routine which tests the type of a given
object.
 
CORBA_boolean CORBA_Object_is_a ( CORBA_Object _gmx_40621,
 
CORBA_char * _gmx_302049,
 
CORBA_Environment *_gmx_234811 )
 
{
 
_gmx_148457 * _gmx_377941 ;
 
char * _gmx_305598 ;
 
_gmx_377941 = (_gmx_148457 *) _gmx_234811 ;
 
_gmx_21574 ( _gmx_377941 ) ;
 
_gmx_305598 = _gmx_305995 ( _gmx_377941, _gmx_40621 ) ;
 
if ( _gmx_377941 -> _gmx_286484 != CORBA_NO_EXCEPTION )
 
return 0 ;
 
if ( _gmx_305598 == NULL ) goto _gmx_231095;
 
goto _gmx_15736;
 
_gmx_231095:
 
if ( _gmx_302049 == NULL ) return 1 ;
 
if ( ! strcmp ( _gmx_302049, "" ) ) return 1 ;
 
return 0 ;
 
_gmx_15736:
 
if ( ! strcmp ( _gmx_305598, "" ) ) goto _gmx_131669;
 
goto _gmx_282251;
 
_gmx_131669: