aboutsummaryrefslogtreecommitdiff
path: root/utils.c
Commit message (Collapse)AuthorAgeFilesLines
* mig: replace boolean.h with stdbool.hFlavio Cruz2022-11-251-16/+16
| | | | Message-Id: <Y3/Z1CGL8D4OwT66@viriathus>
* fix message fields alignment for 64 bitLuca Dariz2022-08-271-0/+2
| | | | | | | | | | | | | | | On x86_64 alignment of structures is different, as the pointer size is different. For simplicity we keep the same 4-byte alignment as used on 32-bit. This simplifies the support for 32-bit rpc on 64-bit kernels, and also it seems not worth as an optimization, as we would need to add more code in the ipc_kmsg* routines. * routine.c: align both short and long descriptors * utils.c: use a fixed alignment for data fields in structures representing messages. Signed-off-by: Luca Dariz <luca@orpolo.org> Message-Id: <20220628094927.442907-2-luca@orpolo.org>
* Add _Static_assert when compiling server and user stubs.Flavio Cruz2022-01-211-7/+32
| | | | | | | | | This is only done when data is inlined with a concrete size. It ensures the C and Mig types have the same size in the target arch. Tested by building the hurd package. No assertions were triggered. Message-Id: <YekIQaxvs+4FrHyw@viriathus>
* Also add const qualifiers on server sideSamuel Thibault2022-01-161-2/+31
| | | | | Although in practice the buffers can be modified since they are from the message, it leads to missing const where it would otherwise make sense.
* Make dev_name_t also use const_dev_name_tSamuel Thibault2022-01-161-0/+2
| | | | to avoid forcing the caller to respect the definite string size.
* Make string_t always use const_string_tSamuel Thibault2020-11-301-3/+7
| | | | | | | | | | This will allow to relieve constraints in callers, e.g. dir_lookup("") would otherwise produce a warning with gcc-11 since char[1024] would mean that dir_lookup would read all 1024 characters while it is not. * utils.c (UserVarQualifier): Also use const_ qualifier when type is string_t. * tests/includes/types.h (const_string_t): New type.
* Fix RPC build warningsSamuel Thibault2018-01-281-2/+28
| | | | | | | | | | Users of RPCs want to be able to pass pointers to const data, so add const qualifiers to RPCs as appropriate. * utils.c (UserVarConst, UserVarQualifier): New functions. (WriteUserVarDecl): Use UserVarQualifier to qualify function parameter. (WriteFieldDeclPrim): Use UserVarConst to qualify pointer to user variable.
* Fix compilation warningsSamuel Thibault2018-01-281-4/+3
| | | | | | | | | Nowadays' compilers are able to recognize memcpy and replace it appropriately without having to tell them so through a structure assignment. That also avoids warnings about type puning. * utils.c (WriteCopyType): Emit memcpy call instead of type-puned assignement.
* Fix spurious warning on MACH_MSG_TYPE_POLYMORPHIC valueSamuel Thibault2017-01-021-1/+1
| | | | | * utils.c (WriteStaticLongDecl): Explicitly cast name to unsigned short to ignore truncation of MACH_MSG_TYPE_POLYMORPHIC i.e. -1.
* Fix spurious warning on MACH_MSG_TYPE_POLYMORPHIC valueSamuel Thibault2016-10-101-2/+2
| | | | | * utils.c (WriteCheckDecl, WriteStaticShortDecl): Explicitly cast name to unsigned char to ignore truncation of MACH_MSG_TYPE_POLYMORPHIC i.e. -1.
* Use uint32_t instead of unsigned32_t.Flavio Cruz2016-04-041-1/+1
| | | | * utils.c: Generate code using uint32_t.
* Do not generate code dereferencing type-punned pointersJustus Winter2015-02-151-1/+7
| | | | | | | | | | | | | | | | | | | | | | For variable-length arrays, up to 2048 bytes are transmitted inline. If the array is larger, the data is transmitted out-of-line, and a pointer to a vm_allocated region is stored at the beginning of the array. Previously, the generated code casted the field. Use a union instead. This fixes the gcc warning `dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]'. * global.c (OOLPostfix): New variable. * global.h (OOLPostfix): New declaration. * server.c (WriteServerCallArg): Avoid cast. (WriteDestroyArg): Likewise. (WritePackArgValue): Likewise. (WritePackArg): Likewise. * user.c (WriteExtractArgValue): Likewise. * utils.c (WriteFieldDeclPrim): Generate a union with an additional pointer field for variable-length arrays.
* Add static branch prediction to type checksJustus Winter2014-12-011-2/+7
| | | | | | | | | Annotate generated type checks with static branch prediction optimizing well-formed messages. * utils.c (WriteBogusDefines): Define `mig_unlikely' if not defined. * server.c: Use `mig_unlikely' in generated type checks. * user.c: Likewise.
* Drop the auto keywordJustus Winter2013-09-041-3/+3
| | | | | | | | | | Drop the auto keyword from the generated source code. auto is the default storage type for variables anyway and it is customary to omit it. * utils.c (WriteCheckDecl): Drop auto from generated source. (WriteStaticLongDecl): Likewise. (WriteStaticShortDecl): Likewise.
* Drop the register keywordJustus Winter2013-08-191-13/+13
| | | | | | | | | | | | | | | | | | | Drop the register keyword both from MIGs code and from the generated code. The register keyword is only a hint and it is ignored by modern compilers. * alloca.c: Drop the register keyword. * header.c: Likewise. * lexxer.l: Likewise. * parser.y: Likewise. * routine.c: Likewise. * server.c: Likewise. * statement.c: Likewise. * string.c: Likewise. * type.c: Likewise. * user.c: Likewise. * utils.c: Likewise. * vprint.c: Likewise.
* 2007-06-02 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge2007-06-021-2/+0
| | | | | | | | | * global.c (LintLib): Remove definition. * global.h (LintLib): Remove declaration. * header.c (WriteUserRoutine, WriteServerRoutine): Don't emit `Lint' code. * user.c (WriteIncludes): Likewise. * utils.c (WriteRCSDecl): Likewise.
* 2004-03-18 Roland McGrath <roland@frob.com>Roland McGrath2004-03-181-17/+15
| | | | | | * utils.c (do_skip_vfprintf): New macro. (WriteCopyType, WritePackMsgType): Use that, so we do va_start and va_end independently around each SkipVFPrintf call.
* 2004-02-10 Roland McGrath <roland@frob.com>Roland McGrath2004-02-111-10/+16
| | | | | | | | * user.c (WriteTypeCheck): Use BAD_TYPECHECK macro instead of type-pun. * server.c (WriteTypeCheck): Likewise. * utils.c (WriteBogusDefines): Write a #define for that macro. * utils.c (WriteCheckDecl): Write auto const, not static const. (WriteStaticShortDecl, WriteStaticLongDecl): Likewise.
* Created new module from gnumach/mig at tag before-mig-moveRoland McGrath1998-07-181-0/+417