diff --git a/elfutils/configure.ac b/elfutils/configure.ac index 78be37fc5..a1a506aaf 100644 --- a/elfutils/configure.ac +++ b/elfutils/configure.ac @@ -13,8 +13,8 @@ dnl License version 1.0 from http://www.opensource.org/licenses/osl.php or dnl by writing the Open Source Initiative c/o Lawrence Rosen, Esq., dnl 3001 King Ranch Road, Ukiah, CA 95482. dnl -AC_INIT([elfutils],[0.76],[drepper@redhat.com],[elfutils]) -AM_INIT_AUTOMAKE([gnits 1.6.3 dist-bzip2]) +AC_INIT([elfutils],[0.78],[drepper@redhat.com],[elfutils]) +AM_INIT_AUTOMAKE([gnits 1.7 dist-bzip2]) AC_COPYRIGHT([Copyright (C) 1996-2002, 2003 Red Hat, Inc.]) AC_CONFIG_SRCDIR([src/readelf.c]) AM_CONFIG_HEADER([config.h]) diff --git a/elfutils/libasm/asm_end.c b/elfutils/libasm/asm_end.c index 39bc6b2bb..c94972a6e 100644 --- a/elfutils/libasm/asm_end.c +++ b/elfutils/libasm/asm_end.c @@ -244,7 +244,7 @@ cannot create extended section index table: %s"), /* Store the real section index in the extended setion index table. */ - assert (ptr < ctx->nsymbol_tab + 1); + assert ((size_t) ptr < ctx->nsymbol_tab + 1); xshndx[ptr] = ndx; /* And signal that this happened. */ diff --git a/elfutils/libdw/Makefile.am b/elfutils/libdw/Makefile.am index 366739e9a..b2200fb19 100644 --- a/elfutils/libdw/Makefile.am +++ b/elfutils/libdw/Makefile.am @@ -1,7 +1,7 @@ ## Process this file with automake to create Makefile.in ## Configure input file for elfutils. ## -## Copyright (C) 2002 Red Hat, Inc. +## Copyright (C) 2002, 2003 Red Hat, Inc. ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License version 2 as @@ -19,6 +19,7 @@ DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H AM_CFLAGS = -Wall -Wshadow # -Werror INCLUDES = -I. -I$(srcdir) -I$(srcdir)/../libelf -I.. -I$(srcdir)/../lib +VERSION = 1 LINT = splint @@ -31,8 +32,14 @@ noinst_PROGRAMS = $(noinst_LIBRARIES:_pic.a=.so) #euinclude_HEADERS = libdw.h libdw_a_SOURCES = dwarf_begin.c dwarf_begin_elf.c dwarf_end.c dwarf_get_elf.c \ - dwarf_get_pubnames.c \ - dwarf_error.c + dwarf_get_pubnames.c dwarf_get_abbrev.c dwarf_tag.c \ + dwarf_error.c dwarf_nextcu.c dwarf_diename.c dwarf_offdie.c \ + dwarf_attr.c dwarf_formstring.c dwarf_abbrev_hash.c \ + dwarf_child.c dwarf_has_children.c dwarf_formaddr.c \ + dwarf_formudata.c dwarf_formsdata.c dwarf_lowpc.c \ + dwarf_highpc.c dwarf_formref.c dwarf_siblingof.c \ + libdw_findcu.c libdw_form.c libdw_alloc.c + libdw_pic_a_SOURCES = am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os) @@ -41,7 +48,7 @@ libdw_so_SOURCES = libdw.so: libdw_pic.a $(srcdir)/libdw.map $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ -Wl,--version-script,$(srcdir)/libdw.map,--no-undefined \ - -Wl,--soname,$@.$(VERSION) \ + -Wl,--soname,$@.$(VERSION),-z,defs \ ../libelf/libelf.so ln -fs $@ $@.$(VERSION) @@ -66,7 +73,7 @@ uninstall: uninstall-am # rm -f $(DESTDIR)$(libdir)/libdw.so # rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils -noinst_HEADERS = libdwP.h memory-access.h \ +noinst_HEADERS = libdwP.h memory-access.h dwarf_abbrev_hash.h \ dwarf.h libdw.h EXTRA_DIST = libdw.map diff --git a/elfutils/libdw/dwarf_begin_elf.c b/elfutils/libdw/dwarf_begin_elf.c index aaa0c1dac..8ee62e501 100644 --- a/elfutils/libdw/dwarf_begin_elf.c +++ b/elfutils/libdw/dwarf_begin_elf.c @@ -1,5 +1,5 @@ /* Create descriptor from ELF descriptor for processing file. - Copyright (C) 2002 Red Hat, Inc. + Copyright (C) 2002, 2003 Red Hat, Inc. Written by Ulrich Drepper , 2002. This program is free software; you can redistribute it and/or modify @@ -23,6 +23,7 @@ #include #include #include +#include #include #include "libdwP.h" @@ -55,7 +56,7 @@ check_section (Dwarf *result, GElf_Ehdr *ehdr, Elf_Scn *scn, bool inscngrp) GElf_Shdr shdr_mem; GElf_Shdr *shdr; const char *scnname; - int cnt; + size_t cnt; /* Get the section header data. */ shdr = gelf_getshdr (scn, &shdr_mem); @@ -83,7 +84,7 @@ check_section (Dwarf *result, GElf_Ehdr *ehdr, Elf_Scn *scn, bool inscngrp) { /* The section name must be valid. Otherwise is the ELF file invalid. */ - __libdwarf_seterrno (DWARF_E_INVALID_ELF); + __libdw_seterrno (DWARF_E_INVALID_ELF); free (result); return; } @@ -122,7 +123,7 @@ valid_p (Dwarf *result) is correct. */ if (unlikely (result->sectiondata[IDX_debug_info] == NULL)) { - __libdwarf_seterrno (DWARF_E_NO_DWARF); + __libdw_seterrno (DWARF_E_NO_DWARF); result = NULL; } @@ -168,7 +169,7 @@ scngrp_read (Dwarf *result, Elf *elf, GElf_Ehdr *ehdr, Dwarf_Cmd cmd, { /* A section group refers to a non-existing section. Should never happen. */ - __libdwarf_seterrno (DWARF_E_INVALID_ELF); + __libdw_seterrno (DWARF_E_INVALID_ELF); free (result); return NULL; } @@ -196,19 +197,22 @@ dwarf_begin_elf (elf, cmd, scngrp) if (ehdr == NULL) { if (elf_kind (elf) != ELF_K_ELF) - __libdwarf_seterrno (DWARF_E_NOELF); + __libdw_seterrno (DWARF_E_NOELF); else - __libdwarf_seterrno (DWARF_E_GETEHDR_ERROR); + __libdw_seterrno (DWARF_E_GETEHDR_ERROR); return NULL; } + /* Default memory allocation size. */ + size_t mem_default_size = sysconf (_SC_PAGESIZE) - 4 * sizeof (void *); + /* Allocate the data structure. */ - result = (Dwarf *) calloc (1, sizeof (Dwarf)); + result = (Dwarf *) calloc (1, sizeof (Dwarf) + mem_default_size); if (result == NULL) { - __libdwarf_seterrno (DWARF_E_NOMEM); + __libdw_seterrno (DWARF_E_NOMEM); return NULL; } @@ -219,6 +223,15 @@ dwarf_begin_elf (elf, cmd, scngrp) result->elf = elf; + /* Initialize the memory handling. */ + result->mem_default_size = mem_default_size; + result->oom_handler = __libdw_oom; + result->mem_tail = (struct libdw_memblock *) (result + 1); + result->mem_tail->size = (result->mem_default_size + - offsetof (struct libdw_memblock, mem)); + result->mem_tail->remaining = result->mem_tail->size; + result->mem_tail->next = result->mem_tail->prev = NULL; + if (cmd == DWARF_C_READ || cmd == DWARF_C_RDWR) { @@ -234,12 +247,12 @@ dwarf_begin_elf (elf, cmd, scngrp) } else if (cmd == DWARF_C_WRITE) { - __libdwarf_seterrno (DWARF_E_UNIMPL); + __libdw_seterrno (DWARF_E_UNIMPL); free (result); return NULL; } - __libdwarf_seterrno (DWARF_E_INVALID_CMD); + __libdw_seterrno (DWARF_E_INVALID_CMD); free (result); return NULL; } diff --git a/elfutils/libdw/dwarf_get_pubnames.c b/elfutils/libdw/dwarf_get_pubnames.c index 1bbcdadea..a02036e61 100644 --- a/elfutils/libdw/dwarf_get_pubnames.c +++ b/elfutils/libdw/dwarf_get_pubnames.c @@ -1,5 +1,5 @@ /* Get public symbol information. - Copyright (C) 2002 Red Hat, Inc. + Copyright (C) 2002, 2003 Red Hat, Inc. Written by Ulrich Drepper , 2002. This program is free software; you can redistribute it and/or modify @@ -53,7 +53,7 @@ get_offsets (Dwarf *dbg) newmem = (struct pubnames_s *) realloc (mem, allocated * entsize); if (newmem == NULL) { - __libdwarf_seterrno (DWARF_E_NOMEM); + __libdw_seterrno (DWARF_E_NOMEM); err_return: free (mem); return -1; @@ -83,7 +83,7 @@ get_offsets (Dwarf *dbg) version = read_2ubyte_unaligned (dbg, readp); if (version != 2) { - __libdwarf_seterrno (DWARF_E_INVALID_VERSION); + __libdw_seterrno (DWARF_E_INVALID_VERSION); goto err_return; } @@ -113,7 +113,7 @@ get_offsets (Dwarf *dbg) if (mem == NULL) { - __libdwarf_seterrno (DWARF_E_NO_ENTRY); + __libdw_seterrno (DWARF_E_NO_ENTRY); return -1; } diff --git a/elfutils/libdwarf/Makefile.am b/elfutils/libdwarf/Makefile.am index ee26ef867..a9ef82725 100644 --- a/elfutils/libdwarf/Makefile.am +++ b/elfutils/libdwarf/Makefile.am @@ -74,7 +74,7 @@ libdwarf_so_SOURCES = libdwarf.so: libdwarf_pic.a libdwarf.map $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ -Wl,--version-script,$(srcdir)/libdwarf.map,--no-undefined \ - -Wl,--soname,$@.$(VERSION) \ + -Wl,--soname,$@.$(VERSION),-z,defs \ ../libelf/libelf.so ln -fs $@ $@.$(VERSION) diff --git a/elfutils/libdwarf/dwarf_elf_init.c b/elfutils/libdwarf/dwarf_elf_init.c index 237cc3ef3..d69d74740 100644 --- a/elfutils/libdwarf/dwarf_elf_init.c +++ b/elfutils/libdwarf/dwarf_elf_init.c @@ -122,7 +122,7 @@ dwarf_elf_init (elf, access, errhand, errarg, dbg, error) GElf_Shdr shdr_mem; GElf_Shdr *shdr; const char *scnname; - int cnt; + size_t cnt; Elf_Data *data; /* Get the section header data. */ diff --git a/elfutils/libdwarf/dwarf_get_fde_list_eh.c b/elfutils/libdwarf/dwarf_get_fde_list_eh.c index 7543a211f..bcda71b0d 100644 --- a/elfutils/libdwarf/dwarf_get_fde_list_eh.c +++ b/elfutils/libdwarf/dwarf_get_fde_list_eh.c @@ -277,8 +277,8 @@ dwarf_get_fde_list_eh (dbg, cie_data, cie_element_count, fde_data, a direct offset in the section it is a offset from the location of the FDE'S CIE ID value itself to the CIE entry. */ if (cie->cie->offset - == (cie_id_ptr - cie_id - - (Dwarf_Small *) dbg->sections[IDX_eh_frame].addr)) + == (size_t) (cie_id_ptr - cie_id + - (Dwarf_Small *) dbg->sections[IDX_eh_frame].addr)) { new_fde->fde->cie = cie->cie; break; @@ -337,8 +337,8 @@ dwarf_get_fde_list_eh (dbg, cie_data, cie_element_count, fde_data, do { if (cielist->cie->offset - == (fdelist->cie_id_ptr - fdelist->fde->offset - - (Dwarf_Small *) dbg->sections[IDX_eh_frame].addr)) + == (size_t) (fdelist->cie_id_ptr - fdelist->fde->offset + - (Dwarf_Small *) dbg->sections[IDX_eh_frame].addr)) { fdelist->fde->cie = cielist->cie; break; diff --git a/elfutils/libdwarf/dwarf_srcfiles.c b/elfutils/libdwarf/dwarf_srcfiles.c index 75d335b0b..1090d8373 100644 --- a/elfutils/libdwarf/dwarf_srcfiles.c +++ b/elfutils/libdwarf/dwarf_srcfiles.c @@ -188,6 +188,9 @@ dwarf_srcfiles (die, srcfiles, srcfilecount, error) int length; int res; + /* For now we haven't found anything. */ + *srcfilecount = 0; + /* The die must be for a compilation unit. */ if (die->abbrev->tag != DW_TAG_compile_unit) { diff --git a/elfutils/libebl/Makefile.am b/elfutils/libebl/Makefile.am index 2b67ff523..242336eca 100644 --- a/elfutils/libebl/Makefile.am +++ b/elfutils/libebl/Makefile.am @@ -58,7 +58,7 @@ libebl_so_SOURCES = libebl.so: libebl_pic.a libebl.map $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ -Wl,--version-script,$(srcdir)/libebl.map,--no-undefined \ - -Wl,--soname,$@.$(VERSION) \ + -Wl,--soname,$@.$(VERSION),-z,defs \ ../libelf/libelf.so -ldl ln -fs $@ $@.$(VERSION) @@ -70,7 +70,8 @@ am_libebl_i386_pic_a_OBJECTS = $(i386_SRCS:.c=.os) libebl_i386_so_SOURCES = libebl_i386.so: libebl_i386_pic.a libebl_i386.map $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_i386.map,--no-undefined + -Wl,--version-script,$(srcdir)/libebl_i386.map,--no-undefined \ + -Wl,-z,defs sh_SRCS = sh_init.c sh_destr.c sh_symbol.c @@ -80,7 +81,8 @@ am_libebl_sh_pic_a_OBJECTS = $(sh_SRCS:.c=.os) libebl_sh_so_SOURCES = libebl_sh.so: libebl_sh_pic.a libebl_sh.map $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_sh.map,--no-undefined + -Wl,--version-script,$(srcdir)/libebl_sh.map,--no-undefined \ + -Wl,-z,defs mips_SRCS = mips_init.c mips_destr.c mips_symbol.c @@ -90,7 +92,8 @@ am_libebl_mips_pic_a_OBJECTS = $(mips_SRCS:.c=.os) libebl_mips_so_SOURCES = libebl_mips.so: libebl_mips_pic.a libebl_mips.map $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_mips.map,--no-undefined + -Wl,--version-script,$(srcdir)/libebl_mips.map,--no-undefined \ + -Wl,-z,defs x86_64_SRCS = x86_64_init.c x86_64_destr.c x86_64_symbol.c @@ -100,7 +103,8 @@ am_libebl_x86_64_pic_a_OBJECTS = $(x86_64_SRCS:.c=.os) libebl_x86_64_so_SOURCES = libebl_x86_64.so: libebl_x86_64_pic.a libebl_x86_64.map $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_x86_64.map,--no-undefined + -Wl,--version-script,$(srcdir)/libebl_x86_64.map,--no-undefined \ + -Wl,-z,defs ia64_SRCS = ia64_init.c ia64_destr.c ia64_symbol.c @@ -110,7 +114,8 @@ am_libebl_ia64_pic_a_OBJECTS = $(ia64_SRCS:.c=.os) libebl_ia64_so_SOURCES = libebl_ia64.so: libebl_ia64_pic.a libebl_ia64.map $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_ia64.map,--no-undefined + -Wl,--version-script,$(srcdir)/libebl_ia64.map,--no-undefined \ + -Wl,-z,defs alpha_SRCS = alpha_init.c alpha_destr.c alpha_symbol.c @@ -120,7 +125,8 @@ am_libebl_alpha_pic_a_OBJECTS = $(alpha_SRCS:.c=.os) libebl_alpha_so_SOURCES = libebl_alpha.so: libebl_alpha_pic.a libebl_alpha.map $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_alpha.map,--no-undefined + -Wl,--version-script,$(srcdir)/libebl_alpha.map,--no-undefined \ + -Wl,-z,defs arm_SRCS = arm_init.c arm_destr.c arm_symbol.c @@ -130,7 +136,8 @@ am_libebl_arm_pic_a_OBJECTS = $(arm_SRCS:.c=.os) libebl_arm_so_SOURCES = libebl_arm.so: libebl_arm_pic.a libebl_arm.map $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_arm.map,--no-undefined + -Wl,--version-script,$(srcdir)/libebl_arm.map,--no-undefined \ + -Wl,-z,defs sparc_SRCS = sparc_init.c sparc_destr.c sparc_symbol.c @@ -140,7 +147,8 @@ am_libebl_sparc_pic_a_OBJECTS = $(sparc_SRCS:.c=.os) libebl_sparc_so_SOURCES = libebl_sparc.so: libebl_sparc_pic.a libebl_sparc.map $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_sparc.map,--no-undefined + -Wl,--version-script,$(srcdir)/libebl_sparc.map,--no-undefined \ + -Wl,-z,defs %.os: %.c %.o diff --git a/elfutils/libebl/eblopenbackend.c b/elfutils/libebl/eblopenbackend.c index ef195057f..6f2ca5ee8 100644 --- a/elfutils/libebl/eblopenbackend.c +++ b/elfutils/libebl/eblopenbackend.c @@ -159,7 +159,7 @@ openbackend (elf, emulation, machine) GElf_Half machine; { Ebl *result; - int cnt; + size_t cnt; /* First allocate the data structure for the result. We do this here since this assures that the structure is always large diff --git a/elfutils/libebl/eblsectiontypename.c b/elfutils/libebl/eblsectiontypename.c index 33c1bd345..89a3201dd 100644 --- a/elfutils/libebl/eblsectiontypename.c +++ b/elfutils/libebl/eblsectiontypename.c @@ -54,7 +54,7 @@ ebl_section_type_name (ebl, section, buf, len) }; /* Handle standard names. */ - if (section < sizeof (knowntypes) / sizeof (knowntypes[0]) + if ((size_t) section < sizeof (knowntypes) / sizeof (knowntypes[0]) && knowntypes[section] != NULL) res = knowntypes[section]; /* The symbol versioning/Sun extensions. */ @@ -80,7 +80,8 @@ ebl_section_type_name (ebl, section, buf, len) /* Handle processor-specific section names. */ else if (section >= SHT_LOPROC && section <= SHT_HIPROC) snprintf (buf, len, "SHT_LOPROC+%x", section - SHT_LOPROC); - else if (section >= SHT_LOUSER && section <= SHT_HIUSER) + else if ((unsigned int) section >= SHT_LOUSER + && (unsigned int) section <= SHT_HIUSER) snprintf (buf, len, "SHT_LOUSER+%x", section - SHT_LOUSER); else snprintf (buf, len, "%s: %d", gettext (""), section); diff --git a/elfutils/libelf/Makefile.am b/elfutils/libelf/Makefile.am index 9458ddb11..5952e7c30 100644 --- a/elfutils/libelf/Makefile.am +++ b/elfutils/libelf/Makefile.am @@ -75,7 +75,7 @@ libelf_so_SOURCES = libelf.so: libelf_pic.a libelf.map $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ -Wl,--version-script,$(srcdir)/libelf.map,--no-undefined \ - -Wl,--soname,$@.$(VERSION) + -Wl,--soname,$@.$(VERSION),-z-defs ln -fs $@ $@.$(VERSION) %.os: %.c %.o diff --git a/elfutils/libelf/elf32_getphdr.c b/elfutils/libelf/elf32_getphdr.c index d19d0a7e3..d691afd98 100644 --- a/elfutils/libelf/elf32_getphdr.c +++ b/elfutils/libelf/elf32_getphdr.c @@ -139,8 +139,9 @@ elfw2(LIBELFBITS,getphdr) (Elf *elf) elf->state.ELFW(elf,LIBELFBITS).phdr_flags |= ELF_F_MALLOCED; /* Read the header. */ - if (pread (elf->fildes, elf->state.ELFW(elf,LIBELFBITS).phdr, size, - (elf->start_offset + ehdr->e_phoff)) != size) + if ((size_t) pread (elf->fildes, + elf->state.ELFW(elf,LIBELFBITS).phdr, size, + (elf->start_offset + ehdr->e_phoff)) != size) { /* Severe problems. We cannot read the data. */ __libelf_seterrno (ELF_E_READ_ERROR); diff --git a/elfutils/libelf/elf32_getshdr.c b/elfutils/libelf/elf32_getshdr.c index 4bb6e0300..f52caf56d 100644 --- a/elfutils/libelf/elf32_getshdr.c +++ b/elfutils/libelf/elf32_getshdr.c @@ -124,8 +124,9 @@ elfw2(LIBELFBITS,getshdr) (Elf_Scn *scn) else if (elf->fildes != -1) { /* Read the header. */ - if (pread (elf->fildes, elf->state.ELFW(elf,LIBELFBITS).shdr, size, - elf->start_offset + ehdr->e_shoff) != size) + if ((size_t) pread (elf->fildes, + elf->state.ELFW(elf,LIBELFBITS).shdr, size, + elf->start_offset + ehdr->e_shoff) != size) { /* Severe problems. We cannot read the data. */ __libelf_seterrno (ELF_E_READ_ERROR); diff --git a/elfutils/libelf/elf32_updatefile.c b/elfutils/libelf/elf32_updatefile.c index e232daa9c..000fedc32 100644 --- a/elfutils/libelf/elf32_updatefile.c +++ b/elfutils/libelf/elf32_updatefile.c @@ -65,7 +65,7 @@ sort_sections (Elf_Scn **scns, Elf_ScnList *list) Elf_Scn **scnp = scns; do { - int cnt; + size_t cnt; for (cnt = 0; cnt < list->cnt; ++cnt) *scnp++ = &list->data[cnt]; @@ -327,7 +327,7 @@ fill (int fd, off_t pos, size_t len, char *fillbuf, size_t *filledp) /* This many bytes we want to write in this round. */ size_t n = MIN (filled, len); - if (unlikely (pwrite (fd, fillbuf, n, pos) != n)) + if (unlikely ((size_t) pwrite (fd, fillbuf, n, pos) != n)) { __libelf_seterrno (ELF_E_WRITE_ERROR); return 1; @@ -444,9 +444,9 @@ __elfw2(LIBELFBITS,updatefile) (Elf *elf, int change_bo, size_t shnum) } /* Write out the ELF header. */ - if (unlikely (pwrite (elf->fildes, out_phdr, - sizeof (ElfW2(LIBELFBITS,Phdr)) * ehdr->e_phnum, - ehdr->e_phoff) + if (unlikely ((size_t) pwrite (elf->fildes, out_phdr, + sizeof (ElfW2(LIBELFBITS,Phdr)) + * ehdr->e_phnum, ehdr->e_phoff) != sizeof (ElfW2(LIBELFBITS,Phdr)) * ehdr->e_phnum)) { __libelf_seterrno (ELF_E_WRITE_ERROR); @@ -550,8 +550,9 @@ __elfw2(LIBELFBITS,updatefile) (Elf *elf, int change_bo, size_t shnum) (*fctp) (buf, dl->data.d.d_buf, dl->data.d.d_size, 1); } - if (unlikely (pwrite (elf->fildes, buf, - dl->data.d.d_size, last_offset) + if (unlikely ((size_t) pwrite (elf->fildes, buf, + dl->data.d.d_size, + last_offset) != dl->data.d.d_size)) { if (buf != dl->data.d.d_buf && buf != tmpbuf) @@ -590,9 +591,9 @@ __elfw2(LIBELFBITS,updatefile) (Elf *elf, int change_bo, size_t shnum) /* Write out the section header table. */ if (shdr_flags & ELF_F_DIRTY - && unlikely (pwrite (elf->fildes, shdr_data, - sizeof (ElfW2(LIBELFBITS,Shdr)) * shnum, - shdr_offset) + && unlikely ((size_t) pwrite (elf->fildes, shdr_data, + sizeof (ElfW2(LIBELFBITS,Shdr)) + * shnum, shdr_offset) != sizeof (ElfW2(LIBELFBITS,Shdr)) * shnum)) { __libelf_seterrno (ELF_E_WRITE_ERROR); diff --git a/elfutils/libelf/elf32_updatenull.c b/elfutils/libelf/elf32_updatenull.c index d8483f47d..59fcdf193 100644 --- a/elfutils/libelf/elf32_updatenull.c +++ b/elfutils/libelf/elf32_updatenull.c @@ -126,7 +126,7 @@ __elfw2(LIBELFBITS,updatenull) (Elf *elf, int *change_bop, size_t shnum) { /* The user is supposed to fill out e_phoff. Use it and e_phnum to determine the maximum extend. */ - size = MAX (size, + size = MAX ((size_t) size, ehdr->e_phoff + elf_typesize (LIBELFBITS, ELF_T_PHDR, ehdr->e_phnum)); } @@ -164,7 +164,7 @@ __elfw2(LIBELFBITS,updatenull) (Elf *elf, int *change_bop, size_t shnum) do { - int cnt; + size_t cnt; for (cnt = first == true; cnt < list->cnt; ++cnt) { @@ -252,7 +252,8 @@ __elfw2(LIBELFBITS,updatenull) (Elf *elf, int *change_bop, size_t shnum) /* The user specified the offset and the size. All we have to do is check whether this block fits in the size specified for the section. */ - if (unlikely (dl->data.d.d_off + dl->data.d.d_size + if (unlikely ((GElf_Word) (dl->data.d.d_off + + dl->data.d.d_size) > shdr->sh_size)) { __libelf_seterrno (ELF_E_SECTION_TOO_SMALL); @@ -278,7 +279,7 @@ __elfw2(LIBELFBITS,updatenull) (Elf *elf, int *change_bop, size_t shnum) if (elf->flags & ELF_F_LAYOUT) { - size = MAX (size, + size = MAX ((GElf_Word) size, shdr->sh_offset + (shdr->sh_type != SHT_NOBITS ? shdr->sh_size : 0)); @@ -302,10 +303,12 @@ __elfw2(LIBELFBITS,updatenull) (Elf *elf, int *change_bop, size_t shnum) scn->shdr_flags); size = (size + sh_align - 1) & ~(sh_align - 1); - update_if_changed (shdr->sh_offset, size, changed); + update_if_changed (shdr->sh_offset, (GElf_Word) size, + changed); /* See whether the section size is correct. */ - update_if_changed (shdr->sh_size, offset, changed); + update_if_changed (shdr->sh_size, (GElf_Word) offset, + changed); if (shdr->sh_type != SHT_NOBITS) size += offset; @@ -335,9 +338,9 @@ __elfw2(LIBELFBITS,updatenull) (Elf *elf, int *change_bop, size_t shnum) { /* The user is supposed to fill out e_phoff. Use it and e_phnum to determine the maximum extend. */ - size = MAX (size, (ehdr->e_shoff - + (elf_typesize (LIBELFBITS, ELF_T_SHDR, - shnum)))); + size = MAX ((GElf_Word) size, + (ehdr->e_shoff + + (elf_typesize (LIBELFBITS, ELF_T_SHDR, shnum)))); } else { @@ -349,7 +352,7 @@ __elfw2(LIBELFBITS,updatenull) (Elf *elf, int *change_bop, size_t shnum) #define SHDR_ALIGN sizeof (ElfW2(LIBELFBITS,Off)) size = (size + SHDR_ALIGN - 1) & ~(SHDR_ALIGN - 1); - update_if_changed (ehdr->e_shoff, size, elf->flags); + update_if_changed (ehdr->e_shoff, (GElf_Word) size, elf->flags); update_if_changed (ehdr->e_shentsize, elf_typesize (LIBELFBITS, ELF_T_SHDR, 1), ehdr_flags); diff --git a/elfutils/libelf/elf_begin.c b/elfutils/libelf/elf_begin.c index 60c6fb106..45b2117c2 100644 --- a/elfutils/libelf/elf_begin.c +++ b/elfutils/libelf/elf_begin.c @@ -84,7 +84,7 @@ get_shnum (/*@null@*/ void *map_address, unsigned char *e_ident, int fildes, ehdr.p = alloca (len); /* Fill it. */ - if (pread (fildes, ehdr.p, len, offset) != len) + if ((size_t) pread (fildes, ehdr.p, len, offset) != len) /* Failed reading. */ return (size_t) -1l; @@ -624,8 +624,9 @@ read_long_names (Elf *elf) len); else { - if (pread (elf->fildes, newp, len, - elf->start_offset + offset + sizeof (struct ar_hdr)) + if ((size_t) pread (elf->fildes, newp, len, + elf->start_offset + offset + + sizeof (struct ar_hdr)) != len) { /* We were not able to read all data. */ diff --git a/elfutils/libelf/elf_getarsym.c b/elfutils/libelf/elf_getarsym.c index 7fdb1525d..463c65fbc 100644 --- a/elfutils/libelf/elf_getarsym.c +++ b/elfutils/libelf/elf_getarsym.c @@ -184,15 +184,15 @@ elf_getarsym (Elf *elf, size_t *ptr) new_str = (char *) (elf->state.ar.ar_sym + n + 1); /* Now read the data from the file. */ - if (pread (elf->fildes, file_data, n * sizeof (uint32_t), - elf->start_offset - + SARMAG + sizeof (struct ar_hdr) - + sizeof (uint32_t)) != n * sizeof (uint32_t) - || (pread (elf->fildes, new_str, - index_size - n * sizeof (uint32_t), - elf->start_offset - + SARMAG + sizeof (struct ar_hdr) - + (n + 1) * sizeof (uint32_t)) + if ((size_t) pread (elf->fildes, file_data, + n * sizeof (uint32_t), elf->start_offset + + SARMAG + sizeof (struct ar_hdr) + + sizeof (uint32_t)) != n * sizeof (uint32_t) + || ((size_t) pread (elf->fildes, new_str, + index_size - n * sizeof (uint32_t), + elf->start_offset + + SARMAG + sizeof (struct ar_hdr) + + (n + 1) * sizeof (uint32_t)) != index_size - n * sizeof (uint32_t))) { /* We were not able to read the data. */ diff --git a/elfutils/libelf/elf_getdata.c b/elfutils/libelf/elf_getdata.c index 997582024..47526efc2 100644 --- a/elfutils/libelf/elf_getdata.c +++ b/elfutils/libelf/elf_getdata.c @@ -268,8 +268,8 @@ __libelf_set_rawdata (Elf_Scn *scn) return 1; } - if (pread (elf->fildes, scn->rawdata.d.d_buf, size, - elf->start_offset + offset) != size) + if ((size_t) pread (elf->fildes, scn->rawdata.d.d_buf, size, + elf->start_offset + offset) != size) { /* Cannot read the data. */ free (scn->rawdata.d.d_buf); diff --git a/elfutils/libelf/elf_readall.c b/elfutils/libelf/elf_readall.c index 2d1602903..c1b64abec 100644 --- a/elfutils/libelf/elf_readall.c +++ b/elfutils/libelf/elf_readall.c @@ -76,8 +76,8 @@ __libelf_readall (Elf *elf) if (mem != NULL) { /* Read the file content. */ - if (pread (elf->fildes, mem, elf->maximum_size, - elf->start_offset) != elf->maximum_size) + if ((size_t) pread (elf->fildes, mem, elf->maximum_size, + elf->start_offset) != elf->maximum_size) { /* Something went wrong. */ __libelf_seterrno (ELF_E_READ_ERROR); diff --git a/elfutils/libelf/gelf_rawchunk.c b/elfutils/libelf/gelf_rawchunk.c index b8178396c..4310d781c 100644 --- a/elfutils/libelf/gelf_rawchunk.c +++ b/elfutils/libelf/gelf_rawchunk.c @@ -54,7 +54,8 @@ gelf_rawchunk (Elf *elf, GElf_Off offset, GElf_Word size) __libelf_seterrno (ELF_E_NOMEM); else /* Read the file content. */ - if (pread (elf->fildes, result, size, elf->start_offset + offset) != size) + if ((size_t) pread (elf->fildes, result, size, elf->start_offset + offset) + != size) { /* Something went wrong. */ __libelf_seterrno (ELF_E_READ_ERROR); diff --git a/elfutils/po/elfutils.pot b/elfutils/po/elfutils.pot index 7bd24436c..35e72f152 100644 --- a/elfutils/po/elfutils.pot +++ b/elfutils/po/elfutils.pot @@ -781,7 +781,7 @@ msgstr "" msgid " %#06x: Parent %d: %s\n" msgstr "" -#: src/readelf.c:2241 +#: src/readelf.c:2242 #, c-format msgid "" "\n" @@ -794,20 +794,20 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:2273 +#: src/readelf.c:2274 msgid " 0 *local* " msgstr "" -#: src/readelf.c:2278 +#: src/readelf.c:2279 msgid " 1 *global* " msgstr "" -#: src/readelf.c:2334 +#: src/readelf.c:2335 #, c-format msgid "cannot get data for section %d: %s" msgstr "" -#: src/readelf.c:2344 +#: src/readelf.c:2345 #, c-format msgid "" "\n" @@ -822,49 +822,49 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:2389 +#: src/readelf.c:2390 #, c-format msgid " Length Number % of total Coverage" msgstr "" -#: src/readelf.c:2390 +#: src/readelf.c:2391 #, c-format msgid " 0 %6 %5.1f%%\n" msgstr "" -#: src/readelf.c:2396 +#: src/readelf.c:2397 #, c-format msgid "%7d %6 %5.1f%% %5.1f%%\n" msgstr "" -#: src/readelf.c:2410 +#: src/readelf.c:2411 #, c-format msgid "" " Average number of tests: successful lookup: %f\n" " unsuccessful lookup: %f\n" msgstr "" -#: src/readelf.c:2507 +#: src/readelf.c:2508 #, c-format msgid "unknown tag %hx" msgstr "" -#: src/readelf.c:2509 +#: src/readelf.c:2510 #, c-format msgid "unknown user tag %hx" msgstr "" -#: src/readelf.c:2692 +#: src/readelf.c:2693 #, c-format msgid "unknown attribute %hx" msgstr "" -#: src/readelf.c:2695 +#: src/readelf.c:2696 #, c-format msgid "unknown user attribute %hx" msgstr "" -#: src/readelf.c:2741 +#: src/readelf.c:2742 #, c-format msgid "unknown form %" msgstr "" @@ -1128,12 +1128,12 @@ msgstr "" msgid "while closing `%s'" msgstr "" -#: src/size.c:444 src/size.c:583 +#: src/size.c:442 src/size.c:584 #, c-format msgid " (ex %s)" msgstr "" -#: src/size.c:608 +#: src/size.c:609 msgid "(TOTALS)\n" msgstr "" @@ -1776,12 +1776,20 @@ msgstr "" msgid "cannot change access mode of output file" msgstr "" -#: src/ldgeneric.c:5789 +#: src/ldgeneric.c:5785 +msgid "cannot stat output file" +msgstr "" + +#: src/ldgeneric.c:5791 msgid "cannot rename output file" msgstr "" -#: src/ldgeneric.c:5837 src/ldgeneric.c:5848 src/ldgeneric.c:5859 -#: src/ldgeneric.c:5877 src/ldgeneric.c:5890 src/ldgeneric.c:5902 +#: src/ldgeneric.c:5801 +msgid "WARNING: temporary output overwritten before linking finished" +msgstr "" + +#: src/ldgeneric.c:5854 src/ldgeneric.c:5865 src/ldgeneric.c:5876 +#: src/ldgeneric.c:5894 src/ldgeneric.c:5907 src/ldgeneric.c:5919 #, c-format msgid "no machine specific '%s' implementation" msgstr "" @@ -2013,7 +2021,7 @@ msgstr "" #: src/elflint.c:706 #, c-format -msgid "section [%2d] '%s': symbol %d: unknow symbol binding" +msgid "section [%2d] '%s': symbol %d: unknown symbol binding" msgstr "" #: src/elflint.c:718 diff --git a/elfutils/src/elflint.c b/elfutils/src/elflint.c index 1f0e222d6..e6a28573c 100644 --- a/elfutils/src/elflint.c +++ b/elfutils/src/elflint.c @@ -141,7 +141,7 @@ main (int argc, char *argv[]) elf_errmsg (-1)); else { - int prev_error_message_count = error_message_count; + unsigned int prev_error_message_count = error_message_count; struct stat64 st; if (fstat64 (fd, &st) != 0) @@ -324,14 +324,14 @@ static const int valid_e_machine[] = /* Number of sections. */ -static int shnum; +static unsigned int shnum; static void check_elf_header (Ebl *ebl, GElf_Ehdr *ehdr, size_t size) { char buf[512]; - int cnt; + size_t cnt; /* Check e_ident field. */ if (ehdr->e_ident[EI_MAG0] != ELFMAG0) @@ -506,7 +506,7 @@ check_scn_group (Ebl *ebl, GElf_Ehdr *ehdr, int idx) { /* No reference so far. Search following sections, maybe the order is wrong. */ - int cnt; + size_t cnt; for (cnt = idx + 1; cnt < shnum; ++cnt) { @@ -515,7 +515,7 @@ check_scn_group (Ebl *ebl, GElf_Ehdr *ehdr, int idx) GElf_Shdr *shdr; Elf_Data *data; Elf32_Word *grpdata; - int inner; + size_t inner; scn = elf_getscn (ebl->elf, cnt); shdr = gelf_getshdr (scn, &shdr_mem); @@ -535,7 +535,7 @@ check_scn_group (Ebl *ebl, GElf_Ehdr *ehdr, int idx) grpdata = (Elf32_Word *) data->d_buf; for (inner = 1; inner < data->d_size / sizeof (Elf32_Word); ++inner) - if (grpdata[inner] == idx) + if (grpdata[inner] == (Elf32_Word) idx) goto out; } @@ -562,7 +562,7 @@ check_symtab (Ebl *ebl, GElf_Ehdr *ehdr, int idx) Elf_Data *data; GElf_Shdr strshdr_mem; GElf_Shdr *strshdr; - int cnt; + size_t cnt; GElf_Shdr xndxshdr_mem; GElf_Shdr *xndxshdr = NULL; Elf_Data *xndxdata = NULL; @@ -592,7 +592,7 @@ check_symtab (Ebl *ebl, GElf_Ehdr *ehdr, int idx) /* Search for an extended section index table section. */ for (cnt = 1; cnt < shnum; ++cnt) - if (cnt != idx) + if (cnt != (size_t) idx) { Elf_Scn *xndxscn = elf_getscn (ebl->elf, cnt); xndxshdr = gelf_getshdr (xndxscn, &xndxshdr_mem); @@ -603,7 +603,7 @@ check_symtab (Ebl *ebl, GElf_Ehdr *ehdr, int idx) continue; if (xndxshdr->sh_type == SHT_SYMTAB_SHNDX - && xndxshdr->sh_link == idx) + && xndxshdr->sh_link == (GElf_Word) idx) break; } if (cnt == shnum) @@ -704,7 +704,7 @@ section [%2d] '%s': symbol %d: invalid section index"), if (GELF_ST_BIND (sym->st_info) >= STB_NUM) error (0, 0, gettext ("\ -section [%2d] '%s': symbol %d: unknow symbol binding"), +section [%2d] '%s': symbol %d: unknown symbol binding"), idx, section_name (ebl, ehdr, idx), cnt); if (xndx > 0 && xndx < shnum) @@ -758,7 +758,7 @@ check_rela (Ebl *ebl, GElf_Ehdr *ehdr, int idx) GElf_Shdr *symshdr; GElf_Shdr destshdr_mem; GElf_Shdr *destshdr = NULL; - int cnt; + size_t cnt; scn = elf_getscn (ebl->elf, idx); shdr = gelf_getshdr (scn, &shdr_mem); @@ -844,7 +844,7 @@ check_rel (Ebl *ebl, GElf_Ehdr *ehdr, int idx) GElf_Shdr *symshdr; GElf_Shdr destshdr_mem; GElf_Shdr *destshdr = NULL; - int cnt; + size_t cnt; scn = elf_getscn (ebl->elf, idx); shdr = gelf_getshdr (scn, &shdr_mem); @@ -933,7 +933,7 @@ check_dynamic (Ebl *ebl, GElf_Ehdr *ehdr, int idx) Elf_Data *data; GElf_Shdr strshdr_mem; GElf_Shdr *strshdr; - int cnt; + size_t cnt; static const bool dependencies[DT_NUM][DT_NUM] = { [DT_NEEDED] = { [DT_STRTAB] = true }, @@ -1130,7 +1130,7 @@ check_symtab_shndx (Ebl *ebl, GElf_Ehdr *ehdr, int idx) GElf_Shdr symshdr_mem; GElf_Shdr *symshdr; Elf_Scn *symscn; - int cnt; + size_t cnt; Elf_Data *data; Elf_Data *symdata; @@ -1269,7 +1269,7 @@ section [%2d] '%s': hash table section is too small (is %ld, expected %ld)"), if (symshdr != NULL) { size_t symsize = symshdr->sh_size / symshdr->sh_entsize; - int cnt; + size_t cnt; if (nchain < symshdr->sh_size / symshdr->sh_entsize) error (0, 0, @@ -1445,10 +1445,10 @@ static const struct { const char *name; size_t namelen; - int type; + GElf_Word type; enum { unused, exact, atleast } attrflag; - int attr; - int attr2; + GElf_Word attr; + GElf_Word attr2; } special_sections[] = { /* See figure 4-14 in the gABI. */ @@ -1547,7 +1547,7 @@ check_sections (Ebl *ebl, GElf_Ehdr *ehdr) { GElf_Shdr shdr_mem; GElf_Shdr *shdr; - int cnt; + size_t cnt; bool dot_interp_section = false; /* Allocate array to count references in section groups. */ diff --git a/elfutils/src/nm.c b/elfutils/src/nm.c index 069f408b4..fa2d36772 100644 --- a/elfutils/src/nm.c +++ b/elfutils/src/nm.c @@ -156,7 +156,7 @@ static bool print_armap; static bool reverse_sort; /* Type of the section we are printing. */ -static int symsec_type = SHT_SYMTAB; +static GElf_Word symsec_type = SHT_SYMTAB; /* Sorting selection. */ static enum @@ -616,7 +616,7 @@ get_local_names (Ebl *ebl, Dwarf_Debug dbg) && (dwarf_attr (die, DW_AT_decl_file, &file, &err) == DW_DLV_OK) && dwarf_formudata (file, &fileidx, &err) == DW_DLV_OK - && fileidx > 0 && fileidx <= nfiles + && fileidx > 0 && fileidx <= (Dwarf_Unsigned) nfiles && (dwarf_attr (die, DW_AT_decl_line, &line, &err) == DW_DLV_OK) && dwarf_formudata (line, &lineno, &err) == DW_DLV_OK @@ -1141,7 +1141,7 @@ show_symbols (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, Elf_Scn *xndxscn, size_t nentries; size_t cnt; GElf_SymX *sym_mem; - int longest_name = 4; + size_t longest_name = 4; int sort_by_name (const void *p1, const void *p2) { @@ -1192,7 +1192,7 @@ show_symbols (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, Elf_Scn *xndxscn, /* Allocate the memory. - XXX We can here a dirty trick. Since GElf_Sym == Elf64_Sym we + XXX We can use a dirty trick here. Since GElf_Sym == Elf64_Sym we can use the data memory instead of copying again if what we read is a 64 bit file. */ if (nentries * sizeof (GElf_SymX) < MAX_STACK_ALLOC) diff --git a/elfutils/src/readelf.c b/elfutils/src/readelf.c index a7fe87e83..e84ce7ffe 100644 --- a/elfutils/src/readelf.c +++ b/elfutils/src/readelf.c @@ -1045,7 +1045,7 @@ handle_dynamic (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr) int class = gelf_getclass (ebl->elf); GElf_Shdr glink; Elf_Data *data; - int cnt; + size_t cnt; size_t shstrndx; /* Get the data of the section. */ @@ -1539,7 +1539,7 @@ print_symtab (Ebl *ebl, GElf_Ehdr *ehdr, int type) GElf_Shdr shdr_mem; GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr != NULL && shdr->sh_type == type) + if (shdr != NULL && shdr->sh_type == (GElf_Word) type) handle_symtab (ebl, ehdr, scn, shdr); } } @@ -2080,7 +2080,7 @@ handle_versym (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr) if (def == NULL) break; - nvername = MAX (nvername, def->vd_ndx & 0x7fff); + nvername = MAX (nvername, (size_t) (def->vd_ndx & 0x7fff)); offset += def->vd_next; } @@ -2123,7 +2123,8 @@ handle_versym (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr) if (aux == NULL) break; - nvername = MAX (nvername, aux->vna_other & 0x7fff); + nvername = MAX (nvername, + (size_t) (aux->vna_other & 0x7fff)); auxoffset += aux->vna_next; } @@ -3265,7 +3266,7 @@ print_debug_info_section (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, Dwarf_Unsigned nextcu; int ret; Dwarf_Off cu_offset; - int level; + size_t level; printf (gettext ("\ \nDWARF section '%s' at offset %#" PRIx64 ":\n [Offset]\n"), diff --git a/elfutils/tests/Makefile.am b/elfutils/tests/Makefile.am index 0d453043d..da7b1c0ce 100644 --- a/elfutils/tests/Makefile.am +++ b/elfutils/tests/Makefile.am @@ -1,7 +1,7 @@ ## Process this file with automake to create Makefile.in ## Configure input file for elfutils. ## -## Copyright (C) 1996-2001, 2002 Red Hat, Inc. +## Copyright (C) 1996-2002, 2003 Red Hat, Inc. ## ## This program is Open Source software; you can redistribute it and/or ## modify it under the terms of the Open Software License version 1.0 as @@ -15,6 +15,7 @@ ## DEFS = -DHAVE_CONFIG_H -D_GNU_SOURCE AM_CFLAGS = -Wall # -Werror +AM_LDFLAGS = -Wl,-rpath,\$$ORIGIN/../libasm:\$$ORIGIN/../libdwarf:\$$ORIGIN/../libdw:\$$ORIGIN/../libebl:\$$ORIGIN/../libelf INCLUDES = -I$(top_srcdir)/libasm -I$(top_srcdir)/libdwarf \ -I$(top_srcdir)/libdw \ -I$(top_srcdir)/libebl -I$(top_srcdir)/libelf \ @@ -37,7 +38,8 @@ TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \ run-show-ciefde.sh run-show-abbrev.sh hash asm-tst1 asm-tst2 \ asm-tst3 asm-tst4 asm-tst5 asm-tst6 asm-tst7 asm-tst8 asm-tst9 \ msg_tst newscn run-strip-test.sh run-strip-test2.sh \ - run-get-pubnames2.sh run-ecp-test.sh run-ecp-test2.sh + run-ecp-test.sh run-ecp-test2.sh \ + run-get-pubnames2.sh EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-firstdie.sh \ run-show-dies.sh run-show-tags.sh run-show-die-info1.sh \ @@ -50,8 +52,6 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-firstdie.sh \ testfile6.bz2 testfile7.bz2 testfile8.bz2 testfile9.bz2 \ testfile10 -TESTS_ENVIRONMENT = LD_LIBRARY_PATH="../libelf:../libebl:../libasm:../libdwarf:../libdw$${LD_LIBRARY_PATH:+:}$$LD_LIBRARY_PATH" - arextract_LDADD = ../libelf/libelf.so arsymtest_LDADD = ../libelf/libelf.so newfile_LDADD = ../libelf/libelf.so diff --git a/elfutils/tests/get-pubnames2.c b/elfutils/tests/get-pubnames2.c index 2fa32edb1..d4f29d057 100644 --- a/elfutils/tests/get-pubnames2.c +++ b/elfutils/tests/get-pubnames2.c @@ -23,12 +23,14 @@ static int globcnt; static int callback (Dwarf *dbg, Dwarf_Global *gl, void *arg) { + int result = DWARF_CB_OK; + const char *diename; + Dwarf_Die die; + printf (" [%2d] \"%s\", die: %llu, cu: %llu\n", globcnt++, gl->name, (unsigned long long int) gl->die_offset, (unsigned long long int) gl->cu_offset); -#if 0 - { Dwarf_Die cu_die; const char *cuname; const char *diename; @@ -37,28 +39,21 @@ callback (Dwarf *dbg, Dwarf_Global *gl, void *arg) || (cuname = dwarf_diename (&cu_die)) == NULL) { puts ("failed to get CU die"); - result = 1; + result = DWARF_CB_ABORT; } else - { - printf ("CU name: \"%s\"\n", cuname); - dwarf_dealloc (dbg, cuname, DW_DLA_STRING); - } + printf ("CU name: \"%s\"\n", cuname); if (dwarf_offdie (dbg, gl->die_offset, &die) == NULL || (diename = dwarf_diename (&die)) == NULL) { puts ("failed to get object die"); - result = 1; + result = DWARF_CB_ABORT; } else - { - printf ("object name: \"%s\"\n", diename); - dwarf_dealloc (dbg, diename, DW_DLA_STRING); - } - } -#endif - return DWARF_CB_OK; + printf ("object name: \"%s\"\n", diename); + + return result; }