diff options
Diffstat (limited to 'recipes/gcc/gcc-svn/debian/ada-alpha.dpatch')
-rw-r--r-- | recipes/gcc/gcc-svn/debian/ada-alpha.dpatch | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/recipes/gcc/gcc-svn/debian/ada-alpha.dpatch b/recipes/gcc/gcc-svn/debian/ada-alpha.dpatch new file mode 100644 index 0000000000..1e2c47d670 --- /dev/null +++ b/recipes/gcc/gcc-svn/debian/ada-alpha.dpatch @@ -0,0 +1,88 @@ +#! /bin/sh -e + +# DP: Fix GNAT on alpha. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2008-04-01 Aurelien Jarno <aurelien@aurel32.net> + + * s-osinte-linux-alpha.ads (SC_NPROCESSORS_ONLN): New constant + for sysconf call. + (bit_field): New packed boolean type used by cpu_set_t. + (cpu_set_t): New type corresponding to the C type with + the same name. Note that on the Ada side we use a bit + field array for the affinity mask. There is not need + for the C macro for setting individual bit. + (pthread_setaffinity_np): New imported routine. + +Index: gcc/ada/s-osinte-linux-alpha.ads +=================================================================== +--- gcc/ada/s-osinte-linux-alpha.ads (révision 133772) ++++ gcc/ada/s-osinte-linux-alpha.ads (copie de travail) +@@ -237,6 +237,7 @@ + pragma Import (C, sysconf); + + SC_CLK_TCK : constant := 2; ++ SC_NPROCESSORS_ONLN : constant := 84; + + ------------------------- + -- Priority Scheduling -- +@@ -268,6 +269,7 @@ + + type Thread_Body is access + function (arg : System.Address) return System.Address; ++ pragma Convention (C, Thread_Body); + + function Thread_Body_Access is new + Unchecked_Conversion (System.Address, Thread_Body); +@@ -448,12 +450,31 @@ + pragma Import (C, pthread_getspecific, "pthread_getspecific"); + + type destructor_pointer is access procedure (arg : System.Address); ++ pragma Convention (C, destructor_pointer); + + function pthread_key_create + (key : access pthread_key_t; + destructor : destructor_pointer) return int; + pragma Import (C, pthread_key_create, "pthread_key_create"); + ++ CPU_SETSIZE : constant := 1_024; ++ ++ type bit_field is array (1 .. CPU_SETSIZE) of Boolean; ++ for bit_field'Size use CPU_SETSIZE; ++ pragma Pack (bit_field); ++ pragma Convention (C, bit_field); ++ ++ type cpu_set_t is record ++ bits : bit_field; ++ end record; ++ pragma Convention (C, cpu_set_t); ++ ++ function pthread_setaffinity_np ++ (thread : pthread_t; ++ cpusetsize : size_t; ++ cpuset : access cpu_set_t) return int; ++ pragma Import (C, pthread_setaffinity_np, "__gnat_pthread_setaffinity_np"); ++ + private + + type sigset_t is record |