Frama-C-discuss mailing list archives
This page gathers the archives of the old Frama-C-discuss archives, that was hosted by Inria's gforge before its demise at the end of 2020. To search for mails newer than September 2020, please visit the page of the new mailing list on Renater.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Frama-c-discuss] Problem with memset
- Subject: [Frama-c-discuss] Problem with memset
- From: Claude.Marche at inria.fr (Claude Marche)
- Date: Thu, 03 Dec 2009 14:28:27 +0100
- In-reply-to: <FC0686BB6178BC43B9DC035287A11A720DBE768DA7@SI-MBX12.de.bosch.com>
- References: <FC0686BB6178BC43B9DC035287A11A720DBE7688A4@SI-MBX12.de.bosch.com> <4B17A203.5040507@inria.fr> <FC0686BB6178BC43B9DC035287A11A720DBE768DA7@SI-MBX12.de.bosch.com>
Hollas Boris (CR/AEY1) wrote: > Hello Pascal, > > I've used this in a header file to verify memory safety of the caller: > > typedef unsigned char uint8; > typedef unsigned int size_t; > > /*@ requires (\valid((uint8*)pDest +(0..num-1))) && > @ (0 <= value <= 255) && > @ (0 < num); > @ ensures (\forall int i; 0 <= i < num > @ ==> (((uint8*)pDest)[i] == value)) && > @ (\result == pDest); > @*/ > extern > void *memset( void *pDest, const int value, const size_t num ); > > > However, Jessie reports > > Casting from type struct char_P * to type struct unsigned_char_P * not allowed in logic > > Maybe it's because void-pointers aren't supported, as Claude wrote. Having a contract for memset in a header file as you suggest would be sufficient because we don't want to verify the implementation of memset itself. > > Regards, > Boris > > > _______________________________________________ > Frama-c-discuss mailing list > Frama-c-discuss at lists.gforge.inria.fr > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/frama-c-discuss > The only possible way currently is to provide a contract for each instance of type of pointers. Typically, either p is a (char*) and you can give a contract without casts, or p is some larger data, int, double, structure, etc., and then 'value 'is probably always 0, num must be a multiple of sizeof(*p). You can then specify the result values in term of the expected type. - claude -- Claude March? | tel: +33 1 72 92 59 69 INRIA Saclay - ?le-de-France | mobile: +33 6 33 14 57 93 Parc Orsay Universit? | fax: +33 1 74 85 42 29 4, rue Jacques Monod - B?timent N | http://www.lri.fr/~marche/ F-91893 ORSAY Cedex |
- References:
- [Frama-c-discuss] Problem with memset
- From: Boris.Hollas at de.bosch.com (Hollas Boris (CR/AEY1))
- [Frama-c-discuss] Problem with memset
- From: Claude.Marche at inria.fr (Claude Marche)
- [Frama-c-discuss] Problem with memset
- From: Boris.Hollas at de.bosch.com (Hollas Boris (CR/AEY1))
- [Frama-c-discuss] Problem with memset
- Prev by Date: [Frama-c-discuss] Lemma from ACSL doc doesn't verify
- Next by Date: [Frama-c-discuss] Lemma from ACSL doc doesn't verify
- Previous by thread: [Frama-c-discuss] Problem with memset
- Next by thread: [Frama-c-discuss] How to use ACSL in GUI and How to generate Coq code
- Index(es):