Bug#353346: gcj can't make shared libs on hppa. (followup)

2006-04-22 Thread Matthias Klose
Hi Joel,

the patch is already applied in gcc-4.1 and gcj-4.1. Fixed in today's
gcc-4.0 upload as well. I think we shouldn't care too much about
gcj-4.0 at this point (will build and upload when time permits it). 

  Matthias

Joel Soete writes:
> Hello Matthias,
> 
> Personaly I don't care of gcj but well glibc and according to jda's mail 
>  this patch 
> would fix the mentioned pb for all gcc 4.x
> 
> This is well comitted upstream, I check with some script like:
> svn diff --old http://gcc.gnu.org/svn/gcc/tags/gcc_4_0_3_release \
>  --new http://gcc.gnu.org/svn/gcc/branches/gcc-4_0-branch \
> >  Gcc-4.0-br.diff-$(date +'%Y%m%d')
> 
> but I didn't find yet integrated neither in gcc-4.1 nor gcc-4.0 debian pkg?
> 
> I so tested the attached patch with gcc-4.0 (afaik the default build 
> tool for glibc6) and it makes well its job ;-)
> 
> Thanks in advance,
> Joel
> 
> #! /bin/sh -e
> 
> # DP: * /From/: "John David Anglin" 
> # DP: The enclosed change fixes debian bug #353346.
> # DP: See following msg for fully detailed info:
> # DP: 
> 
> # remove the next line
> 
> dir=
> if [ $# -eq 3 -a "$2" = '-d' ]; then
> pdir="-d $3"
> dir="$3/"
> elif [ $# -ne 1 ]; then
> echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
> exit 1
> fi
> case "$1" in
> -patch)
> patch $pdir -f --no-backup-if-mismatch -p0 < $0
> #cd ${dir}gcc && autoconf
> ;;
> -unpatch)
> patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
> #rm ${dir}gcc/configure
> ;;
> *)
> echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
> exit 1
> esac
> exit 0
> 
> # append the patch here and adjust the -p? flag in the patch calls.
> --- gcc/config/pa/pa32-linux.h(.../tags/gcc_4_0_3_release)
> (revision 113035)
> +++ gcc/config/pa/pa32-linux.h(.../branches/gcc-4_0-branch)   
> (revision 113035)
> @@ -1,5 +1,5 @@
>  /* Definitions for PA_RISC with ELF-32 format
> -   Copyright (C) 2000, 2002, 2004 Free Software Foundation, Inc.
> +   Copyright (C) 2000, 2002, 2004, 2006 Free Software Foundation, Inc.
>  
>  This file is part of GCC.
>  
> @@ -36,4 +36,26 @@
>   aligned(sizeof(func_ptr \
>  = { (func_ptr) (-1) }
>  
> +/* This is a PIC version of CRT_CALL_STATIC_FUNCTION.  The PIC
> +   register has to be saved before the call and restored after
> +   the call.  We assume that register %r4 is available for this
> +   purpose.  The hack prevents GCC from deleting the restore.  */
> +#ifdef CRTSTUFFS_O
> +#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC)   \
> +static void __attribute__((__used__))\
> +call_ ## FUNC (void) \
> +{\
> +  asm (SECTION_OP);  \
> +  asm volatile ("bl " #FUNC ",%%r2\n\t"  \
> + "copy %%r19,%%r4\n\t"   \
> + "copy %%r4,%%r19\n" \
> + :   \
> + :   \
> + : "r1", "r2", "r4", "r20", "r21",   \
> +   "r22", "r23", "r24", "r25", "r26",\
> +   "r27", "r28", "r29", "r31");  \
> +  asm (TEXT_SECTION_ASM_OP); \
> +}
> +#endif
> +
>  #define MD_UNWIND_SUPPORT "config/pa/linux-unwind.h"


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Bug#353346: gcj can't make shared libs on hppa. (followup)

2006-04-22 Thread Joel Soete

Hello Matthias,

Personaly I don't care of gcj but well glibc and according to jda's mail 
 this patch 
would fix the mentioned pb for all gcc 4.x


This is well comitted upstream, I check with some script like:
svn diff --old http://gcc.gnu.org/svn/gcc/tags/gcc_4_0_3_release \
--new http://gcc.gnu.org/svn/gcc/branches/gcc-4_0-branch \
   >  Gcc-4.0-br.diff-$(date +'%Y%m%d')

but I didn't find yet integrated neither in gcc-4.1 nor gcc-4.0 debian pkg?

I so tested the attached patch with gcc-4.0 (afaik the default build 
tool for glibc6) and it makes well its job ;-)


Thanks in advance,
   Joel

#! /bin/sh -e

# DP: * /From/: "John David Anglin" 
# DP: The enclosed change fixes debian bug #353346.
# DP: See following msg for fully detailed info:
# DP: 

# remove the next line

dir=
if [ $# -eq 3 -a "$2" = '-d' ]; then
pdir="-d $3"
dir="$3/"
elif [ $# -ne 1 ]; then
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
exit 1
fi
case "$1" in
-patch)
patch $pdir -f --no-backup-if-mismatch -p0 < $0
#cd ${dir}gcc && autoconf
;;
-unpatch)
patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
#rm ${dir}gcc/configure
;;
*)
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
exit 1
esac
exit 0

# append the patch here and adjust the -p? flag in the patch calls.
--- gcc/config/pa/pa32-linux.h  (.../tags/gcc_4_0_3_release)(revision 
113035)
+++ gcc/config/pa/pa32-linux.h  (.../branches/gcc-4_0-branch)   (revision 
113035)
@@ -1,5 +1,5 @@
 /* Definitions for PA_RISC with ELF-32 format
-   Copyright (C) 2000, 2002, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2002, 2004, 2006 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -36,4 +36,26 @@
aligned(sizeof(func_ptr \
 = { (func_ptr) (-1) }
 
+/* This is a PIC version of CRT_CALL_STATIC_FUNCTION.  The PIC
+   register has to be saved before the call and restored after
+   the call.  We assume that register %r4 is available for this
+   purpose.  The hack prevents GCC from deleting the restore.  */
+#ifdef CRTSTUFFS_O
+#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \
+static void __attribute__((__used__))  \
+call_ ## FUNC (void)   \
+{  \
+  asm (SECTION_OP);\
+  asm volatile ("bl " #FUNC ",%%r2\n\t"\
+   "copy %%r19,%%r4\n\t"   \
+   "copy %%r4,%%r19\n" \
+   :   \
+   :   \
+   : "r1", "r2", "r4", "r20", "r21",   \
+ "r22", "r23", "r24", "r25", "r26",\
+ "r27", "r28", "r29", "r31");  \
+  asm (TEXT_SECTION_ASM_OP);   \
+}
+#endif
+
 #define MD_UNWIND_SUPPORT "config/pa/linux-unwind.h"