1ed0d50c3Schristos /* ELF32/HPPA support
2ed0d50c3Schristos 
3ed0d50c3Schristos    This file contains ELF32/HPPA relocation support as specified
4ed0d50c3Schristos    in the Stratus FTX/Golf Object File Format (SED-1762) dated
5ed0d50c3Schristos    February 1994.
6ed0d50c3Schristos 
7*b88e3e88Schristos    Copyright (C) 1990-2020 Free Software Foundation, Inc.
8ed0d50c3Schristos 
9ed0d50c3Schristos    Written by:
10ed0d50c3Schristos 
11ed0d50c3Schristos    Center for Software Science
12ed0d50c3Schristos    Department of Computer Science
13ed0d50c3Schristos    University of Utah
14ed0d50c3Schristos 
15ed0d50c3Schristos    This file is part of BFD, the Binary File Descriptor library.
16ed0d50c3Schristos 
17ed0d50c3Schristos    This program is free software; you can redistribute it and/or modify
18ed0d50c3Schristos    it under the terms of the GNU General Public License as published by
19ed0d50c3Schristos    the Free Software Foundation; either version 3 of the License, or
20ed0d50c3Schristos    (at your option) any later version.
21ed0d50c3Schristos 
22ed0d50c3Schristos    This program is distributed in the hope that it will be useful,
23ed0d50c3Schristos    but WITHOUT ANY WARRANTY; without even the implied warranty of
24ed0d50c3Schristos    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25ed0d50c3Schristos    GNU General Public License for more details.
26ed0d50c3Schristos 
27ed0d50c3Schristos    You should have received a copy of the GNU General Public License
28ed0d50c3Schristos    along with this program; if not, write to the Free Software
29ed0d50c3Schristos    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
30ed0d50c3Schristos    MA 02110-1301, USA.  */
31ed0d50c3Schristos 
32ed0d50c3Schristos #ifndef _ELF32_HPPA_H
33ed0d50c3Schristos #define _ELF32_HPPA_H
34ed0d50c3Schristos 
35ed0d50c3Schristos #include "elf-bfd.h"
36ed0d50c3Schristos #include "libhppa.h"
37ed0d50c3Schristos #include "elf/hppa.h"
38ed0d50c3Schristos 
39ed0d50c3Schristos #ifdef __cplusplus
40ed0d50c3Schristos extern "C" {
41ed0d50c3Schristos #endif
42ed0d50c3Schristos 
43ed0d50c3Schristos void elf32_hppa_init_stub_bfd
44ed0d50c3Schristos   (bfd *, struct bfd_link_info *);
45ed0d50c3Schristos 
46ed0d50c3Schristos int elf32_hppa_setup_section_lists
47ed0d50c3Schristos   (bfd *, struct bfd_link_info *);
48ed0d50c3Schristos 
49ed0d50c3Schristos void elf32_hppa_next_input_section
50ed0d50c3Schristos   (struct bfd_link_info *, asection *);
51ed0d50c3Schristos 
52ed0d50c3Schristos bfd_boolean elf32_hppa_size_stubs
53ed0d50c3Schristos   (bfd *, bfd *, struct bfd_link_info *, bfd_boolean, bfd_signed_vma,
54ed0d50c3Schristos    asection * (*) (const char *, asection *), void (*) (void));
55ed0d50c3Schristos 
56ed0d50c3Schristos bfd_boolean elf32_hppa_set_gp
57ed0d50c3Schristos   (bfd *, struct bfd_link_info *);
58ed0d50c3Schristos 
59ed0d50c3Schristos bfd_boolean elf32_hppa_build_stubs
60ed0d50c3Schristos   (struct bfd_link_info *);
61ed0d50c3Schristos 
62ed0d50c3Schristos elf_hppa_reloc_type elf32_hppa_reloc_final_type
63ed0d50c3Schristos   (bfd *, elf_hppa_reloc_type, int, unsigned int);
64ed0d50c3Schristos 
65ed0d50c3Schristos extern elf_hppa_reloc_type ** _bfd_elf32_hppa_gen_reloc_type
66ed0d50c3Schristos   (bfd *, elf_hppa_reloc_type, int, unsigned int, int, asymbol *);
67ed0d50c3Schristos 
68ed0d50c3Schristos /* Define groups of basic relocations.  FIXME:  These should
69ed0d50c3Schristos    be the only basic relocations created by GAS.  The rest
70ed0d50c3Schristos    should be internal to the BFD backend.
71ed0d50c3Schristos 
72ed0d50c3Schristos    The idea is both SOM and ELF define these basic relocation
73ed0d50c3Schristos    types so they map into a SOM or ELF specific relocation
74ed0d50c3Schristos    as appropriate.  This allows GAS to share much more code
75ed0d50c3Schristos    between the two target object formats.  */
76ed0d50c3Schristos 
77ed0d50c3Schristos #define R_HPPA_NONE			R_PARISC_NONE
78ed0d50c3Schristos #define R_HPPA				R_PARISC_DIR32
79ed0d50c3Schristos #define R_HPPA_GOTOFF			R_PARISC_DPREL21L
80ed0d50c3Schristos #define R_HPPA_PCREL_CALL		R_PARISC_PCREL21L
81ed0d50c3Schristos #define R_HPPA_ABS_CALL			R_PARISC_DIR17F
82ed0d50c3Schristos #define R_HPPA_COMPLEX			R_PARISC_UNIMPLEMENTED
83ed0d50c3Schristos 
84ed0d50c3Schristos #ifdef __cplusplus
85ed0d50c3Schristos }
86ed0d50c3Schristos #endif
87ed0d50c3Schristos 
88ed0d50c3Schristos #endif /* _ELF32_HPPA_H */
89