patches and low-level development discussion
 help / color / mirror / code / Atom feed
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:17:19 +0200	[thread overview]
Message-ID: <87ms6n4w6o.fsf@alyssa.is> (raw)
In-Reply-To: <ea1dbd72-a322-406f-876d-99a38bb6fef8@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3136 bytes --]

Demi Marie Obenour <demiobenour@gmail.com> writes:

> On 9/21/25 12:13, Alyssa Ross wrote:
>> 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.
>
> It also catches cases where a function or variable should have been marked
> static.

Okay, I /am/ bad at remembering to mark functions as static, and I guess
there's not really a better way to avoid that, so happy to take it with
that rationale.  Happy for me to just adjust the commit message to
mention that?

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]

  reply	other threads:[~2025-09-21 16:17 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
2025-09-21 16:14           ` Demi Marie Obenour
2025-09-21 16:17             ` Alyssa Ross [this message]
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=87ms6n4w6o.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).