source: rtems-tools/rtemstoolkit/elftoolchain/libelf/_libelf_config.h @ 0c5db2d

5
Last change on this file since 0c5db2d was 0c5db2d, checked in by Chris Johns <chrisj@…>, on 04/29/18 at 01:55:37

rtemstoolkit: Update elftoolchain to the latest code.

The update is taken from https://github.com/elftoolchain/elftoolchain.

Update #3417

  • Property mode set to 100644
File size: 4.0 KB
Line 
1/*-
2 * Copyright (c) 2008 Joseph Koshy
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 *    notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 *    notice, this list of conditions and the following disclaimer in the
12 *    documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#ifdef __FreeBSD__
28
29#define LIBELF_VCSID(ID)        __FBSDID(ID)
30
31/*
32 * Define LIBELF_{ARCH,BYTEORDER,CLASS} based on the machine architecture.
33 * See also: <machine/elf.h>.
34 */
35
36#if     defined(__amd64__)
37
38#define LIBELF_ARCH             EM_X86_64
39#define LIBELF_BYTEORDER        ELFDATA2LSB
40#define LIBELF_CLASS            ELFCLASS64
41
42#elif   defined(__arm__)
43
44#define LIBELF_ARCH             EM_ARM
45#if     defined(__ARMEB__)      /* Big-endian ARM. */
46#define LIBELF_BYTEORDER        ELFDATA2MSB
47#else
48#define LIBELF_BYTEORDER        ELFDATA2LSB
49#endif
50#define LIBELF_CLASS            ELFCLASS32
51
52#elif   defined(__i386__)
53
54#define LIBELF_ARCH             EM_386
55#define LIBELF_BYTEORDER        ELFDATA2LSB
56#define LIBELF_CLASS            ELFCLASS32
57
58#elif   defined(__ia64__)
59
60#define LIBELF_ARCH             EM_IA_64
61#define LIBELF_BYTEORDER        ELFDATA2LSB
62#define LIBELF_CLASS            ELFCLASS64
63
64#elif   defined(__mips__)
65
66#define LIBELF_ARCH             EM_MIPS
67#if     defined(__MIPSEB__)
68#define LIBELF_BYTEORDER        ELFDATA2MSB
69#else
70#define LIBELF_BYTEORDER        ELFDATA2LSB
71#endif
72#define LIBELF_CLASS            ELFCLASS32
73
74#elif   defined(__powerpc__)
75
76#define LIBELF_ARCH             EM_PPC
77#define LIBELF_BYTEORDER        ELFDATA2MSB
78#define LIBELF_CLASS            ELFCLASS32
79
80#elif   defined(__sparc__)
81
82#define LIBELF_ARCH             EM_SPARCV9
83#define LIBELF_BYTEORDER        ELFDATA2MSB
84#define LIBELF_CLASS            ELFCLASS64
85
86#else
87#error  Unknown FreeBSD architecture.
88#endif
89#endif  /* __FreeBSD__ */
90
91
92#ifdef __NetBSD__
93
94#include <machine/elf_machdep.h>
95
96#define LIBELF_VCSID(ID)        __RCSID(ID)
97
98#if     !defined(ARCH_ELFSIZE)
99#error  ARCH_ELFSIZE is not defined.
100#endif
101
102#if     ARCH_ELFSIZE == 32
103#define LIBELF_ARCH             ELF32_MACHDEP_ID
104#define LIBELF_BYTEORDER        ELF32_MACHDEP_ENDIANNESS
105#define LIBELF_CLASS            ELFCLASS32
106#define Elf_Note                Elf32_Nhdr
107#else
108#define LIBELF_ARCH             ELF64_MACHDEP_ID
109#define LIBELF_BYTEORDER        ELF64_MACHDEP_ENDIANNESS
110#define LIBELF_CLASS            ELFCLASS64
111#define Elf_Note                Elf64_Nhdr
112#endif
113
114#endif  /* __NetBSD__ */
115
116/*
117 * GNU & Linux compatibility.
118 *
119 * `__linux__' is defined in an environment runs the Linux kernel and glibc.
120 * `__GNU__' is defined in an environment runs a GNU kernel (Hurd) and glibc.
121 * `__GLIBC__' is defined for an environment that runs glibc over a non-GNU
122 *     kernel such as GNU/kFreeBSD.
123 */
124
125#if defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)
126
127#if defined(__linux__)
128
129#include "native-elf-format.h"
130
131#define LIBELF_CLASS            ELFTC_CLASS
132#define LIBELF_ARCH             ELFTC_ARCH
133#define LIBELF_BYTEORDER        ELFTC_BYTEORDER
134
135#endif  /* defined(__linux__) */
136
137#define LIBELF_VCSID(ID)
138
139#if     LIBELF_CLASS == ELFCLASS32
140#define Elf_Note                Elf32_Nhdr
141#elif   LIBELF_CLASS == ELFCLASS64
142#define Elf_Note                Elf64_Nhdr
143#else
144#error  LIBELF_CLASS needs to be one of ELFCLASS32 or ELFCLASS64
145#endif
146
147#define roundup2        roundup
148
149#endif /* defined(__linux__) || defined(__GNU__) || defined(__GLIBC__) */
Note: See TracBrowser for help on using the repository browser.