diff -urp src.head/ld/emultempl/elf32.em src.gas/ld/emultempl/elf32.em --- src.head/ld/emultempl/elf32.em 2009-09-07 13:21:35.146724000 -0700 +++ src.gas/ld/emultempl/elf32.em 2009-09-10 15:52:32.831148000 -0700 @@ -137,7 +137,8 @@ gld${EMULATION_NAME}_load_symbols (lang_ || (bfd_get_file_flags (entry->the_bfd) & DYNAMIC) == 0) return FALSE; - bfd_elf_set_dyn_lib_class (entry->the_bfd, link_class); + bfd_elf_set_dyn_lib_class (entry->the_bfd, + (enum dynamic_lib_link_class) link_class); /* Continue on with normal load_symbols processing. */ return FALSE; @@ -428,7 +429,7 @@ fragment <by) & DYN_NO_ADD_NEEDED) != 0) link_class |= DYN_NO_NEEDED | DYN_NO_ADD_NEEDED; - bfd_elf_set_dyn_lib_class (abfd, link_class); + bfd_elf_set_dyn_lib_class (abfd, (enum dynamic_lib_link_class) link_class); /* Add this file into the symbol table. */ if (! bfd_link_add_symbols (abfd, &link_info)) @@ -930,7 +931,7 @@ static bfd_boolean gld${EMULATION_NAME}_write_build_id_section (bfd *abfd) { const struct elf_backend_data *bed = get_elf_backend_data (abfd); - struct build_id_info *info = + struct build_id_info *info = (struct build_id_info *) elf_tdata (abfd)->after_write_object_contents_info; asection *asec; Elf_Internal_Shdr *i_shdr; @@ -950,13 +951,13 @@ gld${EMULATION_NAME}_write_build_id_sect if (i_shdr->contents == NULL) { if (asec->contents == NULL) - asec->contents = xmalloc (asec->size); + asec->contents = (unsigned char *) xmalloc (asec->size); contents = asec->contents; } else contents = i_shdr->contents + asec->output_offset; - e_note = (void *) contents; + e_note = (Elf_External_Note *) contents; size = offsetof (Elf_External_Note, name[sizeof "GNU"]); size = (size + 3) & -(bfd_size_type) 4; id_bits = contents + size; @@ -1075,7 +1076,8 @@ gld${EMULATION_NAME}_after_open (void) if (s != NULL && bfd_set_section_alignment (abfd, s, 2)) { struct elf_obj_tdata *t = elf_tdata (link_info.output_bfd); - struct build_id_info *b = xmalloc (sizeof *b); + struct build_id_info *b = + (struct build_id_info *) xmalloc (sizeof *b); b->style = link_info.emit_note_gnu_build_id; b->sec = s; @@ -1453,7 +1455,7 @@ ${ELF_INTERPRETER_SET_DEFAULT} continue; sz = s->size; - msg = xmalloc ((size_t) (sz + 1)); + msg = (char *) xmalloc ((size_t) (sz + 1)); if (! bfd_get_section_contents (is->the_bfd, s, msg, (file_ptr) 0, sz)) einfo ("%F%B: Can't read contents of section .gnu.warning: %E\n", diff -urp src.head/ld/ld.h src.gas/ld/ld.h --- src.head/ld/ld.h 2009-08-14 11:07:07.670979000 -0700 +++ src.gas/ld/ld.h 2009-09-10 11:26:56.998806000 -0700 @@ -124,6 +124,22 @@ typedef struct fat_user_section_struct { #define LONG_SIZE (4) #define QUAD_SIZE (8) +enum endian_enum { ENDIAN_UNSET = 0, ENDIAN_BIG, ENDIAN_LITTLE }; + +enum symbolic_enum + { + symbolic_unset = 0, + symbolic, + symbolic_functions, + }; + +enum dynamic_list_enum + { + dynamic_list_unset = 0, + dynamic_list_data, + dynamic_list + }; + typedef struct { /* 1 => assign space to common symbols even if `relocatable_output'. */ bfd_boolean force_common_definition; @@ -161,24 +177,14 @@ typedef struct { bfd_boolean accept_unknown_input_arch; /* Big or little endian as set on command line. */ - enum { ENDIAN_UNSET = 0, ENDIAN_BIG, ENDIAN_LITTLE } endian; + enum endian_enum endian; /* -Bsymbolic and -Bsymbolic-functions, as set on command line. */ - enum - { - symbolic_unset = 0, - symbolic, - symbolic_functions, - } symbolic; + enum symbolic_enum symbolic; /* --dynamic-list, --dynamic-list-cpp-new, --dynamic-list-cpp-typeinfo and --dynamic-list FILE, as set on command line. */ - enum - { - dynamic_list_unset = 0, - dynamic_list_data, - dynamic_list - } dynamic_list; + enum dynamic_list_enum dynamic_list; /* Name of runtime interpreter to invoke. */ char *interpreter; diff -urp src.head/ld/ldcref.c src.gas/ld/ldcref.c --- src.head/ld/ldcref.c 2009-09-07 13:21:33.943861000 -0700 +++ src.gas/ld/ldcref.c 2009-09-10 13:58:04.433796000 -0700 @@ -179,7 +179,7 @@ add_cref (const char *name, if (r == NULL) { - r = bfd_hash_allocate (&cref_table.root, sizeof *r); + r = (struct cref_ref *) bfd_hash_allocate (&cref_table.root, sizeof *r); if (r == NULL) einfo (_("%X%P: cref alloc failed: %E\n")); r->next = h->refs; @@ -324,7 +324,7 @@ handle_asneeded_cref (bfd *abfd ATTRIBUT static bfd_boolean cref_fill_array (struct cref_hash_entry *h, void *data) { - struct cref_hash_entry ***pph = data; + struct cref_hash_entry ***pph = (struct cref_hash_entry ***) data; ASSERT (h->demangled == NULL); h->demangled = bfd_demangle (link_info.output_bfd, h->root.string, @@ -344,8 +344,10 @@ cref_fill_array (struct cref_hash_entry static int cref_sort_array (const void *a1, const void *a2) { - const struct cref_hash_entry * const *p1 = a1; - const struct cref_hash_entry * const *p2 = a2; + const struct cref_hash_entry * const *p1 = + (const struct cref_hash_entry * const *) a1; + const struct cref_hash_entry * const *p2 = + (const struct cref_hash_entry * const *) a2; return strcmp ((*p1)->demangled, (*p2)->demangled); } @@ -378,7 +380,7 @@ output_cref (FILE *fp) return; } - csyms = xmalloc (cref_symcount * sizeof (*csyms)); + csyms = (struct cref_hash_entry **) xmalloc (cref_symcount * sizeof (*csyms)); csym_fill = csyms; cref_hash_traverse (&cref_table, cref_fill_array, &csym_fill); @@ -602,7 +604,7 @@ check_refs (const char *name, static void check_reloc_refs (bfd *abfd, asection *sec, void *iarg) { - struct check_refs_info *info = iarg; + struct check_refs_info *info = (struct check_refs_info *) iarg; asection *outsec; const char *outsecname; asection *outdefsec; @@ -649,7 +651,7 @@ check_reloc_refs (bfd *abfd, asection *s if (relsize == 0) return; - relpp = xmalloc (relsize); + relpp = (arelent **) xmalloc (relsize); relcount = bfd_canonicalize_reloc (abfd, sec, relpp, info->asymbols); if (relcount < 0) einfo (_("%B%F: could not read relocs: %E\n"), abfd); diff -urp src.head/ld/ldctor.c src.gas/ld/ldctor.c --- src.head/ld/ldctor.c 2009-09-07 13:21:33.955867000 -0700 +++ src.gas/ld/ldctor.c 2009-09-10 11:56:22.462013000 -0700 @@ -70,7 +70,7 @@ ldctor_add_set_entry (struct bfd_link_ha if (p == NULL) { - p = xmalloc (sizeof (struct set_info)); + p = (struct set_info *) xmalloc (sizeof (struct set_info)); p->next = sets; sets = p; p->h = h; @@ -106,7 +106,7 @@ ldctor_add_set_entry (struct bfd_link_ha } } - e = xmalloc (sizeof (struct set_element)); + e = (struct set_element *) xmalloc (sizeof (struct set_element)); e->next = NULL; e->name = name; e->section = section; @@ -153,8 +153,10 @@ ctor_prio (const char *name) static int ctor_cmp (const void *p1, const void *p2) { - const struct set_element * const *pe1 = p1; - const struct set_element * const *pe2 = p2; + const struct set_element * const *pe1 = + (const struct set_element * const *) p1; + const struct set_element * const *pe2 = + (const struct set_element * const *) p2; const char *n1; const char *n2; int prio1; @@ -223,7 +225,7 @@ ldctor_build_sets (void) for (e = p->elements; e != NULL; e = e->next) ++c; - array = xmalloc (c * sizeof *array); + array = (struct set_element **) xmalloc (c * sizeof *array); i = 0; for (e = p->elements; e != NULL; e = e->next) diff -urp src.head/ld/ldexp.c src.gas/ld/ldexp.c --- src.head/ld/ldexp.c 2009-09-07 13:21:34.001855000 -0700 +++ src.gas/ld/ldexp.c 2009-09-10 12:47:36.608098000 -0700 @@ -946,7 +946,7 @@ exp_provide (const char *dst, etree_type { etree_type *n; - n = stat_alloc (sizeof (n->assign)); + n = (etree_type *) stat_alloc (sizeof (n->assign)); n->assign.type.node_code = '='; n->assign.type.lineno = src->type.lineno; n->assign.type.node_class = etree_provide; @@ -963,7 +963,7 @@ exp_assert (etree_type *exp, const char { etree_type *n; - n = stat_alloc (sizeof (n->assert_s)); + n = (etree_type *) stat_alloc (sizeof (n->assert_s)); n->assert_s.type.node_code = '!'; n->assert_s.type.lineno = exp->type.lineno; n->assert_s.type.node_class = etree_assert; @@ -1095,7 +1095,7 @@ exp_get_fill (etree_type *tree, fill_typ { unsigned char *dst; unsigned char *s; - fill = xmalloc ((len + 1) / 2 + sizeof (*fill) - 1); + fill = (fill_type *) xmalloc ((len + 1) / 2 + sizeof (*fill) - 1); fill->size = (len + 1) / 2; dst = fill->data; s = (unsigned char *) expld.result.str; @@ -1120,7 +1120,7 @@ exp_get_fill (etree_type *tree, fill_typ } else { - fill = xmalloc (4 + sizeof (*fill) - 1); + fill = (fill_type *) xmalloc (4 + sizeof (*fill) - 1); val = expld.result.value; fill->data[0] = (val >> 24) & 0xff; fill->data[1] = (val >> 16) & 0xff; diff -urp src.head/ld/ldexp.h src.gas/ld/ldexp.h --- src.head/ld/ldexp.h 2009-06-16 09:08:14.310705000 -0700 +++ src.gas/ld/ldexp.h 2009-09-10 11:42:50.987609000 -0700 @@ -30,21 +30,23 @@ typedef struct { bfd_boolean valid_p; } etree_value_type; +enum node_tree_enum { + etree_binary, + etree_trinary, + etree_unary, + etree_name, + etree_assign, + etree_provide, + etree_provided, + etree_value, + etree_assert, + etree_rel +}; + typedef struct { int node_code; unsigned int lineno; - enum { - etree_binary, - etree_trinary, - etree_unary, - etree_name, - etree_assign, - etree_provide, - etree_provided, - etree_value, - etree_assert, - etree_rel - } node_class; + enum node_tree_enum node_class; } node_type; typedef union etree_union { @@ -100,6 +102,21 @@ typedef enum { union lang_statement_union; +enum phase_enum { + exp_dataseg_none, + exp_dataseg_align_seen, + exp_dataseg_relro_seen, + exp_dataseg_end_seen, + exp_dataseg_relro_adjust, + exp_dataseg_adjust +}; + +enum relro_enum { + exp_dataseg_relro_none, + exp_dataseg_relro_start, + exp_dataseg_relro_end, +}; + struct ldexp_control { /* Modify expression evaluation depending on this. */ lang_phase_type phase; @@ -117,22 +134,11 @@ struct ldexp_control { /* State machine and results for DATASEG. */ struct { - enum { - exp_dataseg_none, - exp_dataseg_align_seen, - exp_dataseg_relro_seen, - exp_dataseg_end_seen, - exp_dataseg_relro_adjust, - exp_dataseg_adjust - } phase; + enum phase_enum phase; bfd_vma base, min_base, relro_end, end, pagesize, maxpagesize; - enum { - exp_dataseg_relro_none, - exp_dataseg_relro_start, - exp_dataseg_relro_end, - } relro; + enum relro_enum relro; union lang_statement_union *relro_start_stat; union lang_statement_union *relro_end_stat; diff -urp src.head/ld/ldlang.c src.gas/ld/ldlang.c --- src.head/ld/ldlang.c 2009-08-31 10:37:54.149616000 -0700 +++ src.gas/ld/ldlang.c 2009-09-10 11:51:54.761903000 -0700 @@ -307,7 +307,7 @@ typedef struct static bfd_boolean section_iterator_callback (bfd *bfd ATTRIBUTE_UNUSED, asection *s, void *data) { - section_iterator_callback_data *d = data; + section_iterator_callback_data *d = (section_iterator_callback_data *) data; if (d->found_section != NULL) { @@ -452,7 +452,7 @@ output_section_callback_fast (lang_wild_ if (unique_section_p (section)) return; - node = xmalloc (sizeof (lang_section_bst_type)); + node = (lang_section_bst_type *) xmalloc (sizeof (lang_section_bst_type)); node->left = 0; node->right = 0; node->section = section; @@ -813,7 +813,9 @@ walk_wild_file (lang_wild_statement_type lang_input_statement. */ if (member->usrdata != NULL) { - walk_wild_section (s, member->usrdata, callback, data); + walk_wild_section (s, + (lang_input_statement_type *) member->usrdata, + callback, data); } member = bfd_openr_next_archived_file (f->the_bfd, member); @@ -1095,7 +1097,8 @@ output_section_statement_newfunc (struct if (entry == NULL) { - entry = bfd_hash_allocate (table, sizeof (*ret)); + entry = (struct bfd_hash_entry *) bfd_hash_allocate (table, + sizeof (*ret)); if (entry == NULL) return entry; } @@ -1296,7 +1299,7 @@ lang_memory_region_alias (const char * a alias); /* Add alias to region name list. */ - n = stat_alloc (sizeof (lang_memory_region_name)); + n = (lang_memory_region_name *) stat_alloc (sizeof (lang_memory_region_name)); n->name = xstrdup (alias); n->next = region->name_list.next; region->name_list.next = n; @@ -1717,8 +1720,8 @@ lang_insert_orphan (asection *s, os_tail = ((lang_output_section_statement_type **) lang_output_section_statement.tail); - os = lang_enter_output_section_statement (secname, address, 0, NULL, NULL, - NULL, constraint); + os = lang_enter_output_section_statement (secname, address, normal_section, + NULL, NULL, NULL, constraint); ps = NULL; if (config.build_constructors && *os_tail == os) @@ -2012,18 +2015,20 @@ sort_def_symbol (struct bfd_link_hash_en struct fat_user_section_struct *ud; struct map_symbol_def *def; - ud = get_userdata (hash_entry->u.def.section); + ud = (struct fat_user_section_struct *) + get_userdata (hash_entry->u.def.section); if (! ud) { /* ??? What do we have to do to initialize this beforehand? */ /* The first time we get here is bfd_abs_section... */ init_map_userdata (0, hash_entry->u.def.section, 0); - ud = get_userdata (hash_entry->u.def.section); + ud = (struct fat_user_section_struct *) + get_userdata (hash_entry->u.def.section); } else if (!ud->map_symbol_def_tail) ud->map_symbol_def_tail = &ud->map_symbol_def_head; - def = obstack_alloc (&map_obstack, sizeof *def); + def = (struct map_symbol_def *) obstack_alloc (&map_obstack, sizeof *def); def->entry = hash_entry; *(ud->map_symbol_def_tail) = def; ud->map_symbol_def_tail = &def->next; @@ -2139,7 +2144,7 @@ exp_init_os (etree_type *exp) static void section_already_linked (bfd *abfd, asection *sec, void *data) { - lang_input_statement_type *entry = data; + lang_input_statement_type *entry = (lang_input_statement_type *) data; /* If we are only reading symbols from this object, then we want to discard all sections. */ @@ -2528,9 +2533,9 @@ add_excluded_libs (const char *list) end = strpbrk (p, ",:"); if (end == NULL) end = p + strlen (p); - entry = xmalloc (sizeof (*entry)); + entry = (struct excluded_lib *) xmalloc (sizeof (*entry)); entry->next = excluded_libs; - entry->name = xmalloc (end - p + 1); + entry->name = (char *) xmalloc (end - p + 1); memcpy (entry->name, p, end - p); entry->name[end - p] = '\0'; excluded_libs = entry; @@ -2751,7 +2756,7 @@ wild (lang_wild_statement_type *s, static int get_target (const bfd_target *target, void *data) { - const char *sought = data; + const char *sought = (const char *) data; return strcmp (target->name, sought) == 0; } @@ -2798,8 +2803,8 @@ name_compare (char *first, char *second) char *copy2; int result; - copy1 = xmalloc (strlen (first) + 1); - copy2 = xmalloc (strlen (second) + 1); + copy1 = (char *) xmalloc (strlen (first) + 1); + copy2 = (char *) xmalloc (strlen (second) + 1); /* Convert the names to lower case. */ stricpy (copy1, first); @@ -2837,7 +2842,7 @@ static const bfd_target *winner; static int closest_target_match (const bfd_target *target, void *data) { - const bfd_target *original = data; + const bfd_target *original = (const bfd_target *) data; if (command_line.endian == ENDIAN_BIG && target->byteorder != BFD_ENDIAN_BIG) @@ -3932,7 +3937,7 @@ print_input_statement (lang_input_statem static bfd_boolean print_one_symbol (struct bfd_link_hash_entry *hash_entry, void *ptr) { - asection *sec = ptr; + asection *sec = (asection *) ptr; if ((hash_entry->type == bfd_link_hash_defined || hash_entry->type == bfd_link_hash_defweak) @@ -3970,7 +3975,8 @@ hash_entry_addr_cmp (const void *a, cons static void print_all_symbols (asection *sec) { - struct fat_user_section_struct *ud = get_userdata (sec); + struct fat_user_section_struct *ud = + (struct fat_user_section_struct *) get_userdata (sec); struct map_symbol_def *def; struct bfd_link_hash_entry **entries; unsigned int i; @@ -3981,8 +3987,8 @@ print_all_symbols (asection *sec) *ud->map_symbol_def_tail = 0; /* Sort the symbols by address. */ - entries = obstack_alloc (&map_obstack, - ud->map_symbol_def_count * sizeof (*entries)); + entries = (struct bfd_link_hash_entry **) + obstack_alloc (&map_obstack, ud->map_symbol_def_count * sizeof (*entries)); for (i = 0, def = ud->map_symbol_def_head; def; def = def->next, i++) entries[i] = def->entry; @@ -4419,7 +4425,8 @@ insert_pad (lang_statement_union_type ** else { /* Make a new padding statement, linked into existing chain. */ - pad = stat_alloc (sizeof (lang_padding_statement_type)); + pad = (lang_statement_union_type *) + stat_alloc (sizeof (lang_padding_statement_type)); pad->header.next = *ptr; *ptr = pad; pad->header.type = lang_padding_statement_enum; @@ -4535,7 +4542,7 @@ lang_check_section_addresses (void) return; amt = bfd_count_sections (link_info.output_bfd) * sizeof (asection *); - sections = xmalloc (amt); + sections = (asection **) xmalloc (amt); /* Scan all sections in the output list. */ count = 0; @@ -5465,7 +5472,7 @@ lang_set_startof (void) struct bfd_link_hash_entry *h; secname = bfd_get_section_name (link_info.output_bfd, s); - buf = xmalloc (10 + strlen (secname)); + buf = (char *) xmalloc (10 + strlen (secname)); sprintf (buf, ".startof.%s", secname); h = bfd_link_hash_lookup (link_info.hash, buf, FALSE, FALSE, TRUE); @@ -6762,7 +6769,7 @@ lang_new_phdr (const char *name, { struct lang_phdr *n, **pp; - n = stat_alloc (sizeof (struct lang_phdr)); + n = (struct lang_phdr *) stat_alloc (sizeof (struct lang_phdr)); n->next = NULL; n->name = name; n->type = exp_get_value_int (type, 0, "program header type"); @@ -6789,7 +6796,7 @@ lang_record_phdrs (void) lang_output_section_statement_type *os; alc = 10; - secs = xmalloc (alc * sizeof (asection *)); + secs = (asection **) xmalloc (alc * sizeof (asection *)); last = NULL; for (l = lang_phdr_list; l != NULL; l = l->next) @@ -6856,7 +6863,8 @@ lang_record_phdrs (void) if (c >= alc) { alc *= 2; - secs = xrealloc (secs, alc * sizeof (asection *)); + secs = (asection **) xrealloc (secs, + alc * sizeof (asection *)); } secs[c] = os->bfd_section; ++c; @@ -6910,7 +6918,7 @@ lang_add_nocrossref (lang_nocrossref_typ { struct lang_nocrossrefs *n; - n = xmalloc (sizeof *n); + n = (struct lang_nocrossrefs *) xmalloc (sizeof *n); n->next = nocrossref_list; n->list = l; nocrossref_list = n; @@ -6972,7 +6980,7 @@ lang_enter_overlay_section (const char * overlay_vma = exp_nameop (ADDR, name); /* Remember the section. */ - n = xmalloc (sizeof *n); + n = (struct overlay_list *) xmalloc (sizeof *n); n->os = current_section; n->next = overlay_list; overlay_list = n; @@ -7008,20 +7016,20 @@ lang_leave_overlay_section (fill_type *f /* Define the magic symbols. */ - clean = xmalloc (strlen (name) + 1); + clean = (char *) xmalloc (strlen (name) + 1); s2 = clean; for (s1 = name; *s1 != '\0'; s1++) if (ISALNUM (*s1) || *s1 == '_') *s2++ = *s1; *s2 = '\0'; - buf = xmalloc (strlen (clean) + sizeof "__load_start_"); + buf = (char *) xmalloc (strlen (clean) + sizeof "__load_start_"); sprintf (buf, "__load_start_%s", clean); lang_add_assignment (exp_provide (buf, exp_nameop (LOADADDR, name), FALSE)); - buf = xmalloc (strlen (clean) + sizeof "__load_stop_"); + buf = (char *) xmalloc (strlen (clean) + sizeof "__load_stop_"); sprintf (buf, "__load_stop_%s", clean); lang_add_assignment (exp_provide (buf, exp_binop ('+', @@ -7087,7 +7095,7 @@ lang_leave_overlay (etree_type *lma_expr { lang_nocrossref_type *nc; - nc = xmalloc (sizeof *nc); + nc = (lang_nocrossref_type *) xmalloc (sizeof *nc); nc->name = l->os->name; nc->next = nocrossref; nocrossref = nc; @@ -7148,7 +7156,8 @@ lang_vers_match (struct bfd_elf_version_ if (head->mask & BFD_ELF_VERSION_C_TYPE) { e.pattern = sym; - expr = htab_find (head->htab, &e); + expr = (struct bfd_elf_version_expr *) + htab_find ((htab_t) head->htab, &e); while (expr && strcmp (expr->pattern, sym) == 0) if (expr->mask == BFD_ELF_VERSION_C_TYPE) goto out_ret; @@ -7160,7 +7169,8 @@ lang_vers_match (struct bfd_elf_version_ if (head->mask & BFD_ELF_VERSION_CXX_TYPE) { e.pattern = cxx_sym; - expr = htab_find (head->htab, &e); + expr = (struct bfd_elf_version_expr *) + htab_find ((htab_t) head->htab, &e); while (expr && strcmp (expr->pattern, cxx_sym) == 0) if (expr->mask == BFD_ELF_VERSION_CXX_TYPE) goto out_ret; @@ -7172,7 +7182,8 @@ lang_vers_match (struct bfd_elf_version_ if (head->mask & BFD_ELF_VERSION_JAVA_TYPE) { e.pattern = java_sym; - expr = htab_find (head->htab, &e); + expr = (struct bfd_elf_version_expr *) + htab_find ((htab_t) head->htab, &e); while (expr && strcmp (expr->pattern, java_sym) == 0) if (expr->mask == BFD_ELF_VERSION_JAVA_TYPE) goto out_ret; @@ -7226,7 +7237,7 @@ realsymbol (const char *pattern) { const char *p; bfd_boolean changed = FALSE, backslash = FALSE; - char *s, *symbol = xmalloc (strlen (pattern) + 1); + char *s, *symbol = (char *) xmalloc (strlen (pattern) + 1); for (p = pattern, s = symbol; *p != '\0'; ++p) { @@ -7313,7 +7324,7 @@ lang_new_vers_node (struct bfd_elf_versi { struct bfd_elf_version_tree *ret; - ret = xcalloc (1, sizeof *ret); + ret = (struct bfd_elf_version_tree *) xcalloc (1, sizeof *ret); ret->globals.list = globals; ret->locals.list = locals; ret->match = lang_vers_match; @@ -7328,7 +7339,8 @@ static int version_index; static hashval_t version_expr_head_hash (const void *p) { - const struct bfd_elf_version_expr *e = p; + const struct bfd_elf_version_expr *e = + (const struct bfd_elf_version_expr *) p; return htab_hash_string (e->pattern); } @@ -7336,8 +7348,10 @@ version_expr_head_hash (const void *p) static int version_expr_head_eq (const void *p1, const void *p2) { - const struct bfd_elf_version_expr *e1 = p1; - const struct bfd_elf_version_expr *e2 = p2; + const struct bfd_elf_version_expr *e1 = + (const struct bfd_elf_version_expr *) p1; + const struct bfd_elf_version_expr *e2 = + (const struct bfd_elf_version_expr *) p2; return strcmp (e1->pattern, e2->pattern) == 0; } @@ -7372,13 +7386,13 @@ lang_finalize_version_expr_head (struct } else { - void **loc = htab_find_slot (head->htab, e, INSERT); + void **loc = htab_find_slot ((htab_t) head->htab, e, INSERT); if (*loc) { struct bfd_elf_version_expr *e1, *last; - e1 = *loc; + e1 = (struct bfd_elf_version_expr *) *loc; last = NULL; do { @@ -7463,7 +7477,8 @@ lang_register_vers_node (const char *nam if (t->locals.htab && e1->literal) { - e2 = htab_find (t->locals.htab, e1); + e2 = (struct bfd_elf_version_expr *) + htab_find ((htab_t) t->locals.htab, e1); while (e2 && strcmp (e1->pattern, e2->pattern) == 0) { if (e1->mask == e2->mask) @@ -7489,7 +7504,8 @@ lang_register_vers_node (const char *nam if (t->globals.htab && e1->literal) { - e2 = htab_find (t->globals.htab, e1); + e2 = (struct bfd_elf_version_expr *) + htab_find ((htab_t) t->globals.htab, e1); while (e2 && strcmp (e1->pattern, e2->pattern) == 0) { if (e1->mask == e2->mask) @@ -7531,7 +7547,7 @@ lang_add_vers_depend (struct bfd_elf_ver struct bfd_elf_version_deps *ret; struct bfd_elf_version_tree *t; - ret = xmalloc (sizeof *ret); + ret = (struct bfd_elf_version_deps *) xmalloc (sizeof *ret); ret->next = list; for (t = lang_elf_version_info; t != NULL; t = t->next) @@ -7563,7 +7579,7 @@ lang_do_version_exports_section (void) continue; len = sec->size; - contents = xmalloc (len); + contents = (char *) xmalloc (len); if (!bfd_get_section_contents (is->the_bfd, sec, contents, 0, len)) einfo (_("%X%P: unable to read .exports section contents\n"), sec); @@ -7594,7 +7610,7 @@ lang_add_unique (const char *name) if (strcmp (ent->name, name) == 0) return; - ent = xmalloc (sizeof *ent); + ent = (struct unique_sections *) xmalloc (sizeof *ent); ent->name = xstrdup (name); ent->next = unique_section_list; unique_section_list = ent; @@ -7617,7 +7633,7 @@ lang_append_dynamic_list (struct bfd_elf { struct bfd_elf_dynamic_list *d; - d = xcalloc (1, sizeof *d); + d = (struct bfd_elf_dynamic_list *) xcalloc (1, sizeof *d); d->head.list = dynamic; d->match = lang_vers_match; link_info.dynamic_list = d; diff -urp src.head/ld/ldlang.h src.gas/ld/ldlang.h --- src.head/ld/ldlang.h 2009-08-31 10:37:54.168625000 -0700 +++ src.gas/ld/ldlang.h 2009-09-10 11:53:14.495299000 -0700 @@ -66,28 +66,30 @@ typedef struct memory_region_struct bfd_boolean had_full_message; } lang_memory_region_type; +enum statement_enum +{ + lang_output_section_statement_enum, + lang_assignment_statement_enum, + lang_input_statement_enum, + lang_address_statement_enum, + lang_wild_statement_enum, + lang_input_section_enum, + lang_object_symbols_statement_enum, + lang_fill_statement_enum, + lang_data_statement_enum, + lang_reloc_statement_enum, + lang_target_statement_enum, + lang_output_statement_enum, + lang_padding_statement_enum, + lang_group_statement_enum, + lang_insert_statement_enum, + lang_constructors_statement_enum +}; + typedef struct lang_statement_header_struct { union lang_statement_union *next; - enum statement_enum - { - lang_output_section_statement_enum, - lang_assignment_statement_enum, - lang_input_statement_enum, - lang_address_statement_enum, - lang_wild_statement_enum, - lang_input_section_enum, - lang_object_symbols_statement_enum, - lang_fill_statement_enum, - lang_data_statement_enum, - lang_reloc_statement_enum, - lang_target_statement_enum, - lang_output_statement_enum, - lang_padding_statement_enum, - lang_group_statement_enum, - lang_insert_statement_enum, - lang_constructors_statement_enum - } type; + enum statement_enum type; } lang_statement_header_type; typedef struct diff -urp src.head/ld/ldmain.c src.gas/ld/ldmain.c --- src.head/ld/ldmain.c 2009-09-07 13:21:34.110865000 -0700 +++ src.gas/ld/ldmain.c 2009-09-10 12:46:38.128530000 -0700 @@ -399,7 +399,7 @@ main (int argc, char **argv) { static const int ld_bufsz = 8193; size_t n; - char *buf = xmalloc (ld_bufsz); + char *buf = (char *) xmalloc (ld_bufsz); rewind (saved_script_handle); while ((n = fread (buf, 1, ld_bufsz - 1, saved_script_handle)) > 0) @@ -503,9 +503,9 @@ main (int argc, char **argv) FILE *src; FILE *dst; const int bsize = 4096; - char *buf = xmalloc (bsize); + char *buf = (char *) xmalloc (bsize); int l; - char *dst_name = xmalloc (len + 5); + char *dst_name = (char *) xmalloc (len + 5); strcpy (dst_name, output_filename); strcat (dst_name, ".exe"); @@ -540,7 +540,7 @@ main (int argc, char **argv) if (config.stats) { #ifdef HAVE_SBRK - char *lim = sbrk (0); + char *lim = (char *) sbrk (0); #endif long run_time = get_run_time () - start_time; @@ -672,7 +672,8 @@ add_ysym (const char *name) { if (link_info.notice_hash == NULL) { - link_info.notice_hash = xmalloc (sizeof (struct bfd_hash_table)); + link_info.notice_hash = + (struct bfd_hash_table *) xmalloc (sizeof (struct bfd_hash_table)); if (!bfd_hash_table_init_n (link_info.notice_hash, bfd_hash_newfunc, sizeof (struct bfd_hash_entry), @@ -691,7 +692,8 @@ add_wrap (const char *name) { if (link_info.wrap_hash == NULL) { - link_info.wrap_hash = xmalloc (sizeof (struct bfd_hash_table)); + link_info.wrap_hash = + (struct bfd_hash_table *) xmalloc (sizeof (struct bfd_hash_table)); if (!bfd_hash_table_init_n (link_info.wrap_hash, bfd_hash_newfunc, sizeof (struct bfd_hash_entry), @@ -724,13 +726,14 @@ add_keepsyms_file (const char *filename) return; } - link_info.keep_hash = xmalloc (sizeof (struct bfd_hash_table)); + link_info.keep_hash = (struct bfd_hash_table *) + xmalloc (sizeof (struct bfd_hash_table)); if (!bfd_hash_table_init (link_info.keep_hash, bfd_hash_newfunc, sizeof (struct bfd_hash_entry))) einfo (_("%P%F: bfd_hash_table_init failed: %E\n")); bufsize = 100; - buf = xmalloc (bufsize); + buf = (char *) xmalloc (bufsize); c = getc (file); while (c != EOF) @@ -749,7 +752,7 @@ add_keepsyms_file (const char *filename) if (len >= bufsize) { bufsize *= 2; - buf = xrealloc (buf, bufsize); + buf = (char *) xrealloc (buf, bufsize); } c = getc (file); } @@ -780,7 +783,8 @@ add_archive_element (struct bfd_link_inf { lang_input_statement_type *input; - input = xcalloc (1, sizeof (lang_input_statement_type)); + input = (lang_input_statement_type *) + xcalloc (1, sizeof (lang_input_statement_type)); input->filename = abfd->filename; input->local_sym_name = abfd->filename; input->the_bfd = abfd; @@ -1127,7 +1131,7 @@ warning_callback (struct bfd_link_info * static void warning_find_reloc (bfd *abfd, asection *sec, void *iarg) { - struct warning_callback_info *info = iarg; + struct warning_callback_info *info = (struct warning_callback_info *) iarg; long relsize; arelent **relpp; long relcount; @@ -1142,7 +1146,7 @@ warning_find_reloc (bfd *abfd, asection if (relsize == 0) return; - relpp = xmalloc (relsize); + relpp = (arelent **) xmalloc (relsize); relcount = bfd_canonicalize_reloc (abfd, sec, relpp, info->asymbols); if (relcount < 0) einfo (_("%B%F: could not read relocs: %E\n"), abfd); @@ -1190,7 +1194,8 @@ undefined_symbol (struct bfd_link_info * /* Only warn once about a particular undefined symbol. */ if (hash == NULL) { - hash = xmalloc (sizeof (struct bfd_hash_table)); + hash = (struct bfd_hash_table *) + xmalloc (sizeof (struct bfd_hash_table)); if (!bfd_hash_table_init (hash, bfd_hash_newfunc, sizeof (struct bfd_hash_entry))) einfo (_("%F%P: bfd_hash_table_init failed: %E\n")); @@ -1376,7 +1381,7 @@ notice (struct bfd_link_info *info, if (name == NULL) { if (command_line.cref || nocrossref_list != NULL) - return handle_asneeded_cref (abfd, value); + return handle_asneeded_cref (abfd, (enum notice_asneeded_action) value); return TRUE; } diff -urp src.head/ld/ldwrite.c src.gas/ld/ldwrite.c --- src.head/ld/ldwrite.c 2009-06-16 09:08:14.399643000 -0700 +++ src.gas/ld/ldwrite.c 2009-09-10 12:47:12.995428000 -0700 @@ -57,7 +57,7 @@ build_link_order (lang_statement_union_t link_order->type = bfd_data_link_order; link_order->offset = statement->data_statement.output_offset; - link_order->u.data.contents = xmalloc (QUAD_SIZE); + link_order->u.data.contents = (bfd_byte *) xmalloc (QUAD_SIZE); value = statement->data_statement.value; @@ -198,7 +198,8 @@ build_link_order (lang_statement_union_t link_order->offset = rs->output_offset; link_order->size = bfd_get_reloc_size (rs->howto); - link_order->u.reloc.p = xmalloc (sizeof (struct bfd_link_order_reloc)); + link_order->u.reloc.p = (struct bfd_link_order_reloc *) + xmalloc (sizeof (struct bfd_link_order_reloc)); link_order->u.reloc.p->reloc = rs->reloc; link_order->u.reloc.p->addend = rs->addend_value; @@ -333,7 +334,7 @@ clone_section (bfd *abfd, asection *s, c /* Invent a section name from the section name and a dotted numeric suffix. */ len = strlen (name); - tname = xmalloc (len + 1); + tname = (char *) xmalloc (len + 1); memcpy (tname, name, len + 1); /* Remove a dotted number suffix, from a previous split link. */ while (len && ISDIGIT (tname[len-1])) diff -urp src.head/ld/lexsup.c src.gas/ld/lexsup.c --- src.head/ld/lexsup.c 2009-09-07 13:21:34.175885000 -0700 +++ src.gas/ld/lexsup.c 2009-09-10 11:27:26.844480000 -0700 @@ -172,6 +172,25 @@ enum option_values /* The long options. This structure is used for both the option parsing and the help text. */ +enum control_enum { + /* Use one dash before long option name. */ + ONE_DASH, + /* Use two dashes before long option name. */ + TWO_DASHES, + /* Only accept two dashes before the long option name. + This is an overloading of the use of this enum, since originally it + was only intended to tell the --help display function how to display + the long option name. This feature was added in order to resolve + the confusion about the -omagic command line switch. Is it setting + the output file name to "magic" or is it setting the NMAGIC flag on + the output ? It has been decided that it is setting the output file + name, and that if you want to set the NMAGIC flag you should use -N + or --omagic. */ + EXACTLY_TWO_DASHES, + /* Don't mention this option in --help output. */ + NO_HELP +}; + struct ld_option { /* The long option information. */ @@ -183,24 +202,7 @@ struct ld_option /* The documentation string. If this is NULL, this is a synonym for the previous option. */ const char *doc; - enum { - /* Use one dash before long option name. */ - ONE_DASH, - /* Use two dashes before long option name. */ - TWO_DASHES, - /* Only accept two dashes before the long option name. - This is an overloading of the use of this enum, since originally it - was only intended to tell the --help display function how to display - the long option name. This feature was added in order to resolve - the confusion about the -omagic command line switch. Is it setting - the output file name to "magic" or is it setting the NMAGIC flag on - the output ? It has been decided that it is setting the output file - name, and that if you want to set the NMAGIC flag you should use -N - or --omagic. */ - EXACTLY_TWO_DASHES, - /* Don't mention this option in --help output. */ - NO_HELP - } control; + enum control_enum control; }; static const struct ld_option ld_options[] = @@ -590,9 +592,11 @@ parse_args (unsigned argc, char **argv) int last_optind; enum report_method how_to_report_unresolved_symbols = RM_GENERATE_ERROR; - shortopts = xmalloc (OPTION_COUNT * 3 + 2); - longopts = xmalloc (sizeof (*longopts) * (OPTION_COUNT + 1)); - really_longopts = xmalloc (sizeof (*really_longopts) * (OPTION_COUNT + 1)); + shortopts = (char *) xmalloc (OPTION_COUNT * 3 + 2); + longopts = (struct option *) + xmalloc (sizeof (*longopts) * (OPTION_COUNT + 1)); + really_longopts = (struct option *) + malloc (sizeof (*really_longopts) * (OPTION_COUNT + 1)); /* Starting the short option string with '-' is for programs that expect options and other ARGV-elements in any order and that care about @@ -677,7 +681,7 @@ parse_args (unsigned argc, char **argv) { char *n; - n = xmalloc (strlen (argv[i]) + 20); + n = (char *) xmalloc (strlen (argv[i]) + 20); sprintf (n, "--library=%s", argv[i] + 2); argv[i] = n; } @@ -833,7 +837,8 @@ parse_args (unsigned argc, char **argv) case 'f': if (command_line.auxiliary_filters == NULL) { - command_line.auxiliary_filters = xmalloc (2 * sizeof (char *)); + command_line.auxiliary_filters = (char **) + xmalloc (2 * sizeof (char *)); command_line.auxiliary_filters[0] = optarg; command_line.auxiliary_filters[1] = NULL; } @@ -845,8 +850,8 @@ parse_args (unsigned argc, char **argv) c = 0; for (p = command_line.auxiliary_filters; *p != NULL; p++) ++c; - command_line.auxiliary_filters - = xrealloc (command_line.auxiliary_filters, + command_line.auxiliary_filters = (char **) + xrealloc (command_line.auxiliary_filters, (c + 2) * sizeof (char *)); command_line.auxiliary_filters[c] = optarg; command_line.auxiliary_filters[c + 1] = NULL; @@ -1092,7 +1097,7 @@ parse_args (unsigned argc, char **argv) if (cp == NULL) { - buf = xmalloc (rpath_len + optarg_len + 2); + buf = (char *) xmalloc (rpath_len + optarg_len + 2); sprintf (buf, "%s%c%s", command_line.rpath, config.rpath_separator, optarg); free (command_line.rpath); @@ -1107,9 +1112,9 @@ parse_args (unsigned argc, char **argv) { char *buf; - buf = xmalloc (strlen (command_line.rpath_link) - + strlen (optarg) - + 2); + buf = (char *) xmalloc (strlen (command_line.rpath_link) + + strlen (optarg) + + 2); sprintf (buf, "%s%c%s", command_line.rpath_link, config.rpath_separator, optarg); free (command_line.rpath_link); @@ -1224,7 +1229,7 @@ parse_args (unsigned argc, char **argv) /* We must copy the section name as set_section_start doesn't do it for us. */ len = optarg2 - optarg; - sec_name = xmalloc (len); + sec_name = (char *) xmalloc (len); memcpy (sec_name, optarg, len - 1); sec_name[len - 1] = 0; @@ -1549,7 +1554,7 @@ set_segment_start (const char *section, } /* There was no existing value so we must create a new segment entry. */ - seg = stat_alloc (sizeof (*seg)); + seg = (segment_type *) stat_alloc (sizeof (*seg)); seg->name = name; seg->value = val; seg->used = FALSE; diff -urp src.head/ld/mri.c src.gas/ld/mri.c --- src.head/ld/mri.c 2009-06-16 09:08:14.409637000 -0700 +++ src.gas/ld/mri.c 2009-09-10 11:54:01.253515000 -0700 @@ -68,7 +68,8 @@ lookup (const char *name, struct section ptr = &((*ptr)->next); } - *ptr = xmalloc (sizeof (struct section_name_struct)); + *ptr = (struct section_name_struct *) + xmalloc (sizeof (struct section_name_struct)); return ptr; } @@ -206,10 +207,10 @@ mri_draw_tree (void) base = p->vma ? p->vma : exp_nameop (NAME, "."); lang_enter_output_section_statement (p->name, base, - p->ok_to_load ? 0 : noload_section, + p->ok_to_load ? normal_section : noload_section, align, subalign, NULL, 0); base = 0; - tmp = xmalloc (sizeof *tmp); + tmp = (struct wildcard_list *) xmalloc (sizeof *tmp); tmp->next = NULL; tmp->spec.name = p->name; tmp->spec.exclude_name_list = NULL; @@ -220,7 +221,7 @@ mri_draw_tree (void) for (aptr = alias; aptr; aptr = aptr->next) if (strcmp (aptr->alias, p->name) == 0) { - tmp = xmalloc (sizeof *tmp); + tmp = (struct wildcard_list *) xmalloc (sizeof *tmp); tmp->next = NULL; tmp->spec.name = aptr->name; tmp->spec.exclude_name_list = NULL;