All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
To: Arnd Bergmann <arnd@arndb.de>, David Laight <David.Laight@aculab.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Linux-Renesas <linux-renesas-soc@vger.kernel.org>,
	"# 3.4.x" <stable@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux Kbuild mailing list <linux-kbuild@vger.kernel.org>,
	Masahiro Yamada <yamada.masahiro@socionext.com>
Subject: Re: [PATCH] kbuild: fix kernel/bounds.c 'W=1' warning
Date: Fri, 5 Oct 2018 10:27:06 +0100	[thread overview]
Message-ID: <56169e56-2cbd-dc70-e324-44f8e511a1e7@ideasonboard.com> (raw)
In-Reply-To: <CAK8P3a0ZWfjGfpCRzoVw9vg=xg2ov2c7et_qTi5mzd81_RParQ@mail.gmail.com>

On 05/10/18 10:07, Arnd Bergmann wrote:
> On Fri, Oct 5, 2018 at 10:52 AM David Laight <David.Laight@aculab.com> wrote:
>>
>> From: Arnd Bergmann
>>> Sent: 05 October 2018 09:33
>>>
>>> Building any configuration with 'make W=1' produces a warning:
>>>
>>> kernel/bounds.c:16:6: warnign: no previous prototype for 'foo' [-Wmissing-prototypes]
>>>
>>> When also passing -Werror, this prevents us from building any
>>> other files. Nobody ever calls the function, but we can't make
>>> it 'static' either since we want the compiler output.
>>>
>>> Calling it 'main' instead however avoids the warning, because gcc
>>> does not insist on having a declaration for main.
>>
>> Ugg.
>> main() might be special in other ways too.
>> It wouldn't surprise me if some linkers don't do special stuff for it.

I worried about this but didn't think it would be too much of an issue.
But perhaps we should check...

<compile bounds.s in both configurations> as bounds.s.foo and bounds.s.main:


 diff -Nurp bounds.s.*
--- bounds.s.foo        2018-10-05 10:20:53.269941404 +0100
+++ bounds.s.main       2018-10-05 10:20:31.375891260 +0100
@@ -108,11 +108,12 @@

        .global _mcount
 #NO_APP
+       .section        .text.startup,"ax",@progbits
        .align  2
        .p2align 3,,7
-       .global foo
-       .type   foo, %function
-foo:
+       .global main
+       .type   main, %function
+main:
        stp     x29, x30, [sp, -16]!    //,,,
        add     x29, sp, 0      //,,
 // /home/linuxembedded/iob/renesas/vsp1/sources/linux/kernel/bounds.c:17: {
@@ -139,10 +140,11 @@ foo:

 .ascii "->SPINLOCK_SIZE 56 sizeof(spinlock_t)" //
 // 0 "" 2
-// /home/linuxembedded/iob/renesas/vsp1/sources/linux/kernel/bounds.c:26: }
+// /home/linuxembedded/iob/renesas/vsp1/sources/linux/kernel/bounds.c:28: }
 #NO_APP
+       mov     w0, 0   //,
        ldp     x29, x30, [sp], 16      //,,,
        ret
-       .size   foo, .-foo
+       .size   main, .-main
        .ident  "GCC: (Ubuntu/Linaro 7.3.0-16ubuntu3) 7.3.0"
        .section        .note.GNU-stack,"",@progbits



compiled with aarch64-linux-gnu-gcc, and with no debug enabled.

Other than the entry point rename (and section name) and the return
value being added, I can't see anything problematic here.

And as far as I know - this file gets processed after to extract
definitions which should be independent. This file is not executed or
further compiled as far as I am aware.

--
Kieran



>>
>> What is wrong with just putting and extra "void foo(void);" before
>> the function?
> 
> Greg objected to that on the basis that we don't want declarations
> in .c files -- they should be in a shared header:
> 
> https://lkml.org/lkml/2018/9/21/735
> 
> I don't see what could go wrong here with calling it main(), after
> all we are just interested in the assembler output, not even
> creating an object file.
> 
>       Arnd
> 


  reply	other threads:[~2018-10-05  9:27 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-21 14:22 [PATCH] kernel/bounds: Provide prototype for foo Kieran Bingham
2018-09-21 14:45 ` Greg Kroah-Hartman
2018-09-21 15:58   ` Kieran Bingham
2018-09-21 16:03     ` Kieran Bingham
2018-10-05  8:33 ` [PATCH] kbuild: fix kernel/bounds.c 'W=1' warning Arnd Bergmann
2018-10-05  8:47   ` Kieran Bingham
2018-10-05  8:52   ` David Laight
2018-10-05  8:52     ` David Laight
2018-10-05  9:07     ` Arnd Bergmann
2018-10-05  9:27       ` Kieran Bingham [this message]
2018-10-06 20:31   ` Masahiro Yamada
2018-10-06 21:18   ` Miguel Ojeda
2018-10-06 21:58     ` Masahiro Yamada
2018-10-06 22:06       ` Masahiro Yamada
2018-10-08 10:00         ` Kieran Bingham
2018-10-08 14:32           ` Masahiro Yamada
2018-10-08 14:41             ` Geert Uytterhoeven
2018-10-06 22:07       ` Miguel Ojeda

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56169e56-2cbd-dc70-e324-44f8e511a1e7@ideasonboard.com \
    --to=kieran.bingham+renesas@ideasonboard.com \
    --cc=David.Laight@aculab.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=yamada.masahiro@socionext.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.