aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@gcc.gnu.org>2008-08-18 09:09:24 +0000
committerSamuel Tardieu <sam@gcc.gnu.org>2008-08-18 09:09:24 +0000
commit79a141784a7f10d72c756aa309eb6aa9a7bd92c5 (patch)
tree9fd7f8fc350d3f496ce85d9a1b51f0d288a4d846 /gcc
parentb9b2405ff39ccd696dd1ff825bf81c367a63d3fa (diff)
downloadgcc-79a141784a7f10d72c756aa309eb6aa9a7bd92c5.zip
gcc-79a141784a7f10d72c756aa309eb6aa9a7bd92c5.tar.gz
gcc-79a141784a7f10d72c756aa309eb6aa9a7bd92c5.tar.bz2
[multiple changes]
2008-08-18 Samuel Tardieu <sam@rfc1149.net> Robert Dewar <dewar@adacore.com> gcc/ada/ PR ada/30827 * bindgen.adb (Gen_Output_File_Ada): Zero-terminate the version string. Move comment in the right place. * g-comver.adb (Version): Look for a zero-termination in addition to a closing parenthesis. 2008-08-18 Robert Dewar <dewar@adacore.com> gcc/testsuite/ PR ada/30827 * gnat.dg/test_version.adb: New. From-SVN: r139192
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog10
-rw-r--r--gcc/ada/bindgen.adb14
-rw-r--r--gcc/ada/g-comver.adb7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gnat.dg/test_version.adb13
5 files changed, 41 insertions, 8 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 47bcb8e..21e3e26 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,4 +1,14 @@
2008-08-18 Samuel Tardieu <sam@rfc1149.net>
+ Robert Dewar <dewar@adacore.com>
+
+ PR ada/30827
+ * bindgen.adb (Gen_Output_File_Ada): Zero-terminate the
+ version string.
+ Move comment in the right place.
+ * g-comver.adb (Version): Look for a zero-termination in
+ addition to a closing parenthesis.
+
+2008-08-18 Samuel Tardieu <sam@rfc1149.net>
* exp_ch13.adb, exp_disp.adb, sem_cat.adb, sem_ch10.adb,
* sem_ch12.adb, sem_ch6.adb, sem_ch7.adb, sem_ch8.adb,
diff --git a/gcc/ada/bindgen.adb b/gcc/ada/bindgen.adb
index 070651c..ccdf394 100644
--- a/gcc/ada/bindgen.adb
+++ b/gcc/ada/bindgen.adb
@@ -2267,17 +2267,19 @@ package body Bindgen is
WBI (" gnat_exit_status : Integer;");
WBI (" pragma Import (C, gnat_exit_status);");
end if;
-
- -- Generate the GNAT_Version and Ada_Main_Program_Name info only
- -- for the main program. Otherwise, it can lead under some
- -- circumstances to a symbol duplication during the link (for
- -- instance when a C program uses 2 Ada libraries)
end if;
+ -- Generate the GNAT_Version and Ada_Main_Program_Name info only for
+ -- the main program. Otherwise, it can lead under some circumstances
+ -- to a symbol duplication during the link (for instance when a C
+ -- program uses two Ada libraries). Also zero terminate the string
+ -- so that its end can be found reliably at run time.
+
WBI ("");
WBI (" GNAT_Version : constant String :=");
WBI (" ""GNAT Version: " &
- Gnat_Version_String & """;");
+ Gnat_Version_String &
+ """ & ASCII.NUL;");
WBI (" pragma Export (C, GNAT_Version, ""__gnat_version"");");
WBI ("");
diff --git a/gcc/ada/g-comver.adb b/gcc/ada/g-comver.adb
index 2a0d120..ae3bf3b 100644
--- a/gcc/ada/g-comver.adb
+++ b/gcc/ada/g-comver.adb
@@ -53,15 +53,18 @@ package body GNAT.Compiler_Version is
function Version return String is
begin
- -- Search for terminating right paren
+ -- Search for terminating right paren or NUL ending the string
for J in Ver_Prefix'Length + 1 .. GNAT_Version'Last loop
if GNAT_Version (J) = ')' then
return GNAT_Version (Ver_Prefix'Length + 1 .. J);
end if;
+ if GNAT_Version (J) = Character'Val (0) then
+ return GNAT_Version (Ver_Prefix'Length + 1 .. J - 1);
+ end if;
end loop;
- -- This should not happen (no right paren found)
+ -- This should not happen (no right paren or NUL found)
return GNAT_Version;
end Version;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9eca6a0..56cd326 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2008-08-18 Robert Dewar <dewar@adacore.com>
+
+ PR ada/30827
+ * gnat.dg/test_version.adb: New.
+
2008-08-18 Samuel Tardieu <sam@rfc1149.net>
PR ada/15808
diff --git a/gcc/testsuite/gnat.dg/test_version.adb b/gcc/testsuite/gnat.dg/test_version.adb
new file mode 100644
index 0000000..d7fa297
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/test_version.adb
@@ -0,0 +1,13 @@
+-- { dg-do run }
+with GNAT.Compiler_Version;
+procedure Test_Version is
+ package Vsn is new GNAT.Compiler_Version;
+ use Vsn;
+ X : constant String := Version;
+begin
+ if X'Length = 46 then
+ -- 46 = Ver_Len_Max + Ver_Prefix
+ -- actual version should be shorter than this
+ raise Program_Error;
+ end if;
+end Test_Version;