1 /* Low-level DWARF 2 reading code
3 Copyright (C) 1994-2020 Free Software Foundation, Inc.
5 Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
6 Inc. with support from Florida State University (under contract
7 with the Ada Joint Program Office), and Silicon Graphics, Inc.
8 Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
9 based on Fred Fish's (Cygnus Support) implementation of DWARF 1
12 This file is part of GDB.
14 This program is free software; you can redistribute it and/or modify
15 it under the terms of the GNU General Public License as published by
16 the Free Software Foundation; either version 3 of the License, or
17 (at your option) any later version.
19 This program is distributed in the hope that it will be useful,
20 but WITHOUT ANY WARRANTY; without even the implied warranty of
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 GNU General Public License for more details.
24 You should have received a copy of the GNU General Public License
25 along with this program. If not, see <http://www.gnu.org/licenses/>. */
27 #ifndef GDB_DWARF2_LEB_H
28 #define GDB_DWARF2_LEB_H
30 /* Read dwarf information from a buffer. */
32 static inline unsigned int
33 read_1_byte (bfd
*abfd
, const gdb_byte
*buf
)
35 return bfd_get_8 (abfd
, buf
);
39 read_1_signed_byte (bfd
*abfd
, const gdb_byte
*buf
)
41 return bfd_get_signed_8 (abfd
, buf
);
44 static inline unsigned int
45 read_2_bytes (bfd
*abfd
, const gdb_byte
*buf
)
47 return bfd_get_16 (abfd
, buf
);
51 read_2_signed_bytes (bfd
*abfd
, const gdb_byte
*buf
)
53 return bfd_get_signed_16 (abfd
, buf
);
56 /* Read the next three bytes (little-endian order) as an unsigned integer. */
57 static inline unsigned int
58 read_3_bytes (bfd
*abfd
, const gdb_byte
*buf
)
60 unsigned int result
= 0;
61 for (int i
= 0; i
< 3; ++i
)
63 unsigned char byte
= bfd_get_8 (abfd
, buf
);
65 result
|= ((unsigned int) byte
<< (i
* 8));
70 static inline unsigned int
71 read_4_bytes (bfd
*abfd
, const gdb_byte
*buf
)
73 return bfd_get_32 (abfd
, buf
);
77 read_4_signed_bytes (bfd
*abfd
, const gdb_byte
*buf
)
79 return bfd_get_signed_32 (abfd
, buf
);
82 static inline ULONGEST
83 read_8_bytes (bfd
*abfd
, const gdb_byte
*buf
)
85 return bfd_get_64 (abfd
, buf
);
88 extern LONGEST
read_signed_leb128 (bfd
*, const gdb_byte
*, unsigned int *);
90 extern ULONGEST
read_unsigned_leb128 (bfd
*, const gdb_byte
*, unsigned int *);
92 #endif /* GDB_DWARF2_LEB_H */
This page took 0.034151 seconds and 4 git commands to generate.