[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Tinycc-devel] Modifying a char pointer initialized by character str
From: |
uso ewin |
Subject: |
Re: [Tinycc-devel] Modifying a char pointer initialized by character string literal should cause an error. |
Date: |
Fri, 27 Dec 2019 19:07:44 +0100 |
On Fri, Dec 27, 2019 at 4:22 PM 瞿兴 <address@hidden> wrote:
>
> Hi,
>
> In section 6.7.8 of the C99 draft document defines :
>
> If an attempt is made to use pointer variable p to modify the contents of the
> array, the behavior is undefined.
>
> When executing the testcase(in the attachment), tinyc does not report an
> error and modify the value of the variable NISLParameter0 successfully while
> other compilers such as gcc and clang report a runtime error: “Segmentation
> fault”. I think it would be better for tinyc to throw an error or at least a
> warning for the wrong action.
>
>
>
> The OS is:
>
> Linux version 4.15.0-65-generic
>
>
>
> Compiler Version:
>
> tcc version 0.9.27 (x86_64 Linux)
>
>
>
> Output:
>
> 111
>
> abcde1ghij
>
>
>
> Expected output:
>
> Throw an error or at least a warning.
>
>
>
> The attachment includes the relevant testcase. Looking forward to your reply.
Undefined Behavior mean the Behavior is undefined,
so not having an error is as okay as a segmentation fault
Also, even on gcc on linux, if you use mprotec
you can modify a string literal without error.