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 
http://gcc.gnu.org/ml/gcc-patches/2006-03/msg00815.html 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 dave at hiauly1 dot hia dot nrc dot ca
# DP: The enclosed change fixes debian bug #353346.
# DP: See following msg for fully detailed info:
# DP: http://gcc.gnu.org/ml/gcc-patches/2006-03/msg00815.html

# 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


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 
 http://gcc.gnu.org/ml/gcc-patches/2006-03/msg00815.html 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 dave at hiauly1 dot hia dot nrc dot ca
 # DP: The enclosed change fixes debian bug #353346.
 # DP: See following msg for fully detailed info:
 # DP: http://gcc.gnu.org/ml/gcc-patches/2006-03/msg00815.html
 
 # 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]