summaryrefslogtreecommitdiff
path: root/bfd/peXXigen.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2008-07-18 11:30:22 +0000
committerNick Clifton <nickc@redhat.com>2008-07-18 11:30:22 +0000
commit52e37b4169adf065c5c625c600273d8ed918e000 (patch)
tree825e73d2ee33efa3a087149d6e20b8a5b2d9bfcd /bfd/peXXigen.c
parent2d5bf4d0ab3ddca7e12d017d81516e4f40f8591f (diff)
downloadbinutils-redhat-52e37b4169adf065c5c625c600273d8ed918e000.tar.gz
* pe-arm-wince.c (pe_print_compressed_pdata): Define new function to
print compressed pdata structure as described on MSDN. This only applies to a limited set of architectures (ARM, SH4). (slurp_symtab, my_symbol_for_address): Define static helper functions for pe_print_compressed_pdata. * coffcode.h (bfd_coff_backend_data): Add _bfd_coff_print_pdata field. (bfd_coff_have_print_pdata, bfd_coff_print_pdata): Define. * bfd/peXXigen.c (_bfd_XX_print_private_bfd_data_common): Add check on bfd_coff_backend_data, call the function if non-null. * pei-mcore.c: Add target dependent initialisation for bfd_coff_backend_data. * coff-sh.c: Likewise. * coff64-rs6000.c: Likewise. * coff-rs6000.c: Likewise. * libcoff-in.h: Likewise. * cf-i386lynx.c: Likewise. * coff-alpha.c: Likewise. * coff-apollo.c: Likewise. * coff-arm.c: Likewise. * coff-aux.c: Likewise. * coff-h8300.c: Likewise. * coff-h8500.c: Likewise. * coff-i386.c: Likewise. * coff-i860.c: Likewise. * coff-i960.c: Likewise. * coff-ia64.c: Likewise. * coff-m68k.c: Likewise. * coff-m88k.c: Likewise. * coff-maxq.c: Likewise. * coff-mips.c: Likewise. * coff-or32.c: Likewise. * coff-sparc.c: Likewise. * coff-tic30.c: Likewise. * coff-tic4x.c: Likewise. * coff-tic54x.c: Likewise. * coff-tic80.c: Likewise. * coff-w65.c: Likewise. * coff-we32k.c: Likewise. * coff-x86_64.c: Likewise. * coff-z80.c: Likewise. * coff-z8k.c: Likewise. * pe-mcore.c: Likewise. * pe-mips.c: Likewise. * pe-ppc.c: Likewise. * peXXigen.c: Likewise. * pei-ppc.c: Likewise. * libcoff.h: Regenerate.
Diffstat (limited to 'bfd/peXXigen.c')
-rw-r--r--bfd/peXXigen.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/bfd/peXXigen.c b/bfd/peXXigen.c
index ddba2354df..be06ee6f2b 100644
--- a/bfd/peXXigen.c
+++ b/bfd/peXXigen.c
@@ -1,6 +1,6 @@
/* Support for the generic parts of PE/PEI; the common executable parts.
Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007 Free Software Foundation, Inc.
+ 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
Written by Cygnus Solutions.
This file is part of BFD, the Binary File Descriptor library.
@@ -1581,7 +1581,15 @@ pe_print_edata (bfd * abfd, void * vfile)
/* This really is architecture dependent. On IA-64, a .pdata entry
consists of three dwords containing relative virtual addresses that
specify the start and end address of the code range the entry
- covers and the address of the corresponding unwind info data. */
+ covers and the address of the corresponding unwind info data.
+
+ On ARM and SH-4, a compressed PDATA structure is used :
+ _IMAGE_CE_RUNTIME_FUNCTION_ENTRY, whereas MIPS is documented to use
+ _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY.
+ See http://msdn2.microsoft.com/en-us/library/ms253988(VS.80).aspx .
+
+ The version of this function to deal with compressed pdata has been
+ moved to pe-arm-wince.c. */
static bfd_boolean
pe_print_pdata (bfd * abfd, void * vfile)
@@ -1705,6 +1713,7 @@ pe_print_pdata (bfd * abfd, void * vfile)
free (data);
return TRUE;
+#undef PDATA_ROW_SIZE
}
#define IMAGE_REL_BASED_HIGHADJ 4
@@ -1975,7 +1984,10 @@ _bfd_XX_print_private_bfd_data_common (bfd * abfd, void * vfile)
pe_print_idata (abfd, vfile);
pe_print_edata (abfd, vfile);
- pe_print_pdata (abfd, vfile);
+ if (bfd_coff_have_print_pdata (abfd))
+ bfd_coff_print_pdata (abfd, vfile);
+ else
+ pe_print_pdata (abfd, vfile);
pe_print_reloc (abfd, vfile);
return TRUE;