This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: problems elfutils-0.122 on RHEL4
- From: William Cohen <wcohen at redhat dot com>
- To: William Cohen <wcohen at redhat dot com>
- Cc: "systemtap at sourceware dot org" <systemtap at sourceware dot org>
- Date: Wed, 26 Jul 2006 11:52:57 -0400
- Subject: Re: problems elfutils-0.122 on RHEL4
- References: <44C7822F.5050000@redhat.com>
William Cohen wrote:
Has any one attempting to build the systemtap snapshot on RHEL4? The
snapshot requires elfutils-0.122 sources.
On the RHEL4 em64t machine elfutils fails with the following error:
if gcc -D_GNU_SOURCE -DHAVE_CONFIG_H
-DSRCDIR=\"/home/wcohen/rh-rpms/BUILD/elfutils-0.122/src\"
-DOBJDIR=\"/home/wcohen/stap_testing_200607260830/obj/build-elfutils/src\"
-I. -I/home/wcohen/rh-rpms/BUILD/elfutils-0.122/src -I..
-I/home/wcohen/rh-rpms/BUILD/elfutils-0.122/src
-I/home/wcohen/rh-rpms/BUILD/elfutils-0.122/src/../libelf
-I/home/wcohen/rh-rpms/BUILD/elfutils-0.122/src/../libebl
-I/home/wcohen/rh-rpms/BUILD/elfutils-0.122/src/../libdw
-I/home/wcohen/rh-rpms/BUILD/elfutils-0.122/src/../libdwfl
-I/home/wcohen/rh-rpms/BUILD/elfutils-0.122/src/../lib -I.. -Wall
-Wshadow -std=gnu99 -Werror -Wunused -Wextra -Wformat=2 -g -O2 -MT
elflint.o -MD -MP -MF ".deps/elflint.Tpo" -c -o elflint.o
/home/wcohen/rh-rpms/BUILD/elfutils-0.122/src/elflint.c; \
then mv -f ".deps/elflint.Tpo" ".deps/elflint.Po"; else rm -f
".deps/elflint.Tpo"; exit 1; fi
/home/wcohen/rh-rpms/BUILD/elfutils-0.122/src/elflint.c: In function
`check_versym':
/home/wcohen/rh-rpms/BUILD/elfutils-0.122/src/elflint.c:2532: warning:
comparison between signed and unsigned
make[3]: *** [elflint.o] Error 1
make[3]: Leaving directory
`/home/wcohen/stap_testing_200607260830/obj/build-elfutils/src'
Did some investigation. The offending statement at src/elflint.c:2532:
if (runp->ndx == (*versym & 0x7fff))
Look at runp structure
static struct version_namelist
{
const char *objname;
const char *name;
GElf_Word ndx;
enum { ver_def, ver_need } type;
struct version_namelist *next;
} *version_namelist;
Tracing back GElf_Word type:
./libelf/gelf.h:typedef Elf64_Word GElf_Word;
typedef uint32_t Elf64_Word;
Tracing back type of *versym:
GElf_Versym *versym = gelf_getversym (data, cnt, &versym_mem);
typedef Elf64_Versym GElf_Versym;
typedef Elf64_Half Elf64_Versym;
typedef uint16_t Elf64_Half;
This is wierd aren't they both uint?
Put in work-around cast:
if (runp->ndx == (GElf_Word)(*versym & 0x7fff))
On the RHEL4 i686 machine elfutils build fails with the following error:
The error on the RHEL4 i686 machine was due to a corruption of the
elfutil's source file. With the source file corruption fixed the i686
machine had the same error message on src/elflint.c:2532 as the x86-64 one.
-Will