diff options
author | obrien <obrien@FreeBSD.org> | 2004-06-16 05:45:41 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2004-06-16 05:45:41 +0000 |
commit | 2504df11e1275f63f4c53377bf91eee996360cb5 (patch) | |
tree | 04848ae93445e503c4190ca1748abe15eabc9e11 /contrib/binutils/ld/ldexp.c | |
parent | 6b4c52b743ec5e2e9f65d42b517feefad5017901 (diff) | |
download | FreeBSD-src-2504df11e1275f63f4c53377bf91eee996360cb5.zip FreeBSD-src-2504df11e1275f63f4c53377bf91eee996360cb5.tar.gz |
Import of Binutils from the FSF 2.15 branch (just post-.0 release).
These bits are taken from the FSF anoncvs repo on 23-May-2004 04:41:00 UTC.
Diffstat (limited to 'contrib/binutils/ld/ldexp.c')
-rw-r--r-- | contrib/binutils/ld/ldexp.c | 406 |
1 files changed, 158 insertions, 248 deletions
diff --git a/contrib/binutils/ld/ldexp.c b/contrib/binutils/ld/ldexp.c index e88e322..4d9a857 100644 --- a/contrib/binutils/ld/ldexp.c +++ b/contrib/binutils/ld/ldexp.c @@ -1,6 +1,6 @@ /* This module handles expression trees. Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002 + 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support <sac@cygnus.com>. @@ -41,49 +41,18 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "libiberty.h" #include "safe-ctype.h" -static void exp_print_token PARAMS ((token_code_type code, int infix_p)); -static void make_abs PARAMS ((etree_value_type *ptr)); -static etree_value_type new_abs PARAMS ((bfd_vma value)); -static void check PARAMS ((lang_output_section_statement_type *os, - const char *name, const char *op)); -static etree_value_type new_rel - PARAMS ((bfd_vma, char *, lang_output_section_statement_type *section)); -static etree_value_type new_rel_from_section - PARAMS ((bfd_vma value, lang_output_section_statement_type *section)); -static etree_value_type fold_unary - PARAMS ((etree_type *tree, - lang_output_section_statement_type *current_section, - lang_phase_type allocation_done, - bfd_vma dot, bfd_vma *dotp)); -static etree_value_type fold_binary - PARAMS ((etree_type *tree, - lang_output_section_statement_type *current_section, - lang_phase_type allocation_done, - bfd_vma dot, bfd_vma *dotp)); -static etree_value_type fold_trinary - PARAMS ((etree_type *tree, - lang_output_section_statement_type *current_section, - lang_phase_type allocation_done, - bfd_vma dot, bfd_vma *dotp)); -static etree_value_type fold_name - PARAMS ((etree_type *tree, - lang_output_section_statement_type *current_section, - lang_phase_type allocation_done, - bfd_vma dot)); static etree_value_type exp_fold_tree_no_dot - PARAMS ((etree_type *tree, - lang_output_section_statement_type *current_section, - lang_phase_type allocation_done)); + (etree_type *, lang_output_section_statement_type *, lang_phase_type); +static bfd_vma align_n + (bfd_vma, bfd_vma); struct exp_data_seg exp_data_seg; /* Print the string representation of the given token. Surround it - with spaces if INFIX_P is true. */ + with spaces if INFIX_P is TRUE. */ static void -exp_print_token (code, infix_p) - token_code_type code; - int infix_p; +exp_print_token (token_code_type code, int infix_p) { static const struct { @@ -130,7 +99,7 @@ exp_print_token (code, infix_p) { ADDR, "ADDR" }, { LOADADDR, "LOADADDR" }, { MAX_K, "MAX_K" }, - { REL, "relocateable" }, + { REL, "relocatable" }, { DATA_SEGMENT_ALIGN, "DATA_SEGMENT_ALIGN" }, { DATA_SEGMENT_END, "DATA_SEGMENT_END" } }; @@ -155,8 +124,7 @@ exp_print_token (code, infix_p) } static void -make_abs (ptr) - etree_value_type *ptr; +make_abs (etree_value_type *ptr) { asection *s = ptr->section->bfd_section; ptr->value += s->vma; @@ -164,33 +132,19 @@ make_abs (ptr) } static etree_value_type -new_abs (value) - bfd_vma value; +new_abs (bfd_vma value) { etree_value_type new; - new.valid_p = true; + new.valid_p = TRUE; new.section = abs_output_section; new.value = value; return new; } -static void -check (os, name, op) - lang_output_section_statement_type *os; - const char *name; - const char *op; -{ - if (os == NULL) - einfo (_("%F%P: %s uses undefined section %s\n"), op, name); - if (! os->processed) - einfo (_("%F%P: %s forward reference of section %s\n"), op, name); -} - etree_type * -exp_intop (value) - bfd_vma value; +exp_intop (bfd_vma value) { - etree_type *new = (etree_type *) stat_alloc (sizeof (new->value)); + etree_type *new = stat_alloc (sizeof (new->value)); new->type.node_code = INT; new->value.value = value; new->value.str = NULL; @@ -199,11 +153,9 @@ exp_intop (value) } etree_type * -exp_bigintop (value, str) - bfd_vma value; - char *str; +exp_bigintop (bfd_vma value, char *str) { - etree_type *new = (etree_type *) stat_alloc (sizeof (new->value)); + etree_type *new = stat_alloc (sizeof (new->value)); new->type.node_code = INT; new->value.value = value; new->value.str = str; @@ -211,14 +163,12 @@ exp_bigintop (value, str) return new; } -/* Build an expression representing an unnamed relocateable value. */ +/* Build an expression representing an unnamed relocatable value. */ etree_type * -exp_relop (section, value) - asection *section; - bfd_vma value; +exp_relop (asection *section, bfd_vma value) { - etree_type *new = (etree_type *) stat_alloc (sizeof (new->rel)); + etree_type *new = stat_alloc (sizeof (new->rel)); new->type.node_code = REL; new->type.node_class = etree_rel; new->rel.section = section; @@ -227,13 +177,12 @@ exp_relop (section, value) } static etree_value_type -new_rel (value, str, section) - bfd_vma value; - char *str; - lang_output_section_statement_type *section; +new_rel (bfd_vma value, + char *str, + lang_output_section_statement_type *section) { etree_value_type new; - new.valid_p = true; + new.valid_p = TRUE; new.value = value; new.str = str; new.section = section; @@ -241,12 +190,11 @@ new_rel (value, str, section) } static etree_value_type -new_rel_from_section (value, section) - bfd_vma value; - lang_output_section_statement_type *section; +new_rel_from_section (bfd_vma value, + lang_output_section_statement_type *section) { etree_value_type new; - new.valid_p = true; + new.valid_p = TRUE; new.value = value; new.str = NULL; new.section = section; @@ -257,12 +205,11 @@ new_rel_from_section (value, section) } static etree_value_type -fold_unary (tree, current_section, allocation_done, dot, dotp) - etree_type *tree; - lang_output_section_statement_type *current_section; - lang_phase_type allocation_done; - bfd_vma dot; - bfd_vma *dotp; +fold_unary (etree_type *tree, + lang_output_section_statement_type *current_section, + lang_phase_type allocation_done, + bfd_vma dot, + bfd_vma *dotp) { etree_value_type result; @@ -278,7 +225,7 @@ fold_unary (tree, current_section, allocation_done, dot, dotp) result = new_rel_from_section (align_n (dot, result.value), current_section); else - result.valid_p = false; + result.valid_p = FALSE; break; case ABSOLUTE: @@ -288,7 +235,7 @@ fold_unary (tree, current_section, allocation_done, dot, dotp) result.section = abs_output_section; } else - result.valid_p = false; + result.valid_p = FALSE; break; case '~': @@ -314,7 +261,7 @@ fold_unary (tree, current_section, allocation_done, dot, dotp) result.value = align_n (dot, result.value); } else - result.valid_p = false; + result.valid_p = FALSE; break; case DATA_SEGMENT_END: @@ -331,7 +278,7 @@ fold_unary (tree, current_section, allocation_done, dot, dotp) } } else - result.valid_p = false; + result.valid_p = FALSE; break; default: @@ -344,12 +291,11 @@ fold_unary (tree, current_section, allocation_done, dot, dotp) } static etree_value_type -fold_binary (tree, current_section, allocation_done, dot, dotp) - etree_type *tree; - lang_output_section_statement_type *current_section; - lang_phase_type allocation_done; - bfd_vma dot; - bfd_vma *dotp; +fold_binary (etree_type *tree, + lang_output_section_statement_type *current_section, + lang_phase_type allocation_done, + bfd_vma dot, + bfd_vma *dotp) { etree_value_type result; @@ -437,6 +383,10 @@ fold_binary (tree, current_section, allocation_done, dot, dotp) result = other; break; + case ALIGN_K: + result.value = align_n (result.value, other.value); + break; + case DATA_SEGMENT_ALIGN: if (allocation_done != lang_first_phase_enum && current_section == abs_output_section @@ -462,7 +412,7 @@ fold_binary (tree, current_section, allocation_done, dot, dotp) & (maxpage - other.value); } else - result.valid_p = false; + result.valid_p = FALSE; break; default: @@ -471,7 +421,7 @@ fold_binary (tree, current_section, allocation_done, dot, dotp) } else { - result.valid_p = false; + result.valid_p = FALSE; } } @@ -479,12 +429,11 @@ fold_binary (tree, current_section, allocation_done, dot, dotp) } static etree_value_type -fold_trinary (tree, current_section, allocation_done, dot, dotp) - etree_type *tree; - lang_output_section_statement_type *current_section; - lang_phase_type allocation_done; - bfd_vma dot; - bfd_vma *dotp; +fold_trinary (etree_type *tree, + lang_output_section_statement_type *current_section, + lang_phase_type allocation_done, + bfd_vma dot, + bfd_vma *dotp) { etree_value_type result; @@ -500,63 +449,50 @@ fold_trinary (tree, current_section, allocation_done, dot, dotp) return result; } -etree_value_type -invalid () -{ - etree_value_type new; - new.valid_p = false; - return new; -} - static etree_value_type -fold_name (tree, current_section, allocation_done, dot) - etree_type *tree; - lang_output_section_statement_type *current_section; - lang_phase_type allocation_done; - bfd_vma dot; +fold_name (etree_type *tree, + lang_output_section_statement_type *current_section, + lang_phase_type allocation_done, + bfd_vma dot) { etree_value_type result; + result.valid_p = FALSE; + switch (tree->type.node_code) { case SIZEOF_HEADERS: if (allocation_done != lang_first_phase_enum) - { - result = new_abs ((bfd_vma) - bfd_sizeof_headers (output_bfd, - link_info.relocateable)); - } - else - { - result.valid_p = false; - } + result = new_abs (bfd_sizeof_headers (output_bfd, + link_info.relocatable)); break; case DEFINED: if (allocation_done == lang_first_phase_enum) - result.valid_p = false; + lang_track_definedness (tree->name.name); else { struct bfd_link_hash_entry *h; + int def_iteration + = lang_symbol_definition_iteration (tree->name.name); h = bfd_wrapped_link_hash_lookup (output_bfd, &link_info, tree->name.name, - false, false, true); - result.value = (h != (struct bfd_link_hash_entry *) NULL + FALSE, FALSE, TRUE); + result.value = (h != NULL && (h->type == bfd_link_hash_defined || h->type == bfd_link_hash_defweak - || h->type == bfd_link_hash_common)); - result.section = 0; - result.valid_p = true; + || h->type == bfd_link_hash_common) + && (def_iteration == lang_statement_iteration + || def_iteration == -1)); + result.section = abs_output_section; + result.valid_p = TRUE; } break; case NAME: - result.valid_p = false; if (tree->name.name[0] == '.' && tree->name.name[1] == 0) { if (allocation_done != lang_first_phase_enum) result = new_rel_from_section (dot, current_section); - else - result = invalid (); } else if (allocation_done != lang_first_phase_enum) { @@ -564,10 +500,11 @@ fold_name (tree, current_section, allocation_done, dot) h = bfd_wrapped_link_hash_lookup (output_bfd, &link_info, tree->name.name, - false, false, true); - if (h != NULL - && (h->type == bfd_link_hash_defined - || h->type == bfd_link_hash_defweak)) + TRUE, FALSE, TRUE); + if (!h) + einfo (_("%P%F: bfd_link_hash_lookup failed: %E\n")); + else if (h->type == bfd_link_hash_defined + || h->type == bfd_link_hash_defweak) { if (bfd_is_abs_section (h->u.def.section)) result = new_abs (h->u.def.value); @@ -600,6 +537,12 @@ fold_name (tree, current_section, allocation_done, dot) else if (allocation_done == lang_final_phase_enum) einfo (_("%F%S: undefined symbol `%s' referenced in expression\n"), tree->name.name); + else if (h->type == bfd_link_hash_new) + { + h->type = bfd_link_hash_undefined; + h->u.undef.abfd = NULL; + bfd_link_add_undef (link_info.hash, h); + } } break; @@ -609,11 +552,9 @@ fold_name (tree, current_section, allocation_done, dot) lang_output_section_statement_type *os; os = lang_output_section_find (tree->name.name); - check (os, tree->name.name, "ADDR"); - result = new_rel (0, NULL, os); + if (os && os->processed > 0) + result = new_rel (0, NULL, os); } - else - result = invalid (); break; case LOADADDR: @@ -622,16 +563,16 @@ fold_name (tree, current_section, allocation_done, dot) lang_output_section_statement_type *os; os = lang_output_section_find (tree->name.name); - check (os, tree->name.name, "LOADADDR"); - if (os->load_base == NULL) - result = new_rel (0, NULL, os); - else - result = exp_fold_tree_no_dot (os->load_base, - abs_output_section, - allocation_done); + if (os && os->processed != 0) + { + if (os->load_base == NULL) + result = new_rel (0, NULL, os); + else + result = exp_fold_tree_no_dot (os->load_base, + abs_output_section, + allocation_done); + } } - else - result = invalid (); break; case SIZEOF: @@ -641,11 +582,9 @@ fold_name (tree, current_section, allocation_done, dot) lang_output_section_statement_type *os; os = lang_output_section_find (tree->name.name); - check (os, tree->name.name, "SIZEOF"); - result = new_abs (os->bfd_section->_raw_size / opb); + if (os && os->processed > 0) + result = new_abs (os->bfd_section->_raw_size / opb); } - else - result = invalid (); break; default: @@ -657,18 +596,17 @@ fold_name (tree, current_section, allocation_done, dot) } etree_value_type -exp_fold_tree (tree, current_section, allocation_done, dot, dotp) - etree_type *tree; - lang_output_section_statement_type *current_section; - lang_phase_type allocation_done; - bfd_vma dot; - bfd_vma *dotp; +exp_fold_tree (etree_type *tree, + lang_output_section_statement_type *current_section, + lang_phase_type allocation_done, + bfd_vma dot, + bfd_vma *dotp) { etree_value_type result; if (tree == NULL) { - result.valid_p = false; + result.valid_p = FALSE; return result; } @@ -680,7 +618,7 @@ exp_fold_tree (tree, current_section, allocation_done, dot, dotp) case etree_rel: if (allocation_done != lang_final_phase_enum) - result.valid_p = false; + result.valid_p = FALSE; else result = new_rel ((tree->rel.value + tree->rel.section->output_section->vma @@ -761,22 +699,23 @@ exp_fold_tree (tree, current_section, allocation_done, dot, dotp) dot, dotp); if (result.valid_p) { - boolean create; + bfd_boolean create; struct bfd_link_hash_entry *h; if (tree->type.node_class == etree_assign) - create = true; + create = TRUE; else - create = false; + create = FALSE; h = bfd_link_hash_lookup (link_info.hash, tree->assign.dst, - create, false, false); - if (h == (struct bfd_link_hash_entry *) NULL) + create, FALSE, TRUE); + if (h == NULL) { - if (tree->type.node_class == etree_assign) + if (create) einfo (_("%P%F:%s: hash creation failed\n"), tree->assign.dst); } else if (tree->type.node_class == etree_provide + && h->type != bfd_link_hash_new && h->type != bfd_link_hash_undefined && h->type != bfd_link_hash_common) { @@ -787,6 +726,7 @@ exp_fold_tree (tree, current_section, allocation_done, dot, dotp) { /* FIXME: Should we worry if the symbol is already defined? */ + lang_update_definedness (tree->assign.dst, h); h->type = bfd_link_hash_defined; h->u.def.value = result.value; h->u.def.section = result.section->bfd_section; @@ -810,20 +750,15 @@ exp_fold_tree (tree, current_section, allocation_done, dot, dotp) } static etree_value_type -exp_fold_tree_no_dot (tree, current_section, allocation_done) - etree_type *tree; - lang_output_section_statement_type *current_section; - lang_phase_type allocation_done; +exp_fold_tree_no_dot (etree_type *tree, + lang_output_section_statement_type *current_section, + lang_phase_type allocation_done) { - return exp_fold_tree (tree, current_section, allocation_done, - (bfd_vma) 0, (bfd_vma *) NULL); + return exp_fold_tree (tree, current_section, allocation_done, 0, NULL); } etree_type * -exp_binop (code, lhs, rhs) - int code; - etree_type *lhs; - etree_type *rhs; +exp_binop (int code, etree_type *lhs, etree_type *rhs) { etree_type value, *new; etree_value_type r; @@ -839,17 +774,13 @@ exp_binop (code, lhs, rhs) { return exp_intop (r.value); } - new = (etree_type *) stat_alloc (sizeof (new->binary)); - memcpy ((char *) new, (char *) &value, sizeof (new->binary)); + new = stat_alloc (sizeof (new->binary)); + memcpy (new, &value, sizeof (new->binary)); return new; } etree_type * -exp_trinop (code, cond, lhs, rhs) - int code; - etree_type *cond; - etree_type *lhs; - etree_type *rhs; +exp_trinop (int code, etree_type *cond, etree_type *lhs, etree_type *rhs) { etree_type value, *new; etree_value_type r; @@ -858,21 +789,17 @@ exp_trinop (code, cond, lhs, rhs) value.trinary.cond = cond; value.trinary.rhs = rhs; value.type.node_class = etree_trinary; - r = exp_fold_tree_no_dot (&value, - (lang_output_section_statement_type *) NULL, - lang_first_phase_enum); + r = exp_fold_tree_no_dot (&value, NULL, lang_first_phase_enum); if (r.valid_p) return exp_intop (r.value); - new = (etree_type *) stat_alloc (sizeof (new->trinary)); - memcpy ((char *) new, (char *) &value, sizeof (new->trinary)); + new = stat_alloc (sizeof (new->trinary)); + memcpy (new, &value, sizeof (new->trinary)); return new; } etree_type * -exp_unop (code, child) - int code; - etree_type *child; +exp_unop (int code, etree_type *child) { etree_type value, *new; @@ -885,15 +812,13 @@ exp_unop (code, child) if (r.valid_p) return exp_intop (r.value); - new = (etree_type *) stat_alloc (sizeof (new->unary)); - memcpy ((char *) new, (char *) &value, sizeof (new->unary)); + new = stat_alloc (sizeof (new->unary)); + memcpy (new, &value, sizeof (new->unary)); return new; } etree_type * -exp_nameop (code, name) - int code; - const char *name; +exp_nameop (int code, const char *name) { etree_type value, *new; etree_value_type r; @@ -901,23 +826,18 @@ exp_nameop (code, name) value.name.name = name; value.name.type.node_class = etree_name; - r = exp_fold_tree_no_dot (&value, - (lang_output_section_statement_type *) NULL, - lang_first_phase_enum); + r = exp_fold_tree_no_dot (&value, NULL, lang_first_phase_enum); if (r.valid_p) return exp_intop (r.value); - new = (etree_type *) stat_alloc (sizeof (new->name)); - memcpy ((char *) new, (char *) &value, sizeof (new->name)); + new = stat_alloc (sizeof (new->name)); + memcpy (new, &value, sizeof (new->name)); return new; } etree_type * -exp_assop (code, dst, src) - int code; - const char *dst; - etree_type *src; +exp_assop (int code, const char *dst, etree_type *src) { etree_type value, *new; @@ -931,21 +851,19 @@ exp_assop (code, dst, src) if (exp_fold_tree_no_dot (&value, &result)) return exp_intop (result); #endif - new = (etree_type *) stat_alloc (sizeof (new->assign)); - memcpy ((char *) new, (char *) &value, sizeof (new->assign)); + new = stat_alloc (sizeof (new->assign)); + memcpy (new, &value, sizeof (new->assign)); return new; } /* Handle PROVIDE. */ etree_type * -exp_provide (dst, src) - const char *dst; - etree_type *src; +exp_provide (const char *dst, etree_type *src) { etree_type *n; - n = (etree_type *) stat_alloc (sizeof (n->assign)); + n = stat_alloc (sizeof (n->assign)); n->assign.type.node_code = '='; n->assign.type.node_class = etree_provide; n->assign.src = src; @@ -956,13 +874,11 @@ exp_provide (dst, src) /* Handle ASSERT. */ etree_type * -exp_assert (exp, message) - etree_type *exp; - const char *message; +exp_assert (etree_type *exp, const char *message) { etree_type *n; - n = (etree_type *) stat_alloc (sizeof (n->assert_s)); + n = stat_alloc (sizeof (n->assert_s)); n->assert_s.type.node_code = '!'; n->assert_s.type.node_class = etree_assert; n->assert_s.child = exp; @@ -971,8 +887,7 @@ exp_assert (exp, message) } void -exp_print_tree (tree) - etree_type *tree; +exp_print_tree (etree_type *tree) { if (config.map_file == NULL) config.map_file = stderr; @@ -995,14 +910,14 @@ exp_print_tree (tree) return; case etree_assign: #if 0 - if (tree->assign.dst->sdefs != (asymbol *) NULL) + if (tree->assign.dst->sdefs != NULL) fprintf (config.map_file, "%s (%x) ", tree->assign.dst->name, tree->assign.dst->sdefs->value); else fprintf (config.map_file, "%s (UNDEFINED)", tree->assign.dst->name); #endif fprintf (config.map_file, "%s", tree->assign.dst); - exp_print_token (tree->type.node_code, true); + exp_print_token (tree->type.node_code, TRUE); exp_print_tree (tree->assign.src); break; case etree_provide: @@ -1014,7 +929,7 @@ exp_print_tree (tree) case etree_binary: fprintf (config.map_file, "("); exp_print_tree (tree->binary.lhs); - exp_print_token (tree->type.node_code, true); + exp_print_token (tree->type.node_code, TRUE); exp_print_tree (tree->binary.rhs); fprintf (config.map_file, ")"); break; @@ -1026,7 +941,7 @@ exp_print_tree (tree) exp_print_tree (tree->trinary.rhs); break; case etree_unary: - exp_print_token (tree->unary.type.node_code, false); + exp_print_token (tree->unary.type.node_code, FALSE); if (tree->unary.child) { fprintf (config.map_file, " ("); @@ -1051,7 +966,7 @@ exp_print_tree (tree) } else { - exp_print_token (tree->type.node_code, false); + exp_print_token (tree->type.node_code, FALSE); if (tree->name.name) fprintf (config.map_file, " (%s)", tree->name.name); } @@ -1063,11 +978,10 @@ exp_print_tree (tree) } bfd_vma -exp_get_vma (tree, def, name, allocation_done) - etree_type *tree; - bfd_vma def; - char *name; - lang_phase_type allocation_done; +exp_get_vma (etree_type *tree, + bfd_vma def, + char *name, + lang_phase_type allocation_done) { etree_value_type r; @@ -1083,21 +997,19 @@ exp_get_vma (tree, def, name, allocation_done) } int -exp_get_value_int (tree, def, name, allocation_done) - etree_type *tree; - int def; - char *name; - lang_phase_type allocation_done; +exp_get_value_int (etree_type *tree, + int def, + char *name, + lang_phase_type allocation_done) { - return (int) exp_get_vma (tree, (bfd_vma) def, name, allocation_done); + return exp_get_vma (tree, def, name, allocation_done); } fill_type * -exp_get_fill (tree, def, name, allocation_done) - etree_type *tree; - fill_type *def; - char *name; - lang_phase_type allocation_done; +exp_get_fill (etree_type *tree, + fill_type *def, + char *name, + lang_phase_type allocation_done) { fill_type *fill; etree_value_type r; @@ -1115,7 +1027,7 @@ exp_get_fill (tree, def, name, allocation_done) { unsigned char *dst; unsigned char *s; - fill = (fill_type *) xmalloc ((len + 1) / 2 + sizeof (*fill) - 1); + fill = xmalloc ((len + 1) / 2 + sizeof (*fill) - 1); fill->size = (len + 1) / 2; dst = fill->data; s = r.str; @@ -1140,7 +1052,7 @@ exp_get_fill (tree, def, name, allocation_done) } else { - fill = (fill_type *) xmalloc (4 + sizeof (*fill) - 1); + fill = xmalloc (4 + sizeof (*fill) - 1); val = r.value; fill->data[0] = (val >> 24) & 0xff; fill->data[1] = (val >> 16) & 0xff; @@ -1152,11 +1064,10 @@ exp_get_fill (tree, def, name, allocation_done) } bfd_vma -exp_get_abs_int (tree, def, name, allocation_done) - etree_type *tree; - int def ATTRIBUTE_UNUSED; - char *name; - lang_phase_type allocation_done; +exp_get_abs_int (etree_type *tree, + int def ATTRIBUTE_UNUSED, + char *name, + lang_phase_type allocation_done) { etree_value_type res; res = exp_fold_tree_no_dot (tree, abs_output_section, allocation_done); @@ -1169,9 +1080,8 @@ exp_get_abs_int (tree, def, name, allocation_done) return res.value; } -bfd_vma align_n (value, align) - bfd_vma value; - bfd_vma align; +static bfd_vma +align_n (bfd_vma value, bfd_vma align) { if (align <= 1) return value; |