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