Branch data Line data Source code
1 : : /* x86_64 specific symbolic name handling.
2 : : Copyright (C) 2002, 2005, 2018 Red Hat, Inc.
3 : : This file is part of elfutils.
4 : : Written by Ulrich Drepper <drepper@redhat.com>, 2002.
5 : :
6 : : This file is free software; you can redistribute it and/or modify
7 : : it under the terms of either
8 : :
9 : : * the GNU Lesser General Public License as published by the Free
10 : : Software Foundation; either version 3 of the License, or (at
11 : : your option) any later version
12 : :
13 : : or
14 : :
15 : : * the GNU General Public License as published by the Free
16 : : Software Foundation; either version 2 of the License, or (at
17 : : your option) any later version
18 : :
19 : : or both in parallel, as here.
20 : :
21 : : elfutils is distributed in the hope that it will be useful, but
22 : : WITHOUT ANY WARRANTY; without even the implied warranty of
23 : : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24 : : General Public License for more details.
25 : :
26 : : You should have received copies of the GNU General Public License and
27 : : the GNU Lesser General Public License along with this program. If
28 : : not, see <http://www.gnu.org/licenses/>. */
29 : :
30 : : #ifdef HAVE_CONFIG_H
31 : : # include <config.h>
32 : : #endif
33 : :
34 : : #include <assert.h>
35 : : #include <elf.h>
36 : : #include <stddef.h>
37 : :
38 : : #define BACKEND x86_64_
39 : : #include "libebl_CPU.h"
40 : :
41 : : /* Check for the simple reloc types. */
42 : : Elf_Type
43 : 198678 : x86_64_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type,
44 : : int *addsub __attribute__ ((unused)))
45 : : {
46 [ + + - - : 198678 : switch (type)
+ + ]
47 : : {
48 : : case R_X86_64_64:
49 : : return ELF_T_XWORD;
50 : 121224 : case R_X86_64_32:
51 : 121224 : return ELF_T_WORD;
52 : 82 : case R_X86_64_32S:
53 : 82 : return ELF_T_SWORD;
54 : 0 : case R_X86_64_16:
55 : 0 : return ELF_T_HALF;
56 : 0 : case R_X86_64_8:
57 : 0 : return ELF_T_BYTE;
58 : 19082 : default:
59 : 19082 : return ELF_T_NUM;
60 : : }
61 : : }
62 : :
63 : : /* Return symbolic representation of section type. */
64 : : const char *
65 : 203604 : x86_64_section_type_name (int type,
66 : : char *buf __attribute__ ((unused)),
67 : : size_t len __attribute__ ((unused)))
68 : : {
69 [ - + ]: 203604 : if (type == SHT_X86_64_UNWIND)
70 : 0 : return "X86_64_UNWIND";
71 : :
72 : : return NULL;
73 : : }
74 : :
75 : : /* The SHT_X86_64_UNWIND section type is a valid target for relocation. */
76 : : bool
77 : 370 : x86_64_check_reloc_target_type (Ebl *ebl __attribute__ ((unused)),
78 : : Elf64_Word sh_type)
79 : : {
80 : 370 : return sh_type == SHT_X86_64_UNWIND;
81 : : }
|