[Bug ada/49732] [4.6/4.7 regression] crash on terminal_interface-curses-menus.adb from ncurses with -gnato
vorfeed.canal at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Jul 14 14:44:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49732
--- Comment #8 from Vorfeed Canal <vorfeed.canal at gmail dot com> 2011-07-14 14:43:49 UTC ---
It makes sense because patch which "fixes" the problem effectively removes the
information needed to do overflow check.
And now, when I know where to look is much smaller reproducer:
$ cat hello.adb
with Interfaces.C; use Interfaces.C;
with Interfaces.C.Strings; use Interfaces.C.Strings;
with Interfaces.C.Pointers;
procedure Hello is
function Create (Name : String) return size_t
is
type Name_String is new char_array (0 .. Name'Length);
type Name_String_Ptr is access Name_String;
pragma Controlled (Name_String_Ptr);
Name_Str : constant Name_String_Ptr := new Name_String;
Name_Len : size_t;
begin
To_C (Name, Name_Str.all, Name_Len);
return 1;
end Create;
Test : size_t;
begin
Test := Create("ABC");
end Hello;
$ gnatmake -O0 -gnato hello.adb
gcc -c -O0 -gnato hello.adb
raised STORAGE_ERROR : stack overflow (or erroneous memory access)
gnatmake: "hello.adb" compilation error
More information about the Gcc-bugs
mailing list