[1/2] usb: host: xhci-omap: fix build break

Message ID 1443727338-29320-1-git-send-email-balbi@ti.com
State Accepted
Commit 9dc522249a2b5aa59bcb2f022ce5844434ac81bc
Headers show

Commit Message

Felipe Balbi Oct. 1, 2015, 7:22 p.m.
Fix the following build break:

drivers/usb/host/xhci-omap.c:35:5: error: ‘board_usb_init’ aliased to external symbol ‘__board_usb_init’
 int board_usb_init(int index, enum usb_init_type init)
      ^

Signed-off-by: Felipe Balbi <balbi@ti.com>
---
 drivers/usb/host/xhci-omap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Felipe Balbi Oct. 16, 2015, 8:09 p.m. | #1
Felipe Balbi <balbi@ti.com> writes:
> Fix the following build break:
>
> drivers/usb/host/xhci-omap.c:35:5: error: ‘board_usb_init’ aliased to external symbol ‘__board_usb_init’
>  int board_usb_init(int index, enum usb_init_type init)
>       ^
>
> Signed-off-by: Felipe Balbi <balbi@ti.com>

ping

> ---
>  drivers/usb/host/xhci-omap.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/host/xhci-omap.c b/drivers/usb/host/xhci-omap.c
> index 104e7a7282cf..fd19f79f0fc5 100644
> --- a/drivers/usb/host/xhci-omap.c
> +++ b/drivers/usb/host/xhci-omap.c
> @@ -27,7 +27,7 @@ DECLARE_GLOBAL_DATA_PTR;
>  
>  static struct omap_xhci omap;
>  
> -inline int __board_usb_init(int index, enum usb_init_type init)
> +__weak int __board_usb_init(int index, enum usb_init_type init)
>  {
>  	return 0;
>  }
> -- 
> 2.5.3
>
Tom Rini Oct. 16, 2015, 9:35 p.m. | #2
On Fri, Oct 16, 2015 at 03:09:02PM -0500, Felipe Balbi wrote:
> Felipe Balbi <balbi@ti.com> writes:
> > Fix the following build break:
> >
> > drivers/usb/host/xhci-omap.c:35:5: error: ‘board_usb_init’ aliased to external symbol ‘__board_usb_init’
> >  int board_usb_init(int index, enum usb_init_type init)
> >       ^
> >
> > Signed-off-by: Felipe Balbi <balbi@ti.com>
> 
> ping

Where / how do I trigger this (or 2/2) ?
Felipe Balbi Oct. 16, 2015, 10:08 p.m. | #3
Tom Rini <trini@konsulko.com> writes:

> On Fri, Oct 16, 2015 at 03:09:02PM -0500, Felipe Balbi wrote:
>> Felipe Balbi <balbi@ti.com> writes:
>> > Fix the following build break:
>> >
>> > drivers/usb/host/xhci-omap.c:35:5: error: ‘board_usb_init’ aliased to external symbol ‘__board_usb_init’
>> >  int board_usb_init(int index, enum usb_init_type init)
>> >       ^
>> >
>> > Signed-off-by: Felipe Balbi <balbi@ti.com>
>> 
>> ping
>
> Where / how do I trigger this (or 2/2) ?

GCC 5
Peter Robinson Oct. 21, 2015, 8:37 a.m. | #4
>>> Felipe Balbi <balbi@ti.com> writes:
>>> > Fix the following build break:
>>> >
>>> > drivers/usb/host/xhci-omap.c:35:5: error: ‘board_usb_init’ aliased to external symbol ‘__board_usb_init’
>>> >  int board_usb_init(int index, enum usb_init_type init)
>>> >       ^
>>> >
>>> > Signed-off-by: Felipe Balbi <balbi@ti.com>
>>>
>>> ping
>>
>> Where / how do I trigger this (or 2/2) ?
>
> GCC 5

I'm seeing exactly the same issue with gcc5 on Fedora, I've also seen
another issue with gcc5 with strcat for panda board variant names
which we hacked around [1].

Peter

[1] http://pkgs.fedoraproject.org/cgit/uboot-tools.git/tree/0009-ARM-fix-pandaboard-es-and-a4-revision-ID.patch?h=f23
Tom Rini Oct. 21, 2015, 11:55 a.m. | #5
On Wed, Oct 21, 2015 at 09:37:13AM +0100, Peter Robinson wrote:
> >>> Felipe Balbi <balbi@ti.com> writes:
> >>> > Fix the following build break:
> >>> >
> >>> > drivers/usb/host/xhci-omap.c:35:5: error: ‘board_usb_init’ aliased to external symbol ‘__board_usb_init’
> >>> >  int board_usb_init(int index, enum usb_init_type init)
> >>> >       ^
> >>> >
> >>> > Signed-off-by: Felipe Balbi <balbi@ti.com>
> >>>
> >>> ping
> >>
> >> Where / how do I trigger this (or 2/2) ?
> >
> > GCC 5
> 
> I'm seeing exactly the same issue with gcc5 on Fedora, I've also seen
> another issue with gcc5 with strcat for panda board variant names
> which we hacked around [1].

So, I want to say that GCC 5.x (or at least 5.1) will be a known good
compiler for v2016.01.  I know that Fedora folks have been doing it for
a while (yay, thanks) but I also know that Felipe has seen a few
problems using some other (I think..) gcc-5 toolchain.  So what I'm
doing is getting the Fedora gcc-5 packages installed now, along with a
Debian/unstable chroot where I can also get at all of their cross tools.

> [1] http://pkgs.fedoraproject.org/cgit/uboot-tools.git/tree/0009-ARM-fix-pandaboard-es-and-a4-revision-ID.patch?h=f23

