Skip to contentSkip to conversation

module compiler version check still needed?

DISCUSSION Andi Kleen 6 participants 11 messages Aug 13, 2006 – Aug 14, 2006 Generic include/asm header files

lore
Share & tools
lore

Andi Kleen

author
#0 lore raw

Does anybody know of any reason why we would still need the compiler version check during module loading? AFAIK on i386 it was only needed to handle 2.95 (which got dropped) and on x86-64 it was never needed. Is there a need on any other architecture for it?

-Andi

#1 lore raw
Quoted 5 lines · Andi Kleen (on Sun, 13 Aug 2006 06:48:36 +0200) wrote:

Does anybody know of any reason why we would still need the compiler version check during module loading? AFAIK on i386 it was only needed to handle 2.95 (which got dropped) and on x86-64 it was never needed. Is there a need on any other architecture for it?

IA64 still needs the check. include/asm-ia64/spinlock.h generates different calls to the out of line spinlock handler, depending on the version of gcc.

author
#2 lore raw
Quoted 10 lines · Keith Owens
Quoted 5 lines · Andi Kleen (on Sun, 13 Aug 2006 06:48:36 +0200) wrote:

Does anybody know of any reason why we would still need the compiler version check during module loading? AFAIK on i386 it was only needed to handle 2.95 (which got dropped) and on x86-64 it was never needed. Is there a need on any other architecture for it?

IA64 still needs the check. include/asm-ia64/spinlock.h generates different calls to the out of line spinlock handler, depending on the version of gcc.

Thanks. But I guess it could be used to MODULE_ARCH_VERMAGIC for ia64 only then. If nobody else complains I will do that.

-Andi

#3 lore raw
Quoted 8 lines · Andi Kleen
Quoted 7 lines · Keith Owens
Quoted 5 lines · Andi Kleen (on Sun, 13 Aug 2006 06:48:36 +0200) wrote:

Does anybody know of any reason why we would still need the compiler version check during module loading? AFAIK on i386 it was only needed to handle 2.95 (which got dropped) and on x86-64 it was never needed. Is there a need on any other architecture for it?

Quoted 6 lines
Quoted 3 lines

IA64 still needs the check. include/asm-ia64/spinlock.h generates different calls to the out of line spinlock handler, depending on the version of gcc.

Thanks. But I guess it could be used to MODULE_ARCH_VERMAGIC for ia64 only then. If nobody else complains I will do that.

People might not complain until this is for some time in a released kernel.

Why don't you check yourself?

grep -r __GNUC__ *
grep -r cc-version *

There are over 100 results, but it's easy to spot the few requiring a deeper look.

Quoted 1 line

-Andi

cu
Adrian

Signature · 6 lines
    Gentoo kernels are 42 times more popular than SUSE kernels among
    KLive users  (a service by SUSE contractor Andrea Arcangeli that
    gathers data about kernels from many users worldwide).

       There are three kinds of lies: Lies, Damn Lies, and Statistics.
                                                    Benjamin Disraeli
#4 lore raw
In reply to Andi Kleen
Quoted 7 lines · Andi Kleen
Quoted 3 lines · Keith Owens

IA64 still needs the check. include/asm-ia64/spinlock.h generates different calls to the out of line spinlock handler, depending on the version of gcc.

Thanks. But I guess it could be used to MODULE_ARCH_VERMAGIC for ia64 only then. If nobody else complains I will do that.

Will we remember to add the check back in when we introduce new dependencies on compiler versions?

author
#5 lore raw
Quoted 11 lines · Matthew Wilcox
Quoted 7 lines · Andi Kleen
Quoted 3 lines · Keith Owens

IA64 still needs the check. include/asm-ia64/spinlock.h generates different calls to the out of line spinlock handler, depending on the version of gcc.

Thanks. But I guess it could be used to MODULE_ARCH_VERMAGIC for ia64 only then. If nobody else complains I will do that.

Will we remember to add the check back in when we introduce new dependencies on compiler versions?

If something breaks it be readded. I see it only as a special hack for some extraordinary, and hopefully these problems won't happen again.

-Andi

#6 lore raw
Quoted 6 lines · Andi Kleen
Quoted 3 lines

Will we remember to add the check back in when we introduce new dependencies on compiler versions?

If something breaks it be readded. I see it only as a special hack for some extraordinary, and hopefully these problems won't happen again.

What we should add should be some kind of cabability mask. There is no need to require that modules are built with exactly the same compiler as the kernel when it is only a very few compiler versions that causes layout/ABI differences.

Sam

author
#7 lore raw
Quoted 8 lines · Sam Ravnborg
Quoted 6 lines · Andi Kleen
Quoted 3 lines

Will we remember to add the check back in when we introduce new dependencies on compiler versions?

If something breaks it be readded. I see it only as a special hack for some extraordinary, and hopefully these problems won't happen again.

What we should add should be some kind of cabability mask.

It would be probably overkill.

Quoted 3 lines

There is no need to require that modules are built with exactly the same compiler as the kernel when it is only a very few compiler versions that causes layout/ABI differences.

On i386/x86-64 that's not the case anymore as far as I know.

-Andi

#8 lore raw
In reply to Andi Kleen
Quoted 4 lines · Andi Kleen

Does anybody know of any reason why we would still need the compiler version check during module loading? AFAIK on i386 it was only needed to handle 2.95 (which got dropped) and on x86-64 it was never needed. Is there a need on any other architecture for it?

is there any harm in doing this check? Checking this for sure rules out MANY nasty and really hard to debug corner cases... and there shouldn't be any valid reason for doing this ever anyway...

author
#9 lore raw
Quoted 7 lines · Arjan van de Ven
Quoted 4 lines · Andi Kleen

Does anybody know of any reason why we would still need the compiler version check during module loading? AFAIK on i386 it was only needed to handle 2.95 (which got dropped) and on x86-64 it was never needed. Is there a need on any other architecture for it?

is there any harm in doing this check?

Yes, it can cause lots of trouble when you try to compile external modules on a different system with different compiler than on the system where the kernel was compiled.

e.g. you upgrade a distribution kernel but now you can compile modules for it because the new rpm was compiled with a newer compiler.

Happens to me regularly.

-Andi

#10 lore raw
Quoted 6 lines · Andi Kleen

...
e.g. you upgrade a distribution kernel but now you can compile modules for it because the new rpm was compiled with a newer compiler.

Happens to me regularly.

Regularly means once a year?

Quoted 1 line

-Andi

cu
Adrian

Signature · 6 lines
    Gentoo kernels are 42 times more popular than SUSE kernels among
    KLive users  (a service by SUSE contractor Andrea Arcangeli that
    gathers data about kernels from many users worldwide).

       There are three kinds of lies: Lies, Damn Lies, and Statistics.
                                                    Benjamin Disraeli