Bug 143603

Summary: libresolv.so is missing res_mkquery symbol on x86_64
Product: Red Hat Enterprise Linux 3 Reporter: Dag Wieers <dag>
Component: glibcAssignee: Jakub Jelinek <jakub>
Status: CLOSED NOTABUG QA Contact: Brian Brock <bbrock>
Severity: medium Docs Contact:
Priority: medium    
Version: 3.0   
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2004-12-22 16:27:34 EST Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Description Dag Wieers 2004-12-22 14:38:31 EST
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.3)
Gecko/20041020 Galeon/1.3.18

Description of problem:
The libresolv.so library in the glibc package on x86_64 is missing the
res_mkquery symbol which breaks configure scripts on x86_64. This is
true for FC3/x86_64, FC2/x86_64 and EL3/x86_64.

[root@lisse rpms]# objdump -x /dar/chroot/fc3a/usr/lib64/libresolv.so
 | grep _mkq
0000000000000000 l    df *ABS*  0000000000000000             
0000000000007a50 g     F .text  00000000000000c4             

[root@lisse rpms]# objdump -x /dar/chroot/fc3i/usr/lib/libresolv.so  |
grep _mkq
00000000 l    df *ABS*  00000000              res_mkquery.c
00006a20  w    F .text  00000099              res_mkquery
00006a20 g     F .text  00000099              __res_mkquery

[root@lisse rpms]# objdump -x /dar/chroot/el3a/usr/lib64/libresolv.so
 | grep _mkq
0000000000000000 l    df *ABS*  0000000000000000             
0000000000007830 g     F .text  00000000000000c7             

[root@lisse rpms]# objdump -x /dar/chroot/el3i/usr/lib/libresolv.so  |
grep _mkq
00000000 l    df *ABS*  00000000              res_mkquery.c
000065f0  w    F .text  0000009f              res_mkquery
000065f0 g     F .text  0000009f              __res_mkquery

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

How reproducible:

Steps to Reproduce:

Additional info:
Comment 1 Jakub Jelinek 2004-12-22 16:27:34 EST
That's on purpose.  res_mkquery is in i386 etc. libresolv.so only for compatibility reasons.  For newer architectures (e.g. x86_64, s390x or powerpc64)
such compatibility is not needed, therefore just __res_mkquery is provided.
Comment 2 Dag Wieers 2004-12-22 16:36:52 EST
Ok. What is the proper fix for programs (or configure scripts) that require
res_mkquery ? Replacing res_mkquery by __res_mkquery makes it work on 64bit,
although I don't think I understand why that is required. Do you have a link to
some more information about this (Google wasn't much of a help).

Thanks in advance.
Comment 3 Jakub Jelinek 2004-12-22 17:50:55 EST
If you #include <resolv.h>, res_mkquery will be __res_mkquery (it is a #define).
Configure tests that test for res_mkquery etc. without #include <resolv.h> are
just broken.