Initial revision

CVS patchset: 6646
CVS date: 2003/03/04 21:57:14
This commit is contained in:
jbj 2003-03-04 21:57:14 +00:00
parent dd8e9be4ce
commit c207ce7fd0
22 changed files with 775 additions and 0 deletions

View File

@ -0,0 +1,205 @@
/* Get public symbol information.
Copyright (C) 2002 Red Hat, Inc.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
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
published by the Free Software Foundation.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <sys/param.h>
#include <libdwP.h>
static int
get_offsets (Dwarf *dbg)
{
size_t allocated = 0;
size_t cnt = 0;
struct pubnames_s *mem = NULL;
const size_t entsize = sizeof (struct pubnames_s);
unsigned char *const startp = dbg->sectiondata[IDX_debug_pubnames]->d_buf;
unsigned char *readp = startp;
unsigned char *endp = readp + dbg->sectiondata[IDX_debug_pubnames]->d_size;
while (readp + 14 < endp)
{
/* If necessary, allocate more entries. */
if (cnt >= allocated)
{
allocated = MAX (10, 2 * allocated);
struct pubnames_s *newmem
= (struct pubnames_s *) realloc (mem, allocated * entsize);
if (newmem == NULL)
{
__libdwarf_seterrno (DWARF_E_NOMEM);
err_return:
free (mem);
return -1;
}
mem = newmem;
}
/* Read the set header. */
int len_bytes = 4;
Dwarf_Off len = read_4ubyte_unaligned_inc (dbg, readp);
if (len == 0xffffffff)
{
len = read_8ubyte_unaligned_inc (dbg, readp);
len_bytes = 8;
}
/* Now we know the offset of the first offset/name pair. */
mem[cnt].set_start = readp + 2 + 2 * len_bytes - startp;
mem[cnt].address_len = len_bytes;
if (mem[cnt].set_start >= dbg->sectiondata[IDX_debug_pubnames]->d_size)
/* Something wrong, the first entry is beyond the end of
the section. */
break;
/* Read the version. It better be two for now. */
uint16_t version = read_2ubyte_unaligned (dbg, readp);
if (version != 2)
{
__libdwarf_seterrno (DWARF_E_INVALID_VERSION);
goto err_return;
}
/* Get the CU offset. */
if (len_bytes == 4)
mem[cnt].cu_offset = read_4ubyte_unaligned (dbg, readp + 2);
else
mem[cnt].cu_offset = read_8ubyte_unaligned (dbg, readp + 2);
/* Determine the size of the CU header. */
assert (dbg->sectiondata[IDX_debug_info] != NULL);
assert (dbg->sectiondata[IDX_debug_info]->d_buf != NULL);
assert (mem[cnt].cu_offset + 3
< dbg->sectiondata[IDX_debug_info]->d_size);
unsigned char *infop
= ((unsigned char *) dbg->sectiondata[IDX_debug_info]->d_buf
+ mem[cnt].cu_offset);
if (read_4ubyte_unaligned_noncvt (infop) == 0xffffffff)
mem[cnt].cu_header_size = 23;
else
mem[cnt].cu_header_size = 11;
++cnt;
/* Advance to the next set. */
readp += len;
}
if (mem == NULL)
{
__libdwarf_seterrno (DWARF_E_NO_ENTRY);
return -1;
}
dbg->pubnames_sets = (struct pubnames_s *) realloc (mem, cnt * entsize);
dbg->pubnames_nsets = cnt;
return 0;
}
size_t
dwarf_get_pubnames (dbg, callback, arg, offset)
Dwarf *dbg;
int (*callback) (Dwarf *, Dwarf_Global *, void *);
void *arg;
size_t offset;
{
/* Make sure it is a valid offset. */
if (unlikely (dbg->sectiondata[IDX_debug_pubnames] == NULL
|| offset >= dbg->sectiondata[IDX_debug_pubnames]->d_size))
/* No (more) entry. */
return 0;
/* If necessary read the set information. */
if (dbg->pubnames_nsets == 0 && get_offsets (dbg) != 0)
return (size_t) -1;
/* Find the place where to start. */
size_t cnt;
if (offset == 0)
{
cnt = 0;
offset = dbg->pubnames_sets[0].set_start;
}
else
{
for (cnt = 0; cnt + 1 < dbg->pubnames_nsets; ++cnt)
if (offset >= dbg->pubnames_sets[cnt].set_start)
{
assert (offset < dbg->pubnames_sets[cnt + 1].set_start);
break;
}
assert (cnt + 1 < dbg->pubnames_nsets);
}
unsigned char *startp
= (unsigned char *) dbg->sectiondata[IDX_debug_pubnames]->d_buf;
unsigned char *readp = startp + offset;
while (1)
{
Dwarf_Global gl;
gl.cu_offset = (dbg->pubnames_sets[cnt].cu_offset
+ dbg->pubnames_sets[cnt].cu_header_size);
while (1)
{
/* READP points to the next offset/name pair. */
if (dbg->pubnames_sets[cnt].address_len == 4)
gl.die_offset = read_4ubyte_unaligned_inc (dbg, readp);
else
gl.die_offset = read_8ubyte_unaligned_inc (dbg, readp);
/* If the offset is zero we reached the end of the set. */
if (gl.die_offset == 0)
break;
/* Add the CU offset. */
gl.die_offset += dbg->pubnames_sets[cnt].cu_offset;
gl.name = (char *) readp;
readp = (unsigned char *) rawmemchr (gl.name, '\0') + 1;
/* We found name and DIE offset. Report it. */
if (callback (dbg, &gl, arg) != DWARF_CB_OK)
{
/* The user wants us to stop. Return the offset of the
next entry. */
return readp - startp;
}
}
if (++cnt == dbg->pubnames_nsets)
/* This was the last set. */
break;
startp = (unsigned char *) dbg->sectiondata[IDX_debug_pubnames]->d_buf;
readp = startp + dbg->pubnames_sets[cnt].set_start;
}
/* We are done. No more entries. */
return 0;
}

