[OpenAFS-devel] RH 7.1 spec file: archlist

Rudolph T Maceyko rtm@cert.org
Wed, 25 Jul 2001 13:50:01 -0400


Derek,

--On Wednesday, July 25, 2001 13:28:12 -0400 Derek Atkins 
<warlord@MIT.EDU> wrote:

> The SPEC file tries to work around this problem by building a
> different module for each architeture.

Well, it's not having an effect.  I'm looking at this now.  Please note 
that whatever the problem is, it's not specific to me, since I pointed 
out that the distributed openafs-kernel-1.1.1 RPM has the same modules 
for each architecture (and they're for i386):

>> This is from the openafs-kernel-1.1.1 RPM (straight from
>> openafs.org):
>>
>> $ pwd
>> /usr/vice/etc/modload
>> $ md5sum *.o | sort
>> 1c7d991de1682fb242bd014ff15df96e  libafs-2.4.2-2-athlon.o
>> 1c7d991de1682fb242bd014ff15df96e  libafs-2.4.2-2-i386.o
>> 1c7d991de1682fb242bd014ff15df96e  libafs-2.4.2-2-i586.o
>> 1c7d991de1682fb242bd014ff15df96e  libafs-2.4.2-2-i686.o
> [snip]
>>
>> Of 16 total files there are really only 4 distinct files.  Shouldn't
>> they be different?  The same thing happens when I build from the
>> source RPM.
>
> Yes, they should be different.  In particular, they should each be
> using a different set of kernel module symbols.  Can you take a look
> at /usr/vice/etc/modload/SymTable -- each module should be using a
> different set of symbols, so each module should be listed differently.
> Clearly this isn't working right.  I don't know why, but I'll try to
> look into it.  This is most certainly a bug, but I don't know whose
> bug.

[note: info below is for 2.4.3-12, but everything's the same about this 
problem for that kernel as it is for 2.4.2-2...]

$ rpm -qf /usr/src/linux-2.4.3/include/linux/modules/ksyms.ver
kernel-source-2.4.3-12
$ grep -A 1 -B 1 iget4 $_
#if  defined(__module__i686_up) || defined(__module__i586_up)
#define __ver_iget4     _ver_str(67b2bf7c)
#define iget4 _set_ver(iget4)
#elif  defined(__module__BOOT) || defined(__module__i386_up)
#define __ver_iget4     _ver_str(6fc4bdd5)
#define iget4 _set_ver(iget4)
#elif  defined(__module__enterprise)
#define __ver_iget4     _ver_str(4a17441e)
#define iget4 _set_ver(iget4)
#elif  defined(__module__athlon_up)
#define __ver_iget4     _ver_str(0ac9f202)
#define iget4 _set_ver(iget4)
#elif  defined(__module__i686_smp) || defined(__module__i586_smp)
#define __ver_iget4     _ver_str(c0971f1d)
#define iget4 _set_ver(iget4)
#elif  defined(__module__athlon_smp)
#define __ver_iget4     _ver_str(d7538340)
#define iget4 _set_ver(iget4)
#endif
$ uname -rm
$ fgrep iget4 /proc/ksyms
c0145ad0 iget4_R67b2bf7c
$ cat /usr/vice/etc/modload/SymTable
# SymTable, automatically generated
# symbol        version cpu     module

iget4   smp_7fec98bb    -       2.4.2-2-athlon.mp
iget4   f9ac5c53        -       2.4.2-2-athlon
iget4   smp_7fec98bb    -       2.4.2-2-i386.mp
iget4   f9ac5c53        -       2.4.2-2-i386
iget4   smp_7fec98bb    -       2.4.2-2-i586.mp
iget4   f9ac5c53        -       2.4.2-2-i586
iget4   smp_7fec98bb    -       2.4.2-2-i686.mp
iget4   f9ac5c53        -       2.4.2-2-i686
iget4   6fc4bdd5        -       2.4.3-12-athlon
iget4   6fc4bdd5        -       2.4.3-12-i386
iget4   6fc4bdd5        -       2.4.3-12-i586
iget4   6fc4bdd5        -       2.4.3-12-i686

Those'll only work on an i386.

I'll help look at this (since I'm running into it right now :-) but I'm 
kinda hoping that you'll figure it out first and send the solution 
since I'm not so familiar with the AFS build process as I ought to be 
at this point...  :-)

Thanks,
Rudy