Operating System - Linux
1748205 Members
4640 Online
108759 Solutions
New Discussion юеВ

HPUX-IA64 unintended symbols ...

 
Fred Shen
New Member

HPUX-IA64 unintended symbols ...

Hi,
In our C/C++ binaries we have these symbols
[456] | 0| 0|NOTYP|GLOB |0| UNDEF|__memcmp_ver
[909] | 0| 0|NOTYP|GLOB |0| UNDEF|__memmove_ver
[473] | 0| 0|NOTYP|GLOB |0| UNDEF|__memset_ver
[594] | 0| 0|NOTYP|GLOB |0| UNDEF|__strcat_ver
[953] | 0| 0|NOTYP|GLOB |0| UNDEF|__strchr_ver
[581] | 0| 0|NOTYP|GLOB |0| UNDEF|__strcmp_ver
[758] | 0| 0|NOTYP|GLOB |0| UNDEF|__strcpy_ver
[938] | 0| 0|NOTYP|GLOB |0| UNDEF|__strlen_ver
[602] | 0| 0|NOTYP|GLOB |0| UNDEF|__strncat_ver
[603] | 0| 0|NOTYP|GLOB |0| UNDEF|__strncmp_ver
[774] | 0| 0|NOTYP|GLOB |0| UNDEF|__strncpy_ver
[961] | 0| 0|NOTYP|GLOB |0| UNDEF|__strrchr_ver

as undefined. We dont have these symbols in our source code, so I beleive they are added by the complier/linker. We use aCC to build C++ apps and cc to build C apps. My question is why these symbols are added to the binaries by the linker.
I believe these symbols are supposed to be resolved in libc.so.1. However, we have hpux-ia64 systems that have libc.so.1 that cannot resolve these symbols. My next question is what version of libc.so.1 (via what patch level) is required to resolve these symbols.

Thanks.
8 REPLIES 8
Dennis Handly
Acclaimed Contributor

Re: HP-UX-IA64 unsat libcres symbols

These unsats come from the functions in libcres.a. If you get these, you have an obsolete compiler. And yes, they are defined in libc.so.1.

If you get these unsats, it means you are illegally trying to run a 11.23 application on 11.22. Why are you trying to do this?

Fred Shen
New Member

Re: HPUX-IA64 unintended symbols ...

Thanks.
Please enlighten me, what is unstats?

I have test program that only has 2 lines

#include
int main ()
{
char* str1 = "";
strcat (str1,"aaa");
}


So I run

cc test.c -o test

and nm test | grep _ver

I will get this

[46] | 0| 0|NOTYP|GLOB |0| UNDEF|__strcat_ver


The cc version is

HP aC++/C for Itanium(R)-based systems B3910B A.05.50 [May 15 2003]

We have some of the HPUX-IA64 systems here whose libc dont have these symbols defined. These systems are 11.23

For example
uname -a
HP-UX tweca1 B.11.23 U ia64 1606263782 unlimited-user license

and the libc.so.1 version

$ B.11.23_ic66 May 9 2003 16:56:26 $


Dennis Handly
Acclaimed Contributor

Re: HP-UX-IA64 unsat libcres symbols

>what is unsats?

Unsats are unsatisfied/undefined symbols.

>A.05.50 [May 15 2003]

This is the original 11.23 version and no longer supported. The current version is A.06.12.
http://h21007.www2.hp.com/dspp/tech/tech_TechSoftwareDetailPage_IDX/1,1703,1743,00.html

>and the libc.so.1 version: $ B.11.23_ic66 May 9 2003 16:56:26 $

This is a prereleased version. Where did you get it? The official version has:
$ B11.23_LR Aug 29 2003 20:48:35 $
This change in libc/libcres was made between these dates.

I have no idea if you can install the latest libc patch on your system, PHCO_34599.

Fred Shen
New Member

Re: HPUX-IA64 unintended symbols ...

Thank you again.

Going back to this statement
"If you get these unsats, it means you are illegally trying to run a 11.23 application on 11.22. Why are you trying to do this? "

Does this mean application built on 11.23 will not work on 11.11? How about 11.31?

Our application is supposed to run on 11.11, 11.23 and 11.31 and we are building it on 11.23 with the complier and libc version above. Is that a problem? Thanks.
Fred Shen
New Member

Re: HPUX-IA64 unintended symbols ...

Also how about this libc

$ B.11.23_ic70 Jul 11 2003 11:44:02 $

Is this a prereleased version too?
Dennis Handly
Acclaimed Contributor

Re: HPUX-IA64 unsat libcres symbols

>Does this mean application built on 11.23 will not work on 11.11? How about 11.31?

You can only move forward, so 11.31 is fine.
Note: You can't run IPF applications on PA, so you can't go to 11.11.

>Our application is supposed to run on 11.11, 11.23 and 11.31 and we are building it on 11.23 with the compiler and libc version above. Is that a problem?

Yes, a big problem.
If you intend to run on all 3 OS versions, you would have to build on PA 11.11 and you would only be able to use Aries on IPF systems. So your application better not be performance sensitive.

>Also how about this libc: $ B.11.23_ic70 Jul 11 2003 11:44:02 $
>Is this a prereleased version too?

The previous answer is still valid:
The official version has:
$ B11.23_LR Aug 29 2003 20:48:35 $

Fred Shen
New Member

Re: HPUX-IA64 unintended symbols ...

Thank you again.

One more question. Is there way we can tell what version of libc has been linked into the apps? This is significant becuase the version of it needs to be matched by the user's system. Thanks.

Dennis Handly
Acclaimed Contributor

Re: HP-UX-IA64 unsat libcres symbols

>Is there way we can tell what version of libc has been linked into the apps?

No, since libc.so on IPF is shared, you can't tell what version the application was linked with. I suppose you could check or ask your end user to make sure they have a patch that is the same or newer than the one you linked with.