[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] Replace bfd_elf_?rpintf_vma with function pointer
From: |
Nick Clifton |
Subject: |
[PATCH] Replace bfd_elf_?rpintf_vma with function pointer |
Date: |
11 Aug 2001 17:45:43 +0100 |
Hi Guys,
H.J.'s recent patch to introduce the bfd_elf_?printf_vma() functions
has one small drawback - it cause non-ELF targeted builds to fail
because bfd.c references these functions but elf.o is not included
in the creation of libbfd.a.
To fix this I have added two new fields the the elf_backend_data
structure (elf_backend_sprintf_vma and elf_backend_fprintf_vma) and
arranged for bfd_?printf_vma to invoke the appropriate elf function
via the backend data structure, if the target is an ELF target.
Here is the patch I have applied.
Cheers
Nick
2001-08-11 Nick Clifton <address@hidden>
* elf-bfd.h (struct elf_backend_data): Add new fields
'elf_backend_sprintf_vma' and 'elf_backend_fprintf_vma'.
(bfd_elf_sprintf_vma): Rename function prototype to
'_bfd_elf_sprintf_vma'.
(bfd_elf_fprintf_vma): Rename function prototype to
'_bfd_elf_fprintf_vma'.
* bfd.c (bfd_sprintf_vma): Do not invoke bfd_elf_sprintf_vma
directly, instead indirect via the elf_backend_data structure.
(bfd_fprintf_vma): Do not invoke bfd_elf_fprintf_vma directly,
instead indirect via the elf_backend_data structure.
* elf.c (bfd_elf_sprintf_vma): Rename to _bfd_elf_sprintf_vma.
(bfd_elf_fprintf_vma): Rename to _bfd_elf_fprintf_vma.
* elfxx-target.h (elf_backend_sprintf_vma): Initialise if not
already defined.
(elf_backend_fprintf_vma): Initialise if not already defined.
(struct elf_backend_data): Initialise the
elf_backend_sprintf_vma and elf_backend_fprintf_vma fields.
Index: elf-bfd.h
===================================================================
RCS file: /cvs/src/src/bfd/elf-bfd.h,v
retrieving revision 1.39
diff -p -r1.39 elf-bfd.h
*** elf-bfd.h 2001/08/09 16:46:02 1.39
--- elf-bfd.h 2001/08/11 16:39:22
*************** struct elf_backend_data
*** 636,641 ****
--- 636,645 ----
note is found in a core file. */
boolean (*elf_backend_grok_psinfo) PARAMS ((bfd *, Elf_Internal_Note *));
+ /* Functions to print VMAs. Special code to handle 64 bit ELF files. */
+ void (* elf_backend_sprintf_vma) PARAMS ((bfd *, char *, bfd_vma));
+ void (* elf_backend_fprintf_vma) PARAMS ((bfd *, PTR, bfd_vma));
+
/* The swapping table to use when dealing with ECOFF information.
Used for the MIPS ELF .mdebug section. */
const struct ecoff_debug_swap *elf_backend_ecoff_debug_swap;
*************** extern void bfd_elf_print_symbol PARAMS
*** 999,1006 ****
#define bfd_elf32_print_symbol bfd_elf_print_symbol
#define bfd_elf64_print_symbol bfd_elf_print_symbol
! extern void bfd_elf_sprintf_vma PARAMS ((bfd *, char *, bfd_vma));
! extern void bfd_elf_fprintf_vma PARAMS ((bfd *, PTR, bfd_vma));
extern unsigned long bfd_elf_hash PARAMS ((const char *));
--- 1003,1010 ----
#define bfd_elf32_print_symbol bfd_elf_print_symbol
#define bfd_elf64_print_symbol bfd_elf_print_symbol
! extern void _bfd_elf_sprintf_vma PARAMS ((bfd *, char *, bfd_vma));
! extern void _bfd_elf_fprintf_vma PARAMS ((bfd *, PTR, bfd_vma));
extern unsigned long bfd_elf_hash PARAMS ((const char *));
Index: bfd.c
===================================================================
RCS file: /cvs/src/src/bfd/bfd.c,v
retrieving revision 1.17
diff -p -r1.17 bfd.c
*** bfd.c 2001/08/10 18:43:44 1.17
--- bfd.c 2001/08/11 16:39:19
*************** bfd_sprintf_vma (abfd, buf, value)
*** 1270,1276 ****
bfd_vma value;
{
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
! bfd_elf_sprintf_vma (abfd, buf, value);
else
sprintf_vma (buf, value);
}
--- 1270,1276 ----
bfd_vma value;
{
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
! get_elf_backend_data (abfd)->elf_backend_sprintf_vma (abfd, buf, value);
else
sprintf_vma (buf, value);
}
*************** bfd_fprintf_vma (abfd, stream, value)
*** 1282,1288 ****
bfd_vma value;
{
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
! bfd_elf_fprintf_vma (abfd, stream, value);
else
fprintf_vma ((FILE *) stream, value);
}
--- 1282,1288 ----
bfd_vma value;
{
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
! get_elf_backend_data (abfd)->elf_backend_fprintf_vma (abfd, stream,
value);
else
fprintf_vma ((FILE *) stream, value);
}
Index: elf.c
===================================================================
RCS file: /cvs/src/src/bfd/elf.c,v
retrieving revision 1.79
diff -p -r1.79 elf.c
*** elf.c 2001/08/10 08:06:23 1.79
--- elf.c 2001/08/11 16:39:27
*************** bfd_get_elf_phdrs (abfd, phdrs)
*** 5996,6002 ****
}
void
! bfd_elf_sprintf_vma (abfd, buf, value)
bfd *abfd ATTRIBUTE_UNUSED;
char *buf;
bfd_vma value;
--- 5996,6002 ----
}
void
! _bfd_elf_sprintf_vma (abfd, buf, value)
bfd *abfd ATTRIBUTE_UNUSED;
char *buf;
bfd_vma value;
*************** bfd_elf_sprintf_vma (abfd, buf, value)
*** 6027,6033 ****
}
void
! bfd_elf_fprintf_vma (abfd, stream, value)
bfd *abfd ATTRIBUTE_UNUSED;
PTR stream;
bfd_vma value;
--- 6027,6033 ----
}
void
! _bfd_elf_fprintf_vma (abfd, stream, value)
bfd *abfd ATTRIBUTE_UNUSED;
PTR stream;
bfd_vma value;
Index: elfxx-target.h
===================================================================
RCS file: /cvs/src/src/bfd/elfxx-target.h,v
retrieving revision 1.24
diff -p -r1.24 elfxx-target.h
*** elfxx-target.h 2001/08/08 13:09:33 1.24
--- elfxx-target.h 2001/08/11 16:39:28
*************** Foundation, Inc., 59 Temple Place - Suit
*** 338,343 ****
--- 338,349 ----
#ifndef elf_backend_grok_psinfo
#define elf_backend_grok_psinfo NULL
#endif
+ #ifndef elf_backend_sprintf_vma
+ #define elf_backend_sprintf_vma _bfd_elf_sprintf_vma
+ #endif
+ #ifndef elf_backend_fprintf_vma
+ #define elf_backend_fprintf_vma _bfd_elf_fprintf_vma
+ #endif
/* Previously, backends could only use SHT_REL or SHT_RELA relocation
sections, but not both. They defined USE_REL to indicate SHT_REL
*************** static CONST struct elf_backend_data elf
*** 423,428 ****
--- 429,436 ----
elf_backend_count_relocs,
elf_backend_grok_prstatus,
elf_backend_grok_psinfo,
+ elf_backend_sprintf_vma,
+ elf_backend_fprintf_vma,
elf_backend_ecoff_debug_swap,
ELF_MACHINE_ALT1,
ELF_MACHINE_ALT2,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] Replace bfd_elf_?rpintf_vma with function pointer,
Nick Clifton <=