From 32f7efe1a5140f2b95f62009c2a0315a1ada2c5f Mon Sep 17 00:00:00 2001 From: Samuel Tardieu Date: Mon, 14 Apr 2008 13:41:25 +0000 Subject: [PATCH] re PR ada/18680 (pragma Linker_Section problems) gcc/ada/ PR ada/18680 * sem_prag.adb (Analyze_Pragma, Linker_Section case): Refuse to apply pragma Linker_Section on type. gcc/testsuite/ PR ada/18680 * gnat.dg/specs/linker_section.ads: New. From-SVN: r134266 --- gcc/ada/ChangeLog | 6 ++++++ gcc/ada/sem_prag.adb | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gnat.dg/specs/linker_section.ads | 10 ++++++++++ 4 files changed, 27 insertions(+) create mode 100644 gcc/testsuite/gnat.dg/specs/linker_section.ads diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index cdfcdfe4f9f..5d37a15830a 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2008-04-14 Samuel Tardieu + + PR ada/18680 + * sem_prag.adb (Analyze_Pragma, Linker_Section case): Refuse to + apply pragma Linker_Section on type. + 2008-04-14 Samuel Tardieu PR ada/16098 diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 8a9a2e91f11..c238367ba83 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -8450,6 +8450,12 @@ package body Sem_Prag is Check_Arg_Is_Library_Level_Local_Name (Arg1); Check_Arg_Is_Static_Expression (Arg2, Standard_String); + -- This pragma does not apply to types + + if Is_Type (Entity (Expression (Arg1))) then + Error_Pragma_Arg ("pragma% cannot apply to type", Arg1); + end if; + -- The only processing required is to link this item on to the -- list of rep items for the given entity. This is accomplished -- by the call to Rep_Item_Too_Late (when no error is detected diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5bb51e82d8c..8af67f7b0b7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-04-14 Samuel Tardieu + + PR ada/18680 + * gnat.dg/specs/linker_section.ads: New. + 2008-04-14 Samuel Tardieu PR ada/16098 diff --git a/gcc/testsuite/gnat.dg/specs/linker_section.ads b/gcc/testsuite/gnat.dg/specs/linker_section.ads new file mode 100644 index 00000000000..ae2d4029cf9 --- /dev/null +++ b/gcc/testsuite/gnat.dg/specs/linker_section.ads @@ -0,0 +1,10 @@ +package Linker_Section is + Data1 : constant String := "12345678901234567"; + pragma Linker_Section (Entity => Data1, + Section => ".eeprom"); + type EEPROM_String is new String; + pragma Linker_Section (Entity => EEPROM_String, -- { dg-error "type" } + Section => ".eeprom"); + Data2 : constant EEPROM_String := "12345678901234567"; +end Linker_Section; + -- 2.30.2