From: Philipp K. K. <pk...@sp...> - 2012-10-25 20:21:43
|
On 25.10.2012 08:22, Maarten Brock wrote: > Thank you Erik, > >> String literals are not required to be modifiable. This specification >> allows implementations to share copies of strings with identical text, >> to place string literals in read-only memory, and to perform certain >> optimizations. However, string literals do not have the type array of >> const char in order to avoid the problems of pointer type checking, >> particularly with library functions, since assigning a pointer to >> const char to a plain pointer to char is not valid. > >> If the program attempts to modify such an array, the behavior is >> undefined. > > So it is ok that SDCC places the string literal in ROM, but it is wrong to > make it const implicitly. And the behavior of modifying the contents at > runtime should not be checked (or even executed) in the regression tests. Hmm, if we make the simulators report an error on write to ROM (as we now do for invalid instructions) we can handle this. And we catch many cases of the much more common problem of writes through invalid pointers, too! Philipp |