/* libbfd.h -- Declarations used by bfd library *implementation*.
(This include file is not for users of the library.)
- Copyright (C) 1990-2014 Free Software Foundation, Inc.
+ Copyright (C) 1990-2016 Free Software Foundation, Inc.
Written by Cygnus Support.
#include "hashtab.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* Align an address upward to a boundary, expressed as a number of bytes.
E.g. align to an 8-byte boundary with argument of 8. Take care never
to wrap around if the address is within boundary-1 of the end of the
((void (*) (bfd *, void *, asymbol *, bfd_print_symbol_type)) bfd_void)
#define _bfd_nosymbols_get_symbol_info \
((void (*) (bfd *, asymbol *, symbol_info *)) bfd_void)
+#define _bfd_nosymbols_get_symbol_version_string \
+ ((const char *(*) (bfd *, asymbol *, bfd_boolean *)) bfd_nullvoidptr)
#define _bfd_nosymbols_bfd_is_local_label_name \
((bfd_boolean (*) (bfd *, const char *)) bfd_false)
#define _bfd_nosymbols_bfd_is_target_special_symbol \
#define _bfd_nosymbols_get_lineno \
((alent *(*) (bfd *, asymbol *)) bfd_nullvoidptr)
#define _bfd_nosymbols_find_nearest_line \
- ((bfd_boolean (*) (bfd *, asection *, asymbol **, bfd_vma, const char **, \
- const char **, unsigned int *)) \
+ ((bfd_boolean (*) (bfd *, asymbol **, asection *, bfd_vma, \
+ const char **, const char **, unsigned int *, \
+ unsigned int *)) \
+ bfd_false)
+#define _bfd_nosymbols_find_line \
+ ((bfd_boolean (*) (bfd *, asymbol **, asymbol *, \
+ const char **, unsigned int *)) \
bfd_false)
#define _bfd_nosymbols_find_inliner_info \
((bfd_boolean (*) (bfd *, const char **, const char **, unsigned int *)) \
/* Find the nearest line using DWARF 1 debugging information. */
extern bfd_boolean _bfd_dwarf1_find_nearest_line
- (bfd *, asection *, asymbol **, bfd_vma, const char **,
- const char **, unsigned int *);
+ (bfd *, asymbol **, asection *, bfd_vma,
+ const char **, const char **, unsigned int *);
struct dwarf_debug_section
{
/* Find the nearest line using DWARF 2 debugging information. */
extern bfd_boolean _bfd_dwarf2_find_nearest_line
- (bfd *, const struct dwarf_debug_section *, asection *, asymbol **, bfd_vma,
- const char **, const char **, unsigned int *, unsigned int *, unsigned int,
- void **);
+ (bfd *, asymbol **, asymbol *, asection *, bfd_vma,
+ const char **, const char **, unsigned int *, unsigned int *,
+ const struct dwarf_debug_section *, unsigned int, void **);
-/* Find the line using DWARF 2 debugging information. */
-extern bfd_boolean _bfd_dwarf2_find_line
- (bfd *, asymbol **, asymbol *, const char **,
- unsigned int *, unsigned int *, unsigned int, void **);
-
-bfd_boolean _bfd_generic_find_line
- (bfd *, asymbol **, asymbol *, const char **, unsigned int *);
-
-bfd_boolean _bfd_generic_find_nearest_line_discriminator
- (bfd *, asection *, asymbol **, bfd_vma, const char **, const char **,
- unsigned int *, unsigned int *);
+/* Find the bias between DWARF addresses and real addresses. */
+extern bfd_signed_vma _bfd_dwarf2_find_symbol_bias
+ (asymbol **, void **);
/* Find inliner info after calling bfd_find_nearest_line. */
extern bfd_boolean _bfd_dwarf2_find_inliner_info
/* Generic link hash table destruction routine. */
extern void _bfd_generic_link_hash_table_free
- (struct bfd_link_hash_table *);
+ (bfd *);
/* Generic add symbol routine. */
extern bfd_boolean _bfd_generic_link_add_symbols
/* Generic archive add symbol routine. */
extern bfd_boolean _bfd_generic_link_add_archive_symbols
(bfd *, struct bfd_link_info *,
- bfd_boolean (*) (bfd *, struct bfd_link_info *, bfd_boolean *));
+ bfd_boolean (*) (bfd *, struct bfd_link_info *,
+ struct bfd_link_hash_entry *, const char *,
+ bfd_boolean *));
/* Forward declaration to avoid prototype errors. */
typedef struct bfd_link_hash_entry _bfd_link_hash_entry;
extern bfd_vma read_unsigned_leb128 (bfd *, bfd_byte *, unsigned int *);
extern bfd_signed_vma read_signed_leb128 (bfd *, bfd_byte *, unsigned int *);
+extern bfd_vma safe_read_leb128 (bfd *, bfd_byte *, unsigned int *,
+ bfd_boolean, const bfd_byte * const);