Ir al Hogar Ver Índice Buscar Enlaces Acerda de nosotros
[LinuxFocus Image]
[Navegation Bar]
  Noticias   Archivos   Compañías   Consejos 

Haciendo funcionar el profile en una Alpha.

 
 
From hjstein@bfr.co.il Fri Dec 19 15:35:35 1997
Date: 19 Nov 1997 11:55:52 +0200
From: "Harvey J. Stein" 
To: Miguel A Sepulveda 
Cc: axp-list@redhat.com
Subject: Re: Profiling under Linux Alpha ?

Miguel A Sepulveda  escribe:

> Hola a todos.
>
> Estoy tratando de perfilar un programa hecho por mi en un Alpha 
> con el kernel 2.0.30.
> 
> Compilo los fuentes con -g2 -pg, y entonces ejecuto el programa. 
> Cuando la ejecución finaliza, se supone que debe generar un fichero 
> gmon.out. Sin embargo, el programa peta y genera un fichero coredump.
> El programa es correcto, porque sin la opción -pg funciona bien.

Yo tuve que hacer unas cuantas cosas con Redhat 4.2 para que funionara
el "profiling".

Existen dos parches que se han enviado a esta lista que arreglan problemas
del gcc. El primero (rth-gcc-2.7.2-970921.diff.gz) corrige un problema con 
stack frames muy grandes. Parece ser que el segundo 
(gcc-alpha-profiling-patch-2.7.2.1-toon-971001) arregla algunos problemas 
con el profiling, pero yo no he comprobado que sea realmente necesario.

En cualquier caso, aquí están. También está un fichero RPM Spec para 
construir el gcc. Deberías obtener gcc-2.7.2.1-2.src.rpm, descomprimirlo, 
sustituir el fichero spec de /usr/src/redhat/SPECS por el que incluyo,
añadir los parches al directorio SOURCES, y recompilar gcc. Entonces
ya puedes instalar gcc-2.7.2.1-2c.alpha.rpm. Incluyo aqui un fichero 
empaquetado ( tar | gzip | uuencode ) llamado gcc-new-patches.tar.gz.uue
que contiene los dos parches y el fichero spec.

También necesitarás parchear el gprof. El procedimiento es el mismo 
que antes, pero ahora con binutils-2.7.0.2-4.src.rpm. Sin embargo, 
el package de binutils incluye ficheros que dan problemas con los 
ficheros de headers de la libc. Lo mejor es reemplazar el fichero 
gprof manualmente después de compilarlo. Añado también el fichero
binutils-new-patches.tar.gz.uue.

Finalmente, tienes que parchear algunas librerías. Creo que esto es 
lo más importante. El parche está en el mailing list archive:

   http://www.redhat.com/support/mailing-lists/archives/axp-list/1997-March/0464.html

Te incluyo el parche aquí (pg-fixes.tar.gz.uue), así como un extracto 
del mensaje de David Mosberger-Tang sobre cómo aplicarlo (bueno,
realmente casi todo el mensaje):

   Algunos de vosotros habéis avisado de problemas con el profiling
   en RH4.1. Aquí está un fichero uuencoded con tres ficheros objeto.
   La salida del md5sum es:

   0854f6609580506aeea2595d7729e27b gmon.po
   e2e3cdbace223a162efe90048e0ed661 ieee_get_fp_control.po
   8340b52dc581956131e038d3946ba81b ieee_set_fp_control.po

   Después de extraer los ficheros, sustituirlos en vuestra libc_p.a.
   Por ejemplo:

   ar rv /usr/lib/libc_p.a gmon.po ieee_{s,g}et_fp_control.po

   y entonces el profiling funcionará de nuevo. Atención con el gprof
   del binutils-2.7, que tiene un bug que a veces causa un SIGFPE. Mirad
   mi mail anterior para un parche que lo arregla.

   Finalmente, hay aún un problema al juntar profiling con enlace 
   dinámico. Por ejemplo, con enlace dinámico, añadir -lm creará un 
   binario que dará el error: Segmentation fault. Mientras no se 
   encuentre una verdadera solución, deberemos añadir la opción -static.

Buena suerte,

-- 
Harvey J. Stein
Berger Financial Research
hjstein@bfr.co.il
  
Fichero de Patch


Páginas web mantenidas por Miguel A Sepulveda.