From b70a0f6dab1561e6fbc95441e95043c33fcebc2c Mon Sep 17 00:00:00 2001 From: Miro Hrončok Date: Sep 20 2019 22:24:30 +0000 Subject: Orphaned for 6+ weeks --- diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 20b9f53..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/planner-0.14.6.tar.xz diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..5204a84 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +Orphaned for 6+ weeks diff --git a/gnome-planner.png b/gnome-planner.png deleted file mode 100644 index d7023be..0000000 Binary files a/gnome-planner.png and /dev/null differ diff --git a/planner-aarch64.patch b/planner-aarch64.patch deleted file mode 100644 index fd2731f..0000000 --- a/planner-aarch64.patch +++ /dev/null @@ -1,1460 +0,0 @@ -diff -urN planner-0.14.6/config.guess planner-0.14.6-aarch64/config.guess ---- planner-0.14.6/config.guess 2011-12-24 21:14:29.000000000 -0600 -+++ planner-0.14.6-aarch64/config.guess 2013-03-08 06:02:40.917701415 -0600 -@@ -1,10 +1,10 @@ - #! /bin/sh - # Attempt to guess a canonical system name. - # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, --# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 --# Free Software Foundation, Inc. -+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -+# 2011, 2012 Free Software Foundation, Inc. - --timestamp='2009-04-27' -+timestamp='2012-09-25' - - # This file is free software; you can redistribute it and/or modify it - # under the terms of the GNU General Public License as published by -@@ -17,9 +17,7 @@ - # General Public License for more details. - # - # You should have received a copy of the GNU General Public License --# along with this program; if not, write to the Free Software --# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA --# 02110-1301, USA. -+# along with this program; if not, see . - # - # As a special exception to the GNU General Public License, if you - # distribute this file as part of a program that contains a -@@ -27,16 +25,16 @@ - # the same distribution terms that you use for the rest of that program. - - --# Originally written by Per Bothner . --# Please send patches to . Submit a context --# diff and a properly formatted ChangeLog entry. -+# Originally written by Per Bothner. Please send patches (context -+# diff format) to and include a ChangeLog -+# entry. - # - # This script attempts to guess a canonical system name similar to - # config.sub. If it succeeds, it prints the system name on stdout, and - # exits with 0. Otherwise, it exits with 1. - # --# The plan is that this can be called by configure scripts if you --# don't specify an explicit build system type. -+# You can get the latest version of this script from: -+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD - - me=`echo "$0" | sed -e 's,.*/,,'` - -@@ -56,8 +54,9 @@ - GNU config.guess ($timestamp) - - Originally written by Per Bothner. --Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, --2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -+Free Software Foundation, Inc. - - This is free software; see the source for copying conditions. There is NO - warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." -@@ -144,7 +143,7 @@ - case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or -- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, -+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward -@@ -170,7 +169,7 @@ - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ -- | grep __ELF__ >/dev/null -+ | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? -@@ -180,7 +179,7 @@ - fi - ;; - *) -- os=netbsd -+ os=netbsd - ;; - esac - # The OS release -@@ -201,6 +200,10 @@ - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; -+ *:Bitrig:*:*) -+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` -+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} -+ exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} -@@ -223,7 +226,7 @@ - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) -- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` -+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on -@@ -269,7 +272,10 @@ - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` -- exit ;; -+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code. -+ exitcode=$? -+ trap '' 0 -+ exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead -@@ -295,12 +301,12 @@ - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) -- echo powerpc-ibm-os400 -+ echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; -- arm:riscos:*:*|arm:RISCOS:*:*) -+ arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) -@@ -333,6 +339,9 @@ - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; -+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) -+ echo i386-pc-auroraux${UNAME_RELEASE} -+ exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" -@@ -391,23 +400,23 @@ - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) -- echo m68k-atari-mint${UNAME_RELEASE} -+ echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} -- exit ;; -+ exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) -- echo m68k-atari-mint${UNAME_RELEASE} -+ echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) -- echo m68k-milan-mint${UNAME_RELEASE} -- exit ;; -+ echo m68k-milan-mint${UNAME_RELEASE} -+ exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) -- echo m68k-hades-mint${UNAME_RELEASE} -- exit ;; -+ echo m68k-hades-mint${UNAME_RELEASE} -+ exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) -- echo m68k-unknown-mint${UNAME_RELEASE} -- exit ;; -+ echo m68k-unknown-mint${UNAME_RELEASE} -+ exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; -@@ -477,8 +486,8 @@ - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) -- # DG/UX returns AViiON for all architectures -- UNAME_PROCESSOR=`/usr/bin/uname -p` -+ # DG/UX returns AViiON for all architectures -+ UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ -@@ -491,7 +500,7 @@ - else - echo i586-dg-dgux${UNAME_RELEASE} - fi -- exit ;; -+ exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; -@@ -548,7 +557,7 @@ - echo rs6000-ibm-aix3.2 - fi - exit ;; -- *:AIX:*:[456]) -+ *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 -@@ -591,52 +600,52 @@ - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` -- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` -- case "${sc_cpu_version}" in -- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 -- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 -- 532) # CPU_PA_RISC2_0 -- case "${sc_kernel_bits}" in -- 32) HP_ARCH="hppa2.0n" ;; -- 64) HP_ARCH="hppa2.0w" ;; -+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` -+ case "${sc_cpu_version}" in -+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 -+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 -+ 532) # CPU_PA_RISC2_0 -+ case "${sc_kernel_bits}" in -+ 32) HP_ARCH="hppa2.0n" ;; -+ 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 -- esac ;; -- esac -+ esac ;; -+ esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build -- sed 's/^ //' << EOF >$dummy.c -+ sed 's/^ //' << EOF >$dummy.c -+ -+ #define _HPUX_SOURCE -+ #include -+ #include -+ -+ int main () -+ { -+ #if defined(_SC_KERNEL_BITS) -+ long bits = sysconf(_SC_KERNEL_BITS); -+ #endif -+ long cpu = sysconf (_SC_CPU_VERSION); - -- #define _HPUX_SOURCE -- #include -- #include -- -- int main () -- { -- #if defined(_SC_KERNEL_BITS) -- long bits = sysconf(_SC_KERNEL_BITS); -- #endif -- long cpu = sysconf (_SC_CPU_VERSION); -- -- switch (cpu) -- { -- case CPU_PA_RISC1_0: puts ("hppa1.0"); break; -- case CPU_PA_RISC1_1: puts ("hppa1.1"); break; -- case CPU_PA_RISC2_0: -- #if defined(_SC_KERNEL_BITS) -- switch (bits) -- { -- case 64: puts ("hppa2.0w"); break; -- case 32: puts ("hppa2.0n"); break; -- default: puts ("hppa2.0"); break; -- } break; -- #else /* !defined(_SC_KERNEL_BITS) */ -- puts ("hppa2.0"); break; -- #endif -- default: puts ("hppa1.0"); break; -- } -- exit (0); -- } -+ switch (cpu) -+ { -+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break; -+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break; -+ case CPU_PA_RISC2_0: -+ #if defined(_SC_KERNEL_BITS) -+ switch (bits) -+ { -+ case 64: puts ("hppa2.0w"); break; -+ case 32: puts ("hppa2.0n"); break; -+ default: puts ("hppa2.0"); break; -+ } break; -+ #else /* !defined(_SC_KERNEL_BITS) */ -+ puts ("hppa2.0"); break; -+ #endif -+ default: puts ("hppa1.0"); break; -+ } -+ exit (0); -+ } - EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa -@@ -656,7 +665,7 @@ - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | -- grep __LP64__ >/dev/null -+ grep -q __LP64__ - then - HP_ARCH="hppa2.0w" - else -@@ -727,22 +736,22 @@ - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd -- exit ;; -+ exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi -- exit ;; -+ exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd -- exit ;; -+ exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd -- exit ;; -+ exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd -- exit ;; -+ exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; -@@ -766,14 +775,14 @@ - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` -- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` -- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -- exit ;; -+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` -+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -+ exit ;; - 5000:UNIX_System_V:4.*:*) -- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` -- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` -+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} -@@ -785,34 +794,39 @@ - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) -- case ${UNAME_MACHINE} in -- pc98) -- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; -+ UNAME_PROCESSOR=`/usr/bin/uname -p` -+ case ${UNAME_PROCESSOR} in - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) -- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; -+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; -+ *:MINGW64*:*) -+ echo ${UNAME_MACHINE}-pc-mingw64 -+ exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; -+ i*:MSYS*:*) -+ echo ${UNAME_MACHINE}-pc-msys -+ exit ;; - i*:windows32*:*) -- # uname -m includes "-pc" on this system. -- echo ${UNAME_MACHINE}-mingw32 -+ # uname -m includes "-pc" on this system. -+ echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; -- *:Interix*:[3456]*) -- case ${UNAME_MACHINE} in -+ *:Interix*:*) -+ case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; -- EM64T | authenticamd | genuineintel) -+ authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) -@@ -822,6 +836,9 @@ - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; -+ 8664:Windows_NT:*) -+ echo x86_64-pc-mks -+ exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we -@@ -851,6 +868,27 @@ - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; -+ aarch64:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ aarch64_be:Linux:*:*) -+ UNAME_MACHINE=aarch64_be -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ alpha:Linux:*:*) -+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in -+ EV5) UNAME_MACHINE=alphaev5 ;; -+ EV56) UNAME_MACHINE=alphaev56 ;; -+ PCA56) UNAME_MACHINE=alphapca56 ;; -+ PCA57) UNAME_MACHINE=alphapca56 ;; -+ EV6) UNAME_MACHINE=alphaev6 ;; -+ EV67) UNAME_MACHINE=alphaev67 ;; -+ EV68*) UNAME_MACHINE=alphaev68 ;; -+ esac -+ objdump --private-headers /bin/sh | grep -q ld.so.1 -+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi -+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} -+ exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ -@@ -858,20 +896,40 @@ - then - echo ${UNAME_MACHINE}-unknown-linux-gnu - else -- echo ${UNAME_MACHINE}-unknown-linux-gnueabi -+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ -+ | grep -q __ARM_PCS_VFP -+ then -+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi -+ else -+ echo ${UNAME_MACHINE}-unknown-linux-gnueabihf -+ fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) -- echo cris-axis-linux-gnu -+ echo ${UNAME_MACHINE}-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) -- echo crisv32-axis-linux-gnu -+ echo ${UNAME_MACHINE}-axis-linux-gnu - exit ;; - frv:Linux:*:*) -- echo frv-unknown-linux-gnu -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ hexagon:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ i*86:Linux:*:*) -+ LIBC=gnu -+ eval $set_cc_for_build -+ sed 's/^ //' << EOF >$dummy.c -+ #ifdef __dietlibc__ -+ LIBC=dietlibc -+ #endif -+EOF -+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` -+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu -@@ -882,78 +940,34 @@ - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; -- mips:Linux:*:*) -+ mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU -- #undef mips -- #undef mipsel -+ #undef ${UNAME_MACHINE} -+ #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) -- CPU=mipsel -+ CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) -- CPU=mips -+ CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif - EOF -- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' -- /^CPU/{ -- s: ::g -- p -- }'`" -- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } -- ;; -- mips64:Linux:*:*) -- eval $set_cc_for_build -- sed 's/^ //' << EOF >$dummy.c -- #undef CPU -- #undef mips64 -- #undef mips64el -- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) -- CPU=mips64el -- #else -- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) -- CPU=mips64 -- #else -- CPU= -- #endif -- #endif --EOF -- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' -- /^CPU/{ -- s: ::g -- p -- }'`" -+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - or32:Linux:*:*) -- echo or32-unknown-linux-gnu -- exit ;; -- ppc:Linux:*:*) -- echo powerpc-unknown-linux-gnu -- exit ;; -- ppc64:Linux:*:*) -- echo powerpc64-unknown-linux-gnu -- exit ;; -- alpha:Linux:*:*) -- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in -- EV5) UNAME_MACHINE=alphaev5 ;; -- EV56) UNAME_MACHINE=alphaev56 ;; -- PCA56) UNAME_MACHINE=alphapca56 ;; -- PCA57) UNAME_MACHINE=alphapca56 ;; -- EV6) UNAME_MACHINE=alphaev6 ;; -- EV67) UNAME_MACHINE=alphaev67 ;; -- EV68*) UNAME_MACHINE=alphaev68 ;; -- esac -- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null -- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi -- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} -+ echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-gnu - exit ;; -+ parisc64:Linux:*:* | hppa64:Linux:*:*) -+ echo hppa64-unknown-linux-gnu -+ exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in -@@ -962,14 +976,17 @@ - *) echo hppa-unknown-linux-gnu ;; - esac - exit ;; -- parisc64:Linux:*:* | hppa64:Linux:*:*) -- echo hppa64-unknown-linux-gnu -+ ppc64:Linux:*:*) -+ echo powerpc64-unknown-linux-gnu -+ exit ;; -+ ppc:Linux:*:*) -+ echo powerpc-unknown-linux-gnu - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) -- echo ${UNAME_MACHINE}-unknown-linux-gnu -+ echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu -@@ -977,75 +994,18 @@ - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; -+ tile*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) -- echo x86_64-unknown-linux-gnu -+ echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - xtensa*:Linux:*:*) -- echo ${UNAME_MACHINE}-unknown-linux-gnu -+ echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; -- i*86:Linux:*:*) -- # The BFD linker knows what the default object file format is, so -- # first see if it will tell us. cd to the root directory to prevent -- # problems with other programs or directories called `ld' in the path. -- # Set LC_ALL=C to ensure ld outputs messages in English. -- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ -- | sed -ne '/supported targets:/!d -- s/[ ][ ]*/ /g -- s/.*supported targets: *// -- s/ .*// -- p'` -- case "$ld_supported_targets" in -- elf32-i386) -- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" -- ;; -- a.out-i386-linux) -- echo "${UNAME_MACHINE}-pc-linux-gnuaout" -- exit ;; -- "") -- # Either a pre-BFD a.out linker (linux-gnuoldld) or -- # one that does not give us useful --help. -- echo "${UNAME_MACHINE}-pc-linux-gnuoldld" -- exit ;; -- esac -- # Determine whether the default compiler is a.out or elf -- eval $set_cc_for_build -- sed 's/^ //' << EOF >$dummy.c -- #include -- #ifdef __ELF__ -- # ifdef __GLIBC__ -- # if __GLIBC__ >= 2 -- LIBC=gnu -- # else -- LIBC=gnulibc1 -- # endif -- # else -- LIBC=gnulibc1 -- # endif -- #else -- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) -- LIBC=gnu -- #else -- LIBC=gnuaout -- #endif -- #endif -- #ifdef __dietlibc__ -- LIBC=dietlibc -- #endif --EOF -- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' -- /^LIBC/{ -- s: ::g -- p -- }'`" -- test x"${LIBC}" != x && { -- echo "${UNAME_MACHINE}-pc-linux-${LIBC}" -- exit -- } -- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } -- ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both -@@ -1053,11 +1013,11 @@ - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) -- # Unixware is an offshoot of SVR4, but it has its own version -- # number series starting with 2... -- # I am not positive that other SVR4 systems won't match this, -+ # Unixware is an offshoot of SVR4, but it has its own version -+ # number series starting with 2... -+ # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. -- # Use sysv4.2uw... so that sysv4* matches it. -+ # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) -@@ -1074,7 +1034,7 @@ - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; -- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) -+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) -@@ -1089,7 +1049,7 @@ - fi - exit ;; - i*86:*:5:[678]*) -- # UnixWare 7.x, OpenUNIX and OpenServer 6. -+ # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; -@@ -1117,13 +1077,13 @@ - exit ;; - pc:*:*:*) - # Left here for compatibility: -- # uname -m prints for DJGPP always 'pc', but it prints nothing about -- # the processor, so we play safe by assuming i586. -+ # uname -m prints for DJGPP always 'pc', but it prints nothing about -+ # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp -- exit ;; -+ exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; -@@ -1158,8 +1118,8 @@ - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) -- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -- && { echo i486-ncr-sysv4; exit; } ;; -+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -+ && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ -@@ -1182,7 +1142,7 @@ - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; -- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) -+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) -@@ -1202,10 +1162,10 @@ - echo ns32k-sni-sysv - fi - exit ;; -- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort -- # says -- echo i586-unisys-sysv4 -- exit ;; -+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort -+ # says -+ echo i586-unisys-sysv4 -+ exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm -@@ -1231,11 +1191,11 @@ - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then -- echo mips-nec-sysv${UNAME_RELEASE} -+ echo mips-nec-sysv${UNAME_RELEASE} - else -- echo mips-unknown-sysv${UNAME_RELEASE} -+ echo mips-unknown-sysv${UNAME_RELEASE} - fi -- exit ;; -+ exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; -@@ -1248,6 +1208,9 @@ - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; -+ x86_64:Haiku:*:*) -+ echo x86_64-unknown-haiku -+ exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; -@@ -1275,6 +1238,16 @@ - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in -+ i386) -+ eval $set_cc_for_build -+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then -+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ -+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ -+ grep IS_64BIT_ARCH >/dev/null -+ then -+ UNAME_PROCESSOR="x86_64" -+ fi -+ fi ;; - unknown) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} -@@ -1290,7 +1263,10 @@ - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; -- NSE-?:NONSTOP_KERNEL:*:*) -+ NEO-?:NONSTOP_KERNEL:*:*) -+ echo neo-tandem-nsk${UNAME_RELEASE} -+ exit ;; -+ NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) -@@ -1335,13 +1311,13 @@ - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) -- echo mips-sei-seiux${UNAME_RELEASE} -+ echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) -- UNAME_MACHINE=`(uname -p) 2>/dev/null` -+ UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; -@@ -1359,11 +1335,11 @@ - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; -+ x86_64:VMkernel:*:*) -+ echo ${UNAME_MACHINE}-unknown-esx -+ exit ;; - esac - --#echo '(No uname command or uname output not recognized.)' 1>&2 --#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 -- - eval $set_cc_for_build - cat >$dummy.c < - printf ("m68k-sony-newsos%s\n", - #ifdef NEWSOS4 -- "4" -+ "4" - #else -- "" -+ "" - #endif -- ); exit (0); -+ ); exit (0); - #endif - #endif - -diff -urN planner-0.14.6/config.sub planner-0.14.6-aarch64/config.sub ---- planner-0.14.6/config.sub 2011-12-24 21:14:29.000000000 -0600 -+++ planner-0.14.6-aarch64/config.sub 2013-03-08 06:02:40.961696326 -0600 -@@ -1,10 +1,10 @@ - #! /bin/sh - # Configuration validation subroutine script. - # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, --# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 --# Free Software Foundation, Inc. -+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -+# 2011, 2012 Free Software Foundation, Inc. - --timestamp='2009-04-17' -+timestamp='2012-10-10' - - # This file is (in principle) common to ALL GNU software. - # The presence of a machine in this file suggests that SOME GNU software -@@ -21,9 +21,7 @@ - # GNU General Public License for more details. - # - # You should have received a copy of the GNU General Public License --# along with this program; if not, write to the Free Software --# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA --# 02110-1301, USA. -+# along with this program; if not, see . - # - # As a special exception to the GNU General Public License, if you - # distribute this file as part of a program that contains a -@@ -32,13 +30,16 @@ - - - # Please send patches to . Submit a context --# diff and a properly formatted ChangeLog entry. -+# diff and a properly formatted GNU ChangeLog entry. - # - # Configuration subroutine to validate and canonicalize a configuration type. - # Supply the specified configuration type as an argument. - # If it is invalid, we print an error message on stderr and exit with code 1. - # Otherwise, we print the canonical config type on stdout and succeed. - -+# You can get the latest version of this script from: -+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD -+ - # This file is supposed to be the same for all GNU packages - # and recognize all the CPU types, system types and aliases - # that are meaningful with *any* GNU software. -@@ -72,8 +73,9 @@ - version="\ - GNU config.sub ($timestamp) - --Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, --2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -+Free Software Foundation, Inc. - - This is free software; see the source for copying conditions. There is NO - warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." -@@ -120,13 +122,18 @@ - # Here we must recognize all the valid KERNEL-OS combinations. - maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` - case $maybe_os in -- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ -- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ -+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ -+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ -+ knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; -+ android-linux) -+ os=-linux-android -+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown -+ ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] -@@ -149,10 +156,13 @@ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -- -apple | -axis | -knuth | -cray) -+ -apple | -axis | -knuth | -cray | -microblaze*) - os= - basic_machine=$1 - ;; -+ -bluegene*) -+ os=-cnk -+ ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 -@@ -167,10 +177,10 @@ - os=-chorusos - basic_machine=$1 - ;; -- -chorusrdb) -- os=-chorusrdb -+ -chorusrdb) -+ os=-chorusrdb - basic_machine=$1 -- ;; -+ ;; - -hiux*) - os=-hiuxwe2 - ;; -@@ -215,6 +225,12 @@ - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; -+ -lynx*178) -+ os=-lynxos178 -+ ;; -+ -lynx*5) -+ os=-lynxos5 -+ ;; - -lynx*) - os=-lynxos - ;; -@@ -239,20 +255,25 @@ - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ -+ | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ -+ | be32 | be64 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ -+ | epiphany \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ -+ | hexagon \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ -+ | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ -- | maxq | mb | microblaze | mcore | mep | metag \ -+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ -@@ -275,27 +296,39 @@ - | moxie \ - | mt \ - | msp430 \ -+ | nds32 | nds32le | nds32be \ - | nios | nios2 \ - | ns16k | ns32k \ -+ | open8 \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ -- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ -+ | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ -+ | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ -- | spu | strongarm \ -- | tahoe | thumb | tic4x | tic80 | tron \ -- | v850 | v850e \ -+ | spu \ -+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ -+ | ubicom32 \ -+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | we32k \ -- | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ -+ | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; -- m6811 | m68hc11 | m6812 | m68hc12) -- # Motorola 68HC11/12. -+ c54x) -+ basic_machine=tic54x-unknown -+ ;; -+ c55x) -+ basic_machine=tic55x-unknown -+ ;; -+ c6x) -+ basic_machine=tic6x-unknown -+ ;; -+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) - basic_machine=$basic_machine-unknown - os=-none - ;; -@@ -305,6 +338,21 @@ - basic_machine=mt-unknown - ;; - -+ strongarm | thumb | xscale) -+ basic_machine=arm-unknown -+ ;; -+ xgate) -+ basic_machine=$basic_machine-unknown -+ os=-none -+ ;; -+ xscaleeb) -+ basic_machine=armeb-unknown -+ ;; -+ -+ xscaleel) -+ basic_machine=armel-unknown -+ ;; -+ - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. -@@ -319,25 +367,30 @@ - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ -+ | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ -+ | be32-* | be64-* \ - | bfin-* | bs2000-* \ -- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ -+ | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ -+ | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ -+ | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ -+ | microblaze-* | microblazeel-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ -@@ -359,24 +412,29 @@ - | mmix-* \ - | mt-* \ - | msp430-* \ -+ | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ -+ | open8-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ -- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ -+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ -- | romp-* | rs6000-* \ -+ | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ -- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ -- | tahoe-* | thumb-* \ -- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ -+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ -+ | tahoe-* \ -+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ -+ | tile*-* \ - | tron-* \ -- | v850-* | v850e-* | vax-* \ -+ | ubicom32-* \ -+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ -+ | vax-* \ - | we32k-* \ -- | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ -+ | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) -@@ -401,7 +459,7 @@ - basic_machine=a29k-amd - os=-udi - ;; -- abacus) -+ abacus) - basic_machine=abacus-unknown - ;; - adobe68k) -@@ -467,11 +525,24 @@ - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; -+ bluegene*) -+ basic_machine=powerpc-ibm -+ os=-cnk -+ ;; -+ c54x-*) -+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ c55x-*) -+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ c6x-*) -+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; -- cegcc) -+ cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; -@@ -503,7 +574,7 @@ - basic_machine=craynv-cray - os=-unicosmp - ;; -- cr16) -+ cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; -@@ -661,7 +732,6 @@ - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; --# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 -@@ -719,6 +789,13 @@ - basic_machine=ns32k-utek - os=-sysv - ;; -+ microblaze*) -+ basic_machine=microblaze-xilinx -+ ;; -+ mingw64) -+ basic_machine=x86_64-pc -+ os=-mingw64 -+ ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 -@@ -755,10 +832,18 @@ - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; -+ msys) -+ basic_machine=i386-pc -+ os=-msys -+ ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; -+ nacl) -+ basic_machine=le32-unknown -+ os=-nacl -+ ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 -@@ -823,6 +908,12 @@ - np1) - basic_machine=np1-gould - ;; -+ neo-tandem) -+ basic_machine=neo-tandem -+ ;; -+ nse-tandem) -+ basic_machine=nse-tandem -+ ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; -@@ -905,9 +996,10 @@ - ;; - power) basic_machine=power-ibm - ;; -- ppc) basic_machine=powerpc-unknown -+ ppc | ppcbe) basic_machine=powerpc-unknown - ;; -- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ppc-* | ppcbe-*) -+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown -@@ -1001,6 +1093,9 @@ - basic_machine=i860-stratus - os=-sysv4 - ;; -+ strongarm-* | thumb-*) -+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; - sun2) - basic_machine=m68000-sun - ;; -@@ -1057,20 +1152,8 @@ - basic_machine=t90-cray - os=-unicos - ;; -- tic54x | c54x*) -- basic_machine=tic54x-unknown -- os=-coff -- ;; -- tic55x | c55x*) -- basic_machine=tic55x-unknown -- os=-coff -- ;; -- tic6x | c6x*) -- basic_machine=tic6x-unknown -- os=-coff -- ;; - tile*) -- basic_machine=tile-unknown -+ basic_machine=$basic_machine-unknown - os=-linux-gnu - ;; - tx39) -@@ -1140,6 +1223,9 @@ - xps | xps100) - basic_machine=xps100-honeywell - ;; -+ xscale-* | xscalee[bl]-*) -+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` -+ ;; - ymp) - basic_machine=ymp-cray - os=-unicos -@@ -1237,9 +1323,12 @@ - if [ x"$os" != x"" ] - then - case $os in -- # First match some system type aliases -- # that might get confused with valid system types. -+ # First match some system type aliases -+ # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. -+ -auroraux) -+ os=-auroraux -+ ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; -@@ -1260,22 +1349,23 @@ - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ -- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ -- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ -- | -kopensolaris* \ -+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ -+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ -+ | -sym* | -kopensolaris* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ -- | -openbsd* | -solidbsd* \ -+ | -bitrig* | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ -- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ -+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ -+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ -@@ -1283,7 +1373,7 @@ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ -- | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) -+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) -@@ -1322,7 +1412,7 @@ - -opened*) - os=-openedition - ;; -- -os400*) -+ -os400*) - os=-os400 - ;; - -wince*) -@@ -1371,7 +1461,7 @@ - -sinix*) - os=-sysv4 - ;; -- -tpf*) -+ -tpf*) - os=-tpf - ;; - -triton*) -@@ -1416,6 +1506,8 @@ - -dicos*) - os=-dicos - ;; -+ -nacl*) -+ ;; - -none) - ;; - *) -@@ -1438,10 +1530,10 @@ - # system, and we'll never get to this point. - - case $basic_machine in -- score-*) -+ score-*) - os=-elf - ;; -- spu-*) -+ spu-*) - os=-elf - ;; - *-acorn) -@@ -1453,8 +1545,20 @@ - arm*-semi) - os=-aout - ;; -- c4x-* | tic4x-*) -- os=-coff -+ c4x-* | tic4x-*) -+ os=-coff -+ ;; -+ hexagon-*) -+ os=-elf -+ ;; -+ tic54x-*) -+ os=-coff -+ ;; -+ tic55x-*) -+ os=-coff -+ ;; -+ tic6x-*) -+ os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) -@@ -1474,14 +1578,11 @@ - ;; - m68000-sun) - os=-sunos3 -- # This also exists in the configure program, but was not the -- # default. -- # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; -- mep-*) -+ mep-*) - os=-elf - ;; - mips*-cisco) -@@ -1508,7 +1609,7 @@ - *-ibm) - os=-aix - ;; -- *-knuth) -+ *-knuth) - os=-mmixware - ;; - *-wec) -@@ -1613,7 +1714,7 @@ - -sunos*) - vendor=sun - ;; -- -aix*) -+ -cnk*|-aix*) - vendor=ibm - ;; - -beos*) diff --git a/planner-desktop-warnings.patch b/planner-desktop-warnings.patch deleted file mode 100644 index 7ff3b9b..0000000 --- a/planner-desktop-warnings.patch +++ /dev/null @@ -1,26 +0,0 @@ -commit 6af8a56e4958b3297ada8711dfcab25b3e961cdf -Author: Ville Skyttä -Date: Tue Jun 5 16:57:01 2012 +0200 - - Fix desktop-file-validate icon and category warnings - - data/planner.desktop.in.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) ---- -diff --git a/data/planner.desktop.in.in b/data/planner.desktop.in.in -index 30eb921..b31c7b9 100644 ---- a/data/planner.desktop.in.in -+++ b/data/planner.desktop.in.in -@@ -2,10 +2,10 @@ - _Name=Project Management - _Comment=Planner Project Management - Exec=planner %F --Icon=gnome-planner.png -+Icon=gnome-planner - Terminal=false - Type=Application --Categories=GNOME;GTK;Application;Office;ProjectManagement; -+Categories=GNOME;GTK;Office;ProjectManagement; - StartupNotify=true - MimeType=application/x-planner; - X-GNOME-Bugzilla-Bugzilla=GNOME diff --git a/planner-gnome341504-paste.tasks.patch b/planner-gnome341504-paste.tasks.patch deleted file mode 100644 index ea20c90..0000000 --- a/planner-gnome341504-paste.tasks.patch +++ /dev/null @@ -1,656 +0,0 @@ -diff -ru planner-0.14.4.orig/src/planner-task-tree.c planner-0.14.4/src/planner-task-tree.c ---- planner-0.14.4.orig/src/planner-task-tree.c 2010-01-18 14:00:58.000000000 +0000 -+++ planner-0.14.4/src/planner-task-tree.c 2010-01-21 12:39:49.000000000 +0000 -@@ -48,6 +48,9 @@ - SELECTION_CHANGED, - RELATION_ADDED, - RELATION_REMOVED, -+ CUT_CLIPBOARD, -+ COPY_CLIPBOARD, -+ PASTE_CLIPBOARD, - LAST_SIGNAL - }; - -@@ -69,6 +72,13 @@ - */ - GHashTable *task_dialogs; - GtkTreePath *anchor; -+ -+ GtkTargetList *copy_target_list; -+ GtkTargetEntry *copy_target_entries; -+ gint n_copy_target_entries; -+ -+ guchar *copy_data; -+ guint copy_length; - }; - - typedef struct { -@@ -178,6 +188,10 @@ - static MrpProject *task_tree_get_project (PlannerTaskTree *tree); - static MrpTask * task_tree_get_task_from_path (PlannerTaskTree *tree, - GtkTreePath *path); -+static void planner_task_tree_free_target_lists (PlannerTaskTree *tree); -+static void planner_task_tree_cut_clipboard (PlannerTaskTree *tree); -+static void planner_task_tree_copy_clipboard (PlannerTaskTree *tree); -+static void planner_task_tree_paste_clipboard (PlannerTaskTree *tree); - - - static GtkTreeViewClass *parent_class = NULL; -@@ -554,16 +568,17 @@ - } - - static PlannerCmd * --task_cmd_remove (PlannerTaskTree *tree, -+task_cmd_remove_with_undo_strings (PlannerTaskTree *tree, - GtkTreePath *path, -- MrpTask *task) -+ MrpTask *task, -+ const char *undostr) - { - PlannerTaskTreePriv *priv = tree->priv; - PlannerCmd *cmd_base; - TaskCmdRemove *cmd; - - cmd_base = planner_cmd_new (TaskCmdRemove, -- _("Remove task"), -+ undostr, - task_cmd_remove_do, - task_cmd_remove_undo, - task_cmd_remove_free); -@@ -1005,6 +1020,7 @@ - task_tree_class_init (PlannerTaskTreeClass *klass) - { - GObjectClass *o_class; -+ GtkBindingSet *binding_set; - - parent_class = g_type_class_peek_parent (klass); - -@@ -1037,6 +1053,54 @@ - planner_marshal_VOID__OBJECT_OBJECT, - G_TYPE_NONE, - 2, MRP_TYPE_TASK, MRP_TYPE_RELATION); -+ -+ klass->cut_clipboard = planner_task_tree_cut_clipboard; -+ klass->copy_clipboard = planner_task_tree_copy_clipboard; -+ klass->paste_clipboard = planner_task_tree_paste_clipboard; -+ -+ signals[CUT_CLIPBOARD] = -+ g_signal_new ("cut-clipboard", -+ G_OBJECT_CLASS_TYPE (o_class), -+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, -+ G_STRUCT_OFFSET (PlannerTaskTreeClass, cut_clipboard), -+ NULL, NULL, -+ planner_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); -+ -+ signals[COPY_CLIPBOARD] = -+ g_signal_new ("copy-clipboard", -+ G_OBJECT_CLASS_TYPE (o_class), -+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, -+ G_STRUCT_OFFSET (PlannerTaskTreeClass, copy_clipboard), -+ NULL, NULL, -+ planner_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); -+ -+ signals[PASTE_CLIPBOARD] = -+ g_signal_new ("paste-clipboard", -+ G_OBJECT_CLASS_TYPE (o_class), -+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, -+ G_STRUCT_OFFSET (PlannerTaskTreeClass, paste_clipboard), -+ NULL, NULL, -+ planner_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); -+ -+ -+ binding_set = gtk_binding_set_by_class (klass); -+ -+ gtk_binding_entry_add_signal (binding_set, GDK_x, GDK_CONTROL_MASK, -+ "cut-clipboard", 0); -+ gtk_binding_entry_add_signal (binding_set, GDK_c, GDK_CONTROL_MASK, -+ "copy-clipboard", 0); -+ gtk_binding_entry_add_signal (binding_set, GDK_v, GDK_CONTROL_MASK, -+ "paste-clipboard", 0); -+ -+ gtk_binding_entry_add_signal (binding_set, GDK_Delete, GDK_SHIFT_MASK, -+ "cut-clipboard", 0); -+ gtk_binding_entry_add_signal (binding_set, GDK_Insert, GDK_CONTROL_MASK, -+ "copy-clipboard", 0); -+ gtk_binding_entry_add_signal (binding_set, GDK_Insert, GDK_SHIFT_MASK, -+ "paste-clipboard", 0); - } - - static void -@@ -1065,6 +1129,14 @@ - } - - static void -+planner_task_tree_free_selection (PlannerTaskTree *tree) -+{ -+ g_free(tree->priv->copy_data); -+ tree->priv->copy_data = NULL; -+ tree->priv->copy_length = 0; -+} -+ -+static void - task_tree_finalize (GObject *object) - { - PlannerTaskTree *tree; -@@ -1073,6 +1145,9 @@ - tree = PLANNER_TASK_TREE (object); - priv = tree->priv; - -+ planner_task_tree_free_target_lists (tree); -+ planner_task_tree_free_selection (tree); -+ - g_hash_table_destroy (priv->property_to_column); - - planner_task_tree_set_anchor (tree, NULL); -@@ -2739,76 +2814,71 @@ - g_list_free (list); - } - --void --planner_task_tree_insert_task (PlannerTaskTree *tree) -+static void -+planner_task_tree_create_new_position (PlannerTaskTree *tree, MrpTask **parent, gint *position, GtkTreePath **path) - { - PlannerTaskTreePriv *priv; -- GtkTreeView *tree_view; - PlannerGanttModel *model; -- GtkTreePath *path; -- MrpTask *parent; - GList *list; -- gint work; -- gint position; - gint depth; - - priv = tree->priv; - - list = planner_task_tree_get_selected_tasks (tree); - if (list == NULL) { -- parent = NULL; -- position = -1; -+ *parent = NULL; -+ *position = -1; - } else { -- parent = mrp_task_get_parent (list->data); -- position = mrp_task_get_position (list->data) + 1; -+ *parent = mrp_task_get_parent (list->data); -+ *position = mrp_task_get_position (list->data) + 1; - -- if (mrp_task_get_parent (parent) == NULL) { -- parent = NULL; -+ if (mrp_task_get_parent (*parent) == NULL) { -+ *parent = NULL; - } - } -+ g_list_free (list); - -- if (parent) { -+ if (*parent) { - model = PLANNER_GANTT_MODEL (gtk_tree_view_get_model (GTK_TREE_VIEW (tree))); - -- path = planner_gantt_model_get_path_from_task (model, parent); -- gtk_tree_path_append_index (path, position); -+ *path = planner_gantt_model_get_path_from_task (model, *parent); -+ gtk_tree_path_append_index (*path, *position); - } else { -- path = gtk_tree_path_new (); -- if (position != -1) { -- gtk_tree_path_append_index (path, position); -+ *path = gtk_tree_path_new (); -+ if (*position != -1) { -+ gtk_tree_path_append_index (*path, *position); - } else { - MrpTask *root; - - /* Put the new task at the end of end of the list. */ - root = mrp_project_get_root_task (priv->project); -- position = mrp_task_get_n_children (root); -+ *position = mrp_task_get_n_children (root); - -- gtk_tree_path_append_index (path, position); -+ gtk_tree_path_append_index (*path, *position); - } - } - -- work = mrp_calendar_day_get_total_work ( -- mrp_project_get_calendar (priv->project), -- mrp_day_get_work ()); -- -- depth = gtk_tree_path_get_depth (path); -- position = gtk_tree_path_get_indices (path)[depth - 1]; -+ depth = gtk_tree_path_get_depth (*path); -+ *position = gtk_tree_path_get_indices (*path)[depth - 1]; - - if (depth > 1) { - GtkTreePath *parent_path; - -- parent_path = gtk_tree_path_copy (path); -+ parent_path = gtk_tree_path_copy (*path); - gtk_tree_path_up (parent_path); - -- parent = task_tree_get_task_from_path (tree, parent_path); -+ *parent = task_tree_get_task_from_path (tree, parent_path); - - gtk_tree_path_free (parent_path); - } else { -- parent = NULL; -+ *parent = NULL; - } -+} - -- planner_task_cmd_insert (tree->priv->main_window, -- parent, position, work, work, NULL); -+void -+planner_task_select_inserted_task (PlannerTaskTree *tree, GtkTreePath *path) -+{ -+ GtkTreeView *tree_view; - - if (!GTK_WIDGET_HAS_FOCUS (tree)) { - gtk_widget_grab_focus (GTK_WIDGET (tree)); -@@ -2822,12 +2892,35 @@ - TRUE); - - planner_task_tree_set_anchor (tree, path); -- -- g_list_free (list); - } - -+ - void --planner_task_tree_remove_task (PlannerTaskTree *tree) -+planner_task_tree_insert_task (PlannerTaskTree *tree) -+{ -+ PlannerTaskTreePriv *priv; -+ GtkTreePath *path; -+ MrpTask *parent; -+ gint work; -+ gint position; -+ PlannerCmd *cmd; -+ -+ priv = tree->priv; -+ -+ work = mrp_calendar_day_get_total_work ( -+ mrp_project_get_calendar (priv->project), -+ mrp_day_get_work ()); -+ -+ planner_task_tree_create_new_position (tree, &parent, &position, &path); -+ -+ cmd = planner_task_cmd_insert (tree->priv->main_window, -+ parent, position, work, work, NULL); -+ -+ planner_task_select_inserted_task(tree, path); -+} -+ -+static void -+planner_task_tree_remove_task_with_undo_strings (PlannerTaskTree *tree, const char *multiundostr, const char *undostr) - { - PlannerTaskTreePriv *priv; - GList *list, *l; -@@ -2852,7 +2945,7 @@ - if (many) { - planner_cmd_manager_begin_transaction ( - planner_window_get_cmd_manager (priv->main_window), -- _("Remove tasks")); -+ multiundostr); - } - - for (l = list; l; l = l->next) { -@@ -2863,7 +2956,7 @@ - - /* Children are removed with the parent. */ - if (path != NULL) { -- task_cmd_remove (tree, path, task); -+ task_cmd_remove_with_undo_strings (tree, path, task, undostr); - } - gtk_tree_path_free (path); - } -@@ -2879,6 +2972,12 @@ - } - - void -+planner_task_tree_remove_task (PlannerTaskTree *tree) -+{ -+ planner_task_tree_remove_task_with_undo_strings (tree, _("Remove tasks"), _("Remove task")); -+} -+ -+void - planner_task_tree_edit_task (PlannerTaskTree *tree, PlannerTaskDialogPage page) - { - PlannerTaskTreePriv *priv; -@@ -3662,6 +3761,321 @@ - return list; - } - -+static GtkTargetList * -+planner_task_tree_ensure_copy_target_list (PlannerTaskTree *tree) -+{ -+ PlannerTaskTreePriv *priv; -+ -+ priv = tree->priv; -+ -+ if (! priv->copy_target_list) -+ { -+ priv->copy_target_list = gtk_target_list_new (NULL, 0); -+ -+ gtk_target_list_add (priv->copy_target_list, -+ gdk_atom_intern ("PLANNER_TASK_TREE", FALSE), -+ 0, 0xbeaf); -+ -+ priv->copy_target_entries = gtk_target_table_new_from_list (priv->copy_target_list, &priv->n_copy_target_entries); -+ } -+ -+ return priv->copy_target_list; -+} -+ -+static void -+planner_task_tree_free_target_lists (PlannerTaskTree *tree) -+{ -+ PlannerTaskTreePriv *priv; -+ -+ priv = tree->priv; -+ -+ if (priv->copy_target_list) -+ { -+ gtk_target_list_unref (priv->copy_target_list); -+ priv->copy_target_list = NULL; -+ -+ gtk_target_table_free (priv->copy_target_entries, -+ priv->n_copy_target_entries); -+ priv->copy_target_entries = NULL; -+ priv->n_copy_target_entries = 0; -+ } -+} -+ -+static void -+planner_task_tree_get_selection (PlannerTaskTree *tree) -+{ -+ GList *tasks; -+ GList *l; -+ GString *output; -+ -+ planner_task_tree_free_selection(tree); -+ -+ tasks = planner_task_tree_get_selected_tasks (tree); -+ -+ output = g_string_new(""); -+ -+ for (l = tasks; l; l = l->next) { -+ gchar *name=NULL; -+ gchar *note=NULL; -+ gint duration=0, work=0, complete=0; -+ gint priority=0; -+ MrpConstraint *constraint=NULL; -+ MrpTaskType type = MRP_TASK_TYPE_NORMAL; -+ MrpTaskType sched = MRP_TASK_SCHED_FIXED_WORK; -+ MrpTask *task = l->data; -+ int depth=0; -+ g_object_get (task, -+ "name", &name, -+ "note", ¬e, -+ "duration", &duration, -+ "work", &work, -+ "percent-complete", &complete, -+ "priority", &priority, -+ "type", &type, -+ "sched", &sched, -+ "constraint", &constraint, -+ NULL); -+ g_string_append(output, "type); -+ g_string_append_printf(output, " time=\"%ld\"", constraint->time); -+ g_free (constraint); -+ -+ while ((task = mrp_task_get_parent (task))) -+ ++depth; -+ -+ g_string_append_printf(output, " depth=\"%d\"", depth); -+ -+ g_string_append(output, "/>"); -+ } -+ g_string_append(output, ""); -+ g_list_free (tasks); -+ -+ tree->priv->copy_length = output->len; -+ tree->priv->copy_data = (guchar*)g_string_free(output, FALSE); -+} -+ -+static void -+clipboard_get_selection_cb (GtkClipboard *clipboard, -+ GtkSelectionData *selection_data, -+ guint info, -+ gpointer data) -+{ -+ PlannerTaskTree *tree = (PlannerTaskTree*)data; -+ -+ if (info != 0xbeaf) -+ return; -+ -+ gtk_selection_data_set (selection_data, -+ selection_data->target, -+ 8, /* bytes */ -+ tree->priv->copy_data, -+ tree->priv->copy_length); -+} -+ -+static void -+planner_task_tree_copy_clipboard (PlannerTaskTree *tree) -+{ -+ PlannerTaskTreePriv *priv; -+ -+ planner_task_tree_ensure_copy_target_list(tree); -+ planner_task_tree_get_selection (tree); -+ -+ priv = tree->priv; -+ -+ gtk_clipboard_set_with_data (gtk_widget_get_clipboard (GTK_WIDGET (tree), -+ GDK_SELECTION_CLIPBOARD), -+ priv->copy_target_entries, -+ priv->n_copy_target_entries, -+ clipboard_get_selection_cb, -+ NULL, -+ tree); -+} -+ -+static void -+planner_task_tree_cut_clipboard (PlannerTaskTree *tree) -+{ -+ planner_task_tree_copy_clipboard (tree); -+ planner_task_tree_remove_task_with_undo_strings (tree, _("Cut"), _("Cut")); -+} -+ -+typedef struct { -+ PlannerTaskTree *tree; -+ int depth; -+} PasteContext; -+ -+static void -+start_element (GMarkupParseContext *context, -+ const gchar *element_name, -+ const gchar **attribute_names, -+ const gchar **attribute_values, -+ gpointer user_data, -+ GError **error) -+{ -+ const gchar **name_cursor = attribute_names; -+ const gchar **value_cursor = attribute_values; -+ PasteContext *paste_ctx = (PasteContext*)user_data; -+ PlannerTaskTree *tree = paste_ctx->tree; -+ MrpTask *task; -+ gint work; -+ MrpTask *parent; -+ gint position; -+ int depth=1,inserted_depth=0,desired_depth, i; -+ GtkTreePath *path; -+ PlannerCmd *cmd; -+ MrpConstraint constraint; -+ -+ if (strcmp (element_name, "task") != 0) -+ return; -+ -+ task = g_object_new (MRP_TYPE_TASK, NULL); -+ -+ while (*name_cursor) -+ { -+ if (strcmp (*name_cursor, "name") == 0) -+ g_object_set (task, "name", *value_cursor, NULL); -+ else if (strcmp (*name_cursor, "note") == 0) -+ g_object_set (task, "note", *value_cursor, NULL); -+ else if (strcmp (*name_cursor, "duration") == 0) -+ { -+ gint duration = g_ascii_strtoll(*value_cursor, NULL, 10); -+ g_object_set (task, "duration", duration, NULL); -+ } -+ else if (strcmp (*name_cursor, "work") == 0) -+ { -+ gint work = g_ascii_strtoll(*value_cursor, NULL, 10); -+ g_object_set (task, "work", work, NULL); -+ } -+ else if (strcmp (*name_cursor, "percent-complete") == 0) -+ { -+ gint complete = g_ascii_strtoll(*value_cursor, NULL, 10); -+ g_object_set (task, "percent-complete", complete, NULL); -+ } -+ else if (strcmp (*name_cursor, "priority") == 0) -+ { -+ gint priority = g_ascii_strtoll(*value_cursor, NULL, 10); -+ g_object_set (task, "priority", priority, NULL); -+ } -+ else if (strcmp (*name_cursor, "type") == 0) -+ { -+ MrpTaskType type = g_ascii_strtoll(*value_cursor, NULL, 10); -+ g_object_set (task, "type", type, NULL); -+ } -+ else if (strcmp (*name_cursor, "sched") == 0) -+ { -+ MrpTaskSched sched = g_ascii_strtoll(*value_cursor, NULL, 10); -+ g_object_set (task, "sched", sched, NULL); -+ } -+ else if (strcmp (*name_cursor, "constraint") == 0) -+ constraint.type = g_ascii_strtoll(*value_cursor, NULL, 10); -+ else if (strcmp (*name_cursor, "time") == 0) -+ constraint.time = g_ascii_strtoll(*value_cursor, NULL, 10); -+ else if (strcmp (*name_cursor, "depth") == 0) -+ depth = g_ascii_strtoll(*value_cursor, NULL, 10); -+ name_cursor++; -+ value_cursor++; -+ } -+ -+ g_object_set (task, "constraint", &constraint, NULL); -+ -+ work = mrp_calendar_day_get_total_work ( -+ mrp_project_get_calendar (tree->priv->project), -+ mrp_day_get_work ()); -+ -+ planner_task_tree_create_new_position (tree, &parent, &position, &path); -+ -+ cmd = planner_task_cmd_insert (tree->priv->main_window, -+ parent, position, work, work, task); -+ -+ while ((task = mrp_task_get_parent (task))) -+ ++inserted_depth; -+ -+ planner_task_select_inserted_task(tree, path); -+ -+ desired_depth = paste_ctx->depth+depth-1; -+ -+ for (i = inserted_depth; i > desired_depth; --i) -+ planner_task_tree_unindent_task (tree); -+ -+ for (i = inserted_depth; i < desired_depth; ++i) -+ planner_task_tree_indent_task (tree); -+} -+ -+static void -+clipboard_targets_received (GtkClipboard *clipboard, -+ GtkSelectionData *selection_data, -+ gpointer user_data) -+{ -+ static GMarkupParser parser = { -+ start_element, -+ NULL, -+ NULL, -+ NULL, -+ NULL -+ }; -+ GMarkupParseContext *context; -+ PlannerTaskTree *tree = (PlannerTaskTree*)user_data; -+ PasteContext paste_ctx; -+ GList *tasks; -+ MrpTask *task; -+ -+ g_return_if_fail (selection_data != NULL); -+ -+ if (selection_data->type != gdk_atom_intern ("PLANNER_TASK_TREE", FALSE)) -+ return; -+ -+ planner_cmd_manager_begin_transaction ( -+ planner_window_get_cmd_manager (tree->priv->main_window), -+ _("Paste")); -+ -+ tasks = planner_task_tree_get_selected_tasks (tree); -+ if (!tasks || !tasks->data) -+ paste_ctx.depth = 1; -+ else -+ { -+ paste_ctx.depth = 0; -+ task = tasks->data; -+ while ((task = mrp_task_get_parent (task))) -+ ++paste_ctx.depth; -+ } -+ g_list_free (tasks); -+ paste_ctx.tree = tree; -+ -+ context = g_markup_parse_context_new ( &parser, 0, &paste_ctx, NULL); -+ g_markup_parse_context_parse (context, (gchar*)selection_data->data, selection_data->length, NULL); -+ g_markup_parse_context_free (context); -+ -+ planner_cmd_manager_end_transaction ( -+ planner_window_get_cmd_manager (tree->priv->main_window)); -+} -+ -+static void -+planner_task_tree_paste_clipboard (PlannerTaskTree *tree) -+{ -+ planner_task_tree_ensure_copy_target_list(tree); -+ -+ gtk_clipboard_request_contents (gtk_widget_get_clipboard (GTK_WIDGET (tree), -+ GDK_SELECTION_CLIPBOARD), -+ gdk_atom_intern ("PLANNER_TASK_TREE", FALSE), -+ clipboard_targets_received, -+ (gpointer) tree); -+} -+ - /* Returns TRUE if one or more of the tasks in the list have links. */ - gboolean - planner_task_tree_has_relation (GList *list) -diff -ru planner-0.14.4.orig/src/planner-task-tree.h planner-0.14.4/src/planner-task-tree.h ---- planner-0.14.4.orig/src/planner-task-tree.h 2010-01-18 14:00:58.000000000 +0000 -+++ planner-0.14.4/src/planner-task-tree.h 2010-01-18 14:55:57.000000000 +0000 -@@ -49,6 +49,9 @@ - struct _PlannerTaskTreeClass - { - GtkTreeViewClass parent_class; -+ void (* cut_clipboard) (PlannerTaskTree *entry); -+ void (* copy_clipboard) (PlannerTaskTree *entry); -+ void (* paste_clipboard) (PlannerTaskTree *entry); - }; - - diff --git a/planner-gnome550559-fitzoom.patch b/planner-gnome550559-fitzoom.patch deleted file mode 100644 index 482a4c6..0000000 --- a/planner-gnome550559-fitzoom.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- planner-0.14.4/src/planner-gantt-chart.c 2009-11-17 10:29:26.000000000 +0000 -+++ planner-0.14.4/src/planner-gantt-chart.c 2009-11-17 10:29:26.000000000 +0000 -@@ -1876,6 +1876,7 @@ - gdouble t; - gdouble zoom; - gdouble alloc; -+ mrptime mt; - - g_return_if_fail (PLANNER_IS_GANTT_CHART (chart)); - -@@ -1889,7 +1890,9 @@ - alloc = GTK_WIDGET (chart)->allocation.width - PADDING * 2; - - zoom = planner_scale_clamp_zoom (ZOOM (alloc / t)); -+ mt = gantt_chart_get_center (chart); - gantt_chart_set_zoom (chart, zoom); -+ gantt_chart_set_center (chart, mt); - } - - gdouble diff --git a/planner-gnome581282-printpreview.patch b/planner-gnome581282-printpreview.patch deleted file mode 100644 index 37aeb62..0000000 --- a/planner-gnome581282-printpreview.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -ru planner-0.14.4.orig/src/planner-print-job.c planner-0.14.4/src/planner-print-job.c ---- planner-0.14.4.orig/src/planner-print-job.c 2009-12-21 09:30:14.000000000 +0000 -+++ planner-0.14.4/src/planner-print-job.c 2009-12-21 09:30:34.000000000 +0000 -@@ -251,7 +251,7 @@ - return; - } - -- while (!page_found) { -+ while (!page_found && l) { - v = PLANNER_VIEW (l->data); - - pages_in_view = planner_view_print_get_n_pages (v); -@@ -262,8 +262,6 @@ - } else { - page_nr -= pages_in_view; - l = l->next; -- -- g_assert (l != NULL); - } - } - } diff --git a/planner-gnome596173-xdg.patch b/planner-gnome596173-xdg.patch deleted file mode 100644 index 98630ef..0000000 --- a/planner-gnome596173-xdg.patch +++ /dev/null @@ -1,175 +0,0 @@ -diff -ru planner-0.14.5.orig/src/planner-msp-plugin.c planner-0.14.5/src/planner-msp-plugin.c ---- planner-0.14.5.orig/src/planner-msp-plugin.c 2009-09-24 11:12:52.000000000 +0100 -+++ planner-0.14.5/src/planner-msp-plugin.c 2009-09-24 11:19:20.000000000 +0100 -@@ -177,7 +177,7 @@ - - dir = planner_conf_get_string (CONF_MSP_PLUGIN_LAST_DIR, NULL); - if (dir == NULL) { -- dir = g_strdup (g_get_home_dir ()); -+ dir = g_strdup (g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS)); - } - - return dir; -diff -ru planner-0.14.5.orig/src/planner-print-dialog.c planner-0.14.5/src/planner-print-dialog.c ---- planner-0.14.5.orig/src/planner-print-dialog.c 2009-09-24 11:12:52.000000000 +0100 -+++ planner-0.14.5/src/planner-print-dialog.c 2009-09-24 11:13:10.000000000 +0100 -@@ -43,7 +43,7 @@ - { - char *dir; - -- dir = g_build_filename (g_get_home_dir (), ".gnome2", NULL); -+ dir = g_build_filename (g_get_user_config_dir (), NULL); - - if (!g_file_test (dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) { - if (g_mkdir (dir, 0755) != 0) { -@@ -54,7 +54,7 @@ - - g_free (dir); - -- dir = g_build_filename (g_get_home_dir (), ".gnome2", "planner", NULL); -+ dir = g_build_filename (g_get_user_config_dir (), "planner", NULL); - - if (!g_file_test (dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) { - if (g_mkdir (dir, 0755) != 0) { -@@ -75,6 +75,19 @@ - return NULL; - } - -+ return g_build_filename (g_get_user_config_dir (), -+ "planner", -+ PLANNER_PRINT_CONFIG_FILE, -+ NULL); -+} -+ -+static gchar * -+get_old_config_filename (void) -+{ -+ if (!ensure_dir ()) { -+ return NULL; -+ } -+ - return g_build_filename (g_get_home_dir (), - ".gnome2", "planner", - PLANNER_PRINT_CONFIG_FILE, -@@ -171,8 +184,21 @@ - filename, - G_KEY_FILE_KEEP_COMMENTS|G_KEY_FILE_KEEP_TRANSLATIONS, - NULL); -+ - g_free (filename); - -+ /*try the older config dir if the new one didn't exist*/ -+ if (!success) { -+ filename = get_old_config_filename (); -+ if(filename) { -+ success = g_key_file_load_from_file (key_file, -+ filename, -+ G_KEY_FILE_KEEP_COMMENTS|G_KEY_FILE_KEEP_TRANSLATIONS, -+ NULL); -+ g_free (filename); -+ } -+ } -+ - if (success) { - settings = gtk_print_settings_new_from_key_file (key_file, NULL, NULL); - } -diff -ru planner-0.14.5.orig/src/planner-python-plugin.c planner-0.14.5/src/planner-python-plugin.c ---- planner-0.14.5.orig/src/planner-python-plugin.c 2009-09-24 11:12:52.000000000 +0100 -+++ planner-0.14.5/src/planner-python-plugin.c 2009-09-24 11:31:06.000000000 +0100 -@@ -125,26 +125,15 @@ - } - } - --G_MODULE_EXPORT void --plugin_init (PlannerPlugin *plugin) -+static void -+plugin_execute_scripts(PlannerPlugin *plugin, const gchar *dirname) - { -- PlannerPluginPriv *priv; - GDir *dir; -- gchar *dirname, *full_filename; -+ gchar *full_filename; - const gchar *filename; - -- priv = g_new0 (PlannerPluginPriv, 1); -- plugin->priv = priv; -- -- priv->scripts = g_hash_table_new (g_str_hash, g_str_equal); -- -- Py_Initialize (); -- -- /* Look in ~/.gnome2/planner/python/ and run the scripts that we find */ -- dirname = g_build_filename (g_get_home_dir(), ".gnome2", "planner", "python", NULL); - dir = g_dir_open (dirname, 0, NULL); - if (dir == NULL) { -- g_free (dirname); - return; - } - -@@ -152,7 +141,7 @@ - while (filename != NULL) { - if (g_str_has_suffix (filename, ".py")) { - full_filename = g_build_filename (dirname, filename, NULL); -- python_plugin_execute (full_filename, plugin->main_window, priv->scripts); -+ python_plugin_execute (full_filename, plugin->main_window, plugin->priv->scripts); - g_free (full_filename); - } - -@@ -164,6 +153,33 @@ - } - - G_MODULE_EXPORT void -+plugin_init (PlannerPlugin *plugin) -+{ -+ PlannerPluginPriv *priv; -+ GDir *dir; -+ gchar *dirname; -+ const gchar *filename; -+ -+ priv = g_new0 (PlannerPluginPriv, 1); -+ plugin->priv = priv; -+ -+ priv->scripts = g_hash_table_new (g_str_hash, g_str_equal); -+ -+ Py_Initialize (); -+ -+ /* Look in $XDG_DATA_HOME/planner/python/ and run the scripts that we find */ -+ dirname = g_build_filename (g_get_user_data_dir(), "planner", "python", NULL); -+ plugin_execute_scripts(plugin, dirname); -+ g_free (dirname); -+ -+ -+ /* Look in ~/.gnome2/planner/python/ and run the scripts that we find */ -+ dirname = g_build_filename (g_get_home_dir(), ".gnome2", "planner", "python", NULL); -+ plugin_execute_scripts(plugin, dirname); -+ g_free (dirname); -+} -+ -+G_MODULE_EXPORT void - plugin_exit (PlannerPlugin *plugin) - { - PlannerPluginPriv *priv; -diff -ru planner-0.14.5.orig/src/planner-window.c planner-0.14.5/src/planner-window.c ---- planner-0.14.5.orig/src/planner-window.c 2009-09-24 11:12:52.000000000 +0100 -+++ planner-0.14.5/src/planner-window.c 2009-09-24 11:18:11.000000000 +0100 -@@ -850,7 +850,7 @@ - last_dir = planner_conf_get_string (CONF_LAST_DIR, NULL); - - if (last_dir == NULL) { -- last_dir = g_strdup (g_get_home_dir ()); -+ last_dir = g_strdup (g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS)); - } - - return last_dir; -diff -ru planner-0.14.5.orig/src/planner-xml-planner-plugin.c planner-0.14.5/src/planner-xml-planner-plugin.c ---- planner-0.14.5.orig/src/planner-xml-planner-plugin.c 2009-09-24 11:12:52.000000000 +0100 -+++ planner-0.14.5/src/planner-xml-planner-plugin.c 2009-09-24 11:19:05.000000000 +0100 -@@ -63,7 +63,7 @@ - - last_dir = planner_conf_get_string (CONF_MAIN_LAST_XML_EXPORT_DIR, NULL); - if (last_dir == NULL) { -- last_dir = g_strdup (g_get_home_dir ()); -+ last_dir = g_strdup (g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS)); - } - - return last_dir; diff --git a/planner-gnome596966-editoninsert.patch b/planner-gnome596966-editoninsert.patch deleted file mode 100644 index 16d7dfa..0000000 --- a/planner-gnome596966-editoninsert.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -ru planner-0.14.5.orig/src/planner-task-tree.c planner-0.14.5/src/planner-task-tree.c ---- planner-0.14.5.orig/src/planner-task-tree.c 2009-09-30 16:27:53.000000000 +0100 -+++ planner-0.14.5/src/planner-task-tree.c 2009-09-30 16:28:25.000000000 +0100 -@@ -2700,7 +2700,7 @@ - gtk_tree_view_set_cursor (tree_view, - path, - gtk_tree_view_get_column (tree_view, 0), -- FALSE); -+ TRUE); - - planner_task_tree_set_anchor (tree, path); - -@@ -2788,7 +2788,7 @@ - gtk_tree_view_set_cursor (tree_view, - path, - gtk_tree_view_get_column (tree_view, 0), -- FALSE); -+ TRUE); - - planner_task_tree_set_anchor (tree, path); - diff --git a/planner-gnome603693-planner-calendar-for-edittask.patch b/planner-gnome603693-planner-calendar-for-edittask.patch deleted file mode 100644 index 6ad3196..0000000 --- a/planner-gnome603693-planner-calendar-for-edittask.patch +++ /dev/null @@ -1,291 +0,0 @@ -diff -ru planner-0.14.5.orig/data/glade/task-date-widget.glade planner-0.14.5/data/glade/task-date-widget.glade ---- planner-0.14.5.orig/data/glade/task-date-widget.glade 2009-12-03 10:50:00.000000000 +0000 -+++ planner-0.14.5/data/glade/task-date-widget.glade 2009-12-03 11:07:46.000000000 +0000 -@@ -25,10 +27,12 @@ - 6 - - -- -+ - True -- True -- GTK_CALENDAR_SHOW_HEADING|GTK_CALENDAR_SHOW_DAY_NAMES|GTK_CALENDAR_SHOW_WEEK_NUMBERS -+ create_schedule_calendar -+ 0 -+ 0 -+ Thu, 03 Dec 2009 11:07:42 GMT - - - 0 -diff -ru planner-0.14.5.orig/src/planner-calendar.c planner-0.14.5/src/planner-calendar.c ---- planner-0.14.5.orig/src/planner-calendar.c 2009-12-03 10:50:00.000000000 +0000 -+++ planner-0.14.5/src/planner-calendar.c 2009-12-03 12:00:44.000000000 +0000 -@@ -2782,5 +2782,38 @@ - } - } - -+void -+planner_calendar_mark_days (PlannerCalendar *calendar, -+ MrpCalendar *mrp_calendar) -+{ -+ guint y, m, d; -+ MrpTime *t; -+ mrptime time; -+ MrpDay *day; - -+ planner_calendar_get_date (calendar, &y, &m, &d); - -+ t = mrp_time2_new (); -+ mrp_time2_set_date (t, y, m+1, 1); -+ mrp_time2_set_time (t, 0, 0, 0); -+ -+ for (d = 1; d <= 31; d++) { -+ time = mrp_time2_get_epoch (t); -+ -+ day = mrp_calendar_get_day (mrp_calendar, time, TRUE); -+ -+ if (day == mrp_day_get_nonwork ()) { -+ planner_calendar_mark_day (calendar, -+ d, -+ PLANNER_CALENDAR_MARK_SHADE); -+ } -+ else if (day == mrp_day_get_work ()) { -+ planner_calendar_mark_day (calendar, -+ d, -+ PLANNER_CALENDAR_MARK_NONE); -+ } -+ -+ mrp_time2_add_days (t, 1); -+ } -+ mrp_time2_free (t); -+} -diff -ru planner-0.14.5.orig/src/planner-calendar-dialog.c planner-0.14.5/src/planner-calendar-dialog.c ---- planner-0.14.5.orig/src/planner-calendar-dialog.c 2009-12-03 10:50:00.000000000 +0000 -+++ planner-0.14.5/src/planner-calendar-dialog.c 2009-12-03 11:31:26.000000000 +0000 -@@ -877,9 +877,6 @@ - MrpCalendar *calendar; - PlannerCalendar *calendar_widget; - guint y, m, d; -- MrpDay *day; -- MrpTime *t; -- mrptime time; - - calendar = cal_dialog_get_selected_calendar (GTK_TREE_VIEW (data->tree_view)); - if (!calendar) { -@@ -895,31 +892,7 @@ - gtk_widget_set_sensitive (data->default_week_button, TRUE); - gtk_widget_set_sensitive (data->working_time_button, TRUE); - -- planner_calendar_get_date (calendar_widget, &y, &m, &d); -- -- t = mrp_time2_new (); -- mrp_time2_set_date (t, y, m+1, 1); -- mrp_time2_set_time (t, 0, 0, 0); -- -- for (d = 1; d <= 31; d++) { -- time = mrp_time2_get_epoch (t); -- -- day = mrp_calendar_get_day (calendar, time, TRUE); -- -- if (day == mrp_day_get_nonwork ()) { -- planner_calendar_mark_day (calendar_widget, -- d, -- PLANNER_CALENDAR_MARK_SHADE); -- } -- else if (day == mrp_day_get_work ()) { -- planner_calendar_mark_day (calendar_widget, -- d, -- PLANNER_CALENDAR_MARK_NONE); -- } -- -- mrp_time2_add_days (t, 1); -- } -- mrp_time2_free (t); -+ planner_calendar_mark_days (calendar_widget, calendar); - } - - static void -diff -ru planner-0.14.5.orig/src/planner-calendar.h planner-0.14.5/src/planner-calendar.h ---- planner-0.14.5.orig/src/planner-calendar.h 2009-12-03 10:50:00.000000000 +0000 -+++ planner-0.14.5/src/planner-calendar.h 2009-12-03 12:00:03.000000000 +0000 -@@ -31,6 +31,7 @@ - - #include - #include -+#include - - #define PLANNER_TYPE_CALENDAR (planner_calendar_get_type ()) - #define PLANNER_CALENDAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PLANNER_TYPE_CALENDAR, PlannerCalendar)) -@@ -143,5 +144,8 @@ - guint day, - PlannerCalendarMarkType type); - -+void planner_calendar_mark_days (PlannerCalendar *calendar, -+ MrpCalendar *mrp_calendar); -+ - - #endif /* __PLANNER_CALENDAR_H__ */ -diff -ru planner-0.14.5.orig/src/planner-task-date-widget.c planner-0.14.5/src/planner-task-date-widget.c ---- planner-0.14.5.orig/src/planner-task-date-widget.c 2009-12-03 10:50:00.000000000 +0000 -+++ planner-0.14.5/src/planner-task-date-widget.c 2009-12-03 12:13:05.000000000 +0000 -@@ -27,6 +27,7 @@ - #include "libplanner/mrp-task.h" - #include "libplanner/mrp-paths.h" - #include "planner-task-date-widget.h" -+#include "planner-calendar.h" - - typedef struct { - GtkWidget *calendar; -@@ -35,6 +36,7 @@ - - mrptime time; - MrpConstraintType type; -+ MrpCalendar *mrp_calendar; - } PlannerTaskDateWidgetPriv; - - -@@ -128,6 +130,29 @@ - g_signal_emit (widget, signals[DATE_SELECTED], 0); - } - -+void -+planner_task_date_widget_set_mrp_calendar (PlannerTaskDateWidget *widget , -+ MrpCalendar *mrp_calendar) -+{ -+ PlannerTaskDateWidgetPriv *priv; -+ -+ priv = GET_PRIV (widget); -+ -+ priv->mrp_calendar = mrp_calendar; -+} -+ -+static void -+update_schedule_calendar_cb (PlannerCalendar *calendar_widget, -+ PlannerTaskDateWidget *widget) -+{ -+ PlannerTaskDateWidgetPriv *priv; -+ -+ priv = GET_PRIV (widget); -+ -+ if (priv->mrp_calendar) -+ planner_calendar_mark_days (calendar_widget, priv->mrp_calendar); -+} -+ - static gboolean - grab_on_window (GdkWindow *window, - guint32 time) -@@ -158,6 +183,7 @@ - - type = planner_task_date_widget_get_constraint_type (widget); - gtk_widget_set_sensitive (priv->calendar, type != MRP_CONSTRAINT_ASAP); -+ update_schedule_calendar_cb (PLANNER_CALENDAR (priv->calendar), widget); - - /* A bit hackish. Grab focus on the popup widget again when the combo - * has been used, since focus is transferred to the combo when it's -@@ -168,6 +194,22 @@ - } - } - -+GtkWidget * -+create_schedule_calendar (gchar *name, -+ gchar *string1, gchar *string2, -+ gint int1, gint int2) -+{ -+ GtkWidget *ret; -+ -+ ret = planner_calendar_new (); -+ -+ planner_calendar_display_options ( PLANNER_CALENDAR (ret), -+ PLANNER_CALENDAR_SHOW_HEADING | PLANNER_CALENDAR_SHOW_DAY_NAMES | -+ PLANNER_CALENDAR_SHOW_WEEK_NUMBERS | PLANNER_CALENDAR_WEEK_START_MONDAY ); -+ -+ return ret; -+} -+ - static void - task_date_widget_setup (PlannerTaskDateWidget *widget) - { -@@ -180,6 +222,8 @@ - - priv = GET_PRIV (widget); - -+ priv->mrp_calendar = NULL; -+ - vbox = gtk_vbox_new (FALSE, 0); - gtk_container_add (GTK_CONTAINER (widget), vbox); - -@@ -222,6 +266,10 @@ - G_CALLBACK (task_date_day_selected_double_click_cb), - widget); - -+ g_signal_connect (priv->calendar, "month_changed", -+ G_CALLBACK (update_schedule_calendar_cb), -+ widget); -+ - gtk_widget_show_all (vbox); - } - -@@ -237,8 +285,8 @@ - return; - } - -- gtk_calendar_select_month (GTK_CALENDAR (priv->calendar), month - 1, year); -- gtk_calendar_select_day (GTK_CALENDAR (priv->calendar), day); -+ planner_calendar_select_month (PLANNER_CALENDAR (priv->calendar), month - 1, year); -+ planner_calendar_select_day (PLANNER_CALENDAR (priv->calendar), day); - } - - mrptime -@@ -249,7 +297,7 @@ - - priv = GET_PRIV (widget); - -- gtk_calendar_get_date (GTK_CALENDAR (priv->calendar), -+ planner_calendar_get_date (GTK_CALENDAR (priv->calendar), - &year, &month, &day); - - month++; -diff -ru planner-0.14.5.orig/src/planner-task-date-widget.h planner-0.14.5/src/planner-task-date-widget.h ---- planner-0.14.5.orig/src/planner-task-date-widget.h 2009-12-03 10:50:00.000000000 +0000 -+++ planner-0.14.5/src/planner-task-date-widget.h 2009-12-03 12:00:18.000000000 +0000 -@@ -22,6 +22,7 @@ - #define __PLANNER_TASK_DATE_WIDGET_H__ - - #include -+#include - - #define PLANNER_TYPE_TASK_DATE_WIDGET (planner_task_date_widget_get_type ()) - #define PLANNER_TASK_DATE_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PLANNER_TYPE_TASK_DATE_WIDGET, PlannerTaskDateWidget)) -@@ -50,5 +51,7 @@ - void planner_task_date_widget_set_constraint_type (PlannerTaskDateWidget *widget, - MrpConstraintType type); - MrpConstraintType planner_task_date_widget_get_constraint_type (PlannerTaskDateWidget *widget); -+void planner_task_date_widget_set_mrp_calendar (PlannerTaskDateWidget *widget , -+ MrpCalendar *calendar); - - #endif /* __PLANNER_TASK_DATE_WIDGET_H__ */ -diff -ru planner-0.14.5.orig/src/planner-task-dialog.c planner-0.14.5/src/planner-task-dialog.c ---- planner-0.14.5.orig/src/planner-task-dialog.c 2009-12-03 10:50:00.000000000 +0000 -+++ planner-0.14.5/src/planner-task-dialog.c 2009-12-03 12:01:17.000000000 +0000 -@@ -2276,6 +2276,8 @@ - { - GtkWidget *widget; - MrpConstraint *constraint; -+ MrpProject *project; -+ MrpCalendar *calendar; - - widget = planner_task_date_widget_new (); - -@@ -2284,6 +2286,12 @@ - planner_task_date_widget_set_constraint_type (PLANNER_TASK_DATE_WIDGET (widget), - constraint->type); - -+ g_object_get (data->task, "project", &project, NULL); -+ calendar = mrp_project_get_calendar (project); -+ -+ planner_task_date_widget_set_mrp_calendar (PLANNER_TASK_DATE_WIDGET (widget), -+ calendar); -+ - if (constraint->type != MRP_CONSTRAINT_ASAP) { - planner_task_date_widget_set_date (PLANNER_TASK_DATE_WIDGET (widget), - constraint->time); diff --git a/planner-gnome604169-comboboxentry.patch b/planner-gnome604169-comboboxentry.patch deleted file mode 100644 index d3b4b75..0000000 --- a/planner-gnome604169-comboboxentry.patch +++ /dev/null @@ -1,296 +0,0 @@ -diff -ru planner-0.14.4.orig/data/glade/add-predecessor.glade planner-0.14.4/data/glade/add-predecessor.glade ---- planner-0.14.4.orig/data/glade/add-predecessor.glade 2010-01-25 10:27:21.000000000 +0000 -+++ planner-0.14.4/data/glade/add-predecessor.glade 2010-01-25 09:46:24.000000000 +0000 -@@ -88,7 +88,6 @@ - 0.5 - 0 - 0 -- combo-entry1 - PANGO_ELLIPSIZE_NONE - -1 - False -@@ -162,6 +161,7 @@ - 0.5 - 0 - 0 -+ lag_entry - PANGO_ELLIPSIZE_NONE - -1 - False -@@ -178,45 +178,6 @@ - - - -- -- True -- False -- True -- False -- True -- False -- -- -- -- True -- True -- True -- True -- 0 -- -- True -- * -- True -- -- -- -- -- -- True -- GTK_SELECTION_BROWSE -- -- -- -- -- 1 -- 2 -- 0 -- 1 -- -- -- -- -- - - True - True -@@ -236,6 +197,23 @@ - - - -+ -+ -+ -+ True -+ False -+ True -+ True -+ -+ -+ 1 -+ 2 -+ 0 -+ 1 -+ fill -+ fill -+ -+ - - - 0 -diff -ru planner-0.14.4.orig/src/planner-gantt-model.c planner-0.14.4/src/planner-gantt-model.c ---- planner-0.14.4.orig/src/planner-gantt-model.c 2010-01-25 09:50:30.000000000 +0000 -+++ planner-0.14.4/src/planner-gantt-model.c 2010-01-25 10:14:59.000000000 +0000 -@@ -1128,28 +1128,12 @@ - return sibling->data; - } - --static const gchar * --value_cache_get_wbs (PlannerGanttModel *model, -- MrpTask *task) -+gchar *get_wbs_from_task(MrpTask *task) - { -- ValueCache *cache; -- MrpTask *tmp_task; -+ gint pos; - gchar *str; -+ MrpTask *tmp_task; - GString *string; -- gint pos; -- -- cache = value_cache_get (model, task); -- if (!cache->wbs) { -- goto update_cache; -- } -- -- if (cache->wbs_stamp != model->priv->wbs_stamp) { -- goto update_cache; -- } -- -- return cache->wbs; -- -- update_cache: - string = g_string_sized_new (24); - - pos = -1; -@@ -1171,10 +1155,29 @@ - if (mrp_task_get_parent (tmp_task) == NULL) - break; - } -+ return g_string_free (string, FALSE); -+} - -- g_free (cache->wbs); -+static const gchar * -+value_cache_get_wbs (PlannerGanttModel *model, -+ MrpTask *task) -+{ -+ ValueCache *cache; - -- cache->wbs = g_string_free (string, FALSE); -+ cache = value_cache_get (model, task); -+ if (!cache->wbs) { -+ goto update_cache; -+ } -+ -+ if (cache->wbs_stamp != model->priv->wbs_stamp) { -+ goto update_cache; -+ } -+ -+ return cache->wbs; -+ -+ update_cache: -+ g_free (cache->wbs); -+ cache->wbs = get_wbs_from_task(task); - cache->wbs_stamp = model->priv->wbs_stamp; - - return cache->wbs; -diff -ru planner-0.14.4.orig/src/planner-task-dialog.c planner-0.14.4/src/planner-task-dialog.c ---- planner-0.14.4.orig/src/planner-task-dialog.c 2010-01-25 10:27:21.000000000 +0000 -+++ planner-0.14.4/src/planner-task-dialog.c 2010-01-25 10:25:08.000000000 +0000 -@@ -183,6 +183,7 @@ - GtkWidget *dialog); - static void task_dialog_update_sensitivity (DialogData *data); - static void task_dialog_update_title (DialogData *data); -+extern gchar * get_wbs_from_task (MrpTask *task); - - - -@@ -350,56 +351,56 @@ - #endif - - static void --task_dialog_task_combo_select_child_cb (GtkList *list, -- GtkWidget *item, -- GtkCombo *combo) --{ -- MrpTask *task; -- -- task = g_object_get_data (G_OBJECT (item), "task"); -- g_object_set_data (G_OBJECT (combo), "selected_task", task); --} -- --static void --task_dialog_setup_task_combo (GtkCombo *combo, -+task_dialog_setup_task_combo (GtkComboBoxEntry *combo, - GList *tasks) - { -- GList *strings; -- GList *children; -- GList *l; -- const gchar *name; -+ GtkListStore *store; -+ GtkTreeIter iter; -+ GtkCellRenderer *renderer; -+ GList *l; -+ const gchar *name; - - if (tasks == NULL) { - return; - } - -- strings = NULL; -+ store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_POINTER); - for (l = tasks; l; l = l->next) { -+ GString *scratch; -+ gchar *wbs; -+ -+ gtk_list_store_append (store, &iter); -+ scratch = g_string_new( NULL); -+ -+ wbs = get_wbs_from_task (l->data); -+ if (wbs != NULL && wbs[0] != 0) -+ g_string_append_printf (scratch, "%s ", wbs); -+ g_free(wbs); -+ - name = mrp_task_get_name (l->data); -- if (name == NULL || name[0] == 0) { -- strings = g_list_prepend (strings, -- _("(No name)")); -+ if (name != NULL && name[0] != 0) -+ g_string_append (scratch, name); -+ -+ if (scratch->len == 0) { -+ gtk_list_store_set (store, &iter, -+ 0, _("(No name)"), -+ 1, l->data, -+ -1); - } else { -- strings = g_list_prepend (strings, (gchar*) name); -+ gtk_list_store_set (store, &iter, -+ 0, scratch->str, -+ 1, l->data, -+ -1); - } -+ g_string_free(scratch, TRUE); - } - -- strings = g_list_reverse (strings); -- gtk_combo_set_popdown_strings (combo, strings); -- g_list_free (strings); -- -- g_object_set_data (G_OBJECT (combo), "selected_task", tasks->data); -- -- children = GTK_LIST (combo->list)->children; -- for (l = children; l; l = l->next) { -- g_object_set_data (G_OBJECT (l->data), "task", tasks->data); -- tasks = tasks->next; -- } -- -- g_signal_connect (combo->list, -- "select-child", -- G_CALLBACK (task_dialog_task_combo_select_child_cb), -- combo); -+ gtk_combo_box_set_model (GTK_COMBO_BOX (combo), -+ GTK_TREE_MODEL (store)); -+ -+ gtk_combo_box_entry_set_text_column (combo, 0); -+ -+ gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0); - } - - static gboolean -@@ -1906,7 +1907,7 @@ - - tasks = mrp_project_get_all_tasks (project); - tasks = g_list_remove (tasks, task); -- task_dialog_setup_task_combo (GTK_COMBO (w), tasks); -+ task_dialog_setup_task_combo (GTK_COMBO_BOX_ENTRY (w), tasks); - - w = glade_xml_get_widget (glade, "type_optionmenu"); - g_object_set_data (G_OBJECT (dialog), "type_optionmenu", w); -@@ -1947,10 +1948,11 @@ - GtkWidget *w; - GError *error = NULL; - MrpTask *task_main; -- MrpTask *new_task_pred; -+ MrpTask *new_task_pred=NULL; - MrpProject *project; - gint lag; - gint pred_type; -+ GtkTreeIter iter; - const gchar *str; - - main_window = g_object_get_data (G_OBJECT (dialog), "main_window"); -@@ -1970,7 +1972,11 @@ - /* Predecessor task. */ - w = g_object_get_data (G_OBJECT (dialog), "predecessor_combo"); - -- new_task_pred = g_object_get_data (G_OBJECT (w), "selected_task"); -+ if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (w), &iter)) { -+ gtk_tree_model_get (gtk_combo_box_get_model (GTK_COMBO_BOX (w)), -+ &iter, 1, &new_task_pred, -1); -+ } -+ - if (new_task_pred == NULL) { - g_warning (_("Can't add new predecessor. No task selected!")); - return; diff --git a/planner-gnome604510.calcolors.patch b/planner-gnome604510.calcolors.patch deleted file mode 100644 index fde99c2..0000000 --- a/planner-gnome604510.calcolors.patch +++ /dev/null @@ -1,362 +0,0 @@ -diff -ru planner-0.14.4.orig/libplanner/mrp-calendar.c planner-0.14.4/libplanner/mrp-calendar.c ---- planner-0.14.4.orig/libplanner/mrp-calendar.c 2008-07-22 14:41:46.000000000 +0100 -+++ planner-0.14.4/libplanner/mrp-calendar.c 2009-12-12 17:08:50.000000000 +0000 -@@ -159,9 +159,10 @@ - - g_object_class_install_property (object_class, - PROP_PROJECT, -- g_param_spec_pointer ("project", -+ g_param_spec_object ("project", - "Project", - "The project this calendar belongs to", -+ G_TYPE_OBJECT, - G_PARAM_READWRITE)); - - imrp_day_setup_defaults (); -@@ -254,7 +255,7 @@ - mrp_calendar_set_name (calendar, g_value_get_string (value)); - break; - case PROP_PROJECT: -- priv->project = MRP_PROJECT (g_value_get_pointer (value)); -+ priv->project = g_value_get_object (value); - break; - default: - break; -diff -ru planner-0.14.4.orig/src/planner-calendar.c planner-0.14.4/src/planner-calendar.c ---- planner-0.14.4.orig/src/planner-calendar.c 2009-12-14 08:55:30.000000000 +0000 -+++ planner-0.14.4/src/planner-calendar.c 2009-12-13 15:47:15.000000000 +0000 -@@ -180,10 +180,8 @@ - #define HEADER_BG_COLOR(widget) (& (widget)->style->bg[GTK_WIDGET_STATE (widget)]) - #define SELECTED_BG_COLOR(widget) (& (widget)->style->base[GTK_WIDGET_HAS_FOCUS (widget) ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE]) - #define SELECTED_FG_COLOR(widget) (& (widget)->style->text[GTK_WIDGET_HAS_FOCUS (widget) ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE]) --#define NORMAL_DAY_COLOR(widget) (& (widget)->style->fg[GTK_WIDGET_STATE (widget)]) - #define PREV_MONTH_COLOR(widget) (& (widget)->style->mid[GTK_WIDGET_STATE (widget)]) - #define NEXT_MONTH_COLOR(widget) (& (widget)->style->mid[GTK_WIDGET_STATE (widget)]) --#define MARKED_COLOR(widget) (& (widget)->style->fg[GTK_WIDGET_STATE (widget)]) - #define BACKGROUND_COLOR(widget) (& (widget)->style->base[GTK_WIDGET_STATE (widget)]) - #define HIGHLIGHT_BACK_COLOR(widget) (& (widget)->style->mid[GTK_WIDGET_STATE (widget)]) - -@@ -430,6 +428,25 @@ - G_TYPE_NONE, 0); - } - -+/* Tango palette */ -+static const GdkColor tango_palette[14] = -+{ -+ { 0, 0xcccc, 0x0000, 0x0000 }, -+ { 0, 0x4e4e, 0x9a9a, 0x0606 }, -+ { 0, 0xc4c4, 0xa0a0, 0x0000 }, -+ { 0, 0x3434, 0x6565, 0xa4a4 }, -+ { 0, 0x7575, 0x5050, 0x7b7b }, -+ { 0, 0x0606, 0x9820, 0x9a9a }, -+ { 0, 0x5555, 0x5757, 0x5353 }, -+ { 0, 0xefef, 0x2929, 0x2929 }, -+ { 0, 0x8a8a, 0xe2e2, 0x3434 }, -+ { 0, 0xfcfc, 0xe9e9, 0x4f4f }, -+ { 0, 0x7272, 0x9f9f, 0xcfcf }, -+ { 0, 0xadad, 0x7f7f, 0xa8a8 }, -+ { 0, 0x3434, 0xe2e2, 0xe2e2 }, -+ { 0, 0xeeee, 0xeeee, 0xecec } -+}; -+ - static void - planner_calendar_init (PlannerCalendar *calendar) - { -@@ -470,8 +487,11 @@ - calendar->year = 1900 + tm->tm_year; - - for (i=0;i<31;i++) -- calendar->marked_date[i] = PLANNER_CALENDAR_MARK_NONE; -- calendar->num_marked_dates = 0; -+ calendar->marked_date[i] = NULL; -+ -+ for (i=0;i<14;i++) -+ calendar->mark_colors[i] = tango_palette[i]; -+ - calendar->selected_day = tm->tm_mday; - - calendar->display_flags = ( PLANNER_CALENDAR_SHOW_HEADING | -@@ -1049,6 +1069,7 @@ - PlannerCalendarPrivateData *private_data; - GdkWindowAttr attributes; - gint attributes_mask; -+ gint i; - GdkGCValues values; - - calendar = PLANNER_CALENDAR (widget); -@@ -1110,6 +1131,9 @@ - &values, - GDK_GC_FOREGROUND | - GDK_GC_FUNCTION); -+ -+ for (i=0;i<14;i++) -+ gdk_rgb_find_color(attributes.colormap, &(calendar->mark_colors[i])); - } - - static void -@@ -1839,49 +1863,11 @@ - gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top, - private_data->day_width, day_height); - } -- else -+ else if (calendar->marked_date[day-1]) - { -- switch (calendar->marked_date[day-1]) { -- case PLANNER_CALENDAR_MARK_NONE: -- case PLANNER_CALENDAR_MARK_UNDERLINE: -- case PLANNER_CALENDAR_MARK_BOLD: -- break; -- case PLANNER_CALENDAR_MARK_SHADE: -- gdk_gc_set_foreground (gc, SHADED_BG_COLOR (GTK_WIDGET (calendar))); -- gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top, -- private_data->day_width, day_height); -- break; -- case PLANNER_CALENDAR_MARK_STRIPE: -- { -- static GdkBitmap *stripe_stipple = NULL; -- gchar stipple_pattern[] = { 2, 1, 8, 4 }; -- -- if (!stripe_stipple) { -- stripe_stipple = gdk_bitmap_create_from_data (NULL, -- stipple_pattern, -- 4, 4); -- } -- -- gdk_gc_set_foreground (gc, STRIPED_BG_COLOR (GTK_WIDGET (calendar))); -- gdk_gc_set_fill (gc, GDK_STIPPLED); -- gdk_gc_set_stipple (gc, stripe_stipple); -- gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top, -- private_data->day_width, day_height); -- gdk_gc_set_fill (gc, GDK_SOLID); -- } -- break; -- } -- } -- -- switch (calendar->marked_date[day-1]) { -- case PLANNER_CALENDAR_MARK_BOLD: -- gdk_gc_set_foreground (gc, MARKED_COLOR (GTK_WIDGET (calendar))); -- break; -- case PLANNER_CALENDAR_MARK_SHADE: -- case PLANNER_CALENDAR_MARK_UNDERLINE: -- case PLANNER_CALENDAR_MARK_NONE: -- gdk_gc_set_foreground (gc, NORMAL_DAY_COLOR (GTK_WIDGET (calendar))); -- break; -+ gdk_gc_set_foreground (gc, calendar->marked_date[day-1]); -+ gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top, -+ private_data->day_width, day_height); - } - - if (calendar->selected_day == day) -@@ -1901,17 +1887,6 @@ - gdk_draw_layout (private_data->main_win, gc, - x_loc, y_loc, layout); - -- switch (calendar->marked_date[day-1]) { -- case PLANNER_CALENDAR_MARK_BOLD: -- if (calendar->day_month[row][col] == MONTH_CURRENT) -- gdk_draw_layout (private_data->main_win, gc, -- x_loc-1, y_loc, layout); -- break; -- -- default: -- break; -- } -- - if (GTK_WIDGET_HAS_FOCUS (calendar) - && calendar->focus_row == row && calendar->focus_col == col) - { -@@ -2257,46 +2232,6 @@ - } - - void --planner_calendar_clear_marks (PlannerCalendar *calendar) --{ -- guint day; -- -- g_return_if_fail (PLANNER_IS_CALENDAR (calendar)); -- -- for (day = 0; day < 31; day++) -- { -- calendar->marked_date[day] = PLANNER_CALENDAR_MARK_NONE; -- } -- -- calendar->num_marked_dates = 0; -- -- if (GTK_WIDGET_DRAWABLE (calendar)) -- { -- planner_calendar_paint_main (GTK_WIDGET (calendar)); -- } --} -- --gboolean --planner_calendar_unmark_day (PlannerCalendar *calendar, -- guint day) --{ -- g_return_val_if_fail (PLANNER_IS_CALENDAR (calendar), FALSE); -- -- if (day >= 1 && day <= 31 && calendar->marked_date[day-1] == TRUE) -- { -- calendar->marked_date[day - 1] = FALSE; -- calendar->num_marked_dates--; -- } -- -- if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) -- { -- planner_calendar_paint_main (GTK_WIDGET (calendar)); -- } -- -- return TRUE; --} -- --void - planner_calendar_get_date (PlannerCalendar *calendar, - guint *year, - guint *month, -@@ -2754,10 +2689,10 @@ - - /* ------------------------------- */ - --void -+static void - planner_calendar_mark_day (PlannerCalendar *calendar, - guint day, -- PlannerCalendarMarkType type) -+ const GdkColor *color) - { - gint index; - -@@ -2766,16 +2701,11 @@ - - index = day - 1; - -- if (calendar->marked_date[index] == type) { -+ if (calendar->marked_date[index] == color) { - return; - } - -- calendar->marked_date[index] = type; -- if (type != PLANNER_CALENDAR_MARK_NONE) { -- calendar->num_marked_dates++; -- } else { -- calendar->num_marked_dates--; -- } -+ calendar->marked_date[index] = color; - - if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) { - planner_calendar_paint_main (GTK_WIDGET (calendar)); -@@ -2790,9 +2720,19 @@ - MrpTime *t; - mrptime time; - MrpDay *day; -+ MrpProject *project=NULL; -+ const GdkColor *color; -+ GList *daytypes; -+ gint dayindex; - - planner_calendar_get_date (calendar, &y, &m, &d); - -+ g_object_get (mrp_calendar, "project", &project, NULL); -+ -+ daytypes = mrp_day_get_all (project); -+ daytypes = g_list_prepend (daytypes, mrp_day_get_nonwork ()); -+ daytypes = g_list_prepend (daytypes, mrp_day_get_work ()); -+ - t = mrp_time2_new (); - mrp_time2_set_date (t, y, m+1, 1); - mrp_time2_set_time (t, 0, 0, 0); -@@ -2801,19 +2741,26 @@ - time = mrp_time2_get_epoch (t); - - day = mrp_calendar_get_day (mrp_calendar, time, TRUE); -+ dayindex = g_list_index (daytypes, day); - -- if (day == mrp_day_get_nonwork ()) { -- planner_calendar_mark_day (calendar, -- d, -- PLANNER_CALENDAR_MARK_SHADE); -- } -- else if (day == mrp_day_get_work ()) { -- planner_calendar_mark_day (calendar, -- d, -- PLANNER_CALENDAR_MARK_NONE); -+ switch (dayindex) -+ { -+ case 0: -+ color = NULL; -+ break; -+ case 1: -+ color = SHADED_BG_COLOR (GTK_WIDGET (calendar)); -+ break; -+ default: -+ color = &(calendar->mark_colors[(dayindex-2)%14]); -+ break; - } - -+ planner_calendar_mark_day (calendar, d, color); -+ - mrp_time2_add_days (t, 1); - } - mrp_time2_free (t); -+ g_list_free (daytypes); -+ g_object_unref (project); - } -diff -ru planner-0.14.4.orig/src/planner-calendar.h planner-0.14.4/src/planner-calendar.h ---- planner-0.14.4.orig/src/planner-calendar.h 2009-12-14 08:55:30.000000000 +0000 -+++ planner-0.14.4/src/planner-calendar.h 2009-12-13 15:44:31.000000000 +0000 -@@ -52,15 +52,6 @@ - PLANNER_CALENDAR_SHOW_WEEK_NUMBERS = 1 << 3, - PLANNER_CALENDAR_WEEK_START_MONDAY = 1 << 4} PlannerCalendarDisplayOptions; - --typedef enum --{ -- PLANNER_CALENDAR_MARK_NONE, -- PLANNER_CALENDAR_MARK_BOLD, -- PLANNER_CALENDAR_MARK_UNDERLINE, -- PLANNER_CALENDAR_MARK_SHADE, -- PLANNER_CALENDAR_MARK_STRIPE --} PlannerCalendarMarkType; -- - struct _PlannerCalendar - { - GtkWidget widget; -@@ -75,10 +66,9 @@ - gint day_month[6][7]; - gint day[6][7]; - -- gint num_marked_dates; -- gint marked_date[31]; -+ const GdkColor *marked_date[31]; - PlannerCalendarDisplayOptions display_flags; -- GdkColor marked_date_color[31]; -+ GdkColor mark_colors[14]; - - GdkGC *gc; - GdkGC *xor_gc; -@@ -123,10 +113,6 @@ - guint year); - void planner_calendar_select_day (PlannerCalendar *calendar, - guint day); --gboolean planner_calendar_unmark_day (PlannerCalendar *calendar, -- guint day); --void planner_calendar_clear_marks (PlannerCalendar *calendar); -- - - void planner_calendar_display_options (PlannerCalendar *calendar, - PlannerCalendarDisplayOptions flags); -@@ -138,14 +124,8 @@ - void planner_calendar_freeze (PlannerCalendar *calendar); - void planner_calendar_thaw (PlannerCalendar *calendar); - -- -- --void planner_calendar_mark_day (PlannerCalendar *calendar, -- guint day, -- PlannerCalendarMarkType type); -- - void planner_calendar_mark_days (PlannerCalendar *calendar, -- MrpCalendar *mrp_calendar); -+ MrpCalendar *mrp_calendar); - - - #endif /* __PLANNER_CALENDAR_H__ */ diff --git a/planner-gnome604531-tooltips.patch b/planner-gnome604531-tooltips.patch deleted file mode 100644 index 2e479be..0000000 --- a/planner-gnome604531-tooltips.patch +++ /dev/null @@ -1,152 +0,0 @@ -diff -ru planner-0.14.5.orig/src/planner-gantt-chart.c planner-0.14.5/src/planner-gantt-chart.c ---- planner-0.14.5.orig/src/planner-gantt-chart.c 2009-12-14 10:29:48.000000000 +0000 -+++ planner-0.14.5/src/planner-gantt-chart.c 2009-12-14 12:38:26.000000000 +0000 -@@ -366,6 +366,7 @@ - 0); /* padding */ - - priv->canvas = GNOME_CANVAS (gnome_canvas_new ()); -+ planner_gantt_chart_init_tooltips(priv->canvas); - priv->canvas->close_enough = 5; - gnome_canvas_set_center_scroll_region (priv->canvas, FALSE); - -diff -ru planner-0.14.5.orig/src/planner-gantt-chart.h planner-0.14.5/src/planner-gantt-chart.h ---- planner-0.14.5.orig/src/planner-gantt-chart.h 2009-12-14 10:29:48.000000000 +0000 -+++ planner-0.14.5/src/planner-gantt-chart.h 2009-12-14 12:38:26.000000000 +0000 -@@ -102,5 +102,7 @@ - gboolean - planner_gantt_chart_get_nonstandard_days (PlannerGanttChart *chart); - -+void -+planner_gantt_chart_init_tooltips (GnomeCanvas *canvas); - - #endif /* __PLANNER_GANTT_CHART_H__ */ -diff -ru planner-0.14.5.orig/src/planner-gantt-row.c planner-0.14.5/src/planner-gantt-row.c ---- planner-0.14.5.orig/src/planner-gantt-row.c 2009-12-14 10:29:48.000000000 +0000 -+++ planner-0.14.5/src/planner-gantt-row.c 2009-12-14 12:42:52.000000000 +0000 -@@ -3518,3 +3518,50 @@ - - return list; - } -+ -+static gboolean -+query_tooltip_canvas_cb(GtkWidget *widget, -+ int x, -+ int y, -+ gboolean keybord_tip, -+ GtkTooltip *tooltip, -+ gpointer data) -+{ -+ GnomeCanvasItem *mouse_over_item; -+ PlannerGanttRow *row; -+ PlannerGanttRowPriv *priv; -+ int scrollx, scrolly; -+ double wx, wy; -+ -+ if (keybord_tip) -+ return FALSE; -+ -+ gnome_canvas_get_scroll_offsets (GNOME_CANVAS(widget), &scrollx, &scrolly); -+ gnome_canvas_window_to_world (GNOME_CANVAS(widget), x+scrollx, y+scrolly, &wx, &wy); -+ -+ mouse_over_item = gnome_canvas_get_item_at (GNOME_CANVAS(widget), wx, wy); -+ if (!mouse_over_item) -+ return FALSE; -+ -+ if (!PLANNER_IS_GANTT_ROW (mouse_over_item)) -+ return FALSE; -+ -+ row = PLANNER_GANTT_ROW (mouse_over_item); -+ priv = row->priv; -+ -+ if (!priv->task) -+ return FALSE; -+ -+ gtk_tooltip_set_text(tooltip, mrp_task_get_name(priv->task)); -+ -+ return TRUE; -+} -+ -+void -+planner_gantt_chart_init_tooltips(GnomeCanvas *canvas) -+{ -+ g_object_set (canvas, "has-tooltip", TRUE, NULL); -+ g_signal_connect (canvas, "query-tooltip", -+ G_CALLBACK (query_tooltip_canvas_cb), -+ NULL ); -+} -diff -ru planner-0.14.5.orig/src/planner-usage-chart.c planner-0.14.5/src/planner-usage-chart.c ---- planner-0.14.5.orig/src/planner-usage-chart.c 2009-12-14 10:29:48.000000000 +0000 -+++ planner-0.14.5/src/planner-usage-chart.c 2009-12-14 12:38:26.000000000 +0000 -@@ -341,6 +341,7 @@ - 0); - - priv->canvas = GNOME_CANVAS (gnome_canvas_new ()); -+ planner_usage_chart_init_tooltips(priv->canvas); - priv->canvas->close_enough = 5; - gnome_canvas_set_center_scroll_region (priv->canvas, FALSE); - -diff -ru planner-0.14.5.orig/src/planner-usage-chart.h planner-0.14.5/src/planner-usage-chart.h ---- planner-0.14.5.orig/src/planner-usage-chart.h 2009-12-14 10:29:48.000000000 +0000 -+++ planner-0.14.5/src/planner-usage-chart.h 2009-12-14 12:38:26.000000000 +0000 -@@ -79,4 +79,7 @@ - - void planner_usage_chart_setup_root_task (PlannerUsageChart *chart); - -+void -+planner_usage_chart_init_tooltips (GnomeCanvas *canvas); -+ - #endif /* __PLANNER_USAGE_CHART_H__ */ -diff -ru planner-0.14.5.orig/src/planner-usage-row.c planner-0.14.5/src/planner-usage-row.c ---- planner-0.14.5.orig/src/planner-usage-row.c 2009-12-14 10:29:48.000000000 +0000 -+++ planner-0.14.5/src/planner-usage-row.c 2009-12-14 12:42:48.000000000 +0000 -@@ -1632,3 +1632,50 @@ - - return FALSE; - } -+ -+static gboolean -+query_tooltip_canvas_cb(GtkWidget *widget, -+ int x, -+ int y, -+ gboolean keybord_tip, -+ GtkTooltip *tooltip, -+ gpointer data) -+{ -+ GnomeCanvasItem *mouse_over_item; -+ PlannerUsageRow *row; -+ PlannerUsageRowPriv *priv; -+ int scrollx, scrolly; -+ double wx, wy; -+ -+ if (keybord_tip) -+ return FALSE; -+ -+ gnome_canvas_get_scroll_offsets (GNOME_CANVAS(widget), &scrollx, &scrolly); -+ gnome_canvas_window_to_world (GNOME_CANVAS(widget), x+scrollx, y+scrolly, &wx, &wy); -+ -+ mouse_over_item = gnome_canvas_get_item_at (GNOME_CANVAS(widget), wx, wy); -+ if (!mouse_over_item) -+ return FALSE; -+ -+ if (!PLANNER_IS_USAGE_ROW (mouse_over_item)) -+ return FALSE; -+ -+ row = PLANNER_USAGE_ROW (mouse_over_item); -+ priv = row->priv; -+ -+ if (!priv->resource) -+ return FALSE; -+ -+ gtk_tooltip_set_text(tooltip, mrp_resource_get_name(priv->resource)); -+ -+ return TRUE; -+} -+ -+void -+planner_usage_chart_init_tooltips(GnomeCanvas *canvas) -+{ -+ g_object_set (canvas, "has-tooltip", TRUE, NULL); -+ g_signal_connect (canvas, "query-tooltip", -+ G_CALLBACK (query_tooltip_canvas_cb), -+ NULL ); -+} diff --git a/planner-gnome606824-notecolumn.patch b/planner-gnome606824-notecolumn.patch deleted file mode 100644 index f337e77..0000000 --- a/planner-gnome606824-notecolumn.patch +++ /dev/null @@ -1,275 +0,0 @@ -diff -ru planner-0.14.4.orig/src/planner-conf-gconf.c planner-0.14.4/src/planner-conf-gconf.c ---- planner-0.14.4.orig/src/planner-conf-gconf.c 2008-07-22 14:41:47.000000000 +0100 -+++ planner-0.14.4/src/planner-conf-gconf.c 2010-01-13 09:50:33.000000000 +0000 -@@ -110,6 +110,28 @@ - return ret_val; - } - -+gint -+planner_conf_get_int_with_default (const gchar *key, gint def, GError **error) -+{ -+ GConfClient *client; -+ GConfValue *val; -+ gchar *full_key; -+ gint ret_val = def; -+ -+ client = conf_get_gconf_client (); -+ -+ full_key = conf_get_key (key); -+ val = gconf_client_get (client, key, error); -+ -+ if (val != NULL) -+ { -+ ret_val = gconf_value_get_int (val); -+ gconf_value_free (val); -+ } -+ -+ return ret_val; -+} -+ - gboolean - planner_conf_set_bool (const gchar *key, gboolean value, GError **error) - { -diff -ru planner-0.14.4.orig/src/planner-conf.h planner-0.14.4/src/planner-conf.h ---- planner-0.14.4.orig/src/planner-conf.h 2008-07-22 14:41:47.000000000 +0100 -+++ planner-0.14.4/src/planner-conf.h 2010-01-13 09:50:27.000000000 +0000 -@@ -40,5 +40,9 @@ - gint value, - GError **error); - -+gint planner_conf_get_int_with_default (const gchar *key, -+ gint def, -+ GError **error); -+ - #endif /* __PLANNER_CONF_H__ */ - -diff -ru planner-0.14.4.orig/src/planner-gantt-model.c planner-0.14.4/src/planner-gantt-model.c ---- planner-0.14.4.orig/src/planner-gantt-model.c 2008-07-22 14:41:47.000000000 +0100 -+++ planner-0.14.4/src/planner-gantt-model.c 2010-01-12 16:59:44.000000000 +0000 -@@ -653,6 +653,8 @@ - return G_TYPE_LONG; - case COL_COMPLETE: - return G_TYPE_INT; -+ case COL_NOTE: -+ return G_TYPE_BOOLEAN; - default: - return G_TYPE_INVALID; - } -@@ -794,6 +796,7 @@ - gint duration; - const gchar *name; - const gchar *cached_str; -+ const gchar *note = NULL; - - g_return_if_fail (iter != NULL); - -@@ -894,6 +897,13 @@ - - break; - -+ case COL_NOTE: -+ g_value_init (value, G_TYPE_BOOLEAN); -+ g_object_get (task, "note", ¬e, NULL); -+ g_value_set_boolean (value, note && strlen(note)); -+ -+ break; -+ - default: - g_warning ("Bad column %d requested", column); - } -diff -ru planner-0.14.4.orig/src/planner-gantt-model.h planner-0.14.4/src/planner-gantt-model.h ---- planner-0.14.4.orig/src/planner-gantt-model.h 2008-07-22 14:41:47.000000000 +0100 -+++ planner-0.14.4/src/planner-gantt-model.h 2010-01-12 16:59:44.000000000 +0000 -@@ -61,6 +61,7 @@ - COL_COST, - COL_ASSIGNED_TO, - COL_COMPLETE, -+ COL_NOTE, - NUM_COLS - }; - -diff -ru planner-0.14.4.orig/src/planner-gantt-view.c planner-0.14.4/src/planner-gantt-view.c ---- planner-0.14.4.orig/src/planner-gantt-view.c 2010-01-12 15:36:55.000000000 +0000 -+++ planner-0.14.4/src/planner-gantt-view.c 2010-01-12 16:59:44.000000000 +0000 -@@ -635,6 +635,7 @@ - * xgettext:no-c-format - */ - COL_COMPLETE, _("% Complete"), -+ COL_NOTE, _("Notes"), - -1); - - priv->tree = tree; -diff -ru planner-0.14.4.orig/src/planner-resource-view.c planner-0.14.4/src/planner-resource-view.c ---- planner-0.14.4.orig/src/planner-resource-view.c 2009-04-07 19:15:08.000000000 +0100 -+++ planner-0.14.4/src/planner-resource-view.c 2010-01-12 16:59:44.000000000 +0000 -@@ -186,6 +186,11 @@ - GtkTreeModel *tree_model, - GtkTreeIter *iter, - gpointer data); -+static void resource_view_note_data_func (GtkTreeViewColumn *tree_column, -+ GtkCellRenderer *cell, -+ GtkTreeModel *tree_model, -+ GtkTreeIter *iter, -+ gpointer data); - static void resource_view_popup_menu (GtkWidget *widget, - PlannerView *view); - static void resource_view_edit_resource_cb (GtkAction *action, -@@ -1374,6 +1379,26 @@ - G_CALLBACK (resource_view_cell_cost_edited), - view); - -+ /* Note */ -+ cell = gtk_cell_renderer_pixbuf_new (); -+ -+ col = gtk_tree_view_column_new_with_attributes (_("Notes"), -+ cell, NULL); -+ gtk_tree_view_column_set_resizable (col, TRUE); -+ -+ gtk_tree_view_column_set_cell_data_func (col, cell, -+ resource_view_note_data_func, -+ NULL, NULL); -+ g_object_set_data (G_OBJECT (col), -+ "data-func", resource_view_note_data_func); -+ g_object_set_data (G_OBJECT (col), "id", "note"); -+ -+ gtk_tree_view_append_column (tree_view, col); -+ g_signal_connect (col, -+ "notify::width", -+ G_CALLBACK (resource_view_column_notify_width_cb), -+ view); -+ - /* - project = planner_window_get_project (view->main_window); - properties = mrp_project_get_properties_from_type (project, -@@ -2326,6 +2351,32 @@ - } - - static void -+resource_view_note_data_func (GtkTreeViewColumn *tree_column, -+ GtkCellRenderer *cell, -+ GtkTreeModel *tree_model, -+ GtkTreeIter *iter, -+ gpointer data) -+{ -+ MrpResource *resource; -+ gchar *note; -+ -+ gtk_tree_model_get (tree_model, iter, COL_RESOURCE, &resource, -1); -+ -+ g_object_get (resource, "note", ¬e, NULL); -+ if (note && strlen(note)) { -+ g_object_set (cell, -+ "stock-id", GTK_STOCK_INFO, -+ "xalign", 0.0, -+ NULL); -+ } -+ else { -+ g_object_set (cell, -+ "stock-id", NULL, -+ NULL); -+ } -+} -+ -+static void - resource_view_property_data_func (GtkTreeViewColumn *tree_column, - GtkCellRenderer *cell, - GtkTreeModel *model, -diff -ru planner-0.14.4.orig/src/planner-task-tree.c planner-0.14.4/src/planner-task-tree.c ---- planner-0.14.4.orig/src/planner-task-tree.c 2010-01-12 15:36:55.000000000 +0000 -+++ planner-0.14.4/src/planner-task-tree.c 2010-01-12 16:59:44.000000000 +0000 -@@ -141,6 +141,11 @@ - GtkTreeModel *tree_model, - GtkTreeIter *iter, - gpointer data); -+static void task_tree_note_data_func (GtkTreeViewColumn *tree_column, -+ GtkCellRenderer *cell, -+ GtkTreeModel *tree_model, -+ GtkTreeIter *iter, -+ gpointer data); - static void task_tree_row_activated_cb (GtkTreeView *tree, - GtkTreePath *path, - GtkTreeViewColumn *col, -@@ -1695,6 +1700,35 @@ - } - - static void -+task_tree_note_data_func (GtkTreeViewColumn *tree_column, -+ GtkCellRenderer *cell, -+ GtkTreeModel *tree_model, -+ GtkTreeIter *iter, -+ gpointer data) -+{ -+ PlannerTaskTree *tree = data; -+ MrpTask *task; -+ gchar *note; -+ -+ gtk_tree_model_get (tree_model, iter, -+ COL_TASK, &task, -+ -1); -+ -+ g_object_get (task, "note", ¬e, NULL); -+ if (note && strlen(note)) { -+ g_object_set (cell, -+ "stock-id", GTK_STOCK_INFO, -+ "xalign", 0.0, -+ NULL); -+ } -+ else { -+ g_object_set (cell, -+ "stock-id", NULL, -+ NULL); -+ } -+} -+ -+static void - task_tree_name_edited (GtkCellRendererText *cell, - gchar *path_string, - gchar *new_text, -@@ -2562,6 +2596,23 @@ - g_object_set_data (G_OBJECT (col), "id", "assigned_to"); - break; - -+ case COL_NOTE: -+ cell = gtk_cell_renderer_pixbuf_new (); -+ col = gtk_tree_view_column_new_with_attributes (title, -+ cell, -+ NULL); -+ gtk_tree_view_column_set_resizable (col, TRUE); -+ gtk_tree_view_column_set_min_width (col, 50); -+ gtk_tree_view_column_set_cell_data_func (col, -+ cell, -+ task_tree_note_data_func, -+ GTK_TREE_VIEW (tree), -+ NULL); -+ g_object_set_data (G_OBJECT (col), -+ "data-func", task_tree_note_data_func); -+ g_object_set_data (G_OBJECT (col), "id", "note"); -+ break; -+ - default: - g_assert_not_reached (); - } -diff -ru planner-0.14.4.orig/src/planner-task-view.c planner-0.14.4/src/planner-task-view.c ---- planner-0.14.4.orig/src/planner-task-view.c 2008-08-03 13:45:16.000000000 +0100 -+++ planner-0.14.4/src/planner-task-view.c 2010-01-12 16:59:44.000000000 +0000 -@@ -378,6 +378,7 @@ - * xgettext:no-c-format - */ - COL_COMPLETE, _("% Complete"), -+ COL_NOTE, _("Notes"), - -1); - - g_object_unref (model); -diff -ru planner-0.14.4.orig/src/planner-view.c planner-0.14.4/src/planner-view.c ---- planner-0.14.4.orig/src/planner-view.c 2008-08-02 20:59:09.000000000 +0100 -+++ planner-0.14.4/src/planner-view.c 2010-01-13 09:51:06.000000000 +0000 -@@ -227,7 +227,8 @@ - - key = g_strdup_printf ("/%s/columns/%s/order", - planner_view_get_name (view), id); -- order = planner_conf_get_int (key, NULL); -+ order = planner_conf_get_int_with_default (key, g_list_position(columns, l), NULL); -+ - g_object_set_data (G_OBJECT (column), "order", GINT_TO_POINTER (order)); - g_free (key); - diff --git a/planner-gnome615641-multiselect.patch b/planner-gnome615641-multiselect.patch deleted file mode 100644 index 640368a..0000000 --- a/planner-gnome615641-multiselect.patch +++ /dev/null @@ -1,530 +0,0 @@ -diff -ru planner-0.14.5.orig/src/planner-calendar.c planner-0.14.5/src/planner-calendar.c ---- planner-0.14.5.orig/src/planner-calendar.c 2010-03-16 11:18:21.000000000 +0000 -+++ planner-0.14.5/src/planner-calendar.c 2010-04-13 13:07:42.000000000 +0100 -@@ -291,7 +291,7 @@ - static void planner_calendar_paint_main (GtkWidget *widget); - - static void planner_calendar_select_and_focus_day (PlannerCalendar *calendar, -- guint day); -+ guint day, gboolean multiselect); - - static void planner_calendar_paint_arrow (GtkWidget *widget, - guint arrow); -@@ -305,6 +305,10 @@ - gint column); - static gint top_y_for_row (PlannerCalendar *calendar, - gint row); -+static void planner_calendar_append_select_day (PlannerCalendar *calendar, -+ guint day); -+static void planner_calendar_deselect_days (PlannerCalendar *calendar); -+ - - static char *default_abbreviated_dayname[7]; - static char *default_monthname[12]; -@@ -492,7 +496,7 @@ - for (i=0;i<14;i++) - calendar->mark_colors[i] = tango_palette[i]; - -- calendar->selected_day = tm->tm_mday; -+ calendar->selected_days = g_list_append(NULL, GINT_TO_POINTER(tm->tm_mday)); - - calendar->display_flags = ( PLANNER_CALENDAR_SHOW_HEADING | - PLANNER_CALENDAR_SHOW_DAY_NAMES ); -@@ -669,6 +673,24 @@ - } - - static void -+planner_reset_selected_days (PlannerCalendar *calendar, gint month_len) -+{ -+ GList *entry, *old_selected_days; -+ -+ old_selected_days = g_list_copy (calendar->selected_days); -+ planner_calendar_deselect_days(calendar); -+ for (entry = old_selected_days; entry; entry = g_list_next(entry)) -+ { -+ gint selected_day = GPOINTER_TO_INT (entry->data); -+ if (month_len < selected_day) -+ planner_calendar_append_select_day(calendar, month_len); -+ else -+ planner_calendar_append_select_day(calendar, selected_day); -+ } -+ g_list_free (old_selected_days); -+} -+ -+static void - planner_calendar_set_month_prev (PlannerCalendar *calendar) - { - gint month_len; -@@ -696,17 +718,7 @@ - planner_calendar_signals[MONTH_CHANGED_SIGNAL], - 0); - -- if (month_len < calendar->selected_day) -- { -- calendar->selected_day = 0; -- planner_calendar_select_day (calendar, month_len); -- } -- else -- { -- if (calendar->selected_day < 0) -- calendar->selected_day = calendar->selected_day + 1 + month_length[leap (calendar->year)][calendar->month + 1]; -- planner_calendar_select_day (calendar, calendar->selected_day); -- } -+ planner_reset_selected_days (calendar, month_len); - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - planner_calendar_thaw (calendar); -@@ -743,13 +755,7 @@ - - month_len = month_length[leap (calendar->year)][calendar->month + 1]; - -- if (month_len < calendar->selected_day) -- { -- calendar->selected_day = 0; -- planner_calendar_select_day (calendar, month_len); -- } -- else -- planner_calendar_select_day (calendar, calendar->selected_day); -+ planner_reset_selected_days (calendar, month_len); - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - planner_calendar_thaw (calendar); -@@ -774,13 +780,7 @@ - - month_len = month_length[leap (calendar->year)][calendar->month + 1]; - -- if (month_len < calendar->selected_day) -- { -- calendar->selected_day = 0; -- planner_calendar_select_day (calendar, month_len); -- } -- else -- planner_calendar_select_day (calendar, calendar->selected_day); -+ planner_reset_selected_days (calendar, month_len); - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - planner_calendar_thaw (calendar); -@@ -806,13 +806,7 @@ - - month_len = month_length[leap (calendar->year)][calendar->month + 1]; - -- if (month_len < calendar->selected_day) -- { -- calendar->selected_day = 0; -- planner_calendar_select_day (calendar, month_len); -- } -- else -- planner_calendar_select_day (calendar, calendar->selected_day); -+ planner_reset_selected_days (calendar, month_len); - - gtk_widget_queue_draw (GTK_WIDGET (calendar)); - planner_calendar_thaw (calendar); -@@ -854,7 +848,7 @@ - if (!GTK_WIDGET_HAS_FOCUS (widget)) - gtk_widget_grab_focus (widget); - -- planner_calendar_select_and_focus_day (calendar, day); -+ planner_calendar_select_and_focus_day (calendar, day, event->state & GDK_CONTROL_MASK); - - } - else if (event->type == GDK_2BUTTON_PRESS) -@@ -1791,6 +1785,7 @@ - gint y_top; - gint y_loc; - gint focus_width; -+ gboolean is_selected_day; - - PlannerCalendarPrivateData *private_data; - PangoLayout *layout; -@@ -1818,6 +1813,8 @@ - - day = calendar->day[row][col]; - -+ is_selected_day = (NULL != g_list_find(calendar->selected_days, GINT_TO_POINTER(day))); -+ - x_left = left_x_for_column (calendar, col); - x_loc = x_left + private_data->day_width / 2 + private_data->max_day_char_width; - -@@ -1846,7 +1843,7 @@ - private_data->day_width, day_height); - } - */ -- if (calendar->selected_day == day) -+ if (is_selected_day) - { - gdk_gc_set_foreground (gc, SELECTED_BG_COLOR (GTK_WIDGET (calendar))); - gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top, -@@ -1859,7 +1856,7 @@ - private_data->day_width, day_height); - } - -- if (calendar->selected_day == day) -+ if (is_selected_day) - gdk_gc_set_foreground (gc, SELECTED_FG_COLOR (GTK_WIDGET (calendar))); - else - gdk_gc_set_foreground (gc, & (GTK_WIDGET (calendar)->style->fg[GTK_WIDGET_STATE (calendar)])); -@@ -1881,7 +1878,7 @@ - { - gtk_paint_focus (widget->style, - private_data->main_win, -- (calendar->selected_day == day) -+ is_selected_day - ? GTK_STATE_SELECTED : GTK_STATE_NORMAL, - NULL, widget, "calendar-day", - x_left, y_top, -@@ -2151,31 +2148,17 @@ - return TRUE; - } - --void --planner_calendar_select_day (PlannerCalendar *calendar, -- guint day) -+static void -+planner_calendar_append_select_day (PlannerCalendar *calendar, -+ guint day) - { -- g_return_if_fail (PLANNER_IS_CALENDAR (calendar)); - g_return_if_fail (day <= 31); - -- /* planner_calendar_compute_days (calendar); */ -- -- /* Deselect the old day */ -- if (calendar->selected_day > 0) -- { -- gint selected_day; -- -- selected_day = calendar->selected_day; -- calendar->selected_day = 0; -- if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) -- planner_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day); -- } -- -- calendar->selected_day = day; -- - /* Select the new day */ -- if (day != 0) -+ if (day != 0 && (NULL == g_list_find(calendar->selected_days, GINT_TO_POINTER(day)))) - { -+ calendar->selected_days = g_list_append(calendar->selected_days, GINT_TO_POINTER(day)); -+ - if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) - planner_calendar_paint_day_num (GTK_WIDGET (calendar), day); - } -@@ -2186,8 +2169,42 @@ - } - - static void -+planner_calendar_deselect_days (PlannerCalendar *calendar) -+{ -+ g_return_if_fail (PLANNER_IS_CALENDAR (calendar)); -+ -+ /* Deselect the old days */ -+ if (calendar->selected_days) -+ { -+ GList* old_selected_days = calendar->selected_days; -+ GList* entry; -+ -+ calendar->selected_days = NULL; -+ -+ for (entry = old_selected_days; entry; entry = g_list_next(entry)) -+ { -+ gint day = GPOINTER_TO_INT (entry->data); -+ if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) -+ planner_calendar_paint_day_num (GTK_WIDGET (calendar), day); -+ } -+ -+ g_list_free (old_selected_days); -+ } -+} -+ -+void -+planner_calendar_select_day (PlannerCalendar *calendar, -+ guint day) -+{ -+ g_return_if_fail (PLANNER_IS_CALENDAR (calendar)); -+ -+ planner_calendar_deselect_days (calendar); -+ planner_calendar_append_select_day(calendar, day); -+} -+ -+static void - planner_calendar_select_and_focus_day (PlannerCalendar *calendar, -- guint day) -+ guint day, gboolean multiselect) - { - gint old_focus_row = calendar->focus_row; - gint old_focus_col = calendar->focus_col; -@@ -2207,17 +2224,29 @@ - - if (old_focus_row != -1 && old_focus_col != -1) - planner_calendar_paint_day (GTK_WIDGET (calendar), old_focus_row, old_focus_col); -- -- planner_calendar_select_day (calendar, day); -+ -+ if (multiselect) -+ { -+ gboolean is_selected_day = (NULL != g_list_find (calendar->selected_days, GINT_TO_POINTER(day))); -+ if (!is_selected_day) -+ planner_calendar_append_select_day (calendar, day); -+ else if (g_list_length (calendar->selected_days) > 1) -+ { -+ calendar->selected_days = g_list_remove (calendar->selected_days, GINT_TO_POINTER(day)); -+ if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) -+ planner_calendar_paint_day_num (GTK_WIDGET (calendar), day); -+ } -+ } -+ else -+ planner_calendar_select_day (calendar, day); - } - --void --planner_calendar_get_date (PlannerCalendar *calendar, -+GList* -+planner_calendar_get_dates (PlannerCalendar *calendar, - guint *year, -- guint *month, -- guint *day) -+ guint *month) - { -- g_return_if_fail (PLANNER_IS_CALENDAR (calendar)); -+ g_return_val_if_fail (PLANNER_IS_CALENDAR (calendar), NULL); - - if (year) - *year = calendar->year; -@@ -2225,8 +2254,7 @@ - if (month) - *month = calendar->month; - -- if (day) -- *day = calendar->selected_day; -+ return calendar->selected_days; - } - - static gboolean -@@ -2519,11 +2547,16 @@ - static void - planner_calendar_finalize (GObject *object) - { -+ PlannerCalendar *calendar; - PlannerCalendarPrivateData *private_data; -+ -+ calendar = PLANNER_CALENDAR (object); - private_data = PLANNER_CALENDAR_PRIVATE_DATA (object); - - g_free (private_data); - -+ g_list_free(calendar->selected_days); -+ - if (G_OBJECT_CLASS (parent_class)->finalize) - (* G_OBJECT_CLASS (parent_class)->finalize) (object); - } -@@ -2648,7 +2681,7 @@ - planner_calendar_set_month_next (calendar); - } - -- planner_calendar_select_and_focus_day (calendar, day); -+ planner_calendar_select_and_focus_day (calendar, day, event->state & GDK_CONTROL_MASK); - - planner_calendar_thaw (calendar); - } -@@ -2697,7 +2730,8 @@ - GList *daytypes; - gint dayindex; - -- planner_calendar_get_date (calendar, &y, &m, &d); -+ y = calendar->year; -+ m = calendar->month; - - g_object_get (mrp_calendar, "project", &project, NULL); - -diff -ru planner-0.14.5.orig/src/planner-calendar-dialog.c planner-0.14.5/src/planner-calendar-dialog.c ---- planner-0.14.5.orig/src/planner-calendar-dialog.c 2010-03-16 11:18:21.000000000 +0000 -+++ planner-0.14.5/src/planner-calendar-dialog.c 2010-04-13 12:53:04.000000000 +0100 -@@ -823,9 +823,10 @@ - DialogData *data) - { - MrpCalendar *calendar; -- guint y, m, d; -+ guint y, m; - mrptime t; - MrpDay *day; -+ GList *days, *entry; - - calendar = cal_dialog_get_selected_calendar (GTK_TREE_VIEW (data->tree_view)); - -@@ -842,10 +843,12 @@ - return; - } - -- planner_calendar_get_date (PLANNER_CALENDAR (data->calendar), &y, &m, &d); -- t = mrp_time_compose (y, m + 1, d, 0, 0, 0); -- /* mrp_calendar_set_days (calendar, t, day, (mrptime) -1); */ -- planner_cal_cmd_day_type (data->main_window, calendar, day, t); -+ days = planner_calendar_get_dates (PLANNER_CALENDAR (data->calendar), &y, &m); -+ for (entry = days; entry; entry = g_list_next(entry)) { -+ t = mrp_time_compose (y, m + 1, GPOINTER_TO_INT(entry->data), 0, 0, 0); -+ /* mrp_calendar_set_days (calendar, t, day, (mrptime) -1); */ -+ planner_cal_cmd_day_type (data->main_window, calendar, day, t); -+ } - } - - static void -@@ -944,6 +947,7 @@ - GList *ivals, *l; - MrpCalendar *calendar, *root; - PlannerCalendar *calendar_widget; -+ GList *days; - guint y, m, d; - mrptime t; - gint i; -@@ -989,54 +993,66 @@ - - calendar_widget = PLANNER_CALENDAR (data->calendar); - -- planner_calendar_get_date (calendar_widget, &y, &m, &d); -- t = mrp_time_compose (y, m + 1, d, 0, 0, 0); -- -- day = mrp_calendar_get_day (calendar, t, FALSE); -- -- if (day == mrp_day_get_use_base ()) { -- gtk_widget_set_sensitive (data->option_menu, FALSE); -+ days = planner_calendar_get_dates (calendar_widget, &y, &m); - -- gtk_toggle_button_set_active ( -- GTK_TOGGLE_BUTTON (data->base_radiobutton), TRUE); -- } else { -+ if (g_list_length(days) > 1) { -+ /*allow multi-selection to control setting multiple days to the same type*/ - gtk_widget_set_sensitive (data->option_menu, TRUE); - -- cal_dialog_option_menu_set_day (data->option_menu, day); -- - gtk_toggle_button_set_active ( -- GTK_TOGGLE_BUTTON (data->type_radiobutton), TRUE); -- } -+ GTK_TOGGLE_BUTTON (data->type_radiobutton), TRUE); - -- calendar = cal_dialog_get_selected_calendar (GTK_TREE_VIEW (data->tree_view)); -+ gtk_widget_set_sensitive (data->apply_button, TRUE); -+ } else { -+ d = GPOINTER_TO_INT(days->data); -+ t = mrp_time_compose (y, m + 1, d, 0, 0, 0); - -- if (day == mrp_day_get_use_base ()) { -- day = mrp_calendar_get_day (calendar, t, TRUE); -- } -+ day = mrp_calendar_get_day (calendar, t, FALSE); - -- ivals = mrp_calendar_day_get_intervals (calendar, day, TRUE); -+ if (day == mrp_day_get_use_base ()) { -+ gtk_widget_set_sensitive (data->option_menu, FALSE); -+ -+ gtk_toggle_button_set_active ( -+ GTK_TOGGLE_BUTTON (data->base_radiobutton), TRUE); -+ } else { -+ gtk_widget_set_sensitive (data->option_menu, TRUE); -+ -+ cal_dialog_option_menu_set_day (data->option_menu, day); - -- for (i = 0; i < 5; i++) { -- gtk_entry_set_text (GTK_ENTRY (data->from_entry[i]), ""); -- gtk_entry_set_text (GTK_ENTRY (data->to_entry[i]), ""); -- } -+ gtk_toggle_button_set_active ( -+ GTK_TOGGLE_BUTTON (data->type_radiobutton), TRUE); -+ } - -- for (l = ivals, i = 0; l && i < 5; l = l->next, i++) { -- MrpInterval *ival; -- mrptime start, end; -- gchar *str; -+ calendar = cal_dialog_get_selected_calendar (GTK_TREE_VIEW (data->tree_view)); - -- ival = l->data; -+ if (day == mrp_day_get_use_base ()) { -+ day = mrp_calendar_get_day (calendar, t, TRUE); -+ } - -- mrp_interval_get_absolute (ival, 0, &start, &end); -+ ivals = mrp_calendar_day_get_intervals (calendar, day, TRUE); - -- str = mrp_time_format ("%H:%M", start); -- gtk_entry_set_text (GTK_ENTRY (data->from_entry[i]), str); -- g_free (str); -+ for (i = 0; i < 5; i++) { -+ gtk_entry_set_text (GTK_ENTRY (data->from_entry[i]), ""); -+ gtk_entry_set_text (GTK_ENTRY (data->to_entry[i]), ""); -+ } - -- str = mrp_time_format ("%H:%M", end); -- gtk_entry_set_text (GTK_ENTRY (data->to_entry[i]), str); -- g_free (str); -+ for (l = ivals, i = 0; l && i < 5; l = l->next, i++) { -+ MrpInterval *ival; -+ mrptime start, end; -+ gchar *str; -+ -+ ival = l->data; -+ -+ mrp_interval_get_absolute (ival, 0, &start, &end); -+ -+ str = mrp_time_format ("%H:%M", start); -+ gtk_entry_set_text (GTK_ENTRY (data->from_entry[i]), str); -+ g_free (str); -+ -+ str = mrp_time_format ("%H:%M", end); -+ gtk_entry_set_text (GTK_ENTRY (data->to_entry[i]), str); -+ g_free (str); -+ } - } - - g_signal_handlers_unblock_by_func (data->option_menu, -diff -ru planner-0.14.5.orig/src/planner-calendar.h planner-0.14.5/src/planner-calendar.h ---- planner-0.14.5.orig/src/planner-calendar.h 2010-03-16 11:18:21.000000000 +0000 -+++ planner-0.14.5/src/planner-calendar.h 2010-04-13 12:53:04.000000000 +0100 -@@ -61,7 +61,7 @@ - - gint month; - gint year; -- gint selected_day; -+ GList* selected_days; - - gint day_month[6][7]; - gint day[6][7]; -@@ -117,10 +117,9 @@ - void planner_calendar_display_options (PlannerCalendar *calendar, - PlannerCalendarDisplayOptions flags); - --void planner_calendar_get_date (PlannerCalendar *calendar, -+GList* planner_calendar_get_dates (PlannerCalendar *calendar, - guint *year, -- guint *month, -- guint *day); -+ guint *month); - void planner_calendar_freeze (PlannerCalendar *calendar); - void planner_calendar_thaw (PlannerCalendar *calendar); - -diff -ru planner-0.14.5.orig/src/planner-task-date-widget.c planner-0.14.5/src/planner-task-date-widget.c ---- planner-0.14.5.orig/src/planner-task-date-widget.c 2010-03-16 11:18:21.000000000 +0000 -+++ planner-0.14.5/src/planner-task-date-widget.c 2010-04-13 12:53:04.000000000 +0100 -@@ -293,15 +293,16 @@ - planner_task_date_widget_get_date (PlannerTaskDateWidget *widget) - { - PlannerTaskDateWidgetPriv *priv; -- gint year, month, day; -+ gint year, month; -+ GList *days; - - priv = GET_PRIV (widget); - -- planner_calendar_get_date (GTK_CALENDAR (priv->calendar), -- &year, &month, &day); -+ days = planner_calendar_get_dates (PLANNER_CALENDAR (priv->calendar), -+ &year, &month); - - month++; -- return mrp_time_compose (year, month, day, 0, 0, 0); -+ return mrp_time_compose (year, month, GPOINTER_TO_INT(days->data), 0, 0, 0); - } - - void diff --git a/planner-gnome655803-bad-LC_TIME.patch b/planner-gnome655803-bad-LC_TIME.patch deleted file mode 100644 index 45f6255..0000000 --- a/planner-gnome655803-bad-LC_TIME.patch +++ /dev/null @@ -1,67 +0,0 @@ ---- planner-0.14.5/libplanner/mrp-time.c 2011-08-02 12:32:47.387704773 +0100 -+++ planner-0.14.5/libplanner/mrp-time.c 2011-08-02 12:44:19.217457487 +0100 -@@ -513,8 +513,28 @@ - void - imrp_time_init (void) - { -+ const gchar *short_month_names_fallbacks[12] = -+ { -+ "Jan", "Feb", "Mar", "Apr", "May", "Jun", -+ "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" -+ }; -+ const gchar *month_names_fallbacks[12] = -+ { -+ "January", "February", "March", "April", "May", "June", -+ "July", "August", "September", "October", "November", "December" -+ }; -+ const gchar *short_day_names_fallbacks[7] = -+ { -+ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" -+ }; -+ const gchar *day_names_fallbacks[7] = -+ { -+ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", -+ "Friday", "Saturday" -+ }; - gint i; - -+ - /* Get month and day names. */ - - #ifndef WIN32 -@@ -523,9 +543,18 @@ - - short_month_names[i] = g_locale_to_utf8 (nl_langinfo (ABMON_1 + i), - -1, NULL, NULL, NULL); -+ -+ if (!short_month_names[i]) { -+ short_month_names[i] = g_strdup(short_month_names_fallbacks[i]); -+ } -+ - month_names[i] = g_locale_to_utf8 (nl_langinfo (MON_1 + i), - -1, NULL, NULL, NULL); - -+ if (!month_names[i]) { -+ month_names[i] = g_strdup(month_names_fallbacks[i]); -+ } -+ - c = g_utf8_get_char (month_names[i]); - month_names_initial[i] = g_malloc0 (7); - g_unichar_to_utf8 (c, (char *)month_names_initial[i]); -@@ -536,8 +565,16 @@ - short_day_names[i] = g_locale_to_utf8 (nl_langinfo (ABDAY_1 + i), - -1, NULL, NULL, NULL); - -+ if (!short_day_names[i]) { -+ short_day_names[i] = g_strdup(short_day_names_fallbacks[i]); -+ } -+ - day_names[i] = g_locale_to_utf8 (nl_langinfo (DAY_1 + i), - -1, NULL, NULL, NULL); -+ -+ if (!day_names[i]) { -+ day_names[i] = g_strdup(day_names_fallbacks[i]); -+ } - } - #else - for (i = 0; i < 12; i++) { diff --git a/planner-rhbz1141479-paste.tasks.patch b/planner-rhbz1141479-paste.tasks.patch deleted file mode 100644 index 346d916..0000000 --- a/planner-rhbz1141479-paste.tasks.patch +++ /dev/null @@ -1,4062 +0,0 @@ -diff -ruN planner-0.14.6.orig/src/Makefile.am planner-0.14.6/src/Makefile.am ---- planner-0.14.6.orig/src/Makefile.am 2014-09-16 10:33:17.393876669 +0100 -+++ planner-0.14.6/src/Makefile.am 2014-09-16 10:43:08.811065116 +0100 -@@ -119,7 +119,6 @@ - planner-window.h \ - planner-working-time-dialog.c \ - planner-working-time-dialog.h \ -- valgrind.h \ - $(gantt_task_source) \ - $(task_source) \ - $(resource_source) \ -diff -ruN planner-0.14.6.orig/src/Makefile.in planner-0.14.6/src/Makefile.in ---- planner-0.14.6.orig/src/Makefile.in 2014-09-16 10:33:17.392876660 +0100 -+++ planner-0.14.6/src/Makefile.in 2014-09-16 10:43:06.947048833 +0100 -@@ -508,7 +508,6 @@ - planner-window.h \ - planner-working-time-dialog.c \ - planner-working-time-dialog.h \ -- valgrind.h \ - $(gantt_task_source) \ - $(task_source) \ - $(resource_source) \ -diff -ruN planner-0.14.6.orig/src/planner-plugin.c planner-0.14.6/src/planner-plugin.c ---- planner-0.14.6.orig/src/planner-plugin.c 2014-09-16 10:33:17.387876616 +0100 -+++ planner-0.14.6/src/planner-plugin.c 2014-09-16 10:43:01.870004484 +0100 -@@ -24,7 +24,7 @@ - #include - #include "planner-window.h" - #include "planner-plugin.h" --#include "valgrind.h" -+#include "valgrind/valgrind.h" - - static void mv_init (PlannerPlugin *plugin); - static void mv_class_init (PlannerPluginClass *class); -diff -ruN planner-0.14.6.orig/src/valgrind.h planner-0.14.6/src/valgrind.h ---- planner-0.14.6.orig/src/valgrind.h 2014-09-16 10:33:17.390876642 +0100 -+++ planner-0.14.6/src/valgrind.h 1970-01-01 01:00:00.000000000 +0100 -@@ -1,4024 +0,0 @@ --/* Aside from this comment and stripping of trailing white space -- * this file is an unmodified copy of include/valgrind.h from -- * valgrind 3.5.0 -- */ --/* -*- c -*- -- ---------------------------------------------------------------- -- -- Notice that the following BSD-style license applies to this one -- file (valgrind.h) only. The rest of Valgrind is licensed under the -- terms of the GNU General Public License, version 2, unless -- otherwise indicated. See the COPYING file in the source -- distribution for details. -- -- ---------------------------------------------------------------- -- -- This file is part of Valgrind, a dynamic binary instrumentation -- framework. -- -- Copyright (C) 2000-2009 Julian Seward. All rights reserved. -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- -- 2. The origin of this software must not be misrepresented; you must -- not claim that you wrote the original software. If you use this -- software in a product, an acknowledgment in the product -- documentation would be appreciated but is not required. -- -- 3. Altered source versions must be plainly marked as such, and must -- not be misrepresented as being the original software. -- -- 4. The name of the author may not be used to endorse or promote -- products derived from this software without specific prior written -- permission. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -- OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -- GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- -- ---------------------------------------------------------------- -- -- Notice that the above BSD-style license applies to this one file -- (valgrind.h) only. The entire rest of Valgrind is licensed under -- the terms of the GNU General Public License, version 2. See the -- COPYING file in the source distribution for details. -- -- ---------------------------------------------------------------- --*/ -- -- --/* This file is for inclusion into client (your!) code. -- -- You can use these macros to manipulate and query Valgrind's -- execution inside your own programs. -- -- The resulting executables will still run without Valgrind, just a -- little bit more slowly than they otherwise would, but otherwise -- unchanged. When not running on valgrind, each client request -- consumes very few (eg. 7) instructions, so the resulting performance -- loss is negligible unless you plan to execute client requests -- millions of times per second. Nevertheless, if that is still a -- problem, you can compile with the NVALGRIND symbol defined (gcc -- -DNVALGRIND) so that client requests are not even compiled in. */ -- --#ifndef __VALGRIND_H --#define __VALGRIND_H -- --#include -- --/* Nb: this file might be included in a file compiled with -ansi. So -- we can't use C++ style "//" comments nor the "asm" keyword (instead -- use "__asm__"). */ -- --/* Derive some tags indicating what the target platform is. Note -- that in this file we're using the compiler's CPP symbols for -- identifying architectures, which are different to the ones we use -- within the rest of Valgrind. Note, __powerpc__ is active for both -- 32 and 64-bit PPC, whereas __powerpc64__ is only active for the -- latter (on Linux, that is). */ --#undef PLAT_x86_linux --#undef PLAT_amd64_linux --#undef PLAT_ppc32_linux --#undef PLAT_ppc64_linux --#undef PLAT_ppc32_aix5 --#undef PLAT_ppc64_aix5 -- -- --#if defined(_AIX) && defined(__64BIT__) --# define PLAT_ppc64_aix5 1 --#elif defined(_AIX) && !defined(__64BIT__) --# define PLAT_ppc32_aix5 1 --#elif defined(__APPLE__) && defined(__i386__) --# define PLAT_x86_darwin 1 --#elif defined(__APPLE__) && defined(__x86_64__) --# define PLAT_amd64_darwin 1 --#elif defined(__i386__) --# define PLAT_x86_linux 1 --#elif defined(__x86_64__) --# define PLAT_amd64_linux 1 --#elif defined(__powerpc__) && !defined(__powerpc64__) --# define PLAT_ppc32_linux 1 --#elif defined(__powerpc__) && defined(__powerpc64__) --# define PLAT_ppc64_linux 1 --#else --/* If we're not compiling for our target platform, don't generate -- any inline asms. */ --# if !defined(NVALGRIND) --# define NVALGRIND 1 --# endif --#endif -- -- --/* ------------------------------------------------------------------ */ --/* ARCHITECTURE SPECIFICS for SPECIAL INSTRUCTIONS. There is nothing */ --/* in here of use to end-users -- skip to the next section. */ --/* ------------------------------------------------------------------ */ -- --#if defined(NVALGRIND) -- --/* Define NVALGRIND to completely remove the Valgrind magic sequence -- from the compiled code (analogous to NDEBUG's effects on -- assert()) */ --#define VALGRIND_DO_CLIENT_REQUEST( \ -- _zzq_rlval, _zzq_default, _zzq_request, \ -- _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ -- { \ -- (_zzq_rlval) = (_zzq_default); \ -- } -- --#else /* ! NVALGRIND */ -- --/* The following defines the magic code sequences which the JITter -- spots and handles magically. Don't look too closely at them as -- they will rot your brain. -- -- The assembly code sequences for all architectures is in this one -- file. This is because this file must be stand-alone, and we don't -- want to have multiple files. -- -- For VALGRIND_DO_CLIENT_REQUEST, we must ensure that the default -- value gets put in the return slot, so that everything works when -- this is executed not under Valgrind. Args are passed in a memory -- block, and so there's no intrinsic limit to the number that could -- be passed, but it's currently five. -- -- The macro args are: -- _zzq_rlval result lvalue -- _zzq_default default value (result returned when running on real CPU) -- _zzq_request request code -- _zzq_arg1..5 request params -- -- The other two macros are used to support function wrapping, and are -- a lot simpler. VALGRIND_GET_NR_CONTEXT returns the value of the -- guest's NRADDR pseudo-register and whatever other information is -- needed to safely run the call original from the wrapper: on -- ppc64-linux, the R2 value at the divert point is also needed. This -- information is abstracted into a user-visible type, OrigFn. -- -- VALGRIND_CALL_NOREDIR_* behaves the same as the following on the -- guest, but guarantees that the branch instruction will not be -- redirected: x86: call *%eax, amd64: call *%rax, ppc32/ppc64: -- branch-and-link-to-r11. VALGRIND_CALL_NOREDIR is just text, not a -- complete inline asm, since it needs to be combined with more magic -- inline asm stuff to be useful. --*/ -- --/* ------------------------- x86-{linux,darwin} ---------------- */ -- --#if defined(PLAT_x86_linux) || defined(PLAT_x86_darwin) -- --typedef -- struct { -- unsigned int nraddr; /* where's the code? */ -- } -- OrigFn; -- --#define __SPECIAL_INSTRUCTION_PREAMBLE \ -- "roll $3, %%edi ; roll $13, %%edi\n\t" \ -- "roll $29, %%edi ; roll $19, %%edi\n\t" -- --#define VALGRIND_DO_CLIENT_REQUEST( \ -- _zzq_rlval, _zzq_default, _zzq_request, \ -- _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ -- { volatile unsigned int _zzq_args[6]; \ -- volatile unsigned int _zzq_result; \ -- _zzq_args[0] = (unsigned int)(_zzq_request); \ -- _zzq_args[1] = (unsigned int)(_zzq_arg1); \ -- _zzq_args[2] = (unsigned int)(_zzq_arg2); \ -- _zzq_args[3] = (unsigned int)(_zzq_arg3); \ -- _zzq_args[4] = (unsigned int)(_zzq_arg4); \ -- _zzq_args[5] = (unsigned int)(_zzq_arg5); \ -- __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ -- /* %EDX = client_request ( %EAX ) */ \ -- "xchgl %%ebx,%%ebx" \ -- : "=d" (_zzq_result) \ -- : "a" (&_zzq_args[0]), "0" (_zzq_default) \ -- : "cc", "memory" \ -- ); \ -- _zzq_rlval = _zzq_result; \ -- } -- --#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ -- { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ -- volatile unsigned int __addr; \ -- __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ -- /* %EAX = guest_NRADDR */ \ -- "xchgl %%ecx,%%ecx" \ -- : "=a" (__addr) \ -- : \ -- : "cc", "memory" \ -- ); \ -- _zzq_orig->nraddr = __addr; \ -- } -- --#define VALGRIND_CALL_NOREDIR_EAX \ -- __SPECIAL_INSTRUCTION_PREAMBLE \ -- /* call-noredir *%EAX */ \ -- "xchgl %%edx,%%edx\n\t" --#endif /* PLAT_x86_linux || PLAT_x86_darwin */ -- --/* ------------------------ amd64-{linux,darwin} --------------- */ -- --#if defined(PLAT_amd64_linux) || defined(PLAT_amd64_darwin) -- --typedef -- struct { -- unsigned long long int nraddr; /* where's the code? */ -- } -- OrigFn; -- --#define __SPECIAL_INSTRUCTION_PREAMBLE \ -- "rolq $3, %%rdi ; rolq $13, %%rdi\n\t" \ -- "rolq $61, %%rdi ; rolq $51, %%rdi\n\t" -- --#define VALGRIND_DO_CLIENT_REQUEST( \ -- _zzq_rlval, _zzq_default, _zzq_request, \ -- _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ -- { volatile unsigned long long int _zzq_args[6]; \ -- volatile unsigned long long int _zzq_result; \ -- _zzq_args[0] = (unsigned long long int)(_zzq_request); \ -- _zzq_args[1] = (unsigned long long int)(_zzq_arg1); \ -- _zzq_args[2] = (unsigned long long int)(_zzq_arg2); \ -- _zzq_args[3] = (unsigned long long int)(_zzq_arg3); \ -- _zzq_args[4] = (unsigned long long int)(_zzq_arg4); \ -- _zzq_args[5] = (unsigned long long int)(_zzq_arg5); \ -- __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ -- /* %RDX = client_request ( %RAX ) */ \ -- "xchgq %%rbx,%%rbx" \ -- : "=d" (_zzq_result) \ -- : "a" (&_zzq_args[0]), "0" (_zzq_default) \ -- : "cc", "memory" \ -- ); \ -- _zzq_rlval = _zzq_result; \ -- } -- --#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ -- { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ -- volatile unsigned long long int __addr; \ -- __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ -- /* %RAX = guest_NRADDR */ \ -- "xchgq %%rcx,%%rcx" \ -- : "=a" (__addr) \ -- : \ -- : "cc", "memory" \ -- ); \ -- _zzq_orig->nraddr = __addr; \ -- } -- --#define VALGRIND_CALL_NOREDIR_RAX \ -- __SPECIAL_INSTRUCTION_PREAMBLE \ -- /* call-noredir *%RAX */ \ -- "xchgq %%rdx,%%rdx\n\t" --#endif /* PLAT_amd64_linux || PLAT_amd64_darwin */ -- --/* ------------------------ ppc32-linux ------------------------ */ -- --#if defined(PLAT_ppc32_linux) -- --typedef -- struct { -- unsigned int nraddr; /* where's the code? */ -- } -- OrigFn; -- --#define __SPECIAL_INSTRUCTION_PREAMBLE \ -- "rlwinm 0,0,3,0,0 ; rlwinm 0,0,13,0,0\n\t" \ -- "rlwinm 0,0,29,0,0 ; rlwinm 0,0,19,0,0\n\t" -- --#define VALGRIND_DO_CLIENT_REQUEST( \ -- _zzq_rlval, _zzq_default, _zzq_request, \ -- _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ -- \ -- { unsigned int _zzq_args[6]; \ -- unsigned int _zzq_result; \ -- unsigned int* _zzq_ptr; \ -- _zzq_args[0] = (unsigned int)(_zzq_request); \ -- _zzq_args[1] = (unsigned int)(_zzq_arg1); \ -- _zzq_args[2] = (unsigned int)(_zzq_arg2); \ -- _zzq_args[3] = (unsigned int)(_zzq_arg3); \ -- _zzq_args[4] = (unsigned int)(_zzq_arg4); \ -- _zzq_args[5] = (unsigned int)(_zzq_arg5); \ -- _zzq_ptr = _zzq_args; \ -- __asm__ volatile("mr 3,%1\n\t" /*default*/ \ -- "mr 4,%2\n\t" /*ptr*/ \ -- __SPECIAL_INSTRUCTION_PREAMBLE \ -- /* %R3 = client_request ( %R4 ) */ \ -- "or 1,1,1\n\t" \ -- "mr %0,3" /*result*/ \ -- : "=b" (_zzq_result) \ -- : "b" (_zzq_default), "b" (_zzq_ptr) \ -- : "cc", "memory", "r3", "r4"); \ -- _zzq_rlval = _zzq_result; \ -- } -- --#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ -- { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ -- unsigned int __addr; \ -- __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ -- /* %R3 = guest_NRADDR */ \ -- "or 2,2,2\n\t" \ -- "mr %0,3" \ -- : "=b" (__addr) \ -- : \ -- : "cc", "memory", "r3" \ -- ); \ -- _zzq_orig->nraddr = __addr; \ -- } -- --#define VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- __SPECIAL_INSTRUCTION_PREAMBLE \ -- /* branch-and-link-to-noredir *%R11 */ \ -- "or 3,3,3\n\t" --#endif /* PLAT_ppc32_linux */ -- --/* ------------------------ ppc64-linux ------------------------ */ -- --#if defined(PLAT_ppc64_linux) -- --typedef -- struct { -- unsigned long long int nraddr; /* where's the code? */ -- unsigned long long int r2; /* what tocptr do we need? */ -- } -- OrigFn; -- --#define __SPECIAL_INSTRUCTION_PREAMBLE \ -- "rotldi 0,0,3 ; rotldi 0,0,13\n\t" \ -- "rotldi 0,0,61 ; rotldi 0,0,51\n\t" -- --#define VALGRIND_DO_CLIENT_REQUEST( \ -- _zzq_rlval, _zzq_default, _zzq_request, \ -- _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ -- \ -- { unsigned long long int _zzq_args[6]; \ -- register unsigned long long int _zzq_result __asm__("r3"); \ -- register unsigned long long int* _zzq_ptr __asm__("r4"); \ -- _zzq_args[0] = (unsigned long long int)(_zzq_request); \ -- _zzq_args[1] = (unsigned long long int)(_zzq_arg1); \ -- _zzq_args[2] = (unsigned long long int)(_zzq_arg2); \ -- _zzq_args[3] = (unsigned long long int)(_zzq_arg3); \ -- _zzq_args[4] = (unsigned long long int)(_zzq_arg4); \ -- _zzq_args[5] = (unsigned long long int)(_zzq_arg5); \ -- _zzq_ptr = _zzq_args; \ -- __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ -- /* %R3 = client_request ( %R4 ) */ \ -- "or 1,1,1" \ -- : "=r" (_zzq_result) \ -- : "0" (_zzq_default), "r" (_zzq_ptr) \ -- : "cc", "memory"); \ -- _zzq_rlval = _zzq_result; \ -- } -- --#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ -- { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ -- register unsigned long long int __addr __asm__("r3"); \ -- __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ -- /* %R3 = guest_NRADDR */ \ -- "or 2,2,2" \ -- : "=r" (__addr) \ -- : \ -- : "cc", "memory" \ -- ); \ -- _zzq_orig->nraddr = __addr; \ -- __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ -- /* %R3 = guest_NRADDR_GPR2 */ \ -- "or 4,4,4" \ -- : "=r" (__addr) \ -- : \ -- : "cc", "memory" \ -- ); \ -- _zzq_orig->r2 = __addr; \ -- } -- --#define VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- __SPECIAL_INSTRUCTION_PREAMBLE \ -- /* branch-and-link-to-noredir *%R11 */ \ -- "or 3,3,3\n\t" -- --#endif /* PLAT_ppc64_linux */ -- --/* ------------------------ ppc32-aix5 ------------------------- */ -- --#if defined(PLAT_ppc32_aix5) -- --typedef -- struct { -- unsigned int nraddr; /* where's the code? */ -- unsigned int r2; /* what tocptr do we need? */ -- } -- OrigFn; -- --#define __SPECIAL_INSTRUCTION_PREAMBLE \ -- "rlwinm 0,0,3,0,0 ; rlwinm 0,0,13,0,0\n\t" \ -- "rlwinm 0,0,29,0,0 ; rlwinm 0,0,19,0,0\n\t" -- --#define VALGRIND_DO_CLIENT_REQUEST( \ -- _zzq_rlval, _zzq_default, _zzq_request, \ -- _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ -- \ -- { unsigned int _zzq_args[7]; \ -- register unsigned int _zzq_result; \ -- register unsigned int* _zzq_ptr; \ -- _zzq_args[0] = (unsigned int)(_zzq_request); \ -- _zzq_args[1] = (unsigned int)(_zzq_arg1); \ -- _zzq_args[2] = (unsigned int)(_zzq_arg2); \ -- _zzq_args[3] = (unsigned int)(_zzq_arg3); \ -- _zzq_args[4] = (unsigned int)(_zzq_arg4); \ -- _zzq_args[5] = (unsigned int)(_zzq_arg5); \ -- _zzq_args[6] = (unsigned int)(_zzq_default); \ -- _zzq_ptr = _zzq_args; \ -- __asm__ volatile("mr 4,%1\n\t" \ -- "lwz 3, 24(4)\n\t" \ -- __SPECIAL_INSTRUCTION_PREAMBLE \ -- /* %R3 = client_request ( %R4 ) */ \ -- "or 1,1,1\n\t" \ -- "mr %0,3" \ -- : "=b" (_zzq_result) \ -- : "b" (_zzq_ptr) \ -- : "r3", "r4", "cc", "memory"); \ -- _zzq_rlval = _zzq_result; \ -- } -- --#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ -- { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ -- register unsigned int __addr; \ -- __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ -- /* %R3 = guest_NRADDR */ \ -- "or 2,2,2\n\t" \ -- "mr %0,3" \ -- : "=b" (__addr) \ -- : \ -- : "r3", "cc", "memory" \ -- ); \ -- _zzq_orig->nraddr = __addr; \ -- __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ -- /* %R3 = guest_NRADDR_GPR2 */ \ -- "or 4,4,4\n\t" \ -- "mr %0,3" \ -- : "=b" (__addr) \ -- : \ -- : "r3", "cc", "memory" \ -- ); \ -- _zzq_orig->r2 = __addr; \ -- } -- --#define VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- __SPECIAL_INSTRUCTION_PREAMBLE \ -- /* branch-and-link-to-noredir *%R11 */ \ -- "or 3,3,3\n\t" -- --#endif /* PLAT_ppc32_aix5 */ -- --/* ------------------------ ppc64-aix5 ------------------------- */ -- --#if defined(PLAT_ppc64_aix5) -- --typedef -- struct { -- unsigned long long int nraddr; /* where's the code? */ -- unsigned long long int r2; /* what tocptr do we need? */ -- } -- OrigFn; -- --#define __SPECIAL_INSTRUCTION_PREAMBLE \ -- "rotldi 0,0,3 ; rotldi 0,0,13\n\t" \ -- "rotldi 0,0,61 ; rotldi 0,0,51\n\t" -- --#define VALGRIND_DO_CLIENT_REQUEST( \ -- _zzq_rlval, _zzq_default, _zzq_request, \ -- _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ -- \ -- { unsigned long long int _zzq_args[7]; \ -- register unsigned long long int _zzq_result; \ -- register unsigned long long int* _zzq_ptr; \ -- _zzq_args[0] = (unsigned int long long)(_zzq_request); \ -- _zzq_args[1] = (unsigned int long long)(_zzq_arg1); \ -- _zzq_args[2] = (unsigned int long long)(_zzq_arg2); \ -- _zzq_args[3] = (unsigned int long long)(_zzq_arg3); \ -- _zzq_args[4] = (unsigned int long long)(_zzq_arg4); \ -- _zzq_args[5] = (unsigned int long long)(_zzq_arg5); \ -- _zzq_args[6] = (unsigned int long long)(_zzq_default); \ -- _zzq_ptr = _zzq_args; \ -- __asm__ volatile("mr 4,%1\n\t" \ -- "ld 3, 48(4)\n\t" \ -- __SPECIAL_INSTRUCTION_PREAMBLE \ -- /* %R3 = client_request ( %R4 ) */ \ -- "or 1,1,1\n\t" \ -- "mr %0,3" \ -- : "=b" (_zzq_result) \ -- : "b" (_zzq_ptr) \ -- : "r3", "r4", "cc", "memory"); \ -- _zzq_rlval = _zzq_result; \ -- } -- --#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ -- { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ -- register unsigned long long int __addr; \ -- __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ -- /* %R3 = guest_NRADDR */ \ -- "or 2,2,2\n\t" \ -- "mr %0,3" \ -- : "=b" (__addr) \ -- : \ -- : "r3", "cc", "memory" \ -- ); \ -- _zzq_orig->nraddr = __addr; \ -- __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ -- /* %R3 = guest_NRADDR_GPR2 */ \ -- "or 4,4,4\n\t" \ -- "mr %0,3" \ -- : "=b" (__addr) \ -- : \ -- : "r3", "cc", "memory" \ -- ); \ -- _zzq_orig->r2 = __addr; \ -- } -- --#define VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- __SPECIAL_INSTRUCTION_PREAMBLE \ -- /* branch-and-link-to-noredir *%R11 */ \ -- "or 3,3,3\n\t" -- --#endif /* PLAT_ppc64_aix5 */ -- --/* Insert assembly code for other platforms here... */ -- --#endif /* NVALGRIND */ -- -- --/* ------------------------------------------------------------------ */ --/* PLATFORM SPECIFICS for FUNCTION WRAPPING. This is all very */ --/* ugly. It's the least-worst tradeoff I can think of. */ --/* ------------------------------------------------------------------ */ -- --/* This section defines magic (a.k.a appalling-hack) macros for doing -- guaranteed-no-redirection macros, so as to get from function -- wrappers to the functions they are wrapping. The whole point is to -- construct standard call sequences, but to do the call itself with a -- special no-redirect call pseudo-instruction that the JIT -- understands and handles specially. This section is long and -- repetitious, and I can't see a way to make it shorter. -- -- The naming scheme is as follows: -- -- CALL_FN_{W,v}_{v,W,WW,WWW,WWWW,5W,6W,7W,etc} -- -- 'W' stands for "word" and 'v' for "void". Hence there are -- different macros for calling arity 0, 1, 2, 3, 4, etc, functions, -- and for each, the possibility of returning a word-typed result, or -- no result. --*/ -- --/* Use these to write the name of your wrapper. NOTE: duplicates -- VG_WRAP_FUNCTION_Z{U,Z} in pub_tool_redir.h. */ -- --/* Use an extra level of macroisation so as to ensure the soname/fnname -- args are fully macro-expanded before pasting them together. */ --#define VG_CONCAT4(_aa,_bb,_cc,_dd) _aa##_bb##_cc##_dd -- --#define I_WRAP_SONAME_FNNAME_ZU(soname,fnname) \ -- VG_CONCAT4(_vgwZU_,soname,_,fnname) -- --#define I_WRAP_SONAME_FNNAME_ZZ(soname,fnname) \ -- VG_CONCAT4(_vgwZZ_,soname,_,fnname) -- --/* Use this macro from within a wrapper function to collect the -- context (address and possibly other info) of the original function. -- Once you have that you can then use it in one of the CALL_FN_ -- macros. The type of the argument _lval is OrigFn. */ --#define VALGRIND_GET_ORIG_FN(_lval) VALGRIND_GET_NR_CONTEXT(_lval) -- --/* Derivatives of the main macros below, for calling functions -- returning void. */ -- --#define CALL_FN_v_v(fnptr) \ -- do { volatile unsigned long _junk; \ -- CALL_FN_W_v(_junk,fnptr); } while (0) -- --#define CALL_FN_v_W(fnptr, arg1) \ -- do { volatile unsigned long _junk; \ -- CALL_FN_W_W(_junk,fnptr,arg1); } while (0) -- --#define CALL_FN_v_WW(fnptr, arg1,arg2) \ -- do { volatile unsigned long _junk; \ -- CALL_FN_W_WW(_junk,fnptr,arg1,arg2); } while (0) -- --#define CALL_FN_v_WWW(fnptr, arg1,arg2,arg3) \ -- do { volatile unsigned long _junk; \ -- CALL_FN_W_WWW(_junk,fnptr,arg1,arg2,arg3); } while (0) -- --#define CALL_FN_v_WWWW(fnptr, arg1,arg2,arg3,arg4) \ -- do { volatile unsigned long _junk; \ -- CALL_FN_W_WWWW(_junk,fnptr,arg1,arg2,arg3,arg4); } while (0) -- --#define CALL_FN_v_5W(fnptr, arg1,arg2,arg3,arg4,arg5) \ -- do { volatile unsigned long _junk; \ -- CALL_FN_W_5W(_junk,fnptr,arg1,arg2,arg3,arg4,arg5); } while (0) -- --#define CALL_FN_v_6W(fnptr, arg1,arg2,arg3,arg4,arg5,arg6) \ -- do { volatile unsigned long _junk; \ -- CALL_FN_W_6W(_junk,fnptr,arg1,arg2,arg3,arg4,arg5,arg6); } while (0) -- --#define CALL_FN_v_7W(fnptr, arg1,arg2,arg3,arg4,arg5,arg6,arg7) \ -- do { volatile unsigned long _junk; \ -- CALL_FN_W_7W(_junk,fnptr,arg1,arg2,arg3,arg4,arg5,arg6,arg7); } while (0) -- --/* ------------------------- x86-{linux,darwin} ---------------- */ -- --#if defined(PLAT_x86_linux) || defined(PLAT_x86_darwin) -- --/* These regs are trashed by the hidden call. No need to mention eax -- as gcc can already see that, plus causes gcc to bomb. */ --#define __CALLER_SAVED_REGS /*"eax"*/ "ecx", "edx" -- --/* These CALL_FN_ macros assume that on x86-linux, sizeof(unsigned -- long) == 4. */ -- --#define CALL_FN_W_v(lval, orig) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[1]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- __asm__ volatile( \ -- "movl (%%eax), %%eax\n\t" /* target->%eax */ \ -- VALGRIND_CALL_NOREDIR_EAX \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_W(lval, orig, arg1) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[2]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- __asm__ volatile( \ -- "pushl 4(%%eax)\n\t" \ -- "movl (%%eax), %%eax\n\t" /* target->%eax */ \ -- VALGRIND_CALL_NOREDIR_EAX \ -- "addl $4, %%esp\n" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WW(lval, orig, arg1,arg2) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- __asm__ volatile( \ -- "pushl 8(%%eax)\n\t" \ -- "pushl 4(%%eax)\n\t" \ -- "movl (%%eax), %%eax\n\t" /* target->%eax */ \ -- VALGRIND_CALL_NOREDIR_EAX \ -- "addl $8, %%esp\n" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[4]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- __asm__ volatile( \ -- "pushl 12(%%eax)\n\t" \ -- "pushl 8(%%eax)\n\t" \ -- "pushl 4(%%eax)\n\t" \ -- "movl (%%eax), %%eax\n\t" /* target->%eax */ \ -- VALGRIND_CALL_NOREDIR_EAX \ -- "addl $12, %%esp\n" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[5]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- __asm__ volatile( \ -- "pushl 16(%%eax)\n\t" \ -- "pushl 12(%%eax)\n\t" \ -- "pushl 8(%%eax)\n\t" \ -- "pushl 4(%%eax)\n\t" \ -- "movl (%%eax), %%eax\n\t" /* target->%eax */ \ -- VALGRIND_CALL_NOREDIR_EAX \ -- "addl $16, %%esp\n" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[6]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- _argvec[5] = (unsigned long)(arg5); \ -- __asm__ volatile( \ -- "pushl 20(%%eax)\n\t" \ -- "pushl 16(%%eax)\n\t" \ -- "pushl 12(%%eax)\n\t" \ -- "pushl 8(%%eax)\n\t" \ -- "pushl 4(%%eax)\n\t" \ -- "movl (%%eax), %%eax\n\t" /* target->%eax */ \ -- VALGRIND_CALL_NOREDIR_EAX \ -- "addl $20, %%esp\n" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[7]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- _argvec[5] = (unsigned long)(arg5); \ -- _argvec[6] = (unsigned long)(arg6); \ -- __asm__ volatile( \ -- "pushl 24(%%eax)\n\t" \ -- "pushl 20(%%eax)\n\t" \ -- "pushl 16(%%eax)\n\t" \ -- "pushl 12(%%eax)\n\t" \ -- "pushl 8(%%eax)\n\t" \ -- "pushl 4(%%eax)\n\t" \ -- "movl (%%eax), %%eax\n\t" /* target->%eax */ \ -- VALGRIND_CALL_NOREDIR_EAX \ -- "addl $24, %%esp\n" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[8]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- _argvec[5] = (unsigned long)(arg5); \ -- _argvec[6] = (unsigned long)(arg6); \ -- _argvec[7] = (unsigned long)(arg7); \ -- __asm__ volatile( \ -- "pushl 28(%%eax)\n\t" \ -- "pushl 24(%%eax)\n\t" \ -- "pushl 20(%%eax)\n\t" \ -- "pushl 16(%%eax)\n\t" \ -- "pushl 12(%%eax)\n\t" \ -- "pushl 8(%%eax)\n\t" \ -- "pushl 4(%%eax)\n\t" \ -- "movl (%%eax), %%eax\n\t" /* target->%eax */ \ -- VALGRIND_CALL_NOREDIR_EAX \ -- "addl $28, %%esp\n" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[9]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- _argvec[5] = (unsigned long)(arg5); \ -- _argvec[6] = (unsigned long)(arg6); \ -- _argvec[7] = (unsigned long)(arg7); \ -- _argvec[8] = (unsigned long)(arg8); \ -- __asm__ volatile( \ -- "pushl 32(%%eax)\n\t" \ -- "pushl 28(%%eax)\n\t" \ -- "pushl 24(%%eax)\n\t" \ -- "pushl 20(%%eax)\n\t" \ -- "pushl 16(%%eax)\n\t" \ -- "pushl 12(%%eax)\n\t" \ -- "pushl 8(%%eax)\n\t" \ -- "pushl 4(%%eax)\n\t" \ -- "movl (%%eax), %%eax\n\t" /* target->%eax */ \ -- VALGRIND_CALL_NOREDIR_EAX \ -- "addl $32, %%esp\n" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[10]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- _argvec[5] = (unsigned long)(arg5); \ -- _argvec[6] = (unsigned long)(arg6); \ -- _argvec[7] = (unsigned long)(arg7); \ -- _argvec[8] = (unsigned long)(arg8); \ -- _argvec[9] = (unsigned long)(arg9); \ -- __asm__ volatile( \ -- "pushl 36(%%eax)\n\t" \ -- "pushl 32(%%eax)\n\t" \ -- "pushl 28(%%eax)\n\t" \ -- "pushl 24(%%eax)\n\t" \ -- "pushl 20(%%eax)\n\t" \ -- "pushl 16(%%eax)\n\t" \ -- "pushl 12(%%eax)\n\t" \ -- "pushl 8(%%eax)\n\t" \ -- "pushl 4(%%eax)\n\t" \ -- "movl (%%eax), %%eax\n\t" /* target->%eax */ \ -- VALGRIND_CALL_NOREDIR_EAX \ -- "addl $36, %%esp\n" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9,arg10) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[11]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- _argvec[5] = (unsigned long)(arg5); \ -- _argvec[6] = (unsigned long)(arg6); \ -- _argvec[7] = (unsigned long)(arg7); \ -- _argvec[8] = (unsigned long)(arg8); \ -- _argvec[9] = (unsigned long)(arg9); \ -- _argvec[10] = (unsigned long)(arg10); \ -- __asm__ volatile( \ -- "pushl 40(%%eax)\n\t" \ -- "pushl 36(%%eax)\n\t" \ -- "pushl 32(%%eax)\n\t" \ -- "pushl 28(%%eax)\n\t" \ -- "pushl 24(%%eax)\n\t" \ -- "pushl 20(%%eax)\n\t" \ -- "pushl 16(%%eax)\n\t" \ -- "pushl 12(%%eax)\n\t" \ -- "pushl 8(%%eax)\n\t" \ -- "pushl 4(%%eax)\n\t" \ -- "movl (%%eax), %%eax\n\t" /* target->%eax */ \ -- VALGRIND_CALL_NOREDIR_EAX \ -- "addl $40, %%esp\n" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5, \ -- arg6,arg7,arg8,arg9,arg10, \ -- arg11) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[12]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- _argvec[5] = (unsigned long)(arg5); \ -- _argvec[6] = (unsigned long)(arg6); \ -- _argvec[7] = (unsigned long)(arg7); \ -- _argvec[8] = (unsigned long)(arg8); \ -- _argvec[9] = (unsigned long)(arg9); \ -- _argvec[10] = (unsigned long)(arg10); \ -- _argvec[11] = (unsigned long)(arg11); \ -- __asm__ volatile( \ -- "pushl 44(%%eax)\n\t" \ -- "pushl 40(%%eax)\n\t" \ -- "pushl 36(%%eax)\n\t" \ -- "pushl 32(%%eax)\n\t" \ -- "pushl 28(%%eax)\n\t" \ -- "pushl 24(%%eax)\n\t" \ -- "pushl 20(%%eax)\n\t" \ -- "pushl 16(%%eax)\n\t" \ -- "pushl 12(%%eax)\n\t" \ -- "pushl 8(%%eax)\n\t" \ -- "pushl 4(%%eax)\n\t" \ -- "movl (%%eax), %%eax\n\t" /* target->%eax */ \ -- VALGRIND_CALL_NOREDIR_EAX \ -- "addl $44, %%esp\n" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5, \ -- arg6,arg7,arg8,arg9,arg10, \ -- arg11,arg12) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[13]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- _argvec[5] = (unsigned long)(arg5); \ -- _argvec[6] = (unsigned long)(arg6); \ -- _argvec[7] = (unsigned long)(arg7); \ -- _argvec[8] = (unsigned long)(arg8); \ -- _argvec[9] = (unsigned long)(arg9); \ -- _argvec[10] = (unsigned long)(arg10); \ -- _argvec[11] = (unsigned long)(arg11); \ -- _argvec[12] = (unsigned long)(arg12); \ -- __asm__ volatile( \ -- "pushl 48(%%eax)\n\t" \ -- "pushl 44(%%eax)\n\t" \ -- "pushl 40(%%eax)\n\t" \ -- "pushl 36(%%eax)\n\t" \ -- "pushl 32(%%eax)\n\t" \ -- "pushl 28(%%eax)\n\t" \ -- "pushl 24(%%eax)\n\t" \ -- "pushl 20(%%eax)\n\t" \ -- "pushl 16(%%eax)\n\t" \ -- "pushl 12(%%eax)\n\t" \ -- "pushl 8(%%eax)\n\t" \ -- "pushl 4(%%eax)\n\t" \ -- "movl (%%eax), %%eax\n\t" /* target->%eax */ \ -- VALGRIND_CALL_NOREDIR_EAX \ -- "addl $48, %%esp\n" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#endif /* PLAT_x86_linux || PLAT_x86_darwin */ -- --/* ------------------------ amd64-{linux,darwin} --------------- */ -- --#if defined(PLAT_amd64_linux) || defined(PLAT_amd64_darwin) -- --/* ARGREGS: rdi rsi rdx rcx r8 r9 (the rest on stack in R-to-L order) */ -- --/* These regs are trashed by the hidden call. */ --#define __CALLER_SAVED_REGS /*"rax",*/ "rcx", "rdx", "rsi", \ -- "rdi", "r8", "r9", "r10", "r11" -- --/* These CALL_FN_ macros assume that on amd64-linux, sizeof(unsigned -- long) == 8. */ -- --/* NB 9 Sept 07. There is a nasty kludge here in all these CALL_FN_ -- macros. In order not to trash the stack redzone, we need to drop -- %rsp by 128 before the hidden call, and restore afterwards. The -- nastyness is that it is only by luck that the stack still appears -- to be unwindable during the hidden call - since then the behaviour -- of any routine using this macro does not match what the CFI data -- says. Sigh. -- -- Why is this important? Imagine that a wrapper has a stack -- allocated local, and passes to the hidden call, a pointer to it. -- Because gcc does not know about the hidden call, it may allocate -- that local in the redzone. Unfortunately the hidden call may then -- trash it before it comes to use it. So we must step clear of the -- redzone, for the duration of the hidden call, to make it safe. -- -- Probably the same problem afflicts the other redzone-style ABIs too -- (ppc64-linux, ppc32-aix5, ppc64-aix5); but for those, the stack is -- self describing (none of this CFI nonsense) so at least messing -- with the stack pointer doesn't give a danger of non-unwindable -- stack. */ -- --#define CALL_FN_W_v(lval, orig) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[1]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- __asm__ volatile( \ -- "subq $128,%%rsp\n\t" \ -- "movq (%%rax), %%rax\n\t" /* target->%rax */ \ -- VALGRIND_CALL_NOREDIR_RAX \ -- "addq $128,%%rsp\n\t" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_W(lval, orig, arg1) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[2]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- __asm__ volatile( \ -- "subq $128,%%rsp\n\t" \ -- "movq 8(%%rax), %%rdi\n\t" \ -- "movq (%%rax), %%rax\n\t" /* target->%rax */ \ -- VALGRIND_CALL_NOREDIR_RAX \ -- "addq $128,%%rsp\n\t" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WW(lval, orig, arg1,arg2) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- __asm__ volatile( \ -- "subq $128,%%rsp\n\t" \ -- "movq 16(%%rax), %%rsi\n\t" \ -- "movq 8(%%rax), %%rdi\n\t" \ -- "movq (%%rax), %%rax\n\t" /* target->%rax */ \ -- VALGRIND_CALL_NOREDIR_RAX \ -- "addq $128,%%rsp\n\t" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[4]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- __asm__ volatile( \ -- "subq $128,%%rsp\n\t" \ -- "movq 24(%%rax), %%rdx\n\t" \ -- "movq 16(%%rax), %%rsi\n\t" \ -- "movq 8(%%rax), %%rdi\n\t" \ -- "movq (%%rax), %%rax\n\t" /* target->%rax */ \ -- VALGRIND_CALL_NOREDIR_RAX \ -- "addq $128,%%rsp\n\t" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[5]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- __asm__ volatile( \ -- "subq $128,%%rsp\n\t" \ -- "movq 32(%%rax), %%rcx\n\t" \ -- "movq 24(%%rax), %%rdx\n\t" \ -- "movq 16(%%rax), %%rsi\n\t" \ -- "movq 8(%%rax), %%rdi\n\t" \ -- "movq (%%rax), %%rax\n\t" /* target->%rax */ \ -- VALGRIND_CALL_NOREDIR_RAX \ -- "addq $128,%%rsp\n\t" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[6]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- _argvec[5] = (unsigned long)(arg5); \ -- __asm__ volatile( \ -- "subq $128,%%rsp\n\t" \ -- "movq 40(%%rax), %%r8\n\t" \ -- "movq 32(%%rax), %%rcx\n\t" \ -- "movq 24(%%rax), %%rdx\n\t" \ -- "movq 16(%%rax), %%rsi\n\t" \ -- "movq 8(%%rax), %%rdi\n\t" \ -- "movq (%%rax), %%rax\n\t" /* target->%rax */ \ -- VALGRIND_CALL_NOREDIR_RAX \ -- "addq $128,%%rsp\n\t" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[7]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- _argvec[5] = (unsigned long)(arg5); \ -- _argvec[6] = (unsigned long)(arg6); \ -- __asm__ volatile( \ -- "subq $128,%%rsp\n\t" \ -- "movq 48(%%rax), %%r9\n\t" \ -- "movq 40(%%rax), %%r8\n\t" \ -- "movq 32(%%rax), %%rcx\n\t" \ -- "movq 24(%%rax), %%rdx\n\t" \ -- "movq 16(%%rax), %%rsi\n\t" \ -- "movq 8(%%rax), %%rdi\n\t" \ -- "movq (%%rax), %%rax\n\t" /* target->%rax */ \ -- "addq $128,%%rsp\n\t" \ -- VALGRIND_CALL_NOREDIR_RAX \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[8]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- _argvec[5] = (unsigned long)(arg5); \ -- _argvec[6] = (unsigned long)(arg6); \ -- _argvec[7] = (unsigned long)(arg7); \ -- __asm__ volatile( \ -- "subq $128,%%rsp\n\t" \ -- "pushq 56(%%rax)\n\t" \ -- "movq 48(%%rax), %%r9\n\t" \ -- "movq 40(%%rax), %%r8\n\t" \ -- "movq 32(%%rax), %%rcx\n\t" \ -- "movq 24(%%rax), %%rdx\n\t" \ -- "movq 16(%%rax), %%rsi\n\t" \ -- "movq 8(%%rax), %%rdi\n\t" \ -- "movq (%%rax), %%rax\n\t" /* target->%rax */ \ -- VALGRIND_CALL_NOREDIR_RAX \ -- "addq $8, %%rsp\n" \ -- "addq $128,%%rsp\n\t" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[9]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- _argvec[5] = (unsigned long)(arg5); \ -- _argvec[6] = (unsigned long)(arg6); \ -- _argvec[7] = (unsigned long)(arg7); \ -- _argvec[8] = (unsigned long)(arg8); \ -- __asm__ volatile( \ -- "subq $128,%%rsp\n\t" \ -- "pushq 64(%%rax)\n\t" \ -- "pushq 56(%%rax)\n\t" \ -- "movq 48(%%rax), %%r9\n\t" \ -- "movq 40(%%rax), %%r8\n\t" \ -- "movq 32(%%rax), %%rcx\n\t" \ -- "movq 24(%%rax), %%rdx\n\t" \ -- "movq 16(%%rax), %%rsi\n\t" \ -- "movq 8(%%rax), %%rdi\n\t" \ -- "movq (%%rax), %%rax\n\t" /* target->%rax */ \ -- VALGRIND_CALL_NOREDIR_RAX \ -- "addq $16, %%rsp\n" \ -- "addq $128,%%rsp\n\t" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[10]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- _argvec[5] = (unsigned long)(arg5); \ -- _argvec[6] = (unsigned long)(arg6); \ -- _argvec[7] = (unsigned long)(arg7); \ -- _argvec[8] = (unsigned long)(arg8); \ -- _argvec[9] = (unsigned long)(arg9); \ -- __asm__ volatile( \ -- "subq $128,%%rsp\n\t" \ -- "pushq 72(%%rax)\n\t" \ -- "pushq 64(%%rax)\n\t" \ -- "pushq 56(%%rax)\n\t" \ -- "movq 48(%%rax), %%r9\n\t" \ -- "movq 40(%%rax), %%r8\n\t" \ -- "movq 32(%%rax), %%rcx\n\t" \ -- "movq 24(%%rax), %%rdx\n\t" \ -- "movq 16(%%rax), %%rsi\n\t" \ -- "movq 8(%%rax), %%rdi\n\t" \ -- "movq (%%rax), %%rax\n\t" /* target->%rax */ \ -- VALGRIND_CALL_NOREDIR_RAX \ -- "addq $24, %%rsp\n" \ -- "addq $128,%%rsp\n\t" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9,arg10) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[11]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- _argvec[5] = (unsigned long)(arg5); \ -- _argvec[6] = (unsigned long)(arg6); \ -- _argvec[7] = (unsigned long)(arg7); \ -- _argvec[8] = (unsigned long)(arg8); \ -- _argvec[9] = (unsigned long)(arg9); \ -- _argvec[10] = (unsigned long)(arg10); \ -- __asm__ volatile( \ -- "subq $128,%%rsp\n\t" \ -- "pushq 80(%%rax)\n\t" \ -- "pushq 72(%%rax)\n\t" \ -- "pushq 64(%%rax)\n\t" \ -- "pushq 56(%%rax)\n\t" \ -- "movq 48(%%rax), %%r9\n\t" \ -- "movq 40(%%rax), %%r8\n\t" \ -- "movq 32(%%rax), %%rcx\n\t" \ -- "movq 24(%%rax), %%rdx\n\t" \ -- "movq 16(%%rax), %%rsi\n\t" \ -- "movq 8(%%rax), %%rdi\n\t" \ -- "movq (%%rax), %%rax\n\t" /* target->%rax */ \ -- VALGRIND_CALL_NOREDIR_RAX \ -- "addq $32, %%rsp\n" \ -- "addq $128,%%rsp\n\t" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9,arg10,arg11) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[12]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- _argvec[5] = (unsigned long)(arg5); \ -- _argvec[6] = (unsigned long)(arg6); \ -- _argvec[7] = (unsigned long)(arg7); \ -- _argvec[8] = (unsigned long)(arg8); \ -- _argvec[9] = (unsigned long)(arg9); \ -- _argvec[10] = (unsigned long)(arg10); \ -- _argvec[11] = (unsigned long)(arg11); \ -- __asm__ volatile( \ -- "subq $128,%%rsp\n\t" \ -- "pushq 88(%%rax)\n\t" \ -- "pushq 80(%%rax)\n\t" \ -- "pushq 72(%%rax)\n\t" \ -- "pushq 64(%%rax)\n\t" \ -- "pushq 56(%%rax)\n\t" \ -- "movq 48(%%rax), %%r9\n\t" \ -- "movq 40(%%rax), %%r8\n\t" \ -- "movq 32(%%rax), %%rcx\n\t" \ -- "movq 24(%%rax), %%rdx\n\t" \ -- "movq 16(%%rax), %%rsi\n\t" \ -- "movq 8(%%rax), %%rdi\n\t" \ -- "movq (%%rax), %%rax\n\t" /* target->%rax */ \ -- VALGRIND_CALL_NOREDIR_RAX \ -- "addq $40, %%rsp\n" \ -- "addq $128,%%rsp\n\t" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9,arg10,arg11,arg12) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[13]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)(arg1); \ -- _argvec[2] = (unsigned long)(arg2); \ -- _argvec[3] = (unsigned long)(arg3); \ -- _argvec[4] = (unsigned long)(arg4); \ -- _argvec[5] = (unsigned long)(arg5); \ -- _argvec[6] = (unsigned long)(arg6); \ -- _argvec[7] = (unsigned long)(arg7); \ -- _argvec[8] = (unsigned long)(arg8); \ -- _argvec[9] = (unsigned long)(arg9); \ -- _argvec[10] = (unsigned long)(arg10); \ -- _argvec[11] = (unsigned long)(arg11); \ -- _argvec[12] = (unsigned long)(arg12); \ -- __asm__ volatile( \ -- "subq $128,%%rsp\n\t" \ -- "pushq 96(%%rax)\n\t" \ -- "pushq 88(%%rax)\n\t" \ -- "pushq 80(%%rax)\n\t" \ -- "pushq 72(%%rax)\n\t" \ -- "pushq 64(%%rax)\n\t" \ -- "pushq 56(%%rax)\n\t" \ -- "movq 48(%%rax), %%r9\n\t" \ -- "movq 40(%%rax), %%r8\n\t" \ -- "movq 32(%%rax), %%rcx\n\t" \ -- "movq 24(%%rax), %%rdx\n\t" \ -- "movq 16(%%rax), %%rsi\n\t" \ -- "movq 8(%%rax), %%rdi\n\t" \ -- "movq (%%rax), %%rax\n\t" /* target->%rax */ \ -- VALGRIND_CALL_NOREDIR_RAX \ -- "addq $48, %%rsp\n" \ -- "addq $128,%%rsp\n\t" \ -- : /*out*/ "=a" (_res) \ -- : /*in*/ "a" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#endif /* PLAT_amd64_linux || PLAT_amd64_darwin */ -- --/* ------------------------ ppc32-linux ------------------------ */ -- --#if defined(PLAT_ppc32_linux) -- --/* This is useful for finding out about the on-stack stuff: -- -- extern int f9 ( int,int,int,int,int,int,int,int,int ); -- extern int f10 ( int,int,int,int,int,int,int,int,int,int ); -- extern int f11 ( int,int,int,int,int,int,int,int,int,int,int ); -- extern int f12 ( int,int,int,int,int,int,int,int,int,int,int,int ); -- -- int g9 ( void ) { -- return f9(11,22,33,44,55,66,77,88,99); -- } -- int g10 ( void ) { -- return f10(11,22,33,44,55,66,77,88,99,110); -- } -- int g11 ( void ) { -- return f11(11,22,33,44,55,66,77,88,99,110,121); -- } -- int g12 ( void ) { -- return f12(11,22,33,44,55,66,77,88,99,110,121,132); -- } --*/ -- --/* ARGREGS: r3 r4 r5 r6 r7 r8 r9 r10 (the rest on stack somewhere) */ -- --/* These regs are trashed by the hidden call. */ --#define __CALLER_SAVED_REGS \ -- "lr", "ctr", "xer", \ -- "cr0", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7", \ -- "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", \ -- "r11", "r12", "r13" -- --/* These CALL_FN_ macros assume that on ppc32-linux, -- sizeof(unsigned long) == 4. */ -- --#define CALL_FN_W_v(lval, orig) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[1]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "lwz 11,0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr %0,3" \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_W(lval, orig, arg1) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[2]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)arg1; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "lwz 3,4(11)\n\t" /* arg1->r3 */ \ -- "lwz 11,0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr %0,3" \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WW(lval, orig, arg1,arg2) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)arg1; \ -- _argvec[2] = (unsigned long)arg2; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "lwz 3,4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4,8(11)\n\t" \ -- "lwz 11,0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr %0,3" \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[4]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)arg1; \ -- _argvec[2] = (unsigned long)arg2; \ -- _argvec[3] = (unsigned long)arg3; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "lwz 3,4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4,8(11)\n\t" \ -- "lwz 5,12(11)\n\t" \ -- "lwz 11,0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr %0,3" \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[5]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)arg1; \ -- _argvec[2] = (unsigned long)arg2; \ -- _argvec[3] = (unsigned long)arg3; \ -- _argvec[4] = (unsigned long)arg4; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "lwz 3,4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4,8(11)\n\t" \ -- "lwz 5,12(11)\n\t" \ -- "lwz 6,16(11)\n\t" /* arg4->r6 */ \ -- "lwz 11,0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr %0,3" \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[6]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)arg1; \ -- _argvec[2] = (unsigned long)arg2; \ -- _argvec[3] = (unsigned long)arg3; \ -- _argvec[4] = (unsigned long)arg4; \ -- _argvec[5] = (unsigned long)arg5; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "lwz 3,4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4,8(11)\n\t" \ -- "lwz 5,12(11)\n\t" \ -- "lwz 6,16(11)\n\t" /* arg4->r6 */ \ -- "lwz 7,20(11)\n\t" \ -- "lwz 11,0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr %0,3" \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[7]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)arg1; \ -- _argvec[2] = (unsigned long)arg2; \ -- _argvec[3] = (unsigned long)arg3; \ -- _argvec[4] = (unsigned long)arg4; \ -- _argvec[5] = (unsigned long)arg5; \ -- _argvec[6] = (unsigned long)arg6; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "lwz 3,4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4,8(11)\n\t" \ -- "lwz 5,12(11)\n\t" \ -- "lwz 6,16(11)\n\t" /* arg4->r6 */ \ -- "lwz 7,20(11)\n\t" \ -- "lwz 8,24(11)\n\t" \ -- "lwz 11,0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr %0,3" \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[8]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)arg1; \ -- _argvec[2] = (unsigned long)arg2; \ -- _argvec[3] = (unsigned long)arg3; \ -- _argvec[4] = (unsigned long)arg4; \ -- _argvec[5] = (unsigned long)arg5; \ -- _argvec[6] = (unsigned long)arg6; \ -- _argvec[7] = (unsigned long)arg7; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "lwz 3,4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4,8(11)\n\t" \ -- "lwz 5,12(11)\n\t" \ -- "lwz 6,16(11)\n\t" /* arg4->r6 */ \ -- "lwz 7,20(11)\n\t" \ -- "lwz 8,24(11)\n\t" \ -- "lwz 9,28(11)\n\t" \ -- "lwz 11,0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr %0,3" \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[9]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)arg1; \ -- _argvec[2] = (unsigned long)arg2; \ -- _argvec[3] = (unsigned long)arg3; \ -- _argvec[4] = (unsigned long)arg4; \ -- _argvec[5] = (unsigned long)arg5; \ -- _argvec[6] = (unsigned long)arg6; \ -- _argvec[7] = (unsigned long)arg7; \ -- _argvec[8] = (unsigned long)arg8; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "lwz 3,4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4,8(11)\n\t" \ -- "lwz 5,12(11)\n\t" \ -- "lwz 6,16(11)\n\t" /* arg4->r6 */ \ -- "lwz 7,20(11)\n\t" \ -- "lwz 8,24(11)\n\t" \ -- "lwz 9,28(11)\n\t" \ -- "lwz 10,32(11)\n\t" /* arg8->r10 */ \ -- "lwz 11,0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr %0,3" \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[10]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)arg1; \ -- _argvec[2] = (unsigned long)arg2; \ -- _argvec[3] = (unsigned long)arg3; \ -- _argvec[4] = (unsigned long)arg4; \ -- _argvec[5] = (unsigned long)arg5; \ -- _argvec[6] = (unsigned long)arg6; \ -- _argvec[7] = (unsigned long)arg7; \ -- _argvec[8] = (unsigned long)arg8; \ -- _argvec[9] = (unsigned long)arg9; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "addi 1,1,-16\n\t" \ -- /* arg9 */ \ -- "lwz 3,36(11)\n\t" \ -- "stw 3,8(1)\n\t" \ -- /* args1-8 */ \ -- "lwz 3,4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4,8(11)\n\t" \ -- "lwz 5,12(11)\n\t" \ -- "lwz 6,16(11)\n\t" /* arg4->r6 */ \ -- "lwz 7,20(11)\n\t" \ -- "lwz 8,24(11)\n\t" \ -- "lwz 9,28(11)\n\t" \ -- "lwz 10,32(11)\n\t" /* arg8->r10 */ \ -- "lwz 11,0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "addi 1,1,16\n\t" \ -- "mr %0,3" \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9,arg10) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[11]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)arg1; \ -- _argvec[2] = (unsigned long)arg2; \ -- _argvec[3] = (unsigned long)arg3; \ -- _argvec[4] = (unsigned long)arg4; \ -- _argvec[5] = (unsigned long)arg5; \ -- _argvec[6] = (unsigned long)arg6; \ -- _argvec[7] = (unsigned long)arg7; \ -- _argvec[8] = (unsigned long)arg8; \ -- _argvec[9] = (unsigned long)arg9; \ -- _argvec[10] = (unsigned long)arg10; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "addi 1,1,-16\n\t" \ -- /* arg10 */ \ -- "lwz 3,40(11)\n\t" \ -- "stw 3,12(1)\n\t" \ -- /* arg9 */ \ -- "lwz 3,36(11)\n\t" \ -- "stw 3,8(1)\n\t" \ -- /* args1-8 */ \ -- "lwz 3,4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4,8(11)\n\t" \ -- "lwz 5,12(11)\n\t" \ -- "lwz 6,16(11)\n\t" /* arg4->r6 */ \ -- "lwz 7,20(11)\n\t" \ -- "lwz 8,24(11)\n\t" \ -- "lwz 9,28(11)\n\t" \ -- "lwz 10,32(11)\n\t" /* arg8->r10 */ \ -- "lwz 11,0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "addi 1,1,16\n\t" \ -- "mr %0,3" \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9,arg10,arg11) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[12]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)arg1; \ -- _argvec[2] = (unsigned long)arg2; \ -- _argvec[3] = (unsigned long)arg3; \ -- _argvec[4] = (unsigned long)arg4; \ -- _argvec[5] = (unsigned long)arg5; \ -- _argvec[6] = (unsigned long)arg6; \ -- _argvec[7] = (unsigned long)arg7; \ -- _argvec[8] = (unsigned long)arg8; \ -- _argvec[9] = (unsigned long)arg9; \ -- _argvec[10] = (unsigned long)arg10; \ -- _argvec[11] = (unsigned long)arg11; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "addi 1,1,-32\n\t" \ -- /* arg11 */ \ -- "lwz 3,44(11)\n\t" \ -- "stw 3,16(1)\n\t" \ -- /* arg10 */ \ -- "lwz 3,40(11)\n\t" \ -- "stw 3,12(1)\n\t" \ -- /* arg9 */ \ -- "lwz 3,36(11)\n\t" \ -- "stw 3,8(1)\n\t" \ -- /* args1-8 */ \ -- "lwz 3,4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4,8(11)\n\t" \ -- "lwz 5,12(11)\n\t" \ -- "lwz 6,16(11)\n\t" /* arg4->r6 */ \ -- "lwz 7,20(11)\n\t" \ -- "lwz 8,24(11)\n\t" \ -- "lwz 9,28(11)\n\t" \ -- "lwz 10,32(11)\n\t" /* arg8->r10 */ \ -- "lwz 11,0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "addi 1,1,32\n\t" \ -- "mr %0,3" \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9,arg10,arg11,arg12) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[13]; \ -- volatile unsigned long _res; \ -- _argvec[0] = (unsigned long)_orig.nraddr; \ -- _argvec[1] = (unsigned long)arg1; \ -- _argvec[2] = (unsigned long)arg2; \ -- _argvec[3] = (unsigned long)arg3; \ -- _argvec[4] = (unsigned long)arg4; \ -- _argvec[5] = (unsigned long)arg5; \ -- _argvec[6] = (unsigned long)arg6; \ -- _argvec[7] = (unsigned long)arg7; \ -- _argvec[8] = (unsigned long)arg8; \ -- _argvec[9] = (unsigned long)arg9; \ -- _argvec[10] = (unsigned long)arg10; \ -- _argvec[11] = (unsigned long)arg11; \ -- _argvec[12] = (unsigned long)arg12; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "addi 1,1,-32\n\t" \ -- /* arg12 */ \ -- "lwz 3,48(11)\n\t" \ -- "stw 3,20(1)\n\t" \ -- /* arg11 */ \ -- "lwz 3,44(11)\n\t" \ -- "stw 3,16(1)\n\t" \ -- /* arg10 */ \ -- "lwz 3,40(11)\n\t" \ -- "stw 3,12(1)\n\t" \ -- /* arg9 */ \ -- "lwz 3,36(11)\n\t" \ -- "stw 3,8(1)\n\t" \ -- /* args1-8 */ \ -- "lwz 3,4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4,8(11)\n\t" \ -- "lwz 5,12(11)\n\t" \ -- "lwz 6,16(11)\n\t" /* arg4->r6 */ \ -- "lwz 7,20(11)\n\t" \ -- "lwz 8,24(11)\n\t" \ -- "lwz 9,28(11)\n\t" \ -- "lwz 10,32(11)\n\t" /* arg8->r10 */ \ -- "lwz 11,0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "addi 1,1,32\n\t" \ -- "mr %0,3" \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[0]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#endif /* PLAT_ppc32_linux */ -- --/* ------------------------ ppc64-linux ------------------------ */ -- --#if defined(PLAT_ppc64_linux) -- --/* ARGREGS: r3 r4 r5 r6 r7 r8 r9 r10 (the rest on stack somewhere) */ -- --/* These regs are trashed by the hidden call. */ --#define __CALLER_SAVED_REGS \ -- "lr", "ctr", "xer", \ -- "cr0", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7", \ -- "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", \ -- "r11", "r12", "r13" -- --/* These CALL_FN_ macros assume that on ppc64-linux, sizeof(unsigned -- long) == 8. */ -- --#define CALL_FN_W_v(lval, orig) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+0]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)" /* restore tocptr */ \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_W(lval, orig, arg1) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+1]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)" /* restore tocptr */ \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WW(lval, orig, arg1,arg2) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+2]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)" /* restore tocptr */ \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+3]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)" /* restore tocptr */ \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+4]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)" /* restore tocptr */ \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+5]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 7, 40(11)\n\t" /* arg5->r7 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)" /* restore tocptr */ \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+6]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 7, 40(11)\n\t" /* arg5->r7 */ \ -- "ld 8, 48(11)\n\t" /* arg6->r8 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)" /* restore tocptr */ \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+7]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 7, 40(11)\n\t" /* arg5->r7 */ \ -- "ld 8, 48(11)\n\t" /* arg6->r8 */ \ -- "ld 9, 56(11)\n\t" /* arg7->r9 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)" /* restore tocptr */ \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+8]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- _argvec[2+8] = (unsigned long)arg8; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 7, 40(11)\n\t" /* arg5->r7 */ \ -- "ld 8, 48(11)\n\t" /* arg6->r8 */ \ -- "ld 9, 56(11)\n\t" /* arg7->r9 */ \ -- "ld 10, 64(11)\n\t" /* arg8->r10 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)" /* restore tocptr */ \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+9]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- _argvec[2+8] = (unsigned long)arg8; \ -- _argvec[2+9] = (unsigned long)arg9; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "addi 1,1,-128\n\t" /* expand stack frame */ \ -- /* arg9 */ \ -- "ld 3,72(11)\n\t" \ -- "std 3,112(1)\n\t" \ -- /* args1-8 */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 7, 40(11)\n\t" /* arg5->r7 */ \ -- "ld 8, 48(11)\n\t" /* arg6->r8 */ \ -- "ld 9, 56(11)\n\t" /* arg7->r9 */ \ -- "ld 10, 64(11)\n\t" /* arg8->r10 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- "addi 1,1,128" /* restore frame */ \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9,arg10) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+10]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- _argvec[2+8] = (unsigned long)arg8; \ -- _argvec[2+9] = (unsigned long)arg9; \ -- _argvec[2+10] = (unsigned long)arg10; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "addi 1,1,-128\n\t" /* expand stack frame */ \ -- /* arg10 */ \ -- "ld 3,80(11)\n\t" \ -- "std 3,120(1)\n\t" \ -- /* arg9 */ \ -- "ld 3,72(11)\n\t" \ -- "std 3,112(1)\n\t" \ -- /* args1-8 */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 7, 40(11)\n\t" /* arg5->r7 */ \ -- "ld 8, 48(11)\n\t" /* arg6->r8 */ \ -- "ld 9, 56(11)\n\t" /* arg7->r9 */ \ -- "ld 10, 64(11)\n\t" /* arg8->r10 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- "addi 1,1,128" /* restore frame */ \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9,arg10,arg11) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+11]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- _argvec[2+8] = (unsigned long)arg8; \ -- _argvec[2+9] = (unsigned long)arg9; \ -- _argvec[2+10] = (unsigned long)arg10; \ -- _argvec[2+11] = (unsigned long)arg11; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "addi 1,1,-144\n\t" /* expand stack frame */ \ -- /* arg11 */ \ -- "ld 3,88(11)\n\t" \ -- "std 3,128(1)\n\t" \ -- /* arg10 */ \ -- "ld 3,80(11)\n\t" \ -- "std 3,120(1)\n\t" \ -- /* arg9 */ \ -- "ld 3,72(11)\n\t" \ -- "std 3,112(1)\n\t" \ -- /* args1-8 */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 7, 40(11)\n\t" /* arg5->r7 */ \ -- "ld 8, 48(11)\n\t" /* arg6->r8 */ \ -- "ld 9, 56(11)\n\t" /* arg7->r9 */ \ -- "ld 10, 64(11)\n\t" /* arg8->r10 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- "addi 1,1,144" /* restore frame */ \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9,arg10,arg11,arg12) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+12]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- _argvec[2+8] = (unsigned long)arg8; \ -- _argvec[2+9] = (unsigned long)arg9; \ -- _argvec[2+10] = (unsigned long)arg10; \ -- _argvec[2+11] = (unsigned long)arg11; \ -- _argvec[2+12] = (unsigned long)arg12; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "addi 1,1,-144\n\t" /* expand stack frame */ \ -- /* arg12 */ \ -- "ld 3,96(11)\n\t" \ -- "std 3,136(1)\n\t" \ -- /* arg11 */ \ -- "ld 3,88(11)\n\t" \ -- "std 3,128(1)\n\t" \ -- /* arg10 */ \ -- "ld 3,80(11)\n\t" \ -- "std 3,120(1)\n\t" \ -- /* arg9 */ \ -- "ld 3,72(11)\n\t" \ -- "std 3,112(1)\n\t" \ -- /* args1-8 */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 7, 40(11)\n\t" /* arg5->r7 */ \ -- "ld 8, 48(11)\n\t" /* arg6->r8 */ \ -- "ld 9, 56(11)\n\t" /* arg7->r9 */ \ -- "ld 10, 64(11)\n\t" /* arg8->r10 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- "addi 1,1,144" /* restore frame */ \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#endif /* PLAT_ppc64_linux */ -- --/* ------------------------ ppc32-aix5 ------------------------- */ -- --#if defined(PLAT_ppc32_aix5) -- --/* ARGREGS: r3 r4 r5 r6 r7 r8 r9 r10 (the rest on stack somewhere) */ -- --/* These regs are trashed by the hidden call. */ --#define __CALLER_SAVED_REGS \ -- "lr", "ctr", "xer", \ -- "cr0", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7", \ -- "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", \ -- "r11", "r12", "r13" -- --/* Expand the stack frame, copying enough info that unwinding -- still works. Trashes r3. */ -- --#define VG_EXPAND_FRAME_BY_trashes_r3(_n_fr) \ -- "addi 1,1,-" #_n_fr "\n\t" \ -- "lwz 3," #_n_fr "(1)\n\t" \ -- "stw 3,0(1)\n\t" -- --#define VG_CONTRACT_FRAME_BY(_n_fr) \ -- "addi 1,1," #_n_fr "\n\t" -- --/* These CALL_FN_ macros assume that on ppc32-aix5, sizeof(unsigned -- long) == 4. */ -- --#define CALL_FN_W_v(lval, orig) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+0]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "stw 2,-8(11)\n\t" /* save tocptr */ \ -- "lwz 2,-4(11)\n\t" /* use nraddr's tocptr */ \ -- "lwz 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "lwz 2,-8(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_W(lval, orig, arg1) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+1]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "stw 2,-8(11)\n\t" /* save tocptr */ \ -- "lwz 2,-4(11)\n\t" /* use nraddr's tocptr */ \ -- "lwz 3, 4(11)\n\t" /* arg1->r3 */ \ -- "lwz 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "lwz 2,-8(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WW(lval, orig, arg1,arg2) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+2]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "stw 2,-8(11)\n\t" /* save tocptr */ \ -- "lwz 2,-4(11)\n\t" /* use nraddr's tocptr */ \ -- "lwz 3, 4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4, 8(11)\n\t" /* arg2->r4 */ \ -- "lwz 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "lwz 2,-8(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+3]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "stw 2,-8(11)\n\t" /* save tocptr */ \ -- "lwz 2,-4(11)\n\t" /* use nraddr's tocptr */ \ -- "lwz 3, 4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4, 8(11)\n\t" /* arg2->r4 */ \ -- "lwz 5, 12(11)\n\t" /* arg3->r5 */ \ -- "lwz 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "lwz 2,-8(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+4]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "stw 2,-8(11)\n\t" /* save tocptr */ \ -- "lwz 2,-4(11)\n\t" /* use nraddr's tocptr */ \ -- "lwz 3, 4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4, 8(11)\n\t" /* arg2->r4 */ \ -- "lwz 5, 12(11)\n\t" /* arg3->r5 */ \ -- "lwz 6, 16(11)\n\t" /* arg4->r6 */ \ -- "lwz 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "lwz 2,-8(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+5]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "stw 2,-8(11)\n\t" /* save tocptr */ \ -- "lwz 2,-4(11)\n\t" /* use nraddr's tocptr */ \ -- "lwz 3, 4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4, 8(11)\n\t" /* arg2->r4 */ \ -- "lwz 5, 12(11)\n\t" /* arg3->r5 */ \ -- "lwz 6, 16(11)\n\t" /* arg4->r6 */ \ -- "lwz 7, 20(11)\n\t" /* arg5->r7 */ \ -- "lwz 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "lwz 2,-8(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+6]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "stw 2,-8(11)\n\t" /* save tocptr */ \ -- "lwz 2,-4(11)\n\t" /* use nraddr's tocptr */ \ -- "lwz 3, 4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4, 8(11)\n\t" /* arg2->r4 */ \ -- "lwz 5, 12(11)\n\t" /* arg3->r5 */ \ -- "lwz 6, 16(11)\n\t" /* arg4->r6 */ \ -- "lwz 7, 20(11)\n\t" /* arg5->r7 */ \ -- "lwz 8, 24(11)\n\t" /* arg6->r8 */ \ -- "lwz 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "lwz 2,-8(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+7]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "stw 2,-8(11)\n\t" /* save tocptr */ \ -- "lwz 2,-4(11)\n\t" /* use nraddr's tocptr */ \ -- "lwz 3, 4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4, 8(11)\n\t" /* arg2->r4 */ \ -- "lwz 5, 12(11)\n\t" /* arg3->r5 */ \ -- "lwz 6, 16(11)\n\t" /* arg4->r6 */ \ -- "lwz 7, 20(11)\n\t" /* arg5->r7 */ \ -- "lwz 8, 24(11)\n\t" /* arg6->r8 */ \ -- "lwz 9, 28(11)\n\t" /* arg7->r9 */ \ -- "lwz 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "lwz 2,-8(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+8]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- _argvec[2+8] = (unsigned long)arg8; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "stw 2,-8(11)\n\t" /* save tocptr */ \ -- "lwz 2,-4(11)\n\t" /* use nraddr's tocptr */ \ -- "lwz 3, 4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4, 8(11)\n\t" /* arg2->r4 */ \ -- "lwz 5, 12(11)\n\t" /* arg3->r5 */ \ -- "lwz 6, 16(11)\n\t" /* arg4->r6 */ \ -- "lwz 7, 20(11)\n\t" /* arg5->r7 */ \ -- "lwz 8, 24(11)\n\t" /* arg6->r8 */ \ -- "lwz 9, 28(11)\n\t" /* arg7->r9 */ \ -- "lwz 10, 32(11)\n\t" /* arg8->r10 */ \ -- "lwz 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "lwz 2,-8(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+9]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- _argvec[2+8] = (unsigned long)arg8; \ -- _argvec[2+9] = (unsigned long)arg9; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "stw 2,-8(11)\n\t" /* save tocptr */ \ -- "lwz 2,-4(11)\n\t" /* use nraddr's tocptr */ \ -- VG_EXPAND_FRAME_BY_trashes_r3(64) \ -- /* arg9 */ \ -- "lwz 3,36(11)\n\t" \ -- "stw 3,56(1)\n\t" \ -- /* args1-8 */ \ -- "lwz 3, 4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4, 8(11)\n\t" /* arg2->r4 */ \ -- "lwz 5, 12(11)\n\t" /* arg3->r5 */ \ -- "lwz 6, 16(11)\n\t" /* arg4->r6 */ \ -- "lwz 7, 20(11)\n\t" /* arg5->r7 */ \ -- "lwz 8, 24(11)\n\t" /* arg6->r8 */ \ -- "lwz 9, 28(11)\n\t" /* arg7->r9 */ \ -- "lwz 10, 32(11)\n\t" /* arg8->r10 */ \ -- "lwz 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "lwz 2,-8(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(64) \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9,arg10) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+10]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- _argvec[2+8] = (unsigned long)arg8; \ -- _argvec[2+9] = (unsigned long)arg9; \ -- _argvec[2+10] = (unsigned long)arg10; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "stw 2,-8(11)\n\t" /* save tocptr */ \ -- "lwz 2,-4(11)\n\t" /* use nraddr's tocptr */ \ -- VG_EXPAND_FRAME_BY_trashes_r3(64) \ -- /* arg10 */ \ -- "lwz 3,40(11)\n\t" \ -- "stw 3,60(1)\n\t" \ -- /* arg9 */ \ -- "lwz 3,36(11)\n\t" \ -- "stw 3,56(1)\n\t" \ -- /* args1-8 */ \ -- "lwz 3, 4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4, 8(11)\n\t" /* arg2->r4 */ \ -- "lwz 5, 12(11)\n\t" /* arg3->r5 */ \ -- "lwz 6, 16(11)\n\t" /* arg4->r6 */ \ -- "lwz 7, 20(11)\n\t" /* arg5->r7 */ \ -- "lwz 8, 24(11)\n\t" /* arg6->r8 */ \ -- "lwz 9, 28(11)\n\t" /* arg7->r9 */ \ -- "lwz 10, 32(11)\n\t" /* arg8->r10 */ \ -- "lwz 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "lwz 2,-8(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(64) \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9,arg10,arg11) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+11]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- _argvec[2+8] = (unsigned long)arg8; \ -- _argvec[2+9] = (unsigned long)arg9; \ -- _argvec[2+10] = (unsigned long)arg10; \ -- _argvec[2+11] = (unsigned long)arg11; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "stw 2,-8(11)\n\t" /* save tocptr */ \ -- "lwz 2,-4(11)\n\t" /* use nraddr's tocptr */ \ -- VG_EXPAND_FRAME_BY_trashes_r3(72) \ -- /* arg11 */ \ -- "lwz 3,44(11)\n\t" \ -- "stw 3,64(1)\n\t" \ -- /* arg10 */ \ -- "lwz 3,40(11)\n\t" \ -- "stw 3,60(1)\n\t" \ -- /* arg9 */ \ -- "lwz 3,36(11)\n\t" \ -- "stw 3,56(1)\n\t" \ -- /* args1-8 */ \ -- "lwz 3, 4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4, 8(11)\n\t" /* arg2->r4 */ \ -- "lwz 5, 12(11)\n\t" /* arg3->r5 */ \ -- "lwz 6, 16(11)\n\t" /* arg4->r6 */ \ -- "lwz 7, 20(11)\n\t" /* arg5->r7 */ \ -- "lwz 8, 24(11)\n\t" /* arg6->r8 */ \ -- "lwz 9, 28(11)\n\t" /* arg7->r9 */ \ -- "lwz 10, 32(11)\n\t" /* arg8->r10 */ \ -- "lwz 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "lwz 2,-8(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(72) \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9,arg10,arg11,arg12) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+12]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- _argvec[2+8] = (unsigned long)arg8; \ -- _argvec[2+9] = (unsigned long)arg9; \ -- _argvec[2+10] = (unsigned long)arg10; \ -- _argvec[2+11] = (unsigned long)arg11; \ -- _argvec[2+12] = (unsigned long)arg12; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "stw 2,-8(11)\n\t" /* save tocptr */ \ -- "lwz 2,-4(11)\n\t" /* use nraddr's tocptr */ \ -- VG_EXPAND_FRAME_BY_trashes_r3(72) \ -- /* arg12 */ \ -- "lwz 3,48(11)\n\t" \ -- "stw 3,68(1)\n\t" \ -- /* arg11 */ \ -- "lwz 3,44(11)\n\t" \ -- "stw 3,64(1)\n\t" \ -- /* arg10 */ \ -- "lwz 3,40(11)\n\t" \ -- "stw 3,60(1)\n\t" \ -- /* arg9 */ \ -- "lwz 3,36(11)\n\t" \ -- "stw 3,56(1)\n\t" \ -- /* args1-8 */ \ -- "lwz 3, 4(11)\n\t" /* arg1->r3 */ \ -- "lwz 4, 8(11)\n\t" /* arg2->r4 */ \ -- "lwz 5, 12(11)\n\t" /* arg3->r5 */ \ -- "lwz 6, 16(11)\n\t" /* arg4->r6 */ \ -- "lwz 7, 20(11)\n\t" /* arg5->r7 */ \ -- "lwz 8, 24(11)\n\t" /* arg6->r8 */ \ -- "lwz 9, 28(11)\n\t" /* arg7->r9 */ \ -- "lwz 10, 32(11)\n\t" /* arg8->r10 */ \ -- "lwz 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "lwz 2,-8(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(72) \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#endif /* PLAT_ppc32_aix5 */ -- --/* ------------------------ ppc64-aix5 ------------------------- */ -- --#if defined(PLAT_ppc64_aix5) -- --/* ARGREGS: r3 r4 r5 r6 r7 r8 r9 r10 (the rest on stack somewhere) */ -- --/* These regs are trashed by the hidden call. */ --#define __CALLER_SAVED_REGS \ -- "lr", "ctr", "xer", \ -- "cr0", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7", \ -- "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", \ -- "r11", "r12", "r13" -- --/* Expand the stack frame, copying enough info that unwinding -- still works. Trashes r3. */ -- --#define VG_EXPAND_FRAME_BY_trashes_r3(_n_fr) \ -- "addi 1,1,-" #_n_fr "\n\t" \ -- "ld 3," #_n_fr "(1)\n\t" \ -- "std 3,0(1)\n\t" -- --#define VG_CONTRACT_FRAME_BY(_n_fr) \ -- "addi 1,1," #_n_fr "\n\t" -- --/* These CALL_FN_ macros assume that on ppc64-aix5, sizeof(unsigned -- long) == 8. */ -- --#define CALL_FN_W_v(lval, orig) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+0]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_W(lval, orig, arg1) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+1]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WW(lval, orig, arg1,arg2) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+2]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WWW(lval, orig, arg1,arg2,arg3) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+3]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_WWWW(lval, orig, arg1,arg2,arg3,arg4) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+4]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_5W(lval, orig, arg1,arg2,arg3,arg4,arg5) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+5]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 7, 40(11)\n\t" /* arg5->r7 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_6W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+6]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 7, 40(11)\n\t" /* arg5->r7 */ \ -- "ld 8, 48(11)\n\t" /* arg6->r8 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_7W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+7]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 7, 40(11)\n\t" /* arg5->r7 */ \ -- "ld 8, 48(11)\n\t" /* arg6->r8 */ \ -- "ld 9, 56(11)\n\t" /* arg7->r9 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_8W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+8]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- _argvec[2+8] = (unsigned long)arg8; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 7, 40(11)\n\t" /* arg5->r7 */ \ -- "ld 8, 48(11)\n\t" /* arg6->r8 */ \ -- "ld 9, 56(11)\n\t" /* arg7->r9 */ \ -- "ld 10, 64(11)\n\t" /* arg8->r10 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_9W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+9]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- _argvec[2+8] = (unsigned long)arg8; \ -- _argvec[2+9] = (unsigned long)arg9; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- VG_EXPAND_FRAME_BY_trashes_r3(128) \ -- /* arg9 */ \ -- "ld 3,72(11)\n\t" \ -- "std 3,112(1)\n\t" \ -- /* args1-8 */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 7, 40(11)\n\t" /* arg5->r7 */ \ -- "ld 8, 48(11)\n\t" /* arg6->r8 */ \ -- "ld 9, 56(11)\n\t" /* arg7->r9 */ \ -- "ld 10, 64(11)\n\t" /* arg8->r10 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(128) \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_10W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9,arg10) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+10]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- _argvec[2+8] = (unsigned long)arg8; \ -- _argvec[2+9] = (unsigned long)arg9; \ -- _argvec[2+10] = (unsigned long)arg10; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- VG_EXPAND_FRAME_BY_trashes_r3(128) \ -- /* arg10 */ \ -- "ld 3,80(11)\n\t" \ -- "std 3,120(1)\n\t" \ -- /* arg9 */ \ -- "ld 3,72(11)\n\t" \ -- "std 3,112(1)\n\t" \ -- /* args1-8 */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 7, 40(11)\n\t" /* arg5->r7 */ \ -- "ld 8, 48(11)\n\t" /* arg6->r8 */ \ -- "ld 9, 56(11)\n\t" /* arg7->r9 */ \ -- "ld 10, 64(11)\n\t" /* arg8->r10 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(128) \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_11W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9,arg10,arg11) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+11]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- _argvec[2+8] = (unsigned long)arg8; \ -- _argvec[2+9] = (unsigned long)arg9; \ -- _argvec[2+10] = (unsigned long)arg10; \ -- _argvec[2+11] = (unsigned long)arg11; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- VG_EXPAND_FRAME_BY_trashes_r3(144) \ -- /* arg11 */ \ -- "ld 3,88(11)\n\t" \ -- "std 3,128(1)\n\t" \ -- /* arg10 */ \ -- "ld 3,80(11)\n\t" \ -- "std 3,120(1)\n\t" \ -- /* arg9 */ \ -- "ld 3,72(11)\n\t" \ -- "std 3,112(1)\n\t" \ -- /* args1-8 */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 7, 40(11)\n\t" /* arg5->r7 */ \ -- "ld 8, 48(11)\n\t" /* arg6->r8 */ \ -- "ld 9, 56(11)\n\t" /* arg7->r9 */ \ -- "ld 10, 64(11)\n\t" /* arg8->r10 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(144) \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#define CALL_FN_W_12W(lval, orig, arg1,arg2,arg3,arg4,arg5,arg6, \ -- arg7,arg8,arg9,arg10,arg11,arg12) \ -- do { \ -- volatile OrigFn _orig = (orig); \ -- volatile unsigned long _argvec[3+12]; \ -- volatile unsigned long _res; \ -- /* _argvec[0] holds current r2 across the call */ \ -- _argvec[1] = (unsigned long)_orig.r2; \ -- _argvec[2] = (unsigned long)_orig.nraddr; \ -- _argvec[2+1] = (unsigned long)arg1; \ -- _argvec[2+2] = (unsigned long)arg2; \ -- _argvec[2+3] = (unsigned long)arg3; \ -- _argvec[2+4] = (unsigned long)arg4; \ -- _argvec[2+5] = (unsigned long)arg5; \ -- _argvec[2+6] = (unsigned long)arg6; \ -- _argvec[2+7] = (unsigned long)arg7; \ -- _argvec[2+8] = (unsigned long)arg8; \ -- _argvec[2+9] = (unsigned long)arg9; \ -- _argvec[2+10] = (unsigned long)arg10; \ -- _argvec[2+11] = (unsigned long)arg11; \ -- _argvec[2+12] = (unsigned long)arg12; \ -- __asm__ volatile( \ -- "mr 11,%1\n\t" \ -- VG_EXPAND_FRAME_BY_trashes_r3(512) \ -- "std 2,-16(11)\n\t" /* save tocptr */ \ -- "ld 2,-8(11)\n\t" /* use nraddr's tocptr */ \ -- VG_EXPAND_FRAME_BY_trashes_r3(144) \ -- /* arg12 */ \ -- "ld 3,96(11)\n\t" \ -- "std 3,136(1)\n\t" \ -- /* arg11 */ \ -- "ld 3,88(11)\n\t" \ -- "std 3,128(1)\n\t" \ -- /* arg10 */ \ -- "ld 3,80(11)\n\t" \ -- "std 3,120(1)\n\t" \ -- /* arg9 */ \ -- "ld 3,72(11)\n\t" \ -- "std 3,112(1)\n\t" \ -- /* args1-8 */ \ -- "ld 3, 8(11)\n\t" /* arg1->r3 */ \ -- "ld 4, 16(11)\n\t" /* arg2->r4 */ \ -- "ld 5, 24(11)\n\t" /* arg3->r5 */ \ -- "ld 6, 32(11)\n\t" /* arg4->r6 */ \ -- "ld 7, 40(11)\n\t" /* arg5->r7 */ \ -- "ld 8, 48(11)\n\t" /* arg6->r8 */ \ -- "ld 9, 56(11)\n\t" /* arg7->r9 */ \ -- "ld 10, 64(11)\n\t" /* arg8->r10 */ \ -- "ld 11, 0(11)\n\t" /* target->r11 */ \ -- VALGRIND_BRANCH_AND_LINK_TO_NOREDIR_R11 \ -- "mr 11,%1\n\t" \ -- "mr %0,3\n\t" \ -- "ld 2,-16(11)\n\t" /* restore tocptr */ \ -- VG_CONTRACT_FRAME_BY(144) \ -- VG_CONTRACT_FRAME_BY(512) \ -- : /*out*/ "=r" (_res) \ -- : /*in*/ "r" (&_argvec[2]) \ -- : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \ -- ); \ -- lval = (__typeof__(lval)) _res; \ -- } while (0) -- --#endif /* PLAT_ppc64_aix5 */ -- -- --/* ------------------------------------------------------------------ */ --/* ARCHITECTURE INDEPENDENT MACROS for CLIENT REQUESTS. */ --/* */ --/* ------------------------------------------------------------------ */ -- --/* Some request codes. There are many more of these, but most are not -- exposed to end-user view. These are the public ones, all of the -- form 0x1000 + small_number. -- -- Core ones are in the range 0x00000000--0x0000ffff. The non-public -- ones start at 0x2000. --*/ -- --/* These macros are used by tools -- they must be public, but don't -- embed them into other programs. */ --#define VG_USERREQ_TOOL_BASE(a,b) \ -- ((unsigned int)(((a)&0xff) << 24 | ((b)&0xff) << 16)) --#define VG_IS_TOOL_USERREQ(a, b, v) \ -- (VG_USERREQ_TOOL_BASE(a,b) == ((v) & 0xffff0000)) -- --/* !! ABIWARNING !! ABIWARNING !! ABIWARNING !! ABIWARNING !! -- This enum comprises an ABI exported by Valgrind to programs -- which use client requests. DO NOT CHANGE THE ORDER OF THESE -- ENTRIES, NOR DELETE ANY -- add new ones at the end. */ --typedef -- enum { VG_USERREQ__RUNNING_ON_VALGRIND = 0x1001, -- VG_USERREQ__DISCARD_TRANSLATIONS = 0x1002, -- -- /* These allow any function to be called from the simulated -- CPU but run on the real CPU. Nb: the first arg passed to -- the function is always the ThreadId of the running -- thread! So CLIENT_CALL0 actually requires a 1 arg -- function, etc. */ -- VG_USERREQ__CLIENT_CALL0 = 0x1101, -- VG_USERREQ__CLIENT_CALL1 = 0x1102, -- VG_USERREQ__CLIENT_CALL2 = 0x1103, -- VG_USERREQ__CLIENT_CALL3 = 0x1104, -- -- /* Can be useful in regression testing suites -- eg. can -- send Valgrind's output to /dev/null and still count -- errors. */ -- VG_USERREQ__COUNT_ERRORS = 0x1201, -- -- /* These are useful and can be interpreted by any tool that -- tracks malloc() et al, by using vg_replace_malloc.c. */ -- VG_USERREQ__MALLOCLIKE_BLOCK = 0x1301, -- VG_USERREQ__FREELIKE_BLOCK = 0x1302, -- /* Memory pool support. */ -- VG_USERREQ__CREATE_MEMPOOL = 0x1303, -- VG_USERREQ__DESTROY_MEMPOOL = 0x1304, -- VG_USERREQ__MEMPOOL_ALLOC = 0x1305, -- VG_USERREQ__MEMPOOL_FREE = 0x1306, -- VG_USERREQ__MEMPOOL_TRIM = 0x1307, -- VG_USERREQ__MOVE_MEMPOOL = 0x1308, -- VG_USERREQ__MEMPOOL_CHANGE = 0x1309, -- VG_USERREQ__MEMPOOL_EXISTS = 0x130a, -- -- /* Allow printfs to valgrind log. */ -- VG_USERREQ__PRINTF = 0x1401, -- VG_USERREQ__PRINTF_BACKTRACE = 0x1402, -- -- /* Stack support. */ -- VG_USERREQ__STACK_REGISTER = 0x1501, -- VG_USERREQ__STACK_DEREGISTER = 0x1502, -- VG_USERREQ__STACK_CHANGE = 0x1503, -- -- /* Wine support */ -- VG_USERREQ__LOAD_PDB_DEBUGINFO = 0x1601 -- } Vg_ClientRequest; -- --#if !defined(__GNUC__) --# define __extension__ /* */ --#endif -- --/* Returns the number of Valgrinds this code is running under. That -- is, 0 if running natively, 1 if running under Valgrind, 2 if -- running under Valgrind which is running under another Valgrind, -- etc. */ --#define RUNNING_ON_VALGRIND __extension__ \ -- ({unsigned int _qzz_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0 /* if not */, \ -- VG_USERREQ__RUNNING_ON_VALGRIND, \ -- 0, 0, 0, 0, 0); \ -- _qzz_res; \ -- }) -- -- --/* Discard translation of code in the range [_qzz_addr .. _qzz_addr + -- _qzz_len - 1]. Useful if you are debugging a JITter or some such, -- since it provides a way to make sure valgrind will retranslate the -- invalidated area. Returns no value. */ --#define VALGRIND_DISCARD_TRANSLATIONS(_qzz_addr,_qzz_len) \ -- {unsigned int _qzz_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ -- VG_USERREQ__DISCARD_TRANSLATIONS, \ -- _qzz_addr, _qzz_len, 0, 0, 0); \ -- } -- -- --/* These requests are for getting Valgrind itself to print something. -- Possibly with a backtrace. This is a really ugly hack. The return value -- is the number of characters printed, excluding the "**** " part at the -- start and the backtrace (if present). */ -- --#if defined(NVALGRIND) -- --# define VALGRIND_PRINTF(...) --# define VALGRIND_PRINTF_BACKTRACE(...) -- --#else /* NVALGRIND */ -- --/* Modern GCC will optimize the static routine out if unused, -- and unused attribute will shut down warnings about it. */ --static int VALGRIND_PRINTF(const char *format, ...) -- __attribute__((format(__printf__, 1, 2), __unused__)); --static int --VALGRIND_PRINTF(const char *format, ...) --{ -- unsigned long _qzz_res; -- va_list vargs; -- va_start(vargs, format); -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, VG_USERREQ__PRINTF, -- (unsigned long)format, (unsigned long)vargs, -- 0, 0, 0); -- va_end(vargs); -- return (int)_qzz_res; --} -- --static int VALGRIND_PRINTF_BACKTRACE(const char *format, ...) -- __attribute__((format(__printf__, 1, 2), __unused__)); --static int --VALGRIND_PRINTF_BACKTRACE(const char *format, ...) --{ -- unsigned long _qzz_res; -- va_list vargs; -- va_start(vargs, format); -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, VG_USERREQ__PRINTF_BACKTRACE, -- (unsigned long)format, (unsigned long)vargs, -- 0, 0, 0); -- va_end(vargs); -- return (int)_qzz_res; --} -- --#endif /* NVALGRIND */ -- -- --/* These requests allow control to move from the simulated CPU to the -- real CPU, calling an arbitary function. -- -- Note that the current ThreadId is inserted as the first argument. -- So this call: -- -- VALGRIND_NON_SIMD_CALL2(f, arg1, arg2) -- -- requires f to have this signature: -- -- Word f(Word tid, Word arg1, Word arg2) -- -- where "Word" is a word-sized type. -- -- Note that these client requests are not entirely reliable. For example, -- if you call a function with them that subsequently calls printf(), -- there's a high chance Valgrind will crash. Generally, your prospects of -- these working are made higher if the called function does not refer to -- any global variables, and does not refer to any libc or other functions -- (printf et al). Any kind of entanglement with libc or dynamic linking is -- likely to have a bad outcome, for tricky reasons which we've grappled -- with a lot in the past. --*/ --#define VALGRIND_NON_SIMD_CALL0(_qyy_fn) \ -- __extension__ \ -- ({unsigned long _qyy_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \ -- VG_USERREQ__CLIENT_CALL0, \ -- _qyy_fn, \ -- 0, 0, 0, 0); \ -- _qyy_res; \ -- }) -- --#define VALGRIND_NON_SIMD_CALL1(_qyy_fn, _qyy_arg1) \ -- __extension__ \ -- ({unsigned long _qyy_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \ -- VG_USERREQ__CLIENT_CALL1, \ -- _qyy_fn, \ -- _qyy_arg1, 0, 0, 0); \ -- _qyy_res; \ -- }) -- --#define VALGRIND_NON_SIMD_CALL2(_qyy_fn, _qyy_arg1, _qyy_arg2) \ -- __extension__ \ -- ({unsigned long _qyy_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \ -- VG_USERREQ__CLIENT_CALL2, \ -- _qyy_fn, \ -- _qyy_arg1, _qyy_arg2, 0, 0); \ -- _qyy_res; \ -- }) -- --#define VALGRIND_NON_SIMD_CALL3(_qyy_fn, _qyy_arg1, _qyy_arg2, _qyy_arg3) \ -- __extension__ \ -- ({unsigned long _qyy_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \ -- VG_USERREQ__CLIENT_CALL3, \ -- _qyy_fn, \ -- _qyy_arg1, _qyy_arg2, \ -- _qyy_arg3, 0); \ -- _qyy_res; \ -- }) -- -- --/* Counts the number of errors that have been recorded by a tool. Nb: -- the tool must record the errors with VG_(maybe_record_error)() or -- VG_(unique_error)() for them to be counted. */ --#define VALGRIND_COUNT_ERRORS \ -- __extension__ \ -- ({unsigned int _qyy_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qyy_res, 0 /* default return */, \ -- VG_USERREQ__COUNT_ERRORS, \ -- 0, 0, 0, 0, 0); \ -- _qyy_res; \ -- }) -- --/* Several Valgrind tools (Memcheck, Massif, Helgrind, DRD) rely on knowing -- when heap blocks are allocated in order to give accurate results. This -- happens automatically for the standard allocator functions such as -- malloc(), calloc(), realloc(), memalign(), new, new[], free(), delete, -- delete[], etc. -- -- But if your program uses a custom allocator, this doesn't automatically -- happen, and Valgrind will not do as well. For example, if you allocate -- superblocks with mmap() and then allocates chunks of the superblocks, all -- Valgrind's observations will be at the mmap() level and it won't know that -- the chunks should be considered separate entities. In Memcheck's case, -- that means you probably won't get heap block overrun detection (because -- there won't be redzones marked as unaddressable) and you definitely won't -- get any leak detection. -- -- The following client requests allow a custom allocator to be annotated so -- that it can be handled accurately by Valgrind. -- -- VALGRIND_MALLOCLIKE_BLOCK marks a region of memory as having been allocated -- by a malloc()-like function. For Memcheck (an illustrative case), this -- does two things: -- -- - It records that the block has been allocated. This means any addresses -- within the block mentioned in error messages will be -- identified as belonging to the block. It also means that if the block -- isn't freed it will be detected by the leak checker. -- -- - It marks the block as being addressable and undefined (if 'is_zeroed' is -- not set), or addressable and defined (if 'is_zeroed' is set). This -- controls how accesses to the block by the program are handled. -- -- 'addr' is the start of the usable block (ie. after any -- redzone), 'sizeB' is its size. 'rzB' is the redzone size if the allocator -- can apply redzones -- these are blocks of padding at the start and end of -- each block. Adding redzones is recommended as it makes it much more likely -- Valgrind will spot block overruns. `is_zeroed' indicates if the memory is -- zeroed (or filled with another predictable value), as is the case for -- calloc(). -- -- VALGRIND_MALLOCLIKE_BLOCK should be put immediately after the point where a -- heap block -- that will be used by the client program -- is allocated. -- It's best to put it at the outermost level of the allocator if possible; -- for example, if you have a function my_alloc() which calls -- internal_alloc(), and the client request is put inside internal_alloc(), -- stack traces relating to the heap block will contain entries for both -- my_alloc() and internal_alloc(), which is probably not what you want. -- -- For Memcheck users: if you use VALGRIND_MALLOCLIKE_BLOCK to carve out -- custom blocks from within a heap block, B, that has been allocated with -- malloc/calloc/new/etc, then block B will be *ignored* during leak-checking -- -- the custom blocks will take precedence. -- -- VALGRIND_FREELIKE_BLOCK is the partner to VALGRIND_MALLOCLIKE_BLOCK. For -- Memcheck, it does two things: -- -- - It records that the block has been deallocated. This assumes that the -- block was annotated as having been allocated via -- VALGRIND_MALLOCLIKE_BLOCK. Otherwise, an error will be issued. -- -- - It marks the block as being unaddressable. -- -- VALGRIND_FREELIKE_BLOCK should be put immediately after the point where a -- heap block is deallocated. -- -- In many cases, these two client requests will not be enough to get your -- allocator working well with Memcheck. More specifically, if your allocator -- writes to freed blocks in any way then a VALGRIND_MAKE_MEM_UNDEFINED call -- will be necessary to mark the memory as addressable just before the zeroing -- occurs, otherwise you'll get a lot of invalid write errors. For example, -- you'll need to do this if your allocator recycles freed blocks, but it -- zeroes them before handing them back out (via VALGRIND_MALLOCLIKE_BLOCK). -- Alternatively, if your allocator reuses freed blocks for allocator-internal -- data structures, VALGRIND_MAKE_MEM_UNDEFINED calls will also be necessary. -- -- Really, what's happening is a blurring of the lines between the client -- program and the allocator... after VALGRIND_FREELIKE_BLOCK is called, the -- memory should be considered unaddressable to the client program, but the -- allocator knows more than the rest of the client program and so may be able -- to safely access it. Extra client requests are necessary for Valgrind to -- understand the distinction between the allocator and the rest of the -- program. -- -- Note: there is currently no VALGRIND_REALLOCLIKE_BLOCK client request; it -- has to be emulated with MALLOCLIKE/FREELIKE and memory copying. -- -- Ignored if addr == 0. --*/ --#define VALGRIND_MALLOCLIKE_BLOCK(addr, sizeB, rzB, is_zeroed) \ -- {unsigned int _qzz_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ -- VG_USERREQ__MALLOCLIKE_BLOCK, \ -- addr, sizeB, rzB, is_zeroed, 0); \ -- } -- --/* See the comment for VALGRIND_MALLOCLIKE_BLOCK for details. -- Ignored if addr == 0. --*/ --#define VALGRIND_FREELIKE_BLOCK(addr, rzB) \ -- {unsigned int _qzz_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ -- VG_USERREQ__FREELIKE_BLOCK, \ -- addr, rzB, 0, 0, 0); \ -- } -- --/* Create a memory pool. */ --#define VALGRIND_CREATE_MEMPOOL(pool, rzB, is_zeroed) \ -- {unsigned int _qzz_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ -- VG_USERREQ__CREATE_MEMPOOL, \ -- pool, rzB, is_zeroed, 0, 0); \ -- } -- --/* Destroy a memory pool. */ --#define VALGRIND_DESTROY_MEMPOOL(pool) \ -- {unsigned int _qzz_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ -- VG_USERREQ__DESTROY_MEMPOOL, \ -- pool, 0, 0, 0, 0); \ -- } -- --/* Associate a piece of memory with a memory pool. */ --#define VALGRIND_MEMPOOL_ALLOC(pool, addr, size) \ -- {unsigned int _qzz_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ -- VG_USERREQ__MEMPOOL_ALLOC, \ -- pool, addr, size, 0, 0); \ -- } -- --/* Disassociate a piece of memory from a memory pool. */ --#define VALGRIND_MEMPOOL_FREE(pool, addr) \ -- {unsigned int _qzz_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ -- VG_USERREQ__MEMPOOL_FREE, \ -- pool, addr, 0, 0, 0); \ -- } -- --/* Disassociate any pieces outside a particular range. */ --#define VALGRIND_MEMPOOL_TRIM(pool, addr, size) \ -- {unsigned int _qzz_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ -- VG_USERREQ__MEMPOOL_TRIM, \ -- pool, addr, size, 0, 0); \ -- } -- --/* Resize and/or move a piece associated with a memory pool. */ --#define VALGRIND_MOVE_MEMPOOL(poolA, poolB) \ -- {unsigned int _qzz_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ -- VG_USERREQ__MOVE_MEMPOOL, \ -- poolA, poolB, 0, 0, 0); \ -- } -- --/* Resize and/or move a piece associated with a memory pool. */ --#define VALGRIND_MEMPOOL_CHANGE(pool, addrA, addrB, size) \ -- {unsigned int _qzz_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ -- VG_USERREQ__MEMPOOL_CHANGE, \ -- pool, addrA, addrB, size, 0); \ -- } -- --/* Return 1 if a mempool exists, else 0. */ --#define VALGRIND_MEMPOOL_EXISTS(pool) \ -- __extension__ \ -- ({unsigned int _qzz_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ -- VG_USERREQ__MEMPOOL_EXISTS, \ -- pool, 0, 0, 0, 0); \ -- _qzz_res; \ -- }) -- --/* Mark a piece of memory as being a stack. Returns a stack id. */ --#define VALGRIND_STACK_REGISTER(start, end) \ -- __extension__ \ -- ({unsigned int _qzz_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ -- VG_USERREQ__STACK_REGISTER, \ -- start, end, 0, 0, 0); \ -- _qzz_res; \ -- }) -- --/* Unmark the piece of memory associated with a stack id as being a -- stack. */ --#define VALGRIND_STACK_DEREGISTER(id) \ -- {unsigned int _qzz_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ -- VG_USERREQ__STACK_DEREGISTER, \ -- id, 0, 0, 0, 0); \ -- } -- --/* Change the start and end address of the stack id. */ --#define VALGRIND_STACK_CHANGE(id, start, end) \ -- {unsigned int _qzz_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ -- VG_USERREQ__STACK_CHANGE, \ -- id, start, end, 0, 0); \ -- } -- --/* Load PDB debug info for Wine PE image_map. */ --#define VALGRIND_LOAD_PDB_DEBUGINFO(fd, ptr, total_size, delta) \ -- {unsigned int _qzz_res; \ -- VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \ -- VG_USERREQ__LOAD_PDB_DEBUGINFO, \ -- fd, ptr, total_size, delta, 0); \ -- } -- -- --#undef PLAT_x86_linux --#undef PLAT_amd64_linux --#undef PLAT_ppc32_linux --#undef PLAT_ppc64_linux --#undef PLAT_ppc32_aix5 --#undef PLAT_ppc64_aix5 -- --#endif /* __VALGRIND_H */ diff --git a/planner.spec b/planner.spec deleted file mode 100644 index 90450d1..0000000 --- a/planner.spec +++ /dev/null @@ -1,584 +0,0 @@ -Summary: A graphical project management tool -Name: planner -Version: 0.14.6 -Release: 35%{?dist} -License: GPLv2+ -URL: https://wiki.gnome.org/Apps/Planner -Source0: http://ftp.gnome.org/pub/GNOME/sources/%{name}/0.14/%{name}-%{version}.tar.xz -Source1: gnome-planner.png -BuildRequires: gtk2-devel >= 2.2.0, libgnomeui-devel >= 2.0.1 -BuildRequires: libglade2-devel >= 2.0.0, gnome-vfs2-devel >= 2.0.2 -BuildRequires: libxml2-devel >= 2.5.4 -BuildRequires: libxslt-devel >= 1.0.27, libgsf-devel, gtk-doc, pygtk2-devel -BuildRequires: scrollkeeper, glib2-devel, intltool, autoconf -BuildRequires: automake, libtool, valgrind-devel -Obsoletes: planner-eds < 0.14.6-6 - -Patch1: planner-gnome596173-xdg.patch -Patch2: planner-gnome596966-editoninsert.patch -Patch3: planner-gnome550559-fitzoom.patch -Patch4: planner-gnome603693-planner-calendar-for-edittask.patch -Patch5: planner-gnome604169-comboboxentry.patch -Patch6: planner-gnome604510.calcolors.patch -Patch7: planner-gnome604531-tooltips.patch -Patch8: planner-gnome581282-printpreview.patch -Patch9: planner-gnome606824-notecolumn.patch -Patch10: planner-gnome341504-paste.tasks.patch -Patch11: planner-gnome615641-multiselect.patch -Patch12: planner-gnome655803-bad-LC_TIME.patch -Patch13: planner-desktop-warnings.patch -Patch14: planner-aarch64.patch -Patch15: planner-rhbz1141479-paste.tasks.patch - -%description -Planner is a visual project management application which allows users to -manage several aspects of a project, including schedule tracking using -Gantt charts. - -You should install Planner if you wish to manage schedules, allocate -resources, and track the progress of your projects. - -%package devel -Summary: Libraries and include files for developing with planner -Requires: %{name} = %{version}-%{release} -Requires: pkgconfig, glib2-devel, libxml2-devel, libgsf-devel - -%description devel -This package provides the necessary development libraries and include -files to allow you to develop with planner. - -%prep -%setup -q -%patch1 -p1 -b .xdg -%patch2 -p1 -b .editoninsert -%patch3 -p1 -b .fitzoom -%patch4 -p1 -b .edittask -%patch5 -p1 -b .combobox -%patch6 -p1 -b .calcolors -%patch7 -p1 -b .tooltips -%patch8 -p1 -b .printpreview -%patch9 -p1 -b .notecolumn -%patch10 -p1 -b .copypaste -%patch11 -p1 -b .multiselect -%patch12 -p1 -b .gnome655803 -%patch13 -p1 -b .desktop-warnings -%patch14 -p1 -b .aarch64 -%patch15 -p1 -b .systemvalgrind -cp -a %SOURCE1 data/images/gnome-planner.png - - -%build -rm -rf libegg -autoreconf -f -i -%configure --disable-python --disable-gtk-doc --disable-dotnet --disable-update-mimedb --disable-eds-backend --disable-eds --disable-static -make # %{?_smp_mflags} not parallel build safe - -%install -rm -rf $RPM_BUILD_ROOT -make DESTDIR=$RPM_BUILD_ROOT install - -rm -rf $RPM_BUILD_ROOT/var/scrollkeeper -rm -f $RPM_BUILD_ROOT/%{_libdir}/*.la -rm -f $RPM_BUILD_ROOT/%{_libdir}/%{name}/file-modules/*.la -rm -f $RPM_BUILD_ROOT/%{_libdir}/%{name}/storage-modules/*.la -rm -f $RPM_BUILD_ROOT/%{_libdir}/%{name}/plugins/*.la -rm -f $RPM_BUILD_ROOT/%{_libdir}/%{name}/views/*.la -rm -f $RPM_BUILD_ROOT/%{_libdir}/%{name}/*.la -rm -f $RPM_BUILD_ROOT/%{_libdir}/%{name}/storage-modules/libstorage-sql* -rm -f $RPM_BUILD_ROOT/%{_libdir}/%{name}/plugins/libsql-plugin* - -rm -f $RPM_BUILD_ROOT/%{_datadir}/mime/XMLnamespaces -rm -f $RPM_BUILD_ROOT/%{_datadir}/mime/globs -rm -f $RPM_BUILD_ROOT/%{_datadir}/mime/magic -rm -f $RPM_BUILD_ROOT/%{_datadir}/mime/application/* -rm -f $RPM_BUILD_ROOT/%{_datadir}/doc/%{name}/*.sql -rm -f $RPM_BUILD_ROOT/%{_datadir}/doc/%{name}/*.planner - -#rhbz#1053553 wrong glibc locale name for sr-Latn -mv $RPM_BUILD_ROOT/%{_datadir}/locale/sr@Latn $RPM_BUILD_ROOT/%{_datadir}/locale/sr@latin - -# Register as an application to be visible in the software center -# -# NOTE: It would be *awesome* if this file was maintained by the upstream -# project, translated and installed into the right place during `make install`. -# -# See http://www.freedesktop.org/software/appstream/docs/ for more details. -# -mkdir -p $RPM_BUILD_ROOT%{_datadir}/appdata -cat > $RPM_BUILD_ROOT%{_datadir}/appdata/%{name}.appdata.xml < - - - - planner.desktop - CC0-1.0 - Planner - An easy-to-use project management application - -

