Bug 87684 - Relinking Oracle 9iR2 fails on RedHat 9
Summary: Relinking Oracle 9iR2 fails on RedHat 9
Keywords:
Status: CLOSED UPSTREAM
Alias: None
Product: Red Hat Linux
Classification: Retired
Component: libc
Version: 9
Hardware: athlon
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Jakub Jelinek
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2003-04-01 08:24 UTC by Shawn Walker
Modified: 2007-04-18 16:52 UTC (History)
2 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2003-04-07 12:00:48 UTC
Embargoed:


Attachments (Terms of Use)

Description Shawn Walker 2003-04-01 08:24:38 UTC
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20030225

Description of problem:
Relinking Oracle 9iR2 fails on RedHat 9

[root@swalker bin]# ./relink client_sharedlib
/opt/oracle/bin/genclntsh
/opt/oracle/lib/libclient9.a(kgupd0.o)(.text+0x74): In function `kgupdpg':
: undefined reference to `__ctype_b'
/opt/oracle/lib/libclient9.a(kgupd0.o)(.text+0xb9): In function `kgupdpg':
: undefined reference to `__ctype_b'
/opt/oracle/lib/libclient9.a(kgupd0.o)(.text+0x10a): In function `kgupdpg':
: undefined reference to `__ctype_b'
/opt/oracle/lib/libclient9.a(kgupd0.o)(.text+0x14a): In function `kgupdpg':
: undefined reference to `__ctype_b'
/opt/oracle/lib/libclient9.a(kudmi.o)(.text+0x3772): In function `kudmchs':
: undefined reference to `__ctype_toupper'
/opt/oracle/lib/libclient9.a(kudmi.o)(.text+0x3791): In function `kudmchs':
: undefined reference to `__ctype_b'
/opt/oracle/lib/libclient9.a(kudmi.o)(.text+0x37c2): In function `kudmchs':
: undefined reference to `__ctype_toupper'

....

And so on. Relinking under RedHat 8 worked fine. Are there different libraries
or a different way I need to relink it now?

Version-Release number of selected component (if applicable):


How reproducible:
Always

Steps to Reproduce:
1. edit gencltnsh script to link against -lgcc properly
2. run link script
3. see linker fail with undefined symbols to "__ctype_b", etc.
    

Additional info:

Comment 1 Shawn Walker 2003-04-01 21:23:37 UTC
The good news is that copying an installation of the client from an existing
RedHat 8.x system allows me to run the client and use the OCI libraries in my
local development (thankfully). This issue just prevents me from doing an
installation directly on my box using the Oracle installer. (Since I can't
relink the libraries).

Comment 2 Jakub Jelinek 2003-04-07 12:00:48 UTC
This is a bug in Oracle (the way they are relinking stuff is inherently error-prone,
they have been bitten by this already once (with IPC) and have not changed their
install process yet).
Please report this to Oracle instead.

Comment 3 Shawn Walker 2003-04-07 14:59:11 UTC
Thanks for the information, more of an FYI than anything. I figured as much, has
RedHat suggested a better linking solution to them?

Comment 4 Werner Puschitz 2003-06-05 04:28:26 UTC
But it's interesting that the RH 9 CDs I bought work fine with Oracle9iR2. These
CDS come with glibc-2.3.2-5. And the images that are available for download come
with glibc-2.3.2-11.9. The glibc-2.3.2-5 exports __ctype_b as compatibility
symbol, but glibc-2.3.2-11.9 doesn't. 

$ rpm -ql glibc-2.3.2-5 | grep libc.so
/lib/i686/libc.so.6
/lib/libc.so.6
/lib/tls/libc.so.6
$ nm -a /lib/i686/libc.so.6 | grep __ctype_b
001315f8 D __ctype_b
00022340 T __ctype_b_loc
$ nm -a /lib/libc.so.6 | grep __ctype_b
00133c58 D __ctype_b
000223a0 T __ctype_b_loc
$


$ rpm -ql glibc-2.3.2-11.9 | grep libc.so
/lib/i686/libc.so.6
/lib/libc.so.6
/lib/tls/libc.so.6
$ nm -a /lib/i686/libc.so.6 | grep __ctype_b
00131718 D __ctype_b
000223a0 T __ctype_b_loc
$ nm -a /lib/libc.so.6 | grep __ctype_b
00133d58 D __ctype_b
000223f0 T __ctype_b_loc
$

So why has Red Hat suddenly changed this in Red Hat 9 between glibc-2.3.2-5 and
glibc-2.3.2-11.9?

Werner


Comment 5 Werner Puschitz 2003-06-20 18:29:13 UTC
What's the status on this? Why has Red Hat suddenly changed this in Red Hat 9
between glibc-2.3.2-5 and glibc-2.3.2-11.9? And will Red Hat exports __ctype_b
as compatibility symbol again?

Or should I open a new ticket?

Werner

Comment 6 Michael Young 2003-06-20 21:19:22 UTC
I am sure I have seen the answer to this query elsewhere in bugzilla. The
reasoning (if I remember correctly) is that the __ctype_b isn't safe in the TLS
environment, so they removed it to discourage people from using it. Hence don't
expect it to reappear, though it is apparently quite easy to modify the glibc
source to turn the exporting back on.

Comment 7 Michael Young 2003-06-20 21:33:04 UTC
See http://lists.debian.org/debian-glibc/2002/debian-glibc-200210/msg00093.html
for information on how to modify the glibc source so the symbols work again.
Also the problem is with uselocale, not TLS.

Comment 8 Shawn Walker 2003-06-21 02:03:45 UTC
The point is that they're internal symbols and no sane application should be
using them anyway.


Note You need to log in before you can comment on or make changes to this bug.