That's interesting.  I don't know why (and I would worry about) strcat
failing, but since it's two string literals can't we just do a simple +?
Or is my lack of coffee just yet causing me to forget that C is not
every-other-language...
Peter Robinson Oct. 21, 2015, 12:24 p.m. | #6
On Wed, Oct 21, 2015 at 12:55 PM, Tom Rini <trini@konsulko.com> wrote:
> On Wed, Oct 21, 2015 at 09:37:13AM +0100, Peter Robinson wrote:
>> >>> Felipe Balbi <balbi@ti.com> writes:
>> >>> > Fix the following build break:
>> >>> >
>> >>> > drivers/usb/host/xhci-omap.c:35:5: error: ‘board_usb_init’ aliased to external symbol ‘__board_usb_init’
>> >>> >  int board_usb_init(int index, enum usb_init_type init)
>> >>> >       ^
>> >>> >
>> >>> > Signed-off-by: Felipe Balbi <balbi@ti.com>
>> >>>
>> >>> ping
>> >>
>> >> Where / how do I trigger this (or 2/2) ?
>> >
>> > GCC 5
>>
>> I'm seeing exactly the same issue with gcc5 on Fedora, I've also seen
>> another issue with gcc5 with strcat for panda board variant names
>> which we hacked around [1].
>
> So, I want to say that GCC 5.x (or at least 5.1) will be a known good
> compiler for v2016.01.  I know that Fedora folks have been doing it for
> a while (yay, thanks) but I also know that Felipe has seen a few
> problems using some other (I think..) gcc-5 toolchain.  So what I'm
> doing is getting the Fedora gcc-5 packages installed now, along with a
> Debian/unstable chroot where I can also get at all of their cross tools.
>
>> [1] http://pkgs.fedoraproject.org/cgit/uboot-tools.git/tree/0009-ARM-fix-pandaboard-es-and-a4-revision-ID.patch?h=f23
>
> That's interesting.  I don't know why (and I would worry about) strcat
> failing, but since it's two string literals can't we just do a simple +?
> Or is my lack of coffee just yet causing me to forget that C is not
> every-other-language...

It's more pointing it out that it worked for gcc < 5 and we saw this
regression with u-boot (numerous versions) built with gcc5, I'm not
sure why the panda board implementation did it like it did as opposed
to any other way, just worth looking out for those sorts of issues
elsewhere in the code.

Peter
Tom Rini Oct. 21, 2015, 1:09 p.m. | #7
On Wed, Oct 21, 2015 at 01:24:42PM +0100, Peter Robinson wrote:
> On Wed, Oct 21, 2015 at 12:55 PM, Tom Rini <trini@konsulko.com> wrote:
> > On Wed, Oct 21, 2015 at 09:37:13AM +0100, Peter Robinson wrote:
> >> >>> Felipe Balbi <balbi@ti.com> writes:
> >> >>> > Fix the following build break:
> >> >>> >
> >> >>> > drivers/usb/host/xhci-omap.c:35:5: error: ‘board_usb_init’ aliased to external symbol ‘__board_usb_init’
> >> >>> >  int board_usb_init(int index, enum usb_init_type init)
> >> >>> >       ^
> >> >>> >
> >> >>> > Signed-off-by: Felipe Balbi <balbi@ti.com>
> >> >>>
> >> >>> ping
> >> >>
> >> >> Where / how do I trigger this (or 2/2) ?
> >> >
> >> > GCC 5
> >>
> >> I'm seeing exactly the same issue with gcc5 on Fedora, I've also seen
> >> another issue with gcc5 with strcat for panda board variant names
> >> which we hacked around [1].
> >
> > So, I want to say that GCC 5.x (or at least 5.1) will be a known good
> > compiler for v2016.01.  I know that Fedora folks have been doing it for
> > a while (yay, thanks) but I also know that Felipe has seen a few
> > problems using some other (I think..) gcc-5 toolchain.  So what I'm
> > doing is getting the Fedora gcc-5 packages installed now, along with a
> > Debian/unstable chroot where I can also get at all of their cross tools.
> >
> >> [1] http://pkgs.fedoraproject.org/cgit/uboot-tools.git/tree/0009-ARM-fix-pandaboard-es-and-a4-revision-ID.patch?h=f23
> >
> > That's interesting.  I don't know why (and I would worry about) strcat
> > failing, but since it's two string literals can't we just do a simple +?
> > Or is my lack of coffee just yet causing me to forget that C is not
> > every-other-language...
> 
> It's more pointing it out that it worked for gcc < 5 and we saw this
> regression with u-boot (numerous versions) built with gcc5, I'm not
> sure why the panda board implementation did it like it did as opposed
> to any other way, just worth looking out for those sorts of issues
> elsewhere in the code.

OK, pulling up strcat(3) and I agree the current code is not correct.
And a quick git grep shows that's the only abuse.  I see the patch in
question in my queue so I'll make sure to apply it.  Thanks!

Patch

diff --git a/drivers/usb/host/xhci-omap.c b/drivers/usb/host/xhci-omap.c
index 104e7a7282cf..fd19f79f0fc5 100644
--- a/drivers/usb/host/xhci-omap.c
+++ b/drivers/usb/host/xhci-omap.c
@@ -27,7 +27,7 @@  DECLARE_GLOBAL_DATA_PTR;
 
 static struct omap_xhci omap;
 
-inline int __board_usb_init(int index, enum usb_init_type init)
+__weak int __board_usb_init(int index, enum usb_init_type init)
 {
 	return 0;
 }