diff options
author | Samuel Tardieu <sam@gcc.gnu.org> | 2008-08-18 09:09:24 +0000 |
---|---|---|
committer | Samuel Tardieu <sam@gcc.gnu.org> | 2008-08-18 09:09:24 +0000 |
commit | 79a141784a7f10d72c756aa309eb6aa9a7bd92c5 (patch) | |
tree | 9fd7f8fc350d3f496ce85d9a1b51f0d288a4d846 | |
parent | b9b2405ff39ccd696dd1ff825bf81c367a63d3fa (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ada/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/ada/bindgen.adb | 14 | ||||
-rw-r--r-- | gcc/ada/g-comver.adb | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/test_version.adb | 13 |
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; |