aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog40
-rw-r--r--ld/emultempl/elf32.em8
-rw-r--r--ld/emultempl/mmix-elfnmmo.em16
-rw-r--r--ld/emultempl/sh64elf.em27
-rw-r--r--ld/emultempl/sunos.em6
-rw-r--r--ld/emultempl/xtensaelf.em14
-rw-r--r--ld/ldexp.c2
-rw-r--r--ld/ldlang.c94
-rw-r--r--ld/ldwrite.c24
-rw-r--r--ld/pe-dll.c4
10 files changed, 105 insertions, 130 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index c3927de..6495681 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,29 @@
+2004-06-24 Alan Modra <amodra@bigpond.net.au>
+
+ * ldlang.c (print_output_section_statement): Don't print size before
+ relaxation.
+ (IGNORE_SECTION): Remove bfd arg. Update all callers.
+
+ * ldexp.c (fold_name): .. See below.
+ * ldlang.c (section_already_linked, print_output_section_statement,
+ print_input_section, insert_pad, size_input_section,
+ lang_check_section_addresses, lang_size_sections_1,
+ lang_size_sections, lang_do_assignments_1, lang_set_startof,
+ lang_one_common, lang_reset_memory_regions, lang_process,
+ lang_abs_symbol_at_end_of, lang_do_version_exports_section): ..
+ * ldwrite.c (build_link_order, clone_section, ds, split_sections): ..
+ * pe-dll.c (process_def_file, generate_reloc): ..
+ * emultempl/elf32.em (gld${EMULATION_NAME}_find_statement_assignment,
+ gld${EMULATION_NAME}_before_allocation): ..
+ * emultempl/mmix-elfnmmo.em (mmix_after_allocation): ..
+ * emultempl/sh64elf.em (sh64_elf_${EMULATION_NAME}_before_allocation,
+ sh64_elf_${EMULATION_NAME}_after_allocation): ..
+ * emultempl/sunos.em (gld${EMULATION_NAME}_before_allocation): ..
+ * emultempl/xtensaelf.em (ld_assign_relative_paged_dot,
+ ld_local_file_relocations_fit, ld_xtensa_insert_page_offsets): Use
+ "size" instead of "_raw_size" and "_cooked_size". Expand
+ bfd_section_size macro invocations.
+
2004-06-22 Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>
* ld/scripttemp/pe.sc (.CRT): Define ___crt_xc_start__,
@@ -10,10 +36,10 @@
* emulparams/elf32frvfd.sh (GENERATE_PIE_SCRIPT): Set to yes.
-2004-06-18 Adam Nemet <anemet@lnxw.com>
+2004-06-18 Adam Nemet <anemet@lnxw.com>
- * configure.in: Set EXTRA_SHLIB_EXTENSION to .a for LynxOS.
- * configure: Regenerate.
+ * configure.in: Set EXTRA_SHLIB_EXTENSION to .a for LynxOS.
+ * configure: Regenerate.
2004-06-15 Jakub Jelinek <jakub@redhat.com>
@@ -181,7 +207,7 @@
* scripttempl/elf.sc (.eh_frame, .gcc_except_table): Move into text
segment if all input sections are readonly.
-2004-05-19 Adam Nemet <anemet@lnxw.com>
+2004-05-19 Adam Nemet <anemet@lnxw.com>
* scripttempl/i386lynx.sc: Remove file.
@@ -189,7 +215,7 @@
* ld.texinfo (Output Section Address): Correct subsection name.
-2004-05-17 Adam Nemet <anemet@lnxw.com>
+2004-05-17 Adam Nemet <anemet@lnxw.com>
* configure.tgt (powerpc-*-lynxos* case): New case.
* configure.host (i[3-7]86-*-lynxos* case): Remove case.
@@ -248,7 +274,7 @@
before printing it with %W.
2004-05-07 Brian Ford <ford@vss.fsi.com>
- DJ Delorie <dj@redhat.com>
+ DJ Delorie <dj@redhat.com>
* emultempl/pe.em (real_flags): New static.
(OPTION_LARGE_ADDRESS_AWARE): New define.
@@ -278,7 +304,7 @@
2004-04-30 Eric Botcazou <ebotcazou@act-europe.fr>
- * ld.texinfo (--gc-sections): Remove restriction for
+ * ld.texinfo (--gc-sections): Remove restriction for
dynamic linking.
2004-04-29 Brian Ford <ford@vss.fsi.com>
diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
index 2039846..8dbd60a 100644
--- a/ld/emultempl/elf32.em
+++ b/ld/emultempl/elf32.em
@@ -840,7 +840,7 @@ if test x"$LDEMUL_BEFORE_ALLOCATION" != xgld"$EMULATION_NAME"_before_allocation;
if (sinterp != NULL)
{
sinterp->contents = ${ELF_INTERPRETER_NAME};
- sinterp->_raw_size = strlen (sinterp->contents) + 1;
+ sinterp->size = strlen (sinterp->contents) + 1;
}
"
@@ -883,7 +883,7 @@ ${ELF_INTERPRETER_SET_DEFAULT}
&& sinterp != NULL)
{
sinterp->contents = (bfd_byte *) command_line.interpreter;
- sinterp->_raw_size = strlen (command_line.interpreter) + 1;
+ sinterp->size = strlen (command_line.interpreter) + 1;
}
/* Look for any sections named .gnu.warning. As a GNU extensions,
@@ -908,7 +908,7 @@ ${ELF_INTERPRETER_SET_DEFAULT}
if (s == NULL)
continue;
- sz = bfd_section_size (is->the_bfd, s);
+ sz = s->size;
prefix_len = strlen (gnu_warning_prefix);
msg = xmalloc ((size_t) (prefix_len + sz + 1));
strcpy (msg, gnu_warning_prefix);
@@ -926,7 +926,7 @@ ${ELF_INTERPRETER_SET_DEFAULT}
/* Clobber the section size, so that we don't waste copying the
warning into the output file. */
- s->_raw_size = 0;
+ s->size = 0;
}
}
}
diff --git a/ld/emultempl/mmix-elfnmmo.em b/ld/emultempl/mmix-elfnmmo.em
index 9777fa3..4afa7ed 100644
--- a/ld/emultempl/mmix-elfnmmo.em
+++ b/ld/emultempl/mmix-elfnmmo.em
@@ -1,5 +1,5 @@
# This shell script emits a C file. -*- C -*-
-# Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
#
# This file is part of GLD, the Gnu Linker.
#
@@ -76,7 +76,7 @@ mmix_after_allocation (void)
if (sec == NULL)
return;
- regvma = 256 * 8 - sec->_raw_size - 8;
+ regvma = 256 * 8 - sec->size - 8;
/* If we start on a local register, we have too many global registers.
We treat this error as nonfatal (meaning processing will continue in
@@ -85,23 +85,13 @@ mmix_after_allocation (void)
if (regvma < 32 * 8)
{
einfo ("%X%P: Too many global registers: %u, max 223\n",
- (unsigned) sec->_raw_size / 8);
+ (unsigned) sec->size / 8);
regvma = 32 * 8;
}
/* Set vma to correspond to first such register number * 8. */
bfd_set_section_vma (output_bfd, sec, (bfd_vma) regvma);
- /* ??? Why isn't the section size (_cooked_size) set? Doesn't it get
- set regardless of presence of relocations? */
- if (sec->_cooked_size == 0
- && ! bfd_set_section_size (output_bfd, sec, sec->_raw_size))
- {
- /* This is a fatal error; make the einfo call not return. */
- einfo ("%F%P: Can't set section %s size to %u\n",
- MMIX_REG_CONTENTS_SECTION_NAME, (unsigned) sec->_raw_size);
- }
-
/* Simplify symbol output for the register section (without contents;
created for register symbols) by setting the output offset to 0.
This section is only present when there are register symbols. */
diff --git a/ld/emultempl/sh64elf.em b/ld/emultempl/sh64elf.em
index 83bfe67..0682f5c 100644
--- a/ld/emultempl/sh64elf.em
+++ b/ld/emultempl/sh64elf.em
@@ -1,5 +1,5 @@
# This shell script emits a C file. -*- C -*-
-# Copyright 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
#
# This file is part of GLD, the Gnu Linker.
#
@@ -152,7 +152,7 @@ sh64_elf_${EMULATION_NAME}_before_allocation (void)
isec = isec->next)
{
if (isec->output_section == osec
- && isec->_raw_size != 0
+ && isec->size != 0
&& (bfd_get_section_flags (isec->owner, isec)
& SEC_EXCLUDE) == 0)
{
@@ -179,7 +179,7 @@ sh64_elf_${EMULATION_NAME}_before_allocation (void)
isec = isec->next)
{
if (isec->output_section == osec
- && isec->_raw_size != 0
+ && isec->size != 0
&& (bfd_get_section_flags (isec->owner, isec)
& SEC_EXCLUDE) == 0)
{
@@ -283,7 +283,7 @@ sh64_elf_${EMULATION_NAME}_after_allocation (void)
isec = isec->next)
{
if (isec->output_section == osec
- && isec->_raw_size != 0
+ && isec->size != 0
&& (bfd_get_section_flags (isec->owner, isec)
& SEC_EXCLUDE) == 0)
{
@@ -310,7 +310,7 @@ sh64_elf_${EMULATION_NAME}_after_allocation (void)
isec = isec->next)
{
if (isec->output_section == osec
- && isec->_raw_size != 0
+ && isec->size != 0
&& (bfd_get_section_flags (isec->owner, isec)
& SEC_EXCLUDE) == 0)
{
@@ -363,7 +363,7 @@ sh64_elf_${EMULATION_NAME}_after_allocation (void)
isec = isec->next)
{
if (isec->output_section == osec
- && isec->_raw_size != 0
+ && isec->size != 0
&& (bfd_get_section_flags (isec->owner, isec)
& SEC_EXCLUDE) == 0
&& ((elf_section_data (isec)->this_hdr.sh_flags
@@ -388,7 +388,7 @@ sh64_elf_${EMULATION_NAME}_after_allocation (void)
/* Make sure we have .cranges in memory even if there were only
assembler-generated .cranges. */
cranges_growth = new_cranges * SH64_CRANGE_SIZE;
- cranges->contents = xcalloc (cranges->_raw_size + cranges_growth, 1);
+ cranges->contents = xcalloc (cranges->size + cranges_growth, 1);
bfd_set_section_flags (cranges->owner, cranges,
bfd_get_section_flags (cranges->owner, cranges)
| SEC_IN_MEMORY);
@@ -403,7 +403,7 @@ sh64_elf_${EMULATION_NAME}_after_allocation (void)
return;
}
- crangesp = cranges->contents + cranges->_raw_size;
+ crangesp = cranges->contents + cranges->size;
/* Now pass over the sections again, and make reloc orders for the new
.cranges entries. Constants are set as we go. */
@@ -437,7 +437,7 @@ sh64_elf_${EMULATION_NAME}_after_allocation (void)
as containing mixed data, thus already having .cranges
entries. */
if (isec->output_section == osec
- && isec->_raw_size != 0
+ && isec->size != 0
&& (bfd_get_section_flags (isec->owner, isec)
& SEC_EXCLUDE) == 0
&& ((elf_section_data (isec)->this_hdr.sh_flags
@@ -458,9 +458,7 @@ sh64_elf_${EMULATION_NAME}_after_allocation (void)
else
cr_type = CRT_SH5_ISA16;
- cr_size
- = (isec->_cooked_size
- ? isec->_cooked_size : isec->_raw_size);
+ cr_size = isec->size;
/* Sections can be empty, like .text in a file that
only contains other sections. Ranges shouldn't be
@@ -563,8 +561,7 @@ sh64_elf_${EMULATION_NAME}_after_allocation (void)
Sorting before writing is done by sh64_elf_final_write_processing. */
- cranges->_cooked_size = crangesp - cranges->contents;
sh64_elf_section_data (cranges)->sh64_info->cranges_growth
- = cranges->_cooked_size - cranges->_raw_size;
- cranges->_raw_size = cranges->_cooked_size;
+ = crangesp - cranges->contents - cranges->size;
+ cranges->size = crangesp - cranges->contents;
}
diff --git a/ld/emultempl/sunos.em b/ld/emultempl/sunos.em
index 358bc9a..13850bc 100644
--- a/ld/emultempl/sunos.em
+++ b/ld/emultempl/sunos.em
@@ -744,7 +744,7 @@ gld${EMULATION_NAME}_before_allocation (void)
dynamic object. */
ASSERT (need_entries != 0);
- sneed->_raw_size = need_size;
+ sneed->size = need_size;
sneed->contents = (bfd_byte *) xmalloc (need_size);
need_contents = sneed->contents;
@@ -764,7 +764,7 @@ gld${EMULATION_NAME}_before_allocation (void)
option. */
if (command_line.rpath)
{
- srules->_raw_size = strlen (command_line.rpath);
+ srules->size = strlen (command_line.rpath);
srules->contents = (bfd_byte *) command_line.rpath;
}
else
@@ -776,7 +776,7 @@ gld${EMULATION_NAME}_before_allocation (void)
for (search = search_head; search != NULL; search = search->next)
if (search->cmdline)
size += strlen (search->name) + 1;
- srules->_raw_size = size;
+ srules->size = size;
if (size > 0)
{
char *p;
diff --git a/ld/emultempl/xtensaelf.em b/ld/emultempl/xtensaelf.em
index 8762920..ffd4add 100644
--- a/ld/emultempl/xtensaelf.em
+++ b/ld/emultempl/xtensaelf.em
@@ -1,5 +1,5 @@
# This shell script emits a C file. -*- C -*-
-# Copyright 2003
+# Copyright 2003, 2004
# Free Software Foundation, Inc.
#
# This file is part of GLD, the Gnu Linker.
@@ -1252,7 +1252,7 @@ ld_assign_relative_paged_dot (bfd_vma dot,
bfd_boolean sec_is_target = section_is_target (deps, l);
bfd_boolean sec_is_source = section_is_source (deps, l);
- if (section->_raw_size != 0
+ if (section->size != 0
&& (first_section
|| (in_literals && !sec_is_target)
|| (!in_literals && sec_is_target)))
@@ -1260,7 +1260,7 @@ ld_assign_relative_paged_dot (bfd_vma dot,
do_xtensa_alignment = TRUE;
}
first_section = FALSE;
- if (section->_raw_size != 0)
+ if (section->size != 0)
in_literals = (sec_is_target && !sec_is_source);
}
@@ -1269,7 +1269,7 @@ ld_assign_relative_paged_dot (bfd_vma dot,
dot = align_power (dot, align_pow);
section->output_offset = dot;
- dot += section->_raw_size;
+ dot += section->size;
}
break;
case lang_fill_statement_enum:
@@ -1336,7 +1336,7 @@ ld_local_file_relocations_fit (lang_statement_union_type *statement,
&& e->tgt->output_offset != 0)
{
bfd_vma l32r_addr =
- align_power (e->src->output_offset + e->src->_raw_size, 2);
+ align_power (e->src->output_offset + e->src->size, 2);
bfd_vma target_addr = e->tgt->output_offset & ~3;
if (l32r_addr < target_addr)
{
@@ -1386,7 +1386,7 @@ ld_xtensa_insert_page_offsets (bfd_vma dot,
if (lit_align)
{
- if (section->_raw_size != 0
+ if (section->size != 0
&& (first_section
|| (in_literals && !section_is_target (deps, l))
|| (!in_literals && section_is_target (deps, l))))
@@ -1394,7 +1394,7 @@ ld_xtensa_insert_page_offsets (bfd_vma dot,
do_xtensa_alignment = TRUE;
}
first_section = FALSE;
- if (section->_raw_size != 0)
+ if (section->size != 0)
{
in_literals = (section_is_target (deps, l)
&& !section_is_source (deps, l));
diff --git a/ld/ldexp.c b/ld/ldexp.c
index 52e70a6..06b1fa1 100644
--- a/ld/ldexp.c
+++ b/ld/ldexp.c
@@ -618,7 +618,7 @@ fold_name (etree_type *tree,
os = lang_output_section_find (tree->name.name);
if (os && os->processed > 0)
- result = new_abs (os->bfd_section->_raw_size / opb);
+ result = new_abs (os->bfd_section->size / opb);
}
break;
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 4db0a5f..3d40982 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -991,8 +991,7 @@ section_already_linked (bfd *abfd, asection *sec, void *data)
either. */
/* Fall through. */
case SEC_LINK_DUPLICATES_SAME_SIZE:
- if (bfd_section_size (abfd, sec)
- != bfd_section_size (l->sec->owner, l->sec))
+ if (sec->size != l->sec->size)
einfo (_("%P: %B: warning: duplicate section `%s'"
" has different size\n"),
abfd, name);
@@ -2339,7 +2338,7 @@ print_output_section_statement
++len;
}
- minfo ("0x%V %W", section->vma, section->_raw_size);
+ minfo ("0x%V %W", section->vma, section->size);
if (output_section_statement->load_base != NULL)
{
@@ -2451,7 +2450,7 @@ static void
print_input_section (lang_input_section_type *in)
{
asection *i = in->section;
- bfd_size_type size = i->_cooked_size != 0 ? i->_cooked_size : i->_raw_size;
+ bfd_size_type size = i->size;
init_opb ();
if (size != 0)
@@ -2484,7 +2483,7 @@ print_input_section (lang_input_section_type *in)
minfo ("0x%V %W %B\n", addr, TO_ADDR (size), i->owner);
- if (size != i->_raw_size)
+ if (size != i->rawsize && i->rawsize != 0)
{
len = SECTION_NAME_MAP_LENGTH + 3;
#ifdef BFD64
@@ -2498,7 +2497,7 @@ print_input_section (lang_input_section_type *in)
--len;
}
- minfo (_("%W (size before relaxing)\n"), i->_raw_size);
+ minfo (_("%W (size before relaxing)\n"), i->rawsize);
}
if (i->output_section != NULL && (i->flags & SEC_EXCLUDE) == 0)
@@ -2867,7 +2866,7 @@ insert_pad (lang_statement_union_type **ptr,
}
pad->padding_statement.output_offset = dot - output_section->vma;
pad->padding_statement.size = alignment_needed;
- output_section->_raw_size += alignment_needed;
+ output_section->size += alignment_needed;
}
/* Work out how much this section will move the dot point. */
@@ -2912,11 +2911,8 @@ size_input_section
i->output_offset = dot - o->vma;
/* Mark how big the output section must be to contain this now. */
- if (i->_cooked_size != 0)
- dot += TO_ADDR (i->_cooked_size);
- else
- dot += TO_ADDR (i->_raw_size);
- o->_raw_size = TO_SIZE (dot - o->vma);
+ dot += TO_ADDR (i->size);
+ o->size = TO_SIZE (dot - o->vma);
}
else
{
@@ -2926,11 +2922,11 @@ size_input_section
return dot;
}
-#define IGNORE_SECTION(bfd, s) \
+#define IGNORE_SECTION(s) \
(((s->flags & SEC_THREAD_LOCAL) != 0 \
? (s->flags & (SEC_LOAD | SEC_NEVER_LOAD)) != SEC_LOAD \
: (s->flags & (SEC_ALLOC | SEC_NEVER_LOAD)) != SEC_ALLOC) \
- || bfd_section_size (bfd, s) == 0)
+ || s->size == 0)
/* Check to see if any allocated sections overlap with other allocated
sections. This can happen when the linker script specifically specifies
@@ -2947,7 +2943,7 @@ lang_check_section_addresses (void)
asection *os;
/* Ignore sections which are not loaded or which have no contents. */
- if (IGNORE_SECTION (output_bfd, s))
+ if (IGNORE_SECTION (s))
continue;
/* Once we reach section 's' stop our seach. This prevents two
@@ -2961,7 +2957,7 @@ lang_check_section_addresses (void)
bfd_vma os_end;
/* Only consider loadable sections with real contents. */
- if (IGNORE_SECTION (output_bfd, os))
+ if (IGNORE_SECTION (os))
continue;
/* We must check the sections' LMA addresses not their
@@ -2969,8 +2965,8 @@ lang_check_section_addresses (void)
overlapping VMAs but they must have distinct LMAs. */
s_start = bfd_section_lma (output_bfd, s);
os_start = bfd_section_lma (output_bfd, os);
- s_end = s_start + TO_ADDR (bfd_section_size (output_bfd, s)) - 1;
- os_end = os_start + TO_ADDR (bfd_section_size (output_bfd, os)) - 1;
+ s_end = s_start + TO_ADDR (s->size) - 1;
+ os_end = os_start + TO_ADDR (os->size) - 1;
/* Look for an overlap. */
if ((s_end < os_start) || (s_start > os_end))
@@ -3070,7 +3066,7 @@ lang_size_sections_1
bfd_set_section_vma (os->bfd_section->owner,
os->bfd_section,
bfd_section_vma (input->owner, input));
- os->bfd_section->_raw_size = input->_raw_size;
+ os->bfd_section->size = input->size;
break;
}
@@ -3097,7 +3093,7 @@ lang_size_sections_1
/* If a loadable section is using the default memory
region, and some non default memory regions were
defined, issue an error message. */
- if (!IGNORE_SECTION (output_bfd, os->bfd_section)
+ if (!IGNORE_SECTION (os->bfd_section)
&& ! link_info.relocatable
&& check_regions
&& strcmp (os->region->name,
@@ -3180,14 +3176,14 @@ lang_size_sections_1
/* Put the section within the requested block size, or
align at the block boundary. */
after = ((os->bfd_section->vma
- + TO_ADDR (os->bfd_section->_raw_size)
+ + TO_ADDR (os->bfd_section->size)
+ os->block_value - 1)
& - (bfd_vma) os->block_value);
if (bfd_is_abs_section (os->bfd_section))
ASSERT (after == os->bfd_section->vma);
else
- os->bfd_section->_raw_size
+ os->bfd_section->size
= TO_SIZE (after - os->bfd_section->vma);
dot = os->bfd_section->vma;
@@ -3195,7 +3191,7 @@ lang_size_sections_1
if ((os->bfd_section->flags & SEC_HAS_CONTENTS) != 0
|| (os->bfd_section->flags & SEC_THREAD_LOCAL) == 0
|| link_info.relocatable)
- dot += TO_ADDR (os->bfd_section->_raw_size);
+ dot += TO_ADDR (os->bfd_section->size);
os->processed = 1;
@@ -3232,7 +3228,7 @@ lang_size_sections_1
/* Set load_base, which will be handled later. */
os->load_base = exp_intop (os->lma_region->current);
os->lma_region->current +=
- TO_ADDR (os->bfd_section->_raw_size);
+ TO_ADDR (os->bfd_section->size);
if (check_regions)
os_region_check (os, os->lma_region, NULL,
os->bfd_section->lma);
@@ -3283,7 +3279,7 @@ lang_size_sections_1
if (size < TO_SIZE ((unsigned) 1))
size = TO_SIZE ((unsigned) 1);
dot += TO_ADDR (size);
- output_section_statement->bfd_section->_raw_size += size;
+ output_section_statement->bfd_section->size += size;
/* The output section gets contents, and then we inspect for
any flags set in the input script which override any ALLOC. */
output_section_statement->bfd_section->flags |= SEC_HAS_CONTENTS;
@@ -3305,7 +3301,7 @@ lang_size_sections_1
output_section_statement->bfd_section;
size = bfd_get_reloc_size (s->reloc_statement.howto);
dot += TO_ADDR (size);
- output_section_statement->bfd_section->_raw_size += size;
+ output_section_statement->bfd_section->size += size;
}
break;
@@ -3330,12 +3326,7 @@ lang_size_sections_1
asection *i;
i = (*prev)->input_section.section;
- if (! relax)
- {
- if (i->_cooked_size == 0)
- i->_cooked_size = i->_raw_size;
- }
- else
+ if (relax)
{
bfd_boolean again;
@@ -3447,7 +3438,6 @@ lang_size_sections
bfd_boolean check_regions)
{
bfd_vma result;
- asection *o;
/* Callers of exp_fold_tree need to increment this. */
lang_statement_iteration++;
@@ -3487,14 +3477,6 @@ lang_size_sections
}
}
- /* Some backend relaxers want to refer to the output section size. Give
- them a section size that does not change on the next call while they
- relax. We can't set this at top because lang_reset_memory_regions
- which is called before we get here, sets _raw_size to 0 on relaxing
- rounds. */
- for (o = output_bfd->sections; o != NULL; o = o->next)
- o->_cooked_size = o->_raw_size;
-
return result;
}
@@ -3531,7 +3513,7 @@ lang_do_assignments_1
if ((os->bfd_section->flags & SEC_HAS_CONTENTS) != 0
|| (os->bfd_section->flags & SEC_THREAD_LOCAL) == 0
|| link_info.relocatable)
- dot += TO_ADDR (os->bfd_section->_raw_size);
+ dot += TO_ADDR (os->bfd_section->size);
}
if (os->load_base)
{
@@ -3618,12 +3600,7 @@ lang_do_assignments_1
asection *in = s->input_section.section;
if ((in->flags & SEC_EXCLUDE) == 0)
- {
- if (in->_cooked_size != 0)
- dot += TO_ADDR (in->_cooked_size);
- else
- dot += TO_ADDR (in->_raw_size);
- }
+ dot += TO_ADDR (in->size);
}
break;
@@ -3714,10 +3691,7 @@ lang_set_startof (void)
if (h != NULL && h->type == bfd_link_hash_undefined)
{
h->type = bfd_link_hash_defined;
- if (s->_cooked_size != 0)
- h->u.def.value = TO_ADDR (s->_cooked_size);
- else
- h->u.def.value = TO_ADDR (s->_raw_size);
+ h->u.def.value = TO_ADDR (s->size);
h->u.def.section = bfd_abs_section_ptr;
}
@@ -3931,8 +3905,8 @@ lang_one_common (struct bfd_link_hash_entry *h, void *info)
section = h->u.c.p->section;
/* Increase the size of the section to align the common sym. */
- section->_cooked_size += ((bfd_vma) 1 << (power_of_two + opb_shift)) - 1;
- section->_cooked_size &= (- (bfd_vma) 1 << (power_of_two + opb_shift));
+ section->size += ((bfd_vma) 1 << (power_of_two + opb_shift)) - 1;
+ section->size &= (- (bfd_vma) 1 << (power_of_two + opb_shift));
/* Adjust the alignment if necessary. */
if (power_of_two > section->alignment_power)
@@ -3941,10 +3915,10 @@ lang_one_common (struct bfd_link_hash_entry *h, void *info)
/* Change the symbol from common to defined. */
h->type = bfd_link_hash_defined;
h->u.def.section = section;
- h->u.def.value = section->_cooked_size;
+ h->u.def.value = section->size;
/* Increase the size of the section. */
- section->_cooked_size += size;
+ section->size += size;
/* Make sure the section is allocated in memory, and make sure that
it is no longer a common section. */
@@ -4261,7 +4235,7 @@ lang_reset_memory_regions (void)
}
for (o = output_bfd->sections; o != NULL; o = o->next)
- o->_raw_size = 0;
+ o->size = 0;
}
/* Worker for lang_gc_sections_1. */
@@ -4466,7 +4440,7 @@ lang_process (void)
NULL, 0);
/* We must do this after lang_do_assignments, because it uses
- _raw_size. */
+ size. */
lang_reset_memory_regions ();
/* Perform another relax pass - this time we know where the
@@ -4801,7 +4775,7 @@ lang_abs_symbol_at_end_of (const char *secname, const char *name)
h->u.def.value = 0;
else
h->u.def.value = (bfd_get_section_vma (output_bfd, sec)
- + TO_ADDR (bfd_section_size (output_bfd, sec)));
+ + TO_ADDR (sec->size));
h->u.def.section = bfd_abs_section_ptr;
}
@@ -5640,7 +5614,7 @@ lang_do_version_exports_section (void)
if (sec == NULL)
continue;
- len = bfd_section_size (is->the_bfd, sec);
+ len = sec->size;
contents = 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);
diff --git a/ld/ldwrite.c b/ld/ldwrite.c
index 8367075..a41a0e9 100644
--- a/ld/ldwrite.c
+++ b/ld/ldwrite.c
@@ -251,10 +251,7 @@ build_link_order (lang_statement_union_type *statement)
link_order->u.indirect.section = i;
ASSERT (i->output_section == output_section);
}
- if (i->_cooked_size)
- link_order->size = i->_cooked_size;
- else
- link_order->size = bfd_get_section_size (i);
+ link_order->size = i->size;
link_order->offset = i->output_offset;
}
}
@@ -368,8 +365,7 @@ clone_section (bfd *abfd, asection *s, const char *name, int *count)
n->vma = s->vma;
n->user_set_vma = s->user_set_vma;
n->lma = s->lma;
- n->_cooked_size = 0;
- n->_raw_size = 0;
+ n->size = 0;
n->output_offset = s->output_offset;
n->output_section = n;
n->orelocation = 0;
@@ -383,7 +379,7 @@ static void
ds (asection *s)
{
struct bfd_link_order *l = s->link_order_head;
- printf ("vma %x size %x\n", s->vma, s->_raw_size);
+ printf ("vma %x size %x\n", s->vma, s->size);
while (l)
{
if (l->type == bfd_indirect_link_order)
@@ -469,10 +465,7 @@ split_sections (bfd *abfd, struct bfd_link_info *info)
if (info->relocatable)
thisrelocs = sec->reloc_count;
- if (sec->_cooked_size != 0)
- thissize = sec->_cooked_size;
- else
- thissize = sec->_raw_size;
+ thissize = sec->size;
}
else if (info->relocatable
@@ -507,13 +500,8 @@ split_sections (bfd *abfd, struct bfd_link_info *info)
dump ("before snip", cursor, n);
shift_offset = p->offset;
- if (cursor->_cooked_size != 0)
- {
- n->_cooked_size = cursor->_cooked_size - shift_offset;
- cursor->_cooked_size = shift_offset;
- }
- n->_raw_size = cursor->_raw_size - shift_offset;
- cursor->_raw_size = shift_offset;
+ n->size = cursor->size - shift_offset;
+ cursor->size = shift_offset;
vma += shift_offset;
n->lma = n->vma = vma;
diff --git a/ld/pe-dll.c b/ld/pe-dll.c
index 2b5609c..43be40b 100644
--- a/ld/pe-dll.c
+++ b/ld/pe-dll.c
@@ -515,7 +515,7 @@ process_def_file (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
s = bfd_get_section_by_name (b, ".drectve");
if (s)
{
- int size = bfd_get_section_size (s);
+ long size = s->size;
char *buf = xmalloc (size);
bfd_get_section_contents (b, s, buf, 0, size);
@@ -1252,7 +1252,7 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
if (page_ptr != (unsigned long) -1)
bfd_put_32 (abfd, reloc_sz - page_ptr, reloc_d + page_ptr + 4);
- while (reloc_sz < reloc_s->_raw_size)
+ while (reloc_sz < reloc_s->size)
reloc_d[reloc_sz++] = 0;
}