Use address mapping levels for 68hc11 simulator (kill overlap hack)
[deliverable/binutils-gdb.git] / bfd / bfd.c
index c6809d7986de72f85b3659e8eced75b7cb697634..f8d2b6c4734712cbb088353106ee76256382ceab 100644 (file)
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -679,6 +679,89 @@ bfd_assert (file, line)
   (*_bfd_error_handler) (_("bfd assertion fail %s:%d"), file, line);
 }
 
+/* A more or less friendly abort message.  In libbfd.h abort is
+   defined to call this function.  */
+
+#ifndef EXIT_FAILURE
+#define EXIT_FAILURE 1
+#endif
+
+void
+_bfd_abort (file, line, fn)
+     const char *file;
+     int line;
+     const char *fn;
+{
+  if (fn != NULL)
+    (*_bfd_error_handler)
+      (_("BFD internal error, aborting at %s line %d in %s\n"),
+       file, line, fn);
+  else
+    (*_bfd_error_handler)
+      (_("BFD internal error, aborting at %s line %d\n"),
+       file, line);
+  (*_bfd_error_handler) (_("Please report this bug.\n"));
+  xexit (EXIT_FAILURE);
+}
+
+/*
+FUNCTION
+       bfd_get_arch_size
+
+SYNOPSIS
+       int bfd_get_arch_size (bfd *abfd);
+
+DESCRIPTION
+       Returns the architecture address size, in bits, as determined
+       by the object file's format.  For ELF, this information is
+       included in the header.
+
+RETURNS
+       Returns the arch size in bits if known, <<-1>> otherwise.
+*/
+
+int
+bfd_get_arch_size (abfd)
+     bfd *abfd;
+{
+  if (abfd->xvec->flavour == bfd_target_elf_flavour)
+    return (get_elf_backend_data (abfd))->s->arch_size;
+
+  bfd_set_error (bfd_error_wrong_format);
+  return -1;
+}
+
+/*
+FUNCTION
+       bfd_get_sign_extend_vma
+
+SYNOPSIS
+       int bfd_get_sign_extend_vma (bfd *abfd);
+
+DESCRIPTION
+       Indicates if the target architecture "naturally" sign extends
+       an address.  Some architectures implicitly sign extend address
+       values when they are converted to types larger than the size
+       of an address.  For instance, bfd_get_start_address() will
+       return an address sign extended to fill a bfd_vma when this is
+       the case.
+
+RETURNS
+       Returns <<1>> if the target architecture is known to sign
+       extend addresses, <<0>> if the target architecture is known to
+       not sign extend addresses, and <<-1>> otherwise.
+*/
+
+int
+bfd_get_sign_extend_vma (abfd)
+     bfd *abfd;
+{
+  if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
+    return (get_elf_backend_data (abfd)->sign_extend_vma);
+
+  bfd_set_error (bfd_error_wrong_format);
+  return -1;
+}
 
 /*
 FUNCTION
This page took 0.024376 seconds and 4 git commands to generate.