Simon Marchi, le sam. 30 mai 2020 21:51:35 -0400, a ecrit: > On 2020-05-30 2:23 p.m., Samuel Thibault wrote: > > Fixes > > > > exc_request_S.c:177:24: error: no previous declaration for ‘exc_server’ > > [-Werror=missing-declarations] > > 177 | mig_external boolean_t exc_server > > > > gdb/ChangeLog: > > > > * config/i386/i386gnu.mn [%_S.o %_U.o] (COMPILE.post): Add > > "-include gnu-nat-mig.h". > > * gnu-nat-mig.h: New file. > > * gnu-nat.c: Include "gnu-nat-mig.h". > > (exc_server, msg_reply_server, notify_server, > > process_reply_server): Remove declarations. > > It took me a while to understand the underlying problem. My understanding is > that > gnu-nat.c calls this function exc_server, that is defined in the generated > file. The > generated file does not provide a header with declarations, so gnu-nat.c had > its own > local declaration. Since we now use the -Wmissing-declarations warning flag, > and the > definition in the generated exc_request_S.c didn't see a corresponding > declaration, > it caused that build failure. Is that correct? If so, please add that > explanation > or equivalent to the commit log.
I have now added “ We are using -Werror=missing-declarations, and the _S.h files generated by mig do not currently include a declaration for the server routine. gnu-nat.c used to have its own external declarations, but better just share them between gnu-nat.c and the _S.c files. ” > My question now is: that MIG tool appears to generate both a header (%_S.h) > and source > file (%_S.c) from defs files. What is this header file used for, if it > doesn't contain > the declaration for the functions in the source file? Mig does include declarations for the functions of the .c files, but not for the server routine, I don't know why that was never implemented there (this hasn't been touched since the VCS initial import). Samuel