C UDR's on Redhat
Posted in 2014
A user on Informix 12.10 / RHEL 6.3 wrote a simple C UDR (igetenv) returning an environment variable, built it as a shared object and registered it, but got -9794 "load failed" with the log saying the C symbol wasn't found in /tmp/igetenv.so, even though objdump showed it exported. Suggestions: the real cause may be dlopen failing on other unresolved symbols (compare the .so's undefined symbols against oninit); check the DB_LIBRARY_PATH onconfig parameter (though that would give error 9720); avoid function names starting with i/ifx/ifmx due to namespace collisions; and guard mi_string_to_lvarchar against NULL from getenv. No confirmed resolution is recorded in the thread.
Auto-generated by DrWatson from the posts below — may be imperfect; read the full thread.
Topics: Stored Procedures & SPL, Data Types & Schema Design
Im making my first foray into C UDRs. Im using Informix 12.10 (c1) and
using Redhat 6.3.
As a test I decided to write a simple C routine that returns an environment
variable:
#include "dmi/mi.h"
#include "stdlib.h"
mi_lvarchar *igetenv(mi_lvarchar *str,MI_FPARAM *fparam)
{
mi_lvarchar *lvarch_out;
char *varname;
char *varvalue;
varname = mi_lvarchar_to_string(str);
varvalue = getenv(varname);
lvarch_out = mi_string_to_lvarchar(varvalue);
return (lvarch_out);
}
I compiled it with :
gcc I$INFOMRIXDIR/incl fPIC g c Wall DMI_SERVBUILD igetenv.c
and
gcc shared fPIC W1,--version-script=igetenv.exportlist o /tmp/igetenv.so
igetenv.o lc
I then registered it with:
CREATE FUNCTION sql_igetenv(lvarchar)RETURNS lvarchar
with (NOT VARIANT,PARALLELIZABLE)
EXTERNAL NAME "/tmp/igetenv.so(igetenv)"
LANGUAGE c;
And ran it with :
execute function sql_igetenv('INFORMIXDIR')
I get the error message:
Error: User Defined Routine (sql_igetenv) load failed. (State:S1000, Native
Code: FFFFD9BE)
And the log has the following:
13:52:09 ERROR: C Language Symbol <igetenv> (procid 513) not found in
</tmp/igetenv.so>
13:52:09 (-1): ERROR: Loading Routine <sql_igetenv> procid=513
If I use objdump I can see the routine is exported:
root:2:/home/rayb>objdump -T /tmp/igetenv.so
/tmp/igetenv.so: file format elf64-x86-64
DYNAMIC SYMBOL TABLE:
0000000000000428 l d .init 0000000000000000 .init
0000000000000000 D *UND* 0000000000000000 mi_lvarchar_to_string
0000000000000000 w D *UND* 0000000000000000 __gmon_start__
0000000000000000 w D *UND* 0000000000000000 _Jv_RegisterClasses
0000000000000000 w DF *UND* 0000000000000000 GLIBC_2.2.5 __cxa_finalize
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 getenv
0000000000000000 D *UND* 0000000000000000 mi_string_to_lvarchar
000000000000055c g DF .text 0000000000000046 Base igetenv
Can anyone help with what I am missing here?
On 21/08/14 03:03, RAY BURNS wrote:
> Im making my first foray into C UDRs. Im using Informix 12.10 (c1) and
> using Redhat 6.3.
>
> As a test I decided to write a simple C routine that returns an environment
> variable:
>
> #include "dmi/mi.h"
> #include "stdlib.h"
>
> mi_lvarchar *igetenv(mi_lvarchar *str,MI_FPARAM *fparam)
> {
>
> mi_lvarchar *lvarch_out;
>
> char *varname;
>
> char *varvalue;
>
> varname = mi_lvarchar_to_string(str);
>
> varvalue = getenv(varname);
>
> lvarch_out = mi_string_to_lvarchar(varvalue);
>
> return (lvarch_out);
> }
>
> I compiled it with :
> gcc I$INFOMRIXDIR/incl fPIC g c Wall DMI_SERVBUILD igetenv.c
> and
> gcc shared fPIC W1,--version-script=igetenv.exportlist o /tmp/igetenv.so
> igetenv.o lc
>
> I then registered it with:
>
> CREATE FUNCTION sql_igetenv(lvarchar)> RETURNS lvarchar
> with (NOT VARIANT,PARALLELIZABLE)
> EXTERNAL NAME "/tmp/igetenv.so(igetenv)"
> LANGUAGE c;
>
> And ran it with :
>
> execute function sql_igetenv('INFORMIXDIR')>
> I get the error message:
>
> Error: User Defined Routine (sql_igetenv) load failed. (State:S1000, Native
> Code: FFFFD9BE)
> And the log has the following:
> 13:52:09 ERROR: C Language Symbol <igetenv> (procid 513) not found in
> </tmp/igetenv.so>
> 13:52:09 (-1): ERROR: Loading Routine <sql_igetenv> procid=513
>
> If I use objdump I can see the routine is exported:
>
> root:2:/home/rayb>objdump -T /tmp/igetenv.so
>
> /tmp/igetenv.so: file format elf64-x86-64
>
> DYNAMIC SYMBOL TABLE:
> 0000000000000428 l d .init 0000000000000000 .init
> 0000000000000000 D *UND* 0000000000000000 mi_lvarchar_to_string
> 0000000000000000 w D *UND* 0000000000000000 __gmon_start__
> 0000000000000000 w D *UND* 0000000000000000 _Jv_RegisterClasses
> 0000000000000000 w DF *UND* 0000000000000000 GLIBC_2.2.5 __cxa_finalize
> 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 getenv
> 0000000000000000 D *UND* 0000000000000000 mi_string_to_lvarchar
> 000000000000055c g DF .text 0000000000000046 Base igetenv
>
> Can anyone help with what I am missing here?
>
>
>
*******************************************************************************
> Forum Note: Use "Reply" to post a response in the discussion forum.
>
>
Works for me!
finderr 9794:
-9794 User-defined-routine load failed.
The following error message appears in the log:
Loading Routine routine_name procid = process_ID_number
The routine routine_name is not found in the module, possibly because
of a bad external name or the wrong module. The log message
log_message_number is probably -1, and error_message_string is the
database routine name as opposed to the symbol that was not found.
dlopen() might not be finding any of the undefined symbols in nm
/tmp/igetenv.so, so do an nm oninit |grep *** on every symbol above and see
which one's missing / wrong version.
As a side note, mi_string_to_lvarchar() does not like being passed NULL
pointers, so you have to improve on that code for the cases where getenv()
does not find the requested environmental variable.
--
Ciao,
Marco
______________________________________________________________________________
Marco Greco /UK /IBM Standard disclaimers apply!
Structured Query Scripting Language http://www.4glworks.com/sqsl.htm
4glworks http://www.4glworks.com
Informix on Linux http://www.4glworks.com/ifmxlinux.htm
Although the message is pretty specific and I doubt that it can be this,
it's worth checking...
Ther is one $ONCOFNIG parameter (sorry for not looking, but it's called
*LIBPATH* or *LD* or something like that that if setup, will prevent
loading libraries from paths not specified (for security purposes).
Regards.
On Thu, Aug 21, 2014 at 3:03 AM, RAY BURNS <ray.burns@velocityglobal.co.nz>
wrote:
> Im making my first foray into C UDRs. Im using Informix 12.10 (c1) and
> using Redhat 6.3.
>
> As a test I decided to write a simple C routine that returns an environment
> variable:
>
> #include "dmi/mi.h"
> #include "stdlib.h"
>
> mi_lvarchar *igetenv(mi_lvarchar *str,MI_FPARAM *fparam)
> {
>
> mi_lvarchar *lvarch_out;
>
> char *varname;
>
> char *varvalue;
>
> varname = mi_lvarchar_to_string(str);
>
> varvalue = getenv(varname);
>
> lvarch_out = mi_string_to_lvarchar(varvalue);
>
> return (lvarch_out);
> }
>
> I compiled it with :
> gcc I$INFOMRIXDIR/incl fPIC g c Wall DMI_SERVBUILD igetenv.c
> and
> gcc shared fPIC W1,--version-script=igetenv.exportlist o
> /tmp/igetenv.so
> igetenv.o lc
>
> I then registered it with:
>
> CREATE FUNCTION sql_igetenv(lvarchar)> RETURNS lvarchar
> with (NOT VARIANT,PARALLELIZABLE)
> EXTERNAL NAME "/tmp/igetenv.so(igetenv)"
> LANGUAGE c;
>
> And ran it with :
>
> execute function sql_igetenv('INFORMIXDIR')>
> I get the error message:
>
> Error: User Defined Routine (sql_igetenv) load failed. (State:S1000, Native
> Code: FFFFD9BE)
> And the log has the following:
> 13:52:09 ERROR: C Language Symbol <igetenv> (procid 513) not found in
> </tmp/igetenv.so>
> 13:52:09 (-1): ERROR: Loading Routine <sql_igetenv> procid=513
>
> If I use objdump I can see the routine is exported:
>
> root:2:/home/rayb>objdump -T /tmp/igetenv.so
>
> /tmp/igetenv.so: file format elf64-x86-64
>
> DYNAMIC SYMBOL TABLE:
> 0000000000000428 l d .init 0000000000000000 .init
> 0000000000000000 D *UND* 0000000000000000 mi_lvarchar_to_string
> 0000000000000000 w D *UND* 0000000000000000 __gmon_start__
> 0000000000000000 w D *UND* 0000000000000000 _Jv_RegisterClasses
> 0000000000000000 w DF *UND* 0000000000000000 GLIBC_2.2.5 __cxa_finalize
> 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 getenv
> 0000000000000000 D *UND* 0000000000000000 mi_string_to_lvarchar
> 000000000000055c g DF .text 0000000000000046 Base igetenv
>
> Can anyone help with what I am missing here?
>
>
>
>
*******************************************************************************
> Forum Note: Use "Reply" to post a response in the discussion forum.
>
>
--
Fernando Nunes
Portugal
http://informix-technology.blogspot.com
My email works... but I don't check it frequently...
--047d7b10c8474bcc3e050123cd57
original post: Although the message is pretty specific and I doubt that it can be this, it's worth checking... Ther is one $ONCOFNIG parameter (sorry for not looking, but it's called *LIBPATH* or *LD* or something like that that if setup, will prevent loading libraries from paths not specified (for security purposes). Regards. Response: I think you are thinking of DB_LIBRARY_PATH. Jacques Renaut IBM Informix Advanced Support APD Team
On 21/08/14 14:36, Fernando Nunes wrote:
> Although the message is pretty specific and I doubt that it can be this,
> it's worth checking...
> Ther is one $ONCOFNIG parameter (sorry for not looking, but it's called
> *LIBPATH* or *LD* or something like that that if setup, will prevent
> loading libraries from paths not specified (for security purposes).
>
> Regards.
>
> On Thu, Aug 21, 2014 at 3:03 AM, RAY BURNS <ray.burns@velocityglobal.co.nz>
> wrote:
>
>> Im making my first foray into C UDRs. Im using Informix 12.10 (c1) and
>> using Redhat 6.3.
>>
>> As a test I decided to write a simple C routine that returns an environment
>> variable:
>>
>> #include "dmi/mi.h"
>> #include "stdlib.h"
>>
>> mi_lvarchar *igetenv(mi_lvarchar *str,MI_FPARAM *fparam)
>> {
>>
>> mi_lvarchar *lvarch_out;
>>
>> char *varname;
>>
>> char *varvalue;
>>
>> varname = mi_lvarchar_to_string(str);
>>
>> varvalue = getenv(varname);
>>
>> lvarch_out = mi_string_to_lvarchar(varvalue);
>>
>> return (lvarch_out);
>> }
>>
>> I compiled it with :
>> gcc I$INFOMRIXDIR/incl fPIC g c Wall DMI_SERVBUILD igetenv.c
>> and
>> gcc shared fPIC W1,--version-script=igetenv.exportlist o
>> /tmp/igetenv.so
>> igetenv.o lc
>>
>> I then registered it with:
>>
>> CREATE FUNCTION sql_igetenv(lvarchar)>> RETURNS lvarchar
>> with (NOT VARIANT,PARALLELIZABLE)
>> EXTERNAL NAME "/tmp/igetenv.so(igetenv)"
>> LANGUAGE c;
>>
>> And ran it with :
>>
>> execute function sql_igetenv('INFORMIXDIR')>>
>> I get the error message:
>>
>> Error: User Defined Routine (sql_igetenv) load failed. (State:S1000, Native
>> Code: FFFFD9BE)
>> And the log has the following:
>> 13:52:09 ERROR: C Language Symbol <igetenv> (procid 513) not found in
>> </tmp/igetenv.so>
>> 13:52:09 (-1): ERROR: Loading Routine <sql_igetenv> procid=513
>>
>> If I use objdump I can see the routine is exported:
>>
>> root:2:/home/rayb>objdump -T /tmp/igetenv.so
>>
>> /tmp/igetenv.so: file format elf64-x86-64
>>
>> DYNAMIC SYMBOL TABLE:
>> 0000000000000428 l d .init 0000000000000000 .init
>> 0000000000000000 D *UND* 0000000000000000 mi_lvarchar_to_string
>> 0000000000000000 w D *UND* 0000000000000000 __gmon_start__
>> 0000000000000000 w D *UND* 0000000000000000 _Jv_RegisterClasses
>> 0000000000000000 w DF *UND* 0000000000000000 GLIBC_2.2.5 __cxa_finalize
>> 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 getenv
>> 0000000000000000 D *UND* 0000000000000000 mi_string_to_lvarchar
>> 000000000000055c g DF .text 0000000000000046 Base igetenv
>>
>> Can anyone help with what I am missing here?
>>
>
That's DB_LIBRARY_PATH - but that would result in a 9720, not in 9794, as in
>> Error: User Defined Routine (sql_igetenv) load failed. (State:S1000, Native
>> Code: FFFFD9BE)
--
Ciao,
Marco
______________________________________________________________________________
Marco Greco /UK /IBM Standard disclaimers apply!
Structured Query Scripting Language http://www.4glworks.com/sqsl.htm
4glworks http://www.4glworks.com
Informix on Linux http://www.4glworks.com/ifmxlinux.htm
Yes... that's the parameter. Thanks Marco and Jacques.
On Thu, Aug 21, 2014 at 2:52 PM, Marco Greco <marco@4glworks.com> wrote:
> On 21/08/14 14:36, Fernando Nunes wrote:
> > Although the message is pretty specific and I doubt that it can be this,
> > it's worth checking...
> > Ther is one $ONCOFNIG parameter (sorry for not looking, but it's called
> > *LIBPATH* or *LD* or something like that that if setup, will prevent
> > loading libraries from paths not specified (for security purposes).
> >
> > Regards.
> >
> > On Thu, Aug 21, 2014 at 3:03 AM, RAY BURNS <
> ray.burns@velocityglobal.co.nz>
> > wrote:
> >
> >> Im making my first foray into C UDRs. Im using Informix 12.10 (c1) and
> >> using Redhat 6.3.
> >>
> >> As a test I decided to write a simple C routine that returns an
> environment
> >> variable:
> >>
> >> #include "dmi/mi.h"
> >> #include "stdlib.h"
> >>
> >> mi_lvarchar *igetenv(mi_lvarchar *str,MI_FPARAM *fparam)
> >> {
> >>
> >> mi_lvarchar *lvarch_out;
> >>
> >> char *varname;
> >>
> >> char *varvalue;
> >>
> >> varname = mi_lvarchar_to_string(str);
> >>
> >> varvalue = getenv(varname);
> >>
> >> lvarch_out = mi_string_to_lvarchar(varvalue);
> >>
> >> return (lvarch_out);
> >> }
> >>
> >> I compiled it with :
> >> gcc I$INFOMRIXDIR/incl fPIC g c Wall DMI_SERVBUILD igetenv.c
> >> and
> >> gcc shared fPIC W1,--version-script=igetenv.exportlist o
> >> /tmp/igetenv.so
> >> igetenv.o lc
> >>
> >> I then registered it with:
> >>
> >> CREATE FUNCTION sql_igetenv(lvarchar)> >> RETURNS lvarchar
> >> with (NOT VARIANT,PARALLELIZABLE)
> >> EXTERNAL NAME "/tmp/igetenv.so(igetenv)"
> >> LANGUAGE c;
> >>
> >> And ran it with :
> >>
> >> execute function sql_igetenv('INFORMIXDIR')> >>
> >> I get the error message:
> >>
> >> Error: User Defined Routine (sql_igetenv) load failed. (State:S1000,
> Native
> >> Code: FFFFD9BE)
> >> And the log has the following:
> >> 13:52:09 ERROR: C Language Symbol <igetenv> (procid 513) not found in
> >> </tmp/igetenv.so>
> >> 13:52:09 (-1): ERROR: Loading Routine <sql_igetenv> procid=513
> >>
> >> If I use objdump I can see the routine is exported:
> >>
> >> root:2:/home/rayb>objdump -T /tmp/igetenv.so
> >>
> >> /tmp/igetenv.so: file format elf64-x86-64
> >>
> >> DYNAMIC SYMBOL TABLE:
> >> 0000000000000428 l d .init 0000000000000000 .init
> >> 0000000000000000 D *UND* 0000000000000000 mi_lvarchar_to_string
> >> 0000000000000000 w D *UND* 0000000000000000 __gmon_start__
> >> 0000000000000000 w D *UND* 0000000000000000 _Jv_RegisterClasses
> >> 0000000000000000 w DF *UND* 0000000000000000 GLIBC_2.2.5 __cxa_finalize
> >> 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 getenv
> >> 0000000000000000 D *UND* 0000000000000000 mi_string_to_lvarchar
> >> 000000000000055c g DF .text 0000000000000046 Base igetenv
> >>
> >> Can anyone help with what I am missing here?
> >>
> >
> That's DB_LIBRARY_PATH - but that would result in a 9720, not in 9794, as
> in
>
> >> Error: User Defined Routine (sql_igetenv) load failed. (State:S1000,
> Native
> >> Code: FFFFD9BE)
>
> --
> Ciao,
> Marco
>
>
______________________________________________________________________________
> Marco Greco /UK /IBM Standard disclaimers apply!
>
> Structured Query Scripting Language http://www.4glworks.com/sqsl.htm
> 4glworks http://www.4glworks.com
> Informix on Linux http://www.4glworks.com/ifmxlinux.htm
>
>
>
>
*******************************************************************************
> Forum Note: Use "Reply" to post a response in the discussion forum.
>
>
--
Fernando Nunes
Portugal
http://informix-technology.blogspot.com
My email works... but I don't check it frequently...
--089e013cbb8a2601bd0501241a53
I would suggest changing the name of your c udr function to rb_getenv. I
would avoid any fiction names starting with i, ifmx or ifx because of a
name space collision.
Sent from my iPhone
> On Aug 20, 2014, at 7:03 PM, "RAY BURNS" <ray.burns@velocityglobal.co.nz>
wrote:
>
> I’m making my first foray into C UDR’s. I’m using Informix 12.10 (c1) and
> using Redhat 6.3.
>
> As a test I decided to write a simple C routine that returns an
environment
> variable:
>
> #include "dmi/mi.h"
> #include "stdlib.h"
>
> mi_lvarchar *igetenv(mi_lvarchar *str,MI_FPARAM *fparam)
> {
>
> mi_lvarchar *lvarch_out;
>
> char *varname;
>
> char *varvalue;
>
> varname = mi_lvarchar_to_string(str);
>
> varvalue = getenv(varname);
>
> lvarch_out = mi_string_to_lvarchar(varvalue);
>
> return (lvarch_out);
> }
>
> I compiled it with :
> gcc –I$INFOMRIXDIR/incl –fPIC –g –c –Wall –DMI_SERVBUILD igetenv.c
> and
> gcc –shared –fPIC –W1,--version-script=igetenv.exportlist
–o /tmp/igetenv.so
> igetenv.o –lc
>
> I then registered it with:
>
> CREATE FUNCTION sql_igetenv(lvarchar)> RETURNS lvarchar
> with (NOT VARIANT,PARALLELIZABLE)
> EXTERNAL NAME "/tmp/igetenv.so(igetenv)"
> LANGUAGE c;
>
> And ran it with :
>
> execute function sql_igetenv('INFORMIXDIR')>
> I get the error message:
>
> Error: User Defined Routine (sql_igetenv) load failed. (State:S1000,
Native
> Code: FFFFD9BE)
> And the log has the following:
> 13:52:09 ERROR: C Language Symbol <igetenv> (procid 513) not found in
> </tmp/igetenv.so>
> 13:52:09 (-1): ERROR: Loading Routine <sql_igetenv> procid=513
>
> If I use objdump I can see the routine is exported:
>
> root:2:/home/rayb>objdump -T /tmp/igetenv.so
>
> /tmp/igetenv.so: file format elf64-x86-64
>
> DYNAMIC SYMBOL TABLE:
> 0000000000000428 l d .init 0000000000000000 .init
> 0000000000000000 D *UND* 0000000000000000 mi_lvarchar_to_string
> 0000000000000000 w D *UND* 0000000000000000 __gmon_start__
> 0000000000000000 w D *UND* 0000000000000000 _Jv_RegisterClasses
> 0000000000000000 w DF *UND* 0000000000000000 GLIBC_2.2.5 __cxa_finalize
> 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 getenv
> 0000000000000000 D *UND* 0000000000000000 mi_string_to_lvarchar
> 000000000000055c g DF .text 0000000000000046 Base igetenv
>
> Can anyone help with what I am missing here?
>
>
>
*******************************************************************************
> Forum Note: Use "Reply" to post a response in the discussion forum.
>
Easy for you to say!
--
Regards
Spokey
> On 21 Aug 2014, at 17:15, "John Miller iii" <miller3@us.ibm.com> wrote:
>
>
> I would suggest changing the name of your c udr function to rb_getenv. I
> would avoid any fiction names starting with i, ifmx or ifx because of a
> name space collision.
>
> Sent from my iPhone
>
> > On Aug 20, 2014, at 7:03 PM, "RAY BURNS" <ray.burns@velocityglobal.co.nz>
> wrote:
> >
> > I’m making my first foray into C UDR’s. I’m using Informix 12.10 (c1) and
> > using Redhat 6.3.
> >
> > As a test I decided to write a simple C routine that returns an
> environment
> > variable:
> >
> > #include "dmi/mi.h"
> > #include "stdlib.h"
> >
> > mi_lvarchar *igetenv(mi_lvarchar *str,MI_FPARAM *fparam)
> > {
> >
> > mi_lvarchar *lvarch_out;
> >
> > char *varname;
> >
> > char *varvalue;
> >
> > varname = mi_lvarchar_to_string(str);
> >
> > varvalue = getenv(varname);
> >
> > lvarch_out = mi_string_to_lvarchar(varvalue);
> >
> > return (lvarch_out);
> > }
> >
> > I compiled it with :
> > gcc –I$INFOMRIXDIR/incl –fPIC –g –c –Wall –DMI_SERVBUILD igetenv.c
> > and
> > gcc –shared –fPIC –W1,--version-script=igetenv.exportlist
> –o /tmp/igetenv.so
> > igetenv.o –lc
> >
> > I then registered it with:
> >
> > CREATE FUNCTION sql_igetenv(lvarchar)> > RETURNS lvarchar
> > with (NOT VARIANT,PARALLELIZABLE)
> > EXTERNAL NAME "/tmp/igetenv.so(igetenv)"
> > LANGUAGE c;
> >
> > And ran it with :
> >
> > execute function sql_igetenv('INFORMIXDIR')> >
> > I get the error message:
> >
> > Error: User Defined Routine (sql_igetenv) load failed. (State:S1000,
> Native
> > Code: FFFFD9BE)
> > And the log has the following:
> > 13:52:09 ERROR: C Language Symbol <igetenv> (procid 513) not found in
> > </tmp/igetenv.so>
> > 13:52:09 (-1): ERROR: Loading Routine <sql_igetenv> procid=513
> >
> > If I use objdump I can see the routine is exported:
> >
> > root:2:/home/rayb>objdump -T /tmp/igetenv.so
> >
> > /tmp/igetenv.so: file format elf64-x86-64
> >
> > DYNAMIC SYMBOL TABLE:
> > 0000000000000428 l d .init 0000000000000000 .init
> > 0000000000000000 D *UND* 0000000000000000 mi_lvarchar_to_string
> > 0000000000000000 w D *UND* 0000000000000000 __gmon_start__
> > 0000000000000000 w D *UND* 0000000000000000 _Jv_RegisterClasses
> > 0000000000000000 w DF *UND* 0000000000000000 GLIBC_2.2.5 __cxa_finalize
> > 0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 getenv
> > 0000000000000000 D *UND* 0000000000000000 mi_string_to_lvarchar
> > 000000000000055c g DF .text 0000000000000046 Base igetenv
> >
> > Can anyone help with what I am missing here?
> >
> >
> >
> *******************************************************************************
>
> > Forum Note: Use "Reply" to post a response in the discussion forum.
> >
>
>
>
*******************************************************************************
> Forum Note: Use "Reply" to post a response in the discussion forum.
>