diff options
Diffstat (limited to 'contrib/binutils/ld/ldctor.c')
-rw-r--r-- | contrib/binutils/ld/ldctor.c | 69 |
1 files changed, 31 insertions, 38 deletions
diff --git a/contrib/binutils/ld/ldctor.c b/contrib/binutils/ld/ldctor.c index aa6a05b..34d5e52 100644 --- a/contrib/binutils/ld/ldctor.c +++ b/contrib/binutils/ld/ldctor.c @@ -1,6 +1,6 @@ /* ldctor.c -- constructor support routines - Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 - Free Software Foundation, Inc. + Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, + 2002, 2003 Free Software Foundation, Inc. By Steve Chamberlain <sac@cygnus.com> This file is part of GLD, the Gnu Linker. @@ -33,9 +33,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "ldmain.h" #include "ldctor.h" -static int ctor_prio PARAMS ((const char *)); -static int ctor_cmp PARAMS ((const PTR, const PTR)); - /* The list of statements needed to handle constructors. These are invoked by the command CONSTRUCTORS in the linker script. */ lang_statement_list_type constructor_list; @@ -43,7 +40,7 @@ lang_statement_list_type constructor_list; /* Whether the constructors should be sorted. Note that this is global for the entire link; we assume that there is only a single CONSTRUCTORS command in the linker script. */ -boolean constructors_sorted; +bfd_boolean constructors_sorted; /* The sets we have seen. */ struct set_info *sets; @@ -56,24 +53,23 @@ struct set_info *sets; function will construct the sets. */ void -ldctor_add_set_entry (h, reloc, name, section, value) - struct bfd_link_hash_entry *h; - bfd_reloc_code_real_type reloc; - const char *name; - asection *section; - bfd_vma value; +ldctor_add_set_entry (struct bfd_link_hash_entry *h, + bfd_reloc_code_real_type reloc, + const char *name, + asection *section, + bfd_vma value) { struct set_info *p; struct set_element *e; struct set_element **epp; - for (p = sets; p != (struct set_info *) NULL; p = p->next) + for (p = sets; p != NULL; p = p->next) if (p->h == h) break; - if (p == (struct set_info *) NULL) + if (p == NULL) { - p = (struct set_info *) xmalloc (sizeof (struct set_info)); + p = xmalloc (sizeof (struct set_info)); p->next = sets; sets = p; p->h = h; @@ -109,7 +105,7 @@ ldctor_add_set_entry (h, reloc, name, section, value) } } - e = (struct set_element *) xmalloc (sizeof (struct set_element)); + e = xmalloc (sizeof (struct set_element)); e->next = NULL; e->name = name; e->section = section; @@ -126,8 +122,7 @@ ldctor_add_set_entry (h, reloc, name, section, value) symbol name. */ static int -ctor_prio (name) - const char *name; +ctor_prio (const char *name) { /* The name will look something like _GLOBAL_$I$65535$test02__Fv. There might be extra leading underscores, and the $ characters @@ -155,12 +150,10 @@ ctor_prio (name) is called via qsort. */ static int -ctor_cmp (p1, p2) - const PTR p1; - const PTR p2; +ctor_cmp (const void *p1, const void *p2) { - const struct set_element **pe1 = (const struct set_element **) p1; - const struct set_element **pe2 = (const struct set_element **) p2; + const struct set_element * const *pe1 = p1; + const struct set_element * const *pe2 = p2; const char *n1; const char *n2; int prio1; @@ -202,18 +195,18 @@ ctor_cmp (p1, p2) themselves into constructor_list. */ void -ldctor_build_sets () +ldctor_build_sets (void) { - static boolean called; + static bfd_boolean called; lang_statement_list_type *old; - boolean header_printed; + bfd_boolean header_printed; struct set_info *p; /* The emulation code may call us directly, but we only want to do this once. */ if (called) return; - called = true; + called = TRUE; if (constructors_sorted) { @@ -230,7 +223,7 @@ ldctor_build_sets () for (e = p->elements; e != NULL; e = e->next) ++c; - array = (struct set_element **) xmalloc (c * sizeof *array); + array = xmalloc (c * sizeof *array); i = 0; for (e = p->elements; e != NULL; e = e->next) @@ -256,8 +249,8 @@ ldctor_build_sets () lang_list_init (stat_ptr); - header_printed = false; - for (p = sets; p != (struct set_info *) NULL; p = p->next) + header_printed = FALSE; + for (p = sets; p != NULL; p = p->next) { struct set_element *e; reloc_howto_type *howto; @@ -278,12 +271,12 @@ ldctor_build_sets () .long elementN .long 0 except that we use the right size instead of .long. When - generating relocateable output, we generate relocs instead of + generating relocatable output, we generate relocs instead of addresses. */ howto = bfd_reloc_type_lookup (output_bfd, p->reloc); - if (howto == (reloc_howto_type *) NULL) + if (howto == NULL) { - if (link_info.relocateable) + if (link_info.relocatable) { einfo (_("%P%X: %s does not support reloc %s for set %s\n"), bfd_get_target (output_bfd), @@ -292,7 +285,7 @@ ldctor_build_sets () continue; } - /* If this is not a relocateable link, all we need is the + /* If this is not a relocatable link, all we need is the size, which we can get from the input BFD. */ if (p->elements->section->owner != NULL) howto = bfd_reloc_type_lookup (p->elements->section->owner, @@ -331,9 +324,9 @@ ldctor_build_sets () exp_intop (reloc_size)))); lang_add_assignment (exp_assop ('=', p->h->root.string, exp_nameop (NAME, "."))); - lang_add_data (size, exp_intop ((bfd_vma) p->count)); + lang_add_data (size, exp_intop (p->count)); - for (e = p->elements; e != (struct set_element *) NULL; e = e->next) + for (e = p->elements; e != NULL; e = e->next) { if (config.map_file != NULL) { @@ -342,7 +335,7 @@ ldctor_build_sets () if (! header_printed) { minfo (_("\nSet Symbol\n\n")); - header_printed = true; + header_printed = TRUE; } minfo ("%s", p->h->root.string); @@ -369,7 +362,7 @@ ldctor_build_sets () if (! bfd_is_abs_section (e->section)) e->section->flags |= SEC_KEEP; - if (link_info.relocateable) + if (link_info.relocatable) lang_add_reloc (p->reloc, howto, e->section, e->name, exp_intop (e->value)); else |