View File

@ -0,0 +1,29 @@
/* Check section name for being that of a debug informatino section.
Copyright (C) 2002 Red Hat, Inc.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
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
published by the Open Source Initiative.
You should have received a copy of the Open Software License along
with this program; if not, you may obtain a copy of the Open Software
License version 1.0 from http://www.opensource.org/licenses/osl.php or
by writing the Open Source Initiative c/o Lawrence Rosen, Esq.,
3001 King Ranch Road, Ukiah, CA 95482. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdint.h>
#include <libeblP.h>
bool
ebl_debugscn_p (ebl, name)
Ebl *ebl;
const char *name;
{
return ebl->debugscn_p (name);
}

View File

@ -0,0 +1,37 @@
/* Interface for libebl_sparc module.
Copyright (C) 2002 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
published by the Open Source Initiative.
You should have received a copy of the Open Software License along
with this program; if not, you may obtain a copy of the Open Software
License version 1.0 from http://www.opensource.org/licenses/osl.php or
by writing the Open Source Initiative c/o Lawrence Rosen, Esq.,
3001 King Ranch Road, Ukiah, CA 95482. */
#ifndef _LIBEBL_SPARC_H
#define _LIBEBL_SPARC_H 1
#include <libeblP.h>
/* Constructor. */
extern int sparc_init (Elf *elf, GElf_Half machine, Ebl *eh, size_t ehlen);
/* Destructor. */
extern void sparc_destr (Ebl *bh);
/* Function to get relocation type name. */
extern const char *sparc_reloc_type_name (int type, char *buf, size_t len);
/* Check relocation type. */
extern bool sparc_reloc_type_check (int type);
/* Code note handling. */
extern bool sparc_core_note (const char *name, uint32_t type, uint32_t descsz,
const char *desc);
#endif /* libebl_sparc.h */

View File

@ -0,0 +1,11 @@
ELFUTILS_1.0 {
global:
sparc_backend_name;
sparc_destr;
sparc_init;
sparc_reloc_type_check;
sparc_reloc_type_name;
local:
*;
};

View File

@ -0,0 +1,26 @@
/* Destructor for SPARC specific backend library.
Copyright (C) 2002 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
published by the Open Source Initiative.
You should have received a copy of the Open Software License along
with this program; if not, you may obtain a copy of the Open Software
License version 1.0 from http://www.opensource.org/licenses/osl.php or
by writing the Open Source Initiative c/o Lawrence Rosen, Esq.,
3001 King Ranch Road, Ukiah, CA 95482. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <libebl_sparc.h>
void
sparc_destr (bh)
Ebl *bh;
{
/* Nothing to do so far. */
}

View File

