diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 8257e4265f215ed611c22339c7ffe4042b1713b8..bc2e38c1ced75a571d644fbb6af724dca999fe94 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2006-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+	PR ada/24533
+	* s-osinte-linux-hppa.ads: Reduce alignment of atomic_lock_t to 8.
+
 2005-12-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
 	* s-osinte-linux-hppa.ads: Correct alignment of atomic_lock_t.
diff --git a/gcc/ada/s-osinte-linux-hppa.ads b/gcc/ada/s-osinte-linux-hppa.ads
index ec7efd2feae1b5c25759316c0eef62934baf3874..40f0d073af562dc1709dcad899eb53cb5497ebca 100644
--- a/gcc/ada/s-osinte-linux-hppa.ads
+++ b/gcc/ada/s-osinte-linux-hppa.ads
@@ -508,7 +508,10 @@ private
       lock : lock_array;
    end record;
    pragma Convention (C, atomic_lock_t);
-   for atomic_lock_t'Alignment use 16;
+   --  ??? Alignment should be 16 but this is larger than BIGGEST_ALIGNMENT.
+   --  This causes an erroneous pointer value to sometimes be passed to free
+   --  during deallocation.  See PR ada/24533 for more details.
+   for atomic_lock_t'Alignment use 8;
 
    type struct_pthread_fast_lock is record
       spinlock : atomic_lock_t;