diff options
author | Alan Modra <amodra@gmail.com> | 2016-03-31 15:02:14 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2016-03-31 19:35:33 +1030 |
commit | fc90c28021804df1f5bf7f1381d893470c64c417 (patch) | |
tree | 7ccfab4ab13fb98478e5d7c0d63961fef5673970 /ld/ldlang.c | |
parent | e046cf801d513ceafc38216ec4e2a907b52a3f91 (diff) | |
download | gdb-fc90c28021804df1f5bf7f1381d893470c64c417.zip gdb-fc90c28021804df1f5bf7f1381d893470c64c417.tar.gz gdb-fc90c28021804df1f5bf7f1381d893470c64c417.tar.bz2 |
More cases of missing TO_ADDR in ldlang.c
and one extraneous occurrence.
* ldlang.c (TO_ADDR, TO_SIZE, opb_shift): Move earlier in file.
(lang_insert_orphan): Use TO_ADDR in __stop sym calculation.
(print_input_section): Don't use TO_ADDR when printing section
size.
(lang_size_sections_1): Use TO_ADDR in overlay lma calculation.
(lang_size_sections): Use TO_ADDR in relro end calculation.
Diffstat (limited to 'ld/ldlang.c')
-rw-r--r-- | ld/ldlang.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/ld/ldlang.c b/ld/ldlang.c index cb6aab6..9fca810 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -49,7 +49,13 @@ #define offsetof(TYPE, MEMBER) ((size_t) & (((TYPE*) 0)->MEMBER)) #endif -/* Locals variables. */ +/* Convert between addresses in bytes and sizes in octets. + For currently supported targets, octets_per_byte is always a power + of two, so we can use shifts. */ +#define TO_ADDR(X) ((X) >> opb_shift) +#define TO_SIZE(X) ((X) << opb_shift) + +/* Local variables. */ static struct obstack stat_obstack; static struct obstack map_obstack; @@ -68,6 +74,7 @@ static lang_statement_list_type *stat_save[10]; static lang_statement_list_type **stat_save_ptr = &stat_save[0]; static struct unique_sections *unique_section_list; static struct asneeded_minfo *asneeded_list_head; +static unsigned int opb_shift = 0; static bfd_boolean maybe_overlays = FALSE; /* Forward declarations. */ @@ -1887,7 +1894,7 @@ lang_insert_orphan (asection *s, before sizing dynamic sections. */ dot = os->bfd_section->vma; exp_fold_tree (start_assign->exp, os->bfd_section, &dot); - dot += s->size; + dot += TO_ADDR (s->size); exp_fold_tree (stop_assign->exp, os->bfd_section, &dot); } @@ -3209,15 +3216,6 @@ ldlang_open_output (lang_statement_union_type *statement) } } -/* Convert between addresses in bytes and sizes in octets. - For currently supported targets, octets_per_byte is always a power - of two, so we can use shifts. */ -#define TO_ADDR(X) ((X) >> opb_shift) -#define TO_SIZE(X) ((X) << opb_shift) - -/* Support the above. */ -static unsigned int opb_shift = 0; - static void init_opb (void) { @@ -4225,7 +4223,7 @@ print_input_section (asection *i, bfd_boolean is_discarded) size = 0; } - minfo ("0x%V %W %B\n", addr, TO_ADDR (size), i->owner); + minfo ("0x%V %W %B\n", addr, size, i->owner); if (size != i->rawsize && i->rawsize != 0) { @@ -5132,7 +5130,7 @@ lang_size_sections_1 /* If this is an overlay, set the current lma to that at the end of the previous section. */ if (os->sectype == overlay_section) - lma = last->lma + last->size; + lma = last->lma + TO_ADDR (last->size); /* Otherwise, keep the same lma to vma relationship as the previous section. */ @@ -5524,7 +5522,7 @@ lang_size_sections (bfd_boolean *relax, bfd_boolean check_regions) end = start = sec->vma; if (!IS_TBSS (sec)) - end += sec->size; + end += TO_ADDR (sec->size); bump = desired_end - end; /* We'd like to increase START by BUMP, but we must heed alignment so the increase might be less than optimum. */ |