@ -0,0 +1,45 @@
/* Initialization of SPARC specific backend library.
Copyright (C) 2002 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
published by the Open Source Initiative.
You should have received a copy of the Open Software License along
with this program; if not, you may obtain a copy of the Open Software
License version 1.0 from http://www.opensource.org/licenses/osl.php or
by writing the Open Source Initiative c/o Lawrence Rosen, Esq.,
3001 King Ranch Road, Ukiah, CA 95482. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <libebl_sparc.h>
int
sparc_init (elf, machine, eh, ehlen)
Elf *elf;
GElf_Half machine;
Ebl *eh;
size_t ehlen;
{
/* Check whether the Elf_BH object has a sufficent size. */
if (ehlen < sizeof (Ebl))
return 1;
/* We handle it. */
if (machine == EM_SPARCV9)
eh->name = "SPARC v9";
else if (machine == EM_SPARC32PLUS)
eh->name = "SPARC v8+";
else
eh->name = "SPARC";
eh->reloc_type_name = sparc_reloc_type_name;
eh->reloc_type_check = sparc_reloc_type_check;
//eh->core_note = sparc_core_note;
eh->destr = sparc_destr;
return 0;
}

View File

@ -0,0 +1,141 @@
/* SPARC specific symbolic name handling.
Copyright (C) 2002, 2003 Red Hat, Inc.
Written by Jakub Jelinek <jakub@redhat.com>, 2002.
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
published by the Open Source Initiative.
You should have received a copy of the Open Software License along
with this program; if not, you may obtain a copy of the Open Software
License version 1.0 from http://www.opensource.org/licenses/osl.php or
by writing the Open Source Initiative c/o Lawrence Rosen, Esq.,
3001 King Ranch Road, Ukiah, CA 95482. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <elf.h>
#include <stddef.h>
#include <libebl_sparc.h>
/* Return of the backend. */
const char *
sparc_backend_name (void)
{
return "sparc";
}
/* Relocation mapping table. */
static const char *reloc_map_table[] =
{
[R_SPARC_NONE] = "R_SPARC_NONE",
[R_SPARC_8] = "R_SPARC_8",
[R_SPARC_16] = "R_SPARC_16",
[R_SPARC_32] = "R_SPARC_32",
[R_SPARC_DISP8] = "R_SPARC_DISP8",
[R_SPARC_DISP16] = "R_SPARC_DISP16",
[R_SPARC_DISP32] = "R_SPARC_DISP32",
[R_SPARC_WDISP30] = "R_SPARC_WDISP30",
[R_SPARC_WDISP22] = "R_SPARC_WDISP22",
[R_SPARC_HI22] = "R_SPARC_HI22",
[R_SPARC_22] = "R_SPARC_22",
[R_SPARC_13] = "R_SPARC_13",
[R_SPARC_LO10] = "R_SPARC_LO10",
[R_SPARC_GOT10] = "R_SPARC_GOT10",
[R_SPARC_GOT13] = "R_SPARC_GOT13",
[R_SPARC_GOT22] = "R_SPARC_GOT22",
[R_SPARC_PC10] = "R_SPARC_PC10",
[R_SPARC_PC22] = "R_SPARC_PC22",
[R_SPARC_WPLT30] = "R_SPARC_WPLT30",
[R_SPARC_COPY] = "R_SPARC_COPY",
[R_SPARC_GLOB_DAT] = "R_SPARC_GLOB_DAT",
[R_SPARC_JMP_SLOT] = "R_SPARC_JMP_SLOT",
[R_SPARC_RELATIVE] = "R_SPARC_RELATIVE",
[R_SPARC_UA32] = "R_SPARC_UA32",
[R_SPARC_PLT32] = "R_SPARC_PLT32",
[R_SPARC_HIPLT22] = "R_SPARC_HIPLT22",
[R_SPARC_LOPLT10] = "R_SPARC_LOPLT10",
[R_SPARC_PCPLT32] = "R_SPARC_PCPLT32",
[R_SPARC_PCPLT22] = "R_SPARC_PCPLT22",
[R_SPARC_PCPLT10] = "R_SPARC_PCPLT10",
[R_SPARC_10] = "R_SPARC_10",
[R_SPARC_11] = "R_SPARC_11",
[R_SPARC_64] = "R_SPARC_64",
[R_SPARC_OLO10] = "R_SPARC_OLO10",
[R_SPARC_HH22] = "R_SPARC_HH22",
[R_SPARC_HM10] = "R_SPARC_HM10",
[R_SPARC_LM22] = "R_SPARC_LM22",
[R_SPARC_PC_HH22] = "R_SPARC_PC_HH22",
[R_SPARC_PC_HM10] = "R_SPARC_PC_HM10",
[R_SPARC_PC_LM22] = "R_SPARC_PC_LM22",
[R_SPARC_WDISP16] = "R_SPARC_WDISP16",
[R_SPARC_WDISP19] = "R_SPARC_WDISP19",
[R_SPARC_7] = "R_SPARC_7",
[R_SPARC_5] = "R_SPARC_5",
[R_SPARC_6] = "R_SPARC_6",
[R_SPARC_DISP64] = "R_SPARC_DISP64",
[R_SPARC_PLT64] = "R_SPARC_PLT64",
[R_SPARC_HIX22] = "R_SPARC_HIX22",
[R_SPARC_LOX10] = "R_SPARC_LOX10",
[R_SPARC_H44] = "R_SPARC_H44",
[R_SPARC_M44] = "R_SPARC_M44",
[R_SPARC_L44] = "R_SPARC_L44",
[R_SPARC_REGISTER] = "R_SPARC_REGISTER",
[R_SPARC_UA64] = "R_SPARC_UA64",
[R_SPARC_UA16] = "R_SPARC_UA16",
[R_SPARC_TLS_GD_HI22] = "R_SPARC_TLS_GD_HI22",
[R_SPARC_TLS_GD_LO10] = "R_SPARC_TLS_GD_LO10",
[R_SPARC_TLS_GD_ADD] = "R_SPARC_TLS_GD_ADD",
[R_SPARC_TLS_GD_CALL] = "R_SPARC_TLS_GD_CALL",
[R_SPARC_TLS_LDM_HI22] = "R_SPARC_TLS_LDM_HI22",
[R_SPARC_TLS_LDM_LO10] = "R_SPARC_TLS_LDM_LO10",
[R_SPARC_TLS_LDM_ADD] = "R_SPARC_TLS_LDM_ADD",
[R_SPARC_TLS_LDM_CALL] = "R_SPARC_TLS_LDM_CALL",
[R_SPARC_TLS_LDO_HIX22] = "R_SPARC_TLS_LDO_HIX22",
[R_SPARC_TLS_LDO_LOX10] = "R_SPARC_TLS_LDO_LOX10",
[R_SPARC_TLS_LDO_ADD] = "R_SPARC_TLS_LDO_ADD",
[R_SPARC_TLS_IE_HI22] = "R_SPARC_TLS_IE_HI22",
[R_SPARC_TLS_IE_LO10] = "R_SPARC_TLS_IE_LO10",
[R_SPARC_TLS_IE_LD] = "R_SPARC_TLS_IE_LD",
[R_SPARC_TLS_IE_LDX] = "R_SPARC_TLS_IE_LDX",
[R_SPARC_TLS_IE_ADD] = "R_SPARC_TLS_IE_ADD",
[R_SPARC_TLS_LE_HIX22] = "R_SPARC_TLS_LE_HIX22",
[R_SPARC_TLS_LE_LOX10] = "R_SPARC_TLS_LE_LOX10",
[R_SPARC_TLS_DTPMOD32] = "R_SPARC_TLS_DTPMOD32",
[R_SPARC_TLS_DTPMOD64] = "R_SPARC_TLS_DTPMOD64",
[R_SPARC_TLS_DTPOFF32] = "R_SPARC_TLS_DTPOFF32",
[R_SPARC_TLS_DTPOFF64] = "R_SPARC_TLS_DTPOFF64",
[R_SPARC_TLS_TPOFF32] = "R_SPARC_TLS_TPOFF32",
[R_SPARC_TLS_TPOFF64] = "R_SPARC_TLS_TPOFF64"
};
/* Determine relocation type string for sparc. */
const char *
sparc_reloc_type_name (int type, char *buf, size_t len)
{
/* High 24 bits of r_type are used for second addend in R_SPARC_OLO10. */
if ((type & 0xff) == R_SPARC_OLO10)
return reloc_map_table[type & 0xff];
if (type < 0 || type >= R_SPARC_NUM)
return NULL;
return reloc_map_table[type];
}
/* Check for correct relocation type. */
bool
sparc_reloc_type_check (int type)
{
if ((type & 0xff) == R_SPARC_OLO10)
return true;
return (type >= R_SPARC_NONE && type < R_SPARC_NUM
&& reloc_map_table[type] != NULL) ? true : false;
}

