diff --git a/gcc/ada/libgnat/s-finpri.adb b/gcc/ada/libgnat/s-finpri.adb
index a6c9db341a4a761ba7972b9b4cbec81f053b9526..171fe15980d4f43ccee0bacbcc7197dc49ac5534 100644
--- a/gcc/ada/libgnat/s-finpri.adb
+++ b/gcc/ada/libgnat/s-finpri.adb
@@ -196,9 +196,7 @@ package body System.Finalization_Primitives is
    -- Finalize --
    --------------
 
-   overriding procedure Finalize
-     (Collection : in out Finalization_Collection)
-   is
+   procedure Finalize (Collection : in out Finalization_Collection) is
       Curr_Ptr                      : Collection_Node_Ptr;
       Exc_Occur                     : Exception_Occurrence;
       Finalization_Exception_Raised : Boolean := False;
@@ -380,9 +378,7 @@ package body System.Finalization_Primitives is
    -- Initialize --
    ----------------
 
-   overriding procedure Initialize
-     (Collection : in out Finalization_Collection)
-   is
+   procedure Initialize (Collection : in out Finalization_Collection) is
    begin
       --  The dummy head must point to itself in both directions
 
diff --git a/gcc/ada/libgnat/s-finpri.ads b/gcc/ada/libgnat/s-finpri.ads
index a61a7d772ec0ddcdabe0317f87f577f4bfeab6a7..2c8958878f1c2e1f99591603aa5528cf6d74fae0 100644
--- a/gcc/ada/libgnat/s-finpri.ads
+++ b/gcc/ada/libgnat/s-finpri.ads
@@ -29,14 +29,13 @@
 --                                                                          --
 ------------------------------------------------------------------------------
 
-with Ada.Finalization;
-
 with System.OS_Locks;
 with System.Storage_Elements;
 
 --  This package encapsulates the types and operations used by the compiler
---  to support finalization of objects of Ada controlled types (types derived
---  from types Controlled and Limited_Controlled).
+--  to support finalization of objects of finalizable types (types derived
+--  from standard Ada types Controlled and Limited_Controlled, as well as
+--  types declared with the GNAT Finalizable aspect).
 
 package System.Finalization_Primitives with Preelaborate is
 
@@ -130,8 +129,10 @@ package System.Finalization_Primitives with Preelaborate is
    --  object itself is managed via a Master_Node attached to its finalization
    --  master.
 
-   type Finalization_Collection is
-     new Ada.Finalization.Limited_Controlled with private;
+   type Finalization_Collection is limited private
+     with Finalizable => (Initialize           => Initialize,
+                          Finalize             => Finalize,
+                          Relaxed_Finalization => Standard.False);
    --  Objects of this type encapsulate a set of zero or more controlled
    --  objects associated with an access type. The compiler ensures that
    --  each finalization collection is in turn associated with a finalization
@@ -142,12 +143,10 @@ package System.Finalization_Primitives with Preelaborate is
    --  A reference to a collection. Since this type may not be used to
    --  allocate objects, its storage size is zero.
 
-   overriding procedure Initialize
-     (Collection : in out Finalization_Collection);
+   procedure Initialize (Collection : in out Finalization_Collection);
    --  Initializes the dummy head of a collection
 
-   overriding procedure Finalize
-     (Collection : in out Finalization_Collection);
+   procedure Finalize (Collection : in out Finalization_Collection);
    --  Finalizes each object that has been associated with a finalization
    --  collection, in some arbitrary order. Calls to this procedure with
    --  a collection that has already been finalized have no effect.
@@ -244,9 +243,7 @@ private
 
    --  Finalization collection type structure
 
-   type Finalization_Collection is
-     new Ada.Finalization.Limited_Controlled with
-   record
+   type Finalization_Collection is limited record
       Head : aliased Collection_Node;
       --  The head of the circular doubly-linked list of collection nodes