From: Alyssa Ross <hi@alyssa.is>
To: Demi Marie Obenour <demiobenour@gmail.com>
Cc: Spectrum OS Development <devel@spectrum-os.org>
Subject: Re: [PATCH] tools/start-vmm: Add additional warning options
Date: Sun, 21 Sep 2025 18:13:10 +0200 [thread overview]
Message-ID: <87tt0v4wdl.fsf@alyssa.is> (raw)
In-Reply-To: <69d9b008-a4e6-403b-8627-5c7577154225@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2588 bytes --]
Demi Marie Obenour <demiobenour@gmail.com> writes:
> On 9/21/25 04:55, Alyssa Ross wrote:
>> Demi Marie Obenour <demiobenour@gmail.com> writes:
>>
>>> On 9/19/25 07:55, Alyssa Ross wrote:
>>>> Demi Marie Obenour <demiobenour@gmail.com> writes:
>>>>
>>>>> This detected a missing prototype.
>>>>>
>>>>> No functional change.
>>>>>
>>>>> Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com>
>>>>> ---
>>>>> tools/meson.build | 2 ++
>>>>> tools/start-vmm/ch.h | 1 +
>>>>> 2 files changed, 3 insertions(+)
>>>>>
>>>>> diff --git a/tools/meson.build b/tools/meson.build
>>>>> index 9cebd03e323531fca7600cacf120161a98de16c5..8262f3e01d7bd56561306d7dd4650a22ca40ebe7 100644
>>>>> --- a/tools/meson.build
>>>>> +++ b/tools/meson.build
>>>>> @@ -9,6 +9,8 @@ project('spectrum-tools', 'c',
>>>>> })
>>>>>
>>>>> add_project_arguments('-Wno-error=attributes', language : 'c')
>>>>> +add_project_arguments('-Werror=missing-prototypes', language : 'c')
>>>>> +add_project_arguments('-Werror=missing-declarations', language : 'c')
>>>>>
>>>>> if get_option('host')
>>>>> add_languages('rust')
>>>>> diff --git a/tools/start-vmm/ch.h b/tools/start-vmm/ch.h
>>>>> index 7230913ef0abf41a4f712ac4a543c7f7fdecec0f..5431365e6e2894cdebae22a9a44e2ccf1222e0d2 100644
>>>>> --- a/tools/start-vmm/ch.h
>>>>> +++ b/tools/start-vmm/ch.h
>>>>> @@ -8,3 +8,4 @@ struct net_config {
>>>>> char id[18];
>>>>> uint8_t mac[6];
>>>>> };
>>>>> +struct net_config net_setup(const char name[static 1], int name_len);
>>>>
>>>> Why do we need to declare this in a C header? It's only used from Rust.
>>>
>>> Ideally the Rust declarations would be generated from the C ones
>>> using bindgen. Also, this catches genuine bugs on the C side.
>>
>> What bugs? Implicit definitions are already disallowed, aren't they?
>
> Function declared in one file, defined in another file with different
> prototype. This makes it undefined behavior to call.
I don't see how this really enforces that? Fundamentally the problem
there is conflicting prototypes, not missing ones. If you had another
compilation unit that didn't include the header with the prototype, and
instead make its own declaration, you'd still have the same problem. If
we have a norm of not declaring functions outside of the header file
that corresponds to and is included by the implementation file, that
prevents that from happening regardless of whether we have these errors,
assuming that the compiler would still catch the prototype not matching
the implementation.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]
next prev parent reply other threads:[~2025-09-21 16:13 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-18 19:06 [PATCH] tools/start-vmm: Add additional warning options Demi Marie Obenour
2025-09-19 11:55 ` Alyssa Ross
2025-09-19 19:38 ` Demi Marie Obenour
2025-09-21 8:55 ` Alyssa Ross
2025-09-21 15:57 ` Demi Marie Obenour
2025-09-21 16:13 ` Alyssa Ross [this message]
2025-09-21 16:14 ` Demi Marie Obenour
2025-09-21 16:17 ` Alyssa Ross
2025-09-21 16:18 ` Demi Marie Obenour
2025-09-23 18:54 ` Alyssa Ross
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=87tt0v4wdl.fsf@alyssa.is \
--to=hi@alyssa.is \
--cc=demiobenour@gmail.com \
--cc=devel@spectrum-os.org \
/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.
Code repositories for project(s) associated with this public inbox
https://spectrum-os.org/git/crosvm
https://spectrum-os.org/git/doc
https://spectrum-os.org/git/mktuntap
https://spectrum-os.org/git/nixpkgs
https://spectrum-os.org/git/spectrum
https://spectrum-os.org/git/ucspi-vsock
https://spectrum-os.org/git/www
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).