1cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng/* Initialization of i386 specific backend library.
2cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   Copyright (C) 2000, 2001, 2002, 2005, 2006, 2007, 2008 Red Hat, Inc.
3cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   This file is part of Red Hat elfutils.
4cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   Written by Ulrich Drepper <drepper@redhat.com>, 2000.
5cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng
6cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   Red Hat elfutils is free software; you can redistribute it and/or modify
7cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   it under the terms of the GNU General Public License as published by the
8cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   Free Software Foundation; version 2 of the License.
9cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng
10cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   Red Hat elfutils is distributed in the hope that it will be useful, but
11cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   WITHOUT ANY WARRANTY; without even the implied warranty of
12cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   General Public License for more details.
14cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng
15cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   You should have received a copy of the GNU General Public License along
16cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   with Red Hat elfutils; if not, write to the Free Software Foundation,
17cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
18cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng
19cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   Red Hat elfutils is an included package of the Open Invention Network.
20cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   An included package of the Open Invention Network is a package for which
21cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   Open Invention Network licensees cross-license their patents.  No patent
22cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   license is granted, either expressly or impliedly, by designation as an
23cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   included package.  Should you wish to participate in the Open Invention
24cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   Network licensing program, please visit www.openinventionnetwork.com
25cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng   <http://www.openinventionnetwork.com>.  */
26cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng
27cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng#ifdef HAVE_CONFIG_H
28cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng# include <config.h>
29cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng#endif
30cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng
31cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng#define BACKEND		i386_
32cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng#define RELOC_PREFIX	R_386_
33cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng#include "libebl_CPU.h"
34cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng
35cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng/* This defines the common reloc hooks based on i386_reloc.def.  */
36cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng#include "common-reloc.c"
37cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng
38cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Chengconst char *
39cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Chengi386_init (elf, machine, eh, ehlen)
40cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng     Elf *elf __attribute__ ((unused));
41cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng     GElf_Half machine __attribute__ ((unused));
42cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng     Ebl *eh;
43cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng     size_t ehlen;
44cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng{
45cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng  /* Check whether the Elf_BH object has a sufficent size.  */
46cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng  if (ehlen < sizeof (Ebl))
47cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng    return NULL;
48cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng
49cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng  /* We handle it.  */
50cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng  eh->name = "Intel 80386";
51cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng  i386_init_reloc (eh);
52cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng  HOOK (eh, reloc_simple_type);
53cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng  HOOK (eh, gotpc_reloc_check);
54cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng  HOOK (eh, core_note);
55cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng  generic_debugscn_p = eh->debugscn_p;
56cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng  HOOK (eh, debugscn_p);
57cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng  HOOK (eh, return_value_location);
58cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng  HOOK (eh, register_info);
59cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng  HOOK (eh, syscall_abi);
60cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng  HOOK (eh, auxv_info);
61cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng  HOOK (eh, disasm);
62cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng
63cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng  return MODVERSION;
64cc6695e2684ce93cdf8bd2da63d55d2cf49ff076Ben Cheng}
65