88
elfutils/tests/ecp.c Normal file
View File

@ -0,0 +1,88 @@
/* Copyright (C) 2002 Red Hat, Inc.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
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
published by the Open Source Initiative.
You should have received a copy of the Open Software License along
with this program; if not, you may obtain a copy of the Open Software
License version 1.0 from http://www.opensource.org/licenses/osl.php or
by writing the Open Source Initiative c/o Lawrence Rosen, Esq.,
3001 King Ranch Road, Ukiah, CA 95482. */
#include <errno.h>
#include <error.h>
#include <fcntl.h>
#include <gelf.h>
#include <stdlib.h>
#include <unistd.h>
int
main (int argc, char *argv[])
{
if (argc < 3)
error (EXIT_FAILURE, 0, "usage: %s FROMNAME TONAME", argv[0]);
elf_version (EV_CURRENT);
int infd = open (argv[1], O_RDONLY);
if (infd == -1)
error (EXIT_FAILURE, errno, "cannot open input file '%s'", argv[1]);
Elf *inelf = elf_begin (infd, ELF_C_READ, NULL);
if (inelf == NULL)
error (EXIT_FAILURE, 0, "problems opening '%s' as ELF file: %s",
argv[1], elf_errmsg (-1));
int outfd = creat (argv[2], 0666);
if (outfd == -1)
error (EXIT_FAILURE, errno, "cannot open output file '%s'", argv[2]);
Elf *outelf = elf_begin (outfd, ELF_C_WRITE, NULL);
if (outelf == NULL)
error (EXIT_FAILURE, 0, "problems opening '%s' as ELF file: %s",
argv[2], elf_errmsg (-1));
gelf_newehdr (outelf, gelf_getclass (inelf));
GElf_Ehdr ehdr_mem;
GElf_Ehdr *ehdr;
gelf_update_ehdr (outelf, (ehdr = gelf_getehdr (inelf, &ehdr_mem)));
if (ehdr->e_phnum > 0)
{
int cnt;
if (gelf_newphdr (outelf, ehdr->e_phnum) == 0)
error (EXIT_FAILURE, 0, "cannot create program header: %s",
elf_errmsg (-1));
for (cnt = 0; cnt < ehdr->e_phnum; ++cnt)
{
GElf_Phdr phdr_mem;
gelf_update_phdr (outelf, cnt, gelf_getphdr (inelf, cnt, &phdr_mem));
}
}
Elf_Scn *scn = NULL;
while ((scn = elf_nextscn (inelf, scn)) != NULL)
{
Elf_Scn *newscn = elf_newscn (outelf);
GElf_Shdr shdr_mem;
gelf_update_shdr (newscn, gelf_getshdr (scn, &shdr_mem));
*elf_newdata (newscn) = *elf_getdata (scn, NULL);
}
elf_flagelf (outelf, ELF_C_SET, ELF_F_LAYOUT);
if (elf_update (outelf, ELF_C_WRITE) == -1)
error (EXIT_FAILURE, 0, "elf_update failed: %s", elf_errmsg (-1));
close (outfd);
return 0;
}

