Re: OMAP34xx

Tony Lindgren
2012-02-08T05:32:16Z

* Russell King - ARM Linux <linux@arm.linux.org.uk> [120207 01:39]:
> On Mon, Feb 06, 2012 at 10:13:15AM -0800, Tony Lindgren wrote:
> > FYI, I'm now seeing the same warning as Igor posted with
> > omap2plus_defconfig using the same compiler as Igor:
> >
> > gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202)
> >
> > Still no other warnings though.
>
> If you're not getting the twl4030_power_init() you still need to
> investigate why. For example, are you sure you're building with
> CONFIG_TWL4030_POWER enabled?

Yes it's enabled in omap2plus_defconfig. Same results with one
of your defconfigs. Below is the output from compiler above.

> Secondly, check what you're actually getting:
>
> $ arm-linux-objdump -t ../build/omap4/drivers/mfd/twl4030-power.o | grep twl4030_power_init
> 000000c0 g F .init.text 0000066c twl4030_power_init

00000650 g F .init.text 000001a0 twl4030_power_init

> $ arm-linux-objdump -r ../build/omap4/drivers/mfd/twl-core.o | grep 'twl4030_power_init\|^RELOC'
> RELOCATION RECORDS FOR [.text]:
> RELOCATION RECORDS FOR [.init.text]:
> RELOCATION RECORDS FOR [.exit.text]:
> RELOCATION RECORDS FOR [.devinit.text]:
> 00000258 R_ARM_PC24 twl4030_power_init

RELOCATION RECORDS FOR [.text]:
RELOCATION RECORDS FOR [.init.text]:
RELOCATION RECORDS FOR [.exit.text]:
RELOCATION RECORDS FOR [.devinit.text]:
000001c8 R_ARM_CALL twl4030_power_init
RELOCATION RECORDS FOR [.ARM.exidx]:
RELOCATION RECORDS FOR [.ARM.exidx.init.text]:
RELOCATION RECORDS FOR [.ARM.exidx.exit.text]:
RELOCATION RECORDS FOR [.ARM.exidx.devinit.text]:
RELOCATION RECORDS FOR [___kcrctab+twl_i2c_write]:
RELOCATION RECORDS FOR [___ksymtab+twl_i2c_write_u8]:
RELOCATION RECORDS FOR [___ksymtab+twl_i2c_write]:
RELOCATION RECORDS FOR [___ksymtab+twl_rev]:
RELOCATION RECORDS FOR [___ksymtab_gpl+twl_get_version]:
RELOCATION RECORDS FOR [___kcrctab_gpl+twl_get_type]:
RELOCATION RECORDS FOR [___ksymtab+twl_i2c_read]:
RELOCATION RECORDS FOR [___ksymtab_gpl+twl_get_type]:
RELOCATION RECORDS FOR [___kcrctab+twl_rev]:
RELOCATION RECORDS FOR [___kcrctab+twl_i2c_write_u8]:
RELOCATION RECORDS FOR [___kcrctab+twl_i2c_read_u8]:
RELOCATION RECORDS FOR [___ksymtab+twl_i2c_read_u8]:
RELOCATION RECORDS FOR [___kcrctab+twl_i2c_read]:
RELOCATION RECORDS FOR [___kcrctab_gpl+twl_get_version]:
RELOCATION RECORDS FOR [.data]:
RELOCATION RECORDS FOR [.initcall4.init]:
RELOCATION RECORDS FOR [.exitcall.exit]:
RELOCATION RECORDS FOR [.debug_info]:
RELOCATION RECORDS FOR [.debug_line]:
RELOCATION RECORDS FOR [.debug_frame]:
RELOCATION RECORDS FOR [.debug_loc]:
RELOCATION RECORDS FOR [.debug_pubnames]:
RELOCATION RECORDS FOR [.debug_aranges]:
RELOCATION RECORDS FOR [.debug_ranges]:

> and from this we can see that the compiler is doing what they're told
> wrt the sections the code is being placed into, and secondly that the
> section mismatch tool is working correctly.
>
> So, if you have all that, but you're still not getting this mismatch
> warning:
>
> WARNING: drivers/mfd/built-in.o(.devinit.text+0x258): Section mismatch in reference from the function twl_probe() to the function .init.text:twl4030_power_init()
> The function __devinit twl_probe() references
> a function __init twl4030_power_init().
> If twl4030_power_init is only used by twl_probe then
> annotate twl4030_power_init with a matching annotation.
>
> then, quite simply, your build setup is broken and can't be relied
> upon to give proper warnings.

Right, no luck yet getting crosstool-ng built plain gcc working..
Yesterday ftp.gnu.org was down and the script is using that. Have
to continue with that when I get a chance.

> As I mentioned previously, there's no way that the compiler could
> optimize this to get rid of this warning as the function definition is
> in a completely separate file to where it's being called.

Yes it seems that there's something wrong..

Tony