aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2001-08-09 16:00:21 +0000
committerH.J. Lu <hjl.tools@gmail.com>2001-08-09 16:00:21 +0000
commitae4221d7c27786eb790a96d65a78cb0fb7d79fcf (patch)
tree554b68ba1007fa808299ebdcebbba47dc4eb5faf /bfd/elf.c
parent5789ecea4c53e1fa61db1211f4e3f132bbd57788 (diff)
downloadgdb-ae4221d7c27786eb790a96d65a78cb0fb7d79fcf.zip
gdb-ae4221d7c27786eb790a96d65a78cb0fb7d79fcf.tar.gz
gdb-ae4221d7c27786eb790a96d65a78cb0fb7d79fcf.tar.bz2
2001-08-09 H.J. Lu <hjl@gnu.org>
* bfd-in.h (bfd_sprintf_vma): New prototype. (bfd_fprintf_vma): Likewise. (bfd_elf_sprintf_vma): Likewise. (bfd_elf_fprintf_vma): Likewise. (bfd_printf_vma): New. Defined with bfd_fprintf_vma. * bfd-in2.h: Regenerated. * bfd.c (bfd_sprintf_vma): New. Defined. (bfd_fprintf_vma): Likewise. * elf.c (bfd_elf_sprintf_vma): New. Defined. (bfd_elf_fprintf_vma): Likewise.
Diffstat (limited to 'bfd/elf.c')
-rw-r--r--bfd/elf.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/bfd/elf.c b/bfd/elf.c
index 60e70b6..746b210 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -5994,3 +5994,54 @@ bfd_get_elf_phdrs (abfd, phdrs)
return num_phdrs;
}
+
+void
+bfd_elf_sprintf_vma (abfd, buf, value)
+ bfd *abfd;
+ char *buf;
+ bfd_vma value;
+{
+ Elf_Internal_Ehdr *i_ehdrp; /* Elf file header, internal form */
+
+ i_ehdrp = elf_elfheader (abfd);
+ if (i_ehdrp == NULL)
+ sprintf_vma (buf, value);
+ else
+ {
+ if (i_ehdrp->e_ident[EI_CLASS] == ELFCLASS64)
+#if BFD_HOST_64BIT_LONG
+ sprintf (buf, "%016lx", value);
+#else
+ sprintf (buf, "%08lx%08lx", _bfd_int64_high (value),
+ _bfd_int64_low (value));
+#endif
+ else
+ sprintf (buf, "%08lx", (unsigned long) (value & 0xffffffff));
+ }
+}
+
+void
+bfd_elf_fprintf_vma (abfd, stream, value)
+ bfd *abfd;
+ PTR stream;
+ bfd_vma value;
+{
+ Elf_Internal_Ehdr *i_ehdrp; /* Elf file header, internal form */
+
+ i_ehdrp = elf_elfheader (abfd);
+ if (i_ehdrp == NULL)
+ fprintf_vma ((FILE *) stream, value);
+ else
+ {
+ if (i_ehdrp->e_ident[EI_CLASS] == ELFCLASS64)
+#if BFD_HOST_64BIT_LONG
+ fprintf ((FILE *) stream, "%016lx", value);
+#else
+ fprintf ((FILE *) stream, "%08lx%08lx",
+ _bfd_int64_high (value), _bfd_int64_low (value));
+#endif
+ else
+ fprintf ((FILE *) stream, "%08lx",
+ (unsigned long) (value & 0xffffffff));
+ }
+}