View File

@ -0,0 +1,94 @@
/* Copyright (C) 2002 Red Hat, Inc.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
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
published by the Open Source Initiative.
You should have received a copy of the Open Software License along
with this program; if not, you may obtain a copy of the Open Software
License version 1.0 from http://www.opensource.org/licenses/osl.php or
by writing the Open Source Initiative c/o Lawrence Rosen, Esq.,
3001 King Ranch Road, Ukiah, CA 95482. */
#include <fcntl.h>
#include <libelf.h>
#include <libdw.h>
#include <stdio.h>
#include <unistd.h>
static int globcnt;
static int
callback (Dwarf *dbg, Dwarf_Global *gl, void *arg)
{
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;
if (dwarf_offdie (dbg, gl->cu_offset, &cu_die) == NULL
|| (cuname = dwarf_diename (&cu_die)) == NULL)
{
puts ("failed to get CU die");
result = 1;
}
else
{
printf ("CU name: \"%s\"\n", cuname);
dwarf_dealloc (dbg, cuname, DW_DLA_STRING);
}
const char *diename;
if (dwarf_offdie (dbg, gl->die_offset, &die) == NULL
|| (diename = dwarf_diename (&die)) == NULL)
{
puts ("failed to get object die");
result = 1;
}
else
{
printf ("object name: \"%s\"\n", diename);
dwarf_dealloc (dbg, diename, DW_DLA_STRING);
}
#endif
return DWARF_CB_OK;
}
int
main (int argc, char *argv[])
{
int result = 0;
int cnt;
for (cnt = 1; cnt < argc; ++cnt)
{
int fd = open (argv[cnt], O_RDONLY);
Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
if (dbg == NULL)
{
printf ("%s not usable: %s\n", argv[cnt], dwarf_errmsg (-1));
result = 1;
close (fd);
continue;
}
globcnt = 0;
if (dwarf_get_pubnames (dbg, callback, NULL, 0) != 0)
{
printf ("dwarf_get_pubnames didn't return zero: %s\n",
dwarf_errmsg (-1));
result = 1;
}
dwarf_end (dbg);
close (fd);
}
return result;
}

22
elfutils/tests/run-ecp-test.sh Executable file
View File

@ -0,0 +1,22 @@
#! /bin/sh
# Copyright (C) 2002 Red Hat, Inc.
# Written by Jakub Jelinek <jakub@redhat.com>, 2002.
#
# 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
# published by the Open Source Initiative.
#
# You should have received a copy of the Open Software License along
# with this program; if not, you may obtain a copy of the Open Software
# License version 1.0 from http://www.opensource.org/licenses/osl.php or
# by writing the Open Source Initiative c/o Lawrence Rosen, Esq.,
# 3001 King Ranch Road, Ukiah, CA 95482.
set -e
./ecp $srcdir/testfile10 testfile10.tmp
cmp $srcdir/testfile10 testfile10.tmp
rm -f testfile10.tmp
exit 0

20
elfutils/tests/run-ecp-test2.sh Executable file
View File

@ -0,0 +1,20 @@
#! /bin/sh
# Copyright (C) 2002 Red Hat, Inc.
# Written by Jakub Jelinek <jakub@redhat.com>, 2002.
#
# 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
# published by the Open Source Initiative.
#
# You should have received a copy of the Open Software License along
# with this program; if not, you may obtain a copy of the Open Software
# License version 1.0 from http://www.opensource.org/licenses/osl.php or
# by writing the Open Source Initiative c/o Lawrence Rosen, Esq.,
# 3001 King Ranch Road, Ukiah, CA 95482.
set -e
./ecp $srcdir/testfile2 testfile2.tmp
rm -f testfile2.tmp
exit 0

View File

@ -0,0 +1,57 @@
#! /bin/sh
# Copyright (C) 1999, 2000, 2002 Red Hat, Inc.
# Written by Ulrich Drepper <drepper@redhat.com>, 1999.
#
# 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
# published by the Open Source Initiative.
#
# You should have received a copy of the Open Software License along
# with this program; if not, you may obtain a copy of the Open Software
# License version 1.0 from http://www.opensource.org/licenses/osl.php or
# by writing the Open Source Initiative c/o Lawrence Rosen, Esq.,
# 3001 King Ranch Road, Ukiah, CA 95482.
set -e
./get-pubnames2 $srcdir/testfile $srcdir/testfile2 > get-pubnames2.out
#diff -u get-pubnames2.out - <<"EOF"
# [ 0] "main", die: 104, cu: 11
#CU name: "m.c"
#object name: "main"
# [ 1] "a", die: 174, cu: 11
#CU name: "m.c"
#object name: "a"
# [ 2] "bar", die: 295, cu: 202
#CU name: "b.c"
#object name: "bar"
# [ 3] "foo", die: 5721, cu: 5628
#CU name: "f.c"
#object name: "foo"
# [ 0] "bar", die: 72, cu: 11
#CU name: "b.c"
#object name: "bar"
# [ 1] "foo", die: 2490, cu: 2429
#CU name: "f.c"
#object name: "foo"
# [ 2] "main", die: 2593, cu: 2532
#CU name: "m.c"
#object name: "main"
# [ 3] "a", die: 2663, cu: 2532
#CU name: "m.c"
#object name: "a"
#EOF
diff -u get-pubnames2.out - <<"EOF"
[ 0] "main", die: 104, cu: 11
[ 1] "a", die: 174, cu: 11
[ 2] "bar", die: 295, cu: 202
[ 3] "foo", die: 5721, cu: 5628
[ 0] "bar", die: 72, cu: 11
[ 1] "foo", die: 2490, cu: 2429
[ 2] "main", die: 2593, cu: 2532
[ 3] "a", die: 2663, cu: 2532
EOF
rm -f get-pubnames2.out
exit 0

BIN
elfutils/tests/testfile Normal file

Binary file not shown.

BIN
elfutils/tests/testfile10 Normal file

Binary file not shown.

BIN
elfutils/tests/testfile2 Normal file

Binary file not shown.

BIN
elfutils/tests/testfile3 Normal file

Binary file not shown.

BIN
elfutils/tests/testfile4 Normal file

Binary file not shown.

BIN
elfutils/tests/testfile5 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.