- Planner is an easy-to-use no-nonsense cross-platform project management application. -

-

- Either XML files or a postgresql database can be used to store data. - Projects can also be printed to PDF or exported to HTML for easy viewing from - any web browser. -

-
- https://wiki.gnome.org/Planner/ - - https://wiki.gnome.org/Planner/Screenshots?action=AttachFile&do=get&target=gantt.png - - -
-EOF - -%find_lang %{name} --with-gnome - -%ldconfig_scriptlets - -%files -f %{name}.lang -%doc ChangeLog NEWS README COPYING examples/*.planner -%{_bindir}/%{name} -%dir %{_libdir}/%{name} -%{_libdir}/%{name}/file-modules -%{_libdir}/%{name}/storage-modules -%dir %{_libdir}/%{name}/plugins -%{_libdir}/%{name}/plugins/libhtml-plugin.so -%{_libdir}/%{name}/plugins/libmsp-plugin.so -%{_libdir}/%{name}/plugins/libxmlplanner-plugin.so -%{_libdir}/lib%{name}-1.so.* -%{_sysconfdir}/gconf/schemas/%{name}.schemas -%{_datadir}/%{name} -%{_datadir}/icons/hicolor/48x48/mimetypes/*.png -%{_datadir}/mime/packages/* -%{_datadir}/pixmaps/* -%{_datadir}/appdata/*.appdata.xml -%{_datadir}/applications/* -%{_mandir}/man1/planner.1.gz - -%files devel -%{_includedir}/%{name}-1.0 -%{_libdir}/lib%{name}-1.so -%{_datadir}/gtk-doc/html/lib%{name} -%{_libdir}/pkgconfig/* - -%changelog -* Fri Aug 02 2019 Caolán McNamara - 0.14.6-35 -- Resolves: rhbz#1736445 FTBFS - disable python2 extension - -* Fri Jul 26 2019 Fedora Release Engineering - 0.14.6-34 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Sat Feb 02 2019 Fedora Release Engineering - 0.14.6-33 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Sun Jul 22 2018 Caolán McNamara - 0.14.6-32 -- Resolves: rhbz#1605471 FTBFS - -* Fri Jul 13 2018 Fedora Release Engineering - 0.14.6-31 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Fri Feb 09 2018 Fedora Release Engineering - 0.14.6-30 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Thu Jan 18 2018 Igor Gnatenko - 0.14.6-29 -- Remove obsolete scriptlets - -* Fri Jan 12 2018 Iryna Shcherbina - 0.14.6-28 -- Update Python 2 dependency declarations to new packaging standards - (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) - -* Thu Aug 03 2017 Fedora Release Engineering - 0.14.6-27 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 0.14.6-26 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Sat Feb 11 2017 Fedora Release Engineering - 0.14.6-25 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Mon Oct 03 2016 Caolán McNamara - 0.14.6-24 -- Resolves: rhbz#1380967 change URL - -* Tue Jul 19 2016 Fedora Release Engineering - 0.14.6-23 -- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages - -* Thu Feb 04 2016 Fedora Release Engineering - 0.14.6-22 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Fri Sep 18 2015 Richard Hughes - 0.14.6-21 -- Ship a larger application icon - -* Thu Jun 18 2015 Fedora Release Engineering - 0.14.6-20 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Thu Mar 26 2015 Richard Hughes - 0.14.6-19 -- Add an AppData file for the software center - -* Tue Sep 16 2014 Caolán McNamara - 0.14.6-18 -- Resolves: rhbz#1141479 use system valgrind headers - -* Mon Sep 08 2014 Rex Dieter 0.14.6-17 -- fix/update scriptlets - -* Sun Aug 17 2014 Fedora Release Engineering - 0.14.6-16 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Sat Jun 07 2014 Fedora Release Engineering - 0.14.6-15 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Thu Apr 24 2014 Tomáš Mráz - 0.14.6-14 -- Rebuild for new libgcrypt - -* Wed Jan 15 2014 Caolán McNamara - 0.14.6-13 -- Resolves: rhbz#1053553 wrong glibc locale name for sr-Latn - -* Sun Aug 04 2013 Fedora Release Engineering - 0.14.6-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Thu Apr 04 2013 Caolán McNamara - 0.14.6-11 -- Resolves: rhbz#926353 support aarch64 - -* Thu Feb 14 2013 Fedora Release Engineering - 0.14.6-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Mon Dec 10 2012 Caolán McNamara - 0.14.6-9 -- Resolves: rhbz#884565 desktop-file-validate warnings - -* Mon Dec 10 2012 Marek Kasik - 0.14.6-8 -- Remove obsolete dependency on libgnomeprintui22-devel - -* Thu Nov 22 2012 Caolán McNamara - 0.14.6-7 -- Resolves: rhbz#876006 crash on insert task - -* Fri Jul 27 2012 Caolán McNamara - 0.14.6-6 -- drop evolution integration, doesn't build, api migration - path unclear - -* Sat Jul 21 2012 Fedora Release Engineering - 0.14.6-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Thu Jun 28 2012 Caolán McNamara - 0.14.6-4 -- Rebuild against newer evolution-data-server - -* Sun Jun 10 2012 Ville Skyttä - 0.14.6-3 -- Own gnome/help and omf planner dirs. -- %%lang mark gnome/help and omf files. - -* Wed May 02 2012 Milan Crha - 0.14.6-2 -- Rebuild against newer evolution-data-server - -* Fri Mar 09 2012 Caolán McNamara - 0.14.6-1 -- latest version - -* Sat Jan 14 2012 Fedora Release Engineering - 0.14.5-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - -* Tue Nov 22 2011 Caolán McNamara - 0.14.5-7 -- Rebuild for dependencies - -* Sun Oct 30 2011 Bruno Wolff III - 0.14.5-6 -- Rebuild for new evolution-data-server - -* Mon Aug 29 2011 Caolán McNamara - 0.14.5-5 -- Rebuild for dependencies - -* Tue Aug 16 2011 Caolán McNamara - 0.14.5-4 -- Rebuild for dependencies - -* Tue Aug 02 2011 Caolán McNamara - 0.14.5-3 -- Resolves: rhbz#727172 handle broken LC_TIME encoding - -* Mon Jul 25 2011 Caolán McNamara - 0.14.5-2 -- Rebuild for dependencies - -* Thu Jul 07 2011 Caolán McNamara - 0.14.5-1 -- Resolves: rhbz#719488 latest version -- drop integrated planner-gnome349304-recentlyused.patch -- drop integrated planner-buildfix.patch -- drop integrated planner-gnome604355-scrolling.patch -- drop integrated planner-gnome604515-usagestatus.patch -- drop integrated planner-backport-libegg-fixes.patch - -* Tue Jul 05 2011 Caolán McNamara - 0.14.4-37 -- Rebuild for dependencies - -* Wed Jun 15 2011 Caolán McNamara - 0.14.4-36 -- Rebuild for dependencies - -* Fri May 20 2011 Caolán McNamara - 0.14.4-35 -- Rebuild for dependencies - -* Wed Feb 16 2011 Caolán McNamara - 0.14.4-34 -- Resolves: rhbz#675629 crash, possibly from wrong float/int type - -* Wed Feb 09 2011 Fedora Release Engineering - 0.14.4-33 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Tue Feb 01 2011 Caolán McNamara - 0.14.4-32 -- Rebuild for dependencies - -* Tue Jan 11 2011 Caolán McNamara - 0.14.4-31 -- Rebuild against newer libedata - -* Wed Dec 22 2010 Caolán McNamara - 0.14.4-30 -- Rebuild against newer libgtkhtml - -* Fri Nov 19 2010 Caolán McNamara - 0.14.4-29 -- Resolves: rhbz#654733 implement set_default_zone_sync - -* Tue Oct 12 2010 Milan Crha - 0.14.4-28 -- Rebuild against newer evolution-data-server - -* Wed Sep 29 2010 jkeating - 0.14.4-27 -- Rebuilt for gcc bug 634757 - -* Wed Sep 15 2010 Caolán McNamara - 0.14.4-26 -- rebuild for dependencies - -* Wed Jul 21 2010 David Malcolm - 0.14.4-25 -- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild - -* Mon Jul 19 2010 Caolán McNamara - 0.14.4-24 -- rebuild for dependencies - -* Fri Jul 09 2010 Caolán McNamara - 0.14.4-23 -- backport fix for double unref of recently-used - -* Tue Jun 08 2010 Caolán McNamara - 0.14.4-22 -- rebuild for dependencies - -* Tue May 25 2010 Caolán McNamara - 0.14.4-21 -- rebuild for dependencies - -* Wed May 05 2010 Caolán McNamara - 0.14.4-20 -- rebuild for dependencies - -* Tue Apr 13 2010 Caolán McNamara - 0.14.4-19 -- Resolves: rhbz#546841 date multi-select - -* Mon Jan 25 2010 Caolán McNamara - 0.14.4-18 -- Resolves: rhbz#558392 add WBS to comboboxentry - -* Thu Jan 21 2010 Caolán McNamara - 0.14.4-17 -- Resolves: rhbz#526297 allow copy/paste of tasks - -* Thu Jan 21 2010 Caolán McNamara - 0.14.4-16 -- Resolves: rhbz#557211 evolution is (currently) excluded from - s390/s390x (though evo can be built on s390/s390x, so this - can be reenabled if evo reappears) - -* Thu Jan 14 2010 Caolán McNamara - 0.14.4-15 -- rebuild for libedata-cal-1.2.so.6 - -* Wed Jan 13 2010 Caolán McNamara - 0.14.4-14 -- Resolves: rhbz#546847 add note column - -* Mon Jan 11 2010 Caolán McNamara - 0.14.4-13 -- Resolves: rhbz#554222 fix combo dropdown - -* Mon Dec 21 2009 Caolán McNamara - 0.14.4-12 -- Resolves: rhbz#548830 crash in print preview - -* Mon Dec 14 2009 Caolán McNamara - 0.14.4-11 -- Resolves: rhbz#546844 add tooltips to views - -* Mon Dec 14 2009 Caolán McNamara - 0.14.4-10 -- Resolves: rhbz#546846 show date in resource usage statusbar - -* Mon Dec 14 2009 Caolán McNamara - 0.14.4-9 -- Resolves: rhbz#546850 use different colors for different day types - -* Fri Dec 11 2009 Caolán McNamara - 0.14.4-8 -- Resolves: rhbz#546515 allow scrolling - -* Wed Dec 09 2009 Caolán McNamara - 0.14.4-7 -- Resolves: rhbz#545711 use GtkComboBoxEntry instead of GtkCombo - -* Thu Dec 03 2009 Caolán McNamara - 0.14.4-6 -- Resolves: rhbz#543741 use PlannerCalander in edit->task - -* Mon Nov 23 2009 Caolán McNamara - 0.14.4-5 -- Resolves: rhbz#540242 fix gtk_recent_manager_add_full usage - -* Thu Nov 19 2009 Caolán McNamara - 0.14.4-4 -- Resolves: rhbz#526295 automatically go to edit mode on insert task -- Resolves: rhbz#537854 fix zoom to fit -- Fix FTBFS - -* Thu Sep 24 2009 Caolán McNamara - 0.14.4-3 -- Resolves: rhbz#524662 Implement new Gnome XDG Config Folders for planner - + gnome#596171 change recently used to use new recently used backend - + gnome#XXXXXX split config/data setting into xdg dirs - -* Sun Jul 26 2009 Fedora Release Engineering - 0.14.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - -* Fri Apr 17 2009 Caolán McNamara - 0.14.4-1 -- next release, drop patches - -* Wed Apr 01 2009 Caolán McNamara - 0.14.3-11 -- Resolves: rhbz#226301 fix some rpmlint warnings - -* Thu Feb 26 2009 Fedora Release Engineering - 0.14.3-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild - -* Tue Feb 03 2009 Caolán McNamara - 0.14.3-9 -- rebuild for e-d-s - -* Sat Nov 29 2008 Ignacio Vazquez-Abrams - 0.14.3-8 -- Rebuild for Python 2.6 - -* Thu Nov 27 2008 Caolán McNamara - 0.14.3-7 -- rebuild for e-d-s - -* Thu Oct 23 2008 Alex Lancaster - 0.14.3-6 -- Rebuild for new camel library from e-d-s - -* Mon Oct 13 2008 Caolán McNamara - 0.14.3-5 -- Resolves: rhbz#466615 back-port html improvements - -* Tue Sep 16 2008 Caolán McNamara - 0.14.3-4 -- remove some .la files - -* Tue Aug 05 2008 Caolán McNamara - 0.14.3-3 -- rebuild for e-d-s - -* Tue May 13 2008 Caolán McNamara - 0.14.3-2 -- rebuild for e-d-s - -* Thu Apr 17 2008 Caolán McNamara - 0.14.3-1 -- next version - -* Mon Feb 18 2008 Fedora Release Engineering - 0.14.2-12 -- Autorebuild for GCC 4.3 - -* Tue Jan 29 2008 Caolán McNamara - 0.14.2-11 -- rebuild for deps - -* Sat Oct 20 2007 Caolán McNamara - 0.14.2-10 -- Resolves: rhbz#342891 multiarch conflicts in planner - -* Wed Aug 29 2007 Caolán McNamara - 0.14.2-9 -- rebuild - -* Thu Aug 02 2007 Caolán McNamara - 0.14.2-8 -- clarify license, GPLv2 + later version - -* Sun Jun 10 2007 Caolán McNamara - 0.14.2-7 -- Resolves: rhbz#243367 don't require yelp - (on the bright side we picked up on evo 2.12) - -* Fri Jun 08 2007 Caolán McNamara - 0.14.2-6 -- Resolves: rhbz#243367 require yelp - -* Sat Apr 21 2007 Matthias Clasen - 0.14.2-5 -- Move api docs to -devel - -* Fri Feb 09 2007 Caolán McNamara - 0.14.2-4 -- some spec cleanup - -* Wed Dec 20 2006 Caolán McNamara - 0.14.2-3 -- rebuild for new evolution-data-server - -* Thu Dec 7 2006 Jeremy Katz - 0.14.2-2 -- rebuild for python 2.5 - -* Tue Nov 28 2006 Caolán McNamara - 0.14.2-1 -- next version - -* Fri Oct 27 2006 Matthew Barnes - 0.14.1-3 -- Update BuildRequires for evolution-devel. -- Update BuildRequires for evolution-data-server-devel. -- Update planner-0.13-enableeds.patch for Evolution 2.10. -- Update some files to _libdir/evolution/2.10. -- Rebuild against evolution-data-server-1.9.1. - -* Mon Oct 16 2006 Caolán McNamara - 0.14.1-2 -- Resolves: rhbz#211000 -- move examples into docdir - -* Mon Oct 09 2006 Caolán McNamara - 0.14.1-1 -- bump to 0.14.1 - -* Tue Aug 08 2006 Caolán McNamara - 0.14-3 -- rebuild against eds, deja-vu - -* Sat Aug 05 2006 Caolán McNamara - 0.14-2 -- rebuild against eds - -* Wed Jul 12 2006 Jesse Keating - 0.14-1.1 -- rebuild - -* Fri Jun 23 2006 Caolán McNamara - 0.14-1 -- new version - -* Fri Mar 17 2006 Caolán McNamara - 0.13-5 -- courtesy Stuart Clark bug fix for: - Gantt bar height doesn't match treeview row height - from bugzilla http://bugzilla.gnome.org/show_bug.cgi?id=128983 -- rh#191808# Extra BuildRequires, and fix eds enabling patch - -* Fri Feb 10 2006 Jesse Keating - 0.13-4.1 -- bump again for double-long bug on ppc(64) - -* Thu Feb 09 2006 Caolán McNamara - 0.13-4 -- rebuild - -* Tue Feb 07 2006 Jesse Keating - 0.13-3.1 -- rebuilt for new gcc4.1 snapshot and glibc changes - -* Mon Feb 06 2006 Caolán McNamara - 0.13-3 -- rh#179781# add evolution data server plugin - -* Fri Dec 09 2005 Jesse Keating -- rebuilt - -* Wed Mar 30 2005 Caolán McNamara - 0.13-2 -- fiddle Requires - -* Thu Mar 24 2005 Dan Williams - 0.13-1 -- Update to 0.13 - -* Wed Mar 2 2005 Caolán McNamara - 0.12.1-4 -- rebuild with gcc4 - -* Mon Nov 8 2004 Jeremy Katz - 0.12.1-3 -- rebuild against python 2.4 - -* Fri Oct 22 2004 Dan Williams 0.12.1-2 -- #rh136296# fix libxml2-devel BuildRequires - -* Thu Sep 23 2004 Jonathan Blandford 0.12.1-1 -- new version - -* Wed Sep 22 2004 Florian La Roche -- add ldconfig calls to post/postun - -* Sun Sep 19 2004 Dan Williams 0.12-5 -- Add BuildReq scrollkeeper again (#124184, #111145) -- Add Requires shared-mime-info for update-mime-database -- Fix up planner's .desktop file (#132566) - -* Tue Aug 31 2004 Warren Togami 0.12-3 -- #131285 proper find_lang usage - -* Wed Aug 18 2004 Warren Togami 0.12-2 -- BuildReq libtool, gettext, gtk-doc, libgsf-devel, pygtk2-devel - -* Thu Aug 5 2004 Dan Williams 0.12-1 -- Update to 0.12 -- Sync specfile with Imendio specfile -- Add BuildRequires: scrollkeeper (RH #124184) -- Add obsoletes: libmrproject-devel - -* Tue Jun 15 2004 Elliot Lee -- rebuilt - -* Thu Apr 8 2004 Dan Williams 0.11-1 -- Initial Release of 0.11 RPMs diff --git a/sources b/sources deleted file mode 100644 index 85590d1..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -605c589f2c9ec695df0ae79aed3e2e3b planner-0.14.6.tar.xz