[Bug ada/19035] New: Put constants read-only on ELF platforms
jc at apinc dot org
gcc-bugzilla@gcc.gnu.org
Thu Dec 16 14:30:00 GMT 2004
Constants are presently created in the initialized read-write section (ie .data
section) whenever they should be created in the initialized read-only section
(ie .rodata section, as are the implicit string constants).
An exemple:
package Foo is
Bar : constant Integer := 1;
end Foo;
$ gcc -c foo.adb
$ nm foo.o
00000000 D foo__bar
00000001 C foo_E
When it should be:
$nm foo.o
00000000 R foo__bar
00000001 C foo_E
This would have a good impact since program like below would receive segfault
(maybe the Runtime would raise exception):
procedure foo is
A : constant Integer := 1;
B : Integer;
for B'Address use A'Address;
begin
B := 2;
end foo;
Which is BAD as you probably agree.
Note also: implicit String constants as in :
Put("Foo Bar");
are put in the read-only section when explicit String constants as in Bar :
constant String := "Foo Bar";
are put in the read-write section.
--
Summary: Put constants read-only on ELF platforms
Product: gcc
Version: 3.4.3
Status: UNCONFIRMED
Severity: minor
Priority: P2
Component: ada
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jc at apinc dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC host triplet: i486-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19035
More information about the Gcc-bugs
mailing list