memprof-0.5.1 revisited
- From: "Joseph E. Sacco, PhD" <joseph_sacco comcast net>
- To: garnome-list gnome org
- Cc: otaylor redhat com
- Subject: memprof-0.5.1 revisited
- Date: Mon, 11 Jul 2005 13:40:36 -0400
This is another attempt at hacking memprof-0.5.1 to run on a 32 bit PPC.
Attached are files to implement the changes within GARNOME.
Discussion
-----------
Three files were patched in order to get memprof to build, install, and
run.
* bfdutils.c
coding changes made because libbfd has changed since 2002
* memintercept-utils.c
atomic operations taken from glibc to implement
atomic_increment/decrement for platforms that uses glibc
[Must have /usr/include/asm/atomic.h installed].
* stack-frame.c
removed an __i386__ restriction and got away with it on a 32 bit PPC
[maybe...]
Observations
-------------
* I doubt this version of memprof will work on a 64 bit machine.
* The build generates a few warnings that appear to be unimportant on a
32 bit machine.
* running the application sometimes generates warnings about failure to
access the very first element in a memory block.
For example:
** (memprof:7657): WARNING **: Cannot read word 0/52 in block
0x1ffc18d4: Input/output error
** (memprof:7657): WARNING **: Cannot read word 0/2444 in block
0x3fc577fc: Input/output error
** (memprof:7657): WARNING **: Cannot read word 0/61 in block
0x3fc57000: Input/output error
-Joseph
--
joseph_sacco [at] comcast [dot] net
GARNAME = memprof
GARVERSION = 0.5.1
CATEGORIES = hacker-tools
DISTFILES = $(GARNAME)-$(GARVERSION).tar.bz2
LIBDEPS = platform/libgnomeui platform/GConf
PATCHFILES = memprof.patch
DESCRIPTION = memprof
define BLURB
#FIXME: blurb goes here
endef
CONFIGURE_SCRIPTS = $(WORKSRC)/configure
BUILD_SCRIPTS = $(WORKSRC)/Makefile
INSTALL_SCRIPTS = $(WORKSRC)/Makefile
CONFIGURE_ARGS = $(DIRPATHS)
include ../category.mk
2d83704352a584ea7c78fbda9540c5cb download/memprof-0.5.1.tar.bz2
c407090574c2a8e0b8548d8e8536e0e6 download/memprof.patch
--- ./bfdutils.c- 2005-02-17 17:04:02.000000000 -0500
+++ ./bfdutils.c 2005-02-17 17:04:15.000000000 -0500
@@ -164,7 +164,7 @@
* into the internals instead. :-(
*/
/* (*func) (addr, bfd_section_size (map->abfd, section), user_data); */
- (*func) (addr, section->_cooked_size, user_data);
+ (*func) (addr, section->size, user_data);
}
}
}
--- ./memintercept-utils.c- 2005-02-17 16:59:56.000000000 -0500
+++ ./memintercept-utils.c 2005-07-11 10:02:08.000000000 -0400
@@ -30,6 +30,12 @@
#include "memintercept-utils.h"
+/* include atomic operations macros from glibc */
+#ifndef __KERNEL__
+#define __KERNEL__
+#endif
+#include <asm/atomic.h>
+
static int
write_all (int fd,
const void *buf,
@@ -264,30 +270,22 @@
uint32_t
mi_atomic_increment(uint32_t *addr)
{
-#if defined (__GNUC__) && defined (__i386__)
- uint32_t result;
- __asm__ __volatile__("lock; xaddl %0, %1; incl %0"
- : "=r"(result), "=m"(*(addr))
- : "0" (1), "m"(*(addr)) : "memory");
- return result;
+#if defined (__GNUC__)
+ return((uint32_t)atomic_inc_return((atomic_t *)addr));
#else
/* Hope for the best */
- return *++p;
+ return *++addr;
#endif
}
uint32_t
mi_atomic_decrement(uint32_t *addr)
{
-#if defined (__GNUC__) && defined (__i386__)
- uint32_t result;
- __asm__ __volatile__("lock; xaddl %0, %1; decl %0"
- : "=r"(result), "=m"(*(addr))
- : "0" (-1), "m"(*(addr)) : "memory");
- return result;
+#if defined (__GNUC__)
+ return((uint32_t)atomic_dec_return((atomic_t *)addr));
#else
/* Hope for the best */
- return *--p;
+ return *--addr;
#endif
}
--- ./stack-frame.c- 2005-02-17 17:02:22.000000000 -0500
+++ ./stack-frame.c 2005-02-17 17:02:37.000000000 -0500
@@ -69,7 +69,7 @@
#define HAVE_FRAME_ACCESSORS
-#if defined (__GNUC__) && defined (__i386__)
+#if defined (__GNUC__)
typedef struct stack_frame_struct stack_frame;
struct stack_frame_struct {
stack_frame *next;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]