Re: [PATCH] fix compile breakage caused by linux/smp.h header definition problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 23 Mar 2011 10:11:58 -0500 James Bottomley <James.Bottomley@xxxxxxx> wrote:

> The problem is this:
> 
>   CC      arch/parisc/kernel/asm-offsets.s
> In file included from include/linux/sched.h:71,
>                  from arch/parisc/kernel/asm-offsets.c:31:
> include/linux/smp.h:117: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'setup_nr_cpu_ids'
> include/linux/smp.h:118: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'smp_init'
>   HOSTLD  scripts/mod/modpost
> make[1]: *** [arch/parisc/kernel/asm-offsets.s] Error 1
> 
> It's caused by two __init attributes on function prototypes,

Heiko sent a patch for this which adds the #include.

> which
> shouldn't be there (__init should only mark functions not prototypes).

Nope.  We've had build failures in the past (on arm) where the
assembler generated a short-addressed branch to a function in the
"same" section but the linker discovered that it was too far away,
because the target landed in a different section.

By correctly marking the target as __init, the compiler says "ah,
that's far away" and generates the long-form branch addressing.

I think it only happened once, and it's obviously hard to hit, because
many such prototypes of __init functions are missing the __init tag.

And as the sections are laid out contiguously (true?), that kernel must
have been real close to having the same linkage error for branches
_within_ the main .text segment.

So it's all a bit fishy and marginal, but adding the __init increases
the chances of keeping Russell happy.

--
To unsubscribe from this list: send the line "unsubscribe linux-parisc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux SoC]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux