Initial revision

CVS patchset: 5834
CVS date: 2002/11/07 13:14:30
This commit is contained in:
jbj 2002-11-07 13:14:30 +00:00
parent 6f04ed9f48
commit d9fb627db6
6 changed files with 314 additions and 0 deletions

106
elfutils/elfutils.spec Normal file
View File

@ -0,0 +1,106 @@
Summary: A collection of utilities and DSOs to handle compiled objects.
Name: elfutils
Version: 0.53
Release: 1
Copyright: GPL
Group: Development/Tools
URL: file://home/devel/drepper/
Source: elfutils-0.53.tar.gz
# ExcludeArch: xxx
BuildRoot: %{_tmppath}/%{name}-root
BuildRequires: gcc >= 3.2
BuildRequires: sharutils
%define _gnu %{nil}
%define _programprefix eu-
%description
Elfutils is a collection of utilities, including ld (a linker),
nm (for listing symbols from object files), size (for listing the
section sizes of an object or archive file), strip (for discarding
symbols), readline (the see the raw ELF file structures), and elflint
(to check for well-formed ELF files). Also included are numerous
helper libraries which implement DWARF, ELF, and machine-specific ELF
handling.
%package devel
Summary: Development libraries to handle compiled objects.
Group: Development/Tools
Requires: elfutils = %{version}-%{release}
Conflicts: libelf-devel
%description devel
The elfutils-devel package containst he libraries to create
applications for handling compiled objects. libelf allows you to
access the internals of the ELF object file format, so you can see the
different sections of an ELF file. libebl provides some higher-level
ELF access functionality. libdwarf provides access to the DWARF
debugging information. libasm provides a programmable assembler
interface.
%prep
%setup -q
# %patch0 -p1 -b .jbj
%build
mkdir build-%{_target_platform}
cd build-%{_target_platform}
../configure \
--prefix=%{_prefix} --exec-prefix=%{_exec_prefix} \
--bindir=%{_bindir} --sbindir=%{_sbindir} --sysconfdir=%{_sysconfdir} \
--datadir=%{_datadir} --includedir=%{_includedir} --libdir=%{_libdir} \
--libexecdir=%{_libexecdir} --localstatedir=%{_localstatedir} \
--sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} \
--infodir=%{_infodir} --program-prefix=%{_programprefix} --enable-shared
cd ..
%install
rm -rf ${RPM_BUILD_ROOT}
mkdir -p ${RPM_BUILD_ROOT}%{_prefix}
cd build-%{_target_platform}
%makeinstall
chmod +x ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib*.so*
chmod +x ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/elfutils/lib*.so*
# The loadable modules need not exist in a form which can be linked with
rm ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/elfutils/lib*.a
rm ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/elfutils/lib*.la
cd ..
%clean
rm -rf ${RPM_BUILD_ROOT}
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%defattr(-,root,root)
%doc README
%doc TODO
%doc libdwarf/AVAILABLE
%{_prefix}/bin/*
%{_prefix}/%{_lib}/lib*.so.*
%{_prefix}/%{_lib}/elfutils/lib*.so.*
%files devel
%defattr(-,root,root)
%{_prefix}/include/*
%{_prefix}/%{_lib}/lib*.a
%{_prefix}/%{_lib}/lib*.la
%{_prefix}/%{_lib}/lib*.so
%changelog
* Tue Oct 22 2002 Ulrich Drepper <drepper@redhat.com> 0.52
- Add libelf-devel to conflicts for elfutils-devel
* Mon Oct 21 2002 Ulrich Drepper <drepper@redhat.com> 0.50
- Split into runtime and devel package
* Fri Oct 18 2002 Ulrich Drepper <drepper@redhat.com> 0.49
- integrate into official sources
* Wed Oct 16 2002 Jeff Johnson <jbj@redhat.com> 0.46-1
- Swaddle.

View File

@ -0,0 +1,40 @@
/* Interface for libebl_x86_64 module.
Copyright (C) 2002 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
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. */
#ifndef _LIBEBL_X86_64_H
#define _LIBEBL_X86_64_H 1
#include <libeblP.h>
/* Constructor. */
extern int x86_64_init (Elf *elf, GElf_Half machine, Ebl *eh, size_t ehlen);
/* Destructor. */
extern void x86_64_destr (Ebl *bh);
/* Function to get relocation type name. */
extern const char *x86_64_reloc_type_name (int type, char *buf, size_t len);
/* Check relocation type. */
extern bool x86_64_reloc_type_check (int type);
/* Code note handling. */
extern bool x86_64_core_note (const char *name, uint32_t type, uint32_t descsz,
const char *desc);
#endif /* libebl_x86_64.h */

View File

@ -0,0 +1,11 @@
ELFUTILS_1.0 {
global:
x86_64_backend_name;
x86_64_destr;
x86_64_init;
x86_64_reloc_type_check;
x86_64_reloc_type_name;
local:
*;
};

View File

@ -0,0 +1,30 @@
/* Destructor for x86_64 specific backend library.
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 <libebl_x86_64.h>
void
x86_64_destr (bh)
Ebl *bh;
{
/* Nothing to do so far. */
}

View File

@ -0,0 +1,44 @@
/* Initialization of x86-64 specific backend library.
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 <libebl_x86_64.h>
int
x86_64_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. */
eh->name = "AMD x86-64";
eh->reloc_type_name = x86_64_reloc_type_name;
eh->reloc_type_check = x86_64_reloc_type_check;
//eh->core_note = i386_core_note;
eh->destr = x86_64_destr;
return 0;
}

View File

@ -0,0 +1,83 @@
/* x86_64 specific symbolic name handling.
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 <elf.h>
#include <stddef.h>
#include <libebl_x86_64.h>
/* Return of the backend. */
const char *
x86_64_backend_name (void)
{
return "x86-64";
}
/* Relocation mapping table. */
static const char *reloc_map_table[] =
{
[R_X86_64_NONE] = "R_X86_64_NONE",
[R_X86_64_64] = "R_X86_64_64",
[R_X86_64_PC32] = "R_X86_64_PC32",
[R_X86_64_GOT32] = "R_X86_64_GOT32",
[R_X86_64_PLT32] = "R_X86_64_PLT32",
[R_X86_64_COPY] = "R_X86_64_COPY",
[R_X86_64_GLOB_DAT] = "R_X86_64_GLOB_DAT",
[R_X86_64_JUMP_SLOT] = "R_X86_64_JUMP_SLOT",
[R_X86_64_RELATIVE] = "R_X86_64_RELATIVE",
[R_X86_64_GOTPCREL] = "R_X86_64_GOTPCREL",
[R_X86_64_32] = "R_X86_64_32",
[R_X86_64_32S] = "R_X86_64_32S",
[R_X86_64_16] = "R_X86_64_16",
[R_X86_64_PC16] = "R_X86_64_PC16",
[R_X86_64_8] = "R_X86_64_8",
[R_X86_64_PC8] = "R_X86_64_PC8",
[R_X86_64_DTPMOD64] = "R_X86_64_DTPMOD64",
[R_X86_64_DTPOFF64] = "R_X86_64_DTPOFF64",
[R_X86_64_TPOFF64] = "R_X86_64_TPOFF64",
[R_X86_64_TLSGD] = "R_X86_64_TLSGD",
[R_X86_64_TLSLD] = "R_X86_64_TLSLD",
[R_X86_64_DTPOFF32] = "R_X86_64_DTPOFF32",
[R_X86_64_GOTTPOFF] = "R_X86_64_GOTTPOFF",
[R_X86_64_TPOFF32] = "R_X86_64_TPOFF32"
};
/* Determine relocation type string for x86-64. */
const char *
x86_64_reloc_type_name (int type, char *buf, size_t len)
{
if (type < 0 || type >= R_X86_64_NUM)
return NULL;
return reloc_map_table[type];
}
/* Check for correct relocation type. */
bool
x86_64_reloc_type_check (int type)
{
return (type >= R_X86_64_NONE && type < R_X86_64_NUM
&& reloc_map_table[type] != NULL) ? true : false;
}