[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[PATCH] Some added bits for hppa, hopefully ds1-11



debian-glibc,

Some updates for hppa, still pending are a *lot* of local changes that I
need to submit upstream first for revision.

  * Carlos O'Donell <carlos@baldric.uwo.ca>

    - debian/patches/51_glibc232-hppa-dist.dpatch: Add entry.h to dist.
    - debian/patches/51_glibc232-hppa-profiling.dpatch: Fix profile support.
      (Closes: #221010)

----------
#! /bin/sh -e

# All lines beginning with `# DP:' are a description of the patch.
# DP: Description: Add the elf entry point definition to those files that are exported.
# DP: Related bugs: None, though there could be possible unknown problems, we never want the
#                   generic version to be used.
# DP: Author: Carlos O'Donell <carlos@baldric.uwo.ca>
# DP: Upstream status: Not submitted
# DP: Status Details: Will be submitted upstream as part of another patch.
# DP: Date: 2004-01-01

if [ $# -ne 2 ]; then
    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
    exit 1
fi
case "$1" in
    -patch) patch -d "$2" -f --no-backup-if-mismatch -p1 < $0;;
    -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p1 < $0;;
    *)
	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.
#
# 2004-01-01  Carlos O'Donell  <carlos@baldric.uwo.ca>
#
#	* sysdeps/hppa/Dist: Export the entry point.
#
--- glibc/sysdeps/hppa/Dist.orig	2004-01-02 11:43:00.000000000 -0500
+++ glibc/sysdeps/hppa/Dist	2004-01-02 11:43:09.000000000 -0500
@@ -1,2 +1,3 @@
 dl-symaddr.c
 dl-fptr.c
+elf/entry.h
----------
#! /bin/sh -e

# All lines beginning with `# DP:' are a description of the patch.
# DP: Description: Fix profiling with -pg
# DP: Related bugs: 'roy' FTBS, any program compiled with -pg SIGSEGV's
# DP: Author:  Randolph Chung (tausq@debian.org), (Submitter: Carlos O'Donell <carlos@baldric.uwo.ca>)
# DP: Upstream status: Not submitted, will be submitted soon.
# DP: Status Details: Testing passes, no regresssions.
# DP: Date: 2004-01-01

if [ $# -ne 2 ]; then
    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
    exit 1
fi
case "$1" in
    -patch) patch -d "$2" -f --no-backup-if-mismatch -p1 < $0;;
    -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p1 < $0;;
    *)
	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.
#2003-11-15  Randolph Chung  <tausq@debian.org>
#
#	* gmon/gmon.c (__monstartup): Round kcountsize to multiples of the
#	froms[] array so the array is properly aligned.
#
#	* sysdeps/hppa/elf/entry.h (ENTRY_POINT): Use
#	__canonicalize_funcptr_for_compare for loading _start to handle lazy 
#	binding.
#	* sysdeps/hppa/machine-gmon.h: New file.
#	* sysdeps/unis/sysv/linux/hppa/profil-counter.h: New file.
#
diff -uNr glibc-2.3.2/gmon/gmon.c build-tree.prof/glibc-2.3.2/gmon/gmon.c
--- glibc-2.3.2/gmon/gmon.c	2003-11-15 09:16:02.520797072 -0800
+++ glibc-2.3.2/gmon/gmon.c	2003-11-13 22:10:28.000000000 -0800
@@ -114,7 +114,7 @@
   p->lowpc = ROUNDDOWN(lowpc, HISTFRACTION * sizeof(HISTCOUNTER));
   p->highpc = ROUNDUP(highpc, HISTFRACTION * sizeof(HISTCOUNTER));
   p->textsize = p->highpc - p->lowpc;
-  p->kcountsize = p->textsize / HISTFRACTION;
+  p->kcountsize = ROUNDUP(p->textsize / HISTFRACTION, sizeof(*p->froms));
   p->hashfraction = HASHFRACTION;
   p->log_hashfraction = -1;
   /* The following test must be kept in sync with the corresponding
diff -uNr build-tree/glibc-2.3.2/sysdeps/hppa/elf/entry.h build-tree.prof/glibc-2.3.2/sysdeps/hppa/elf/entry.h
--- glibc-2.3.2/sysdeps/hppa/elf/entry.h	2003-11-15 09:16:09.280769400 -0800
+++ glibc-2.3.2/sysdeps/hppa/elf/entry.h	2003-11-13 22:10:28.839435896 -0800
@@ -4,7 +4,7 @@
 
 /* The function's entry point is stored in the first word of the
    function descriptor (plabel) of _start().  */
-#define ENTRY_POINT ({long int *tmp = (long int *)((long)_start & ~2); tmp[0];})
+#define ENTRY_POINT __canonicalize_funcptr_for_compare(_start)
 
 /* We have to provide a special declaration.  */
 #define ENTRY_POINT_DECL(class) class void _start (void);
diff -uNr build-tree/glibc-2.3.2/sysdeps/hppa/machine-gmon.h build-tree.prof/glibc-2.3.2/sysdeps/hppa/machine-gmon.h
--- glibc-2.3.2/sysdeps/hppa/machine-gmon.h	1969-12-31 16:00:00.000000000 -0800
+++ glibc-2.3.2/sysdeps/hppa/machine-gmon.h	2003-11-13 22:10:28.000000000 -0800
@@ -0,0 +1,25 @@
+/* Machine-specific calling sequence for `mcount' profiling function.  PA-RISC
+   Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+/* We can call _mcount directly since gcc supplies the correct
+ * arguments */
+#define _MCOUNT_DECL(from, self) \
+ void _mcount (u_long from, u_long self)
+
+#define MCOUNT
diff -uNr build-tree/glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/profil-counter.h build-tree.prof/glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/profil-counter.h
--- glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/profil-counter.h	2000-10-14 20:12:00.000000000 -0700
+++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/profil-counter.h	2003-11-15 08:53:01.788700256 -0800
@@ -1,2 +1,25 @@
-/* We can use the ix86 version.  */
-#include <sysdeps/unix/sysv/linux/i386/profil-counter.h>
+/* Machine-dependent SIGPROF signal handler.  PA-RISC version
+   Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+static void
+profil_counter (int signr, siginfo_t *si, struct ucontext *uctx)
+{
+  unsigned long ip = uctx->uc_mcontext.sc_iaoq[0] & ~0x3;
+  profil_count ((void *) ip);
+}



Reply to: