aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog3
-rw-r--r--bfd/elflink.h14
2 files changed, 12 insertions, 5 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index c566510..b79c57c 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -6,6 +6,9 @@ Wed Apr 2 16:19:41 1997 Mike Meissner <meissner@cygnus.com>
Wed Apr 2 10:49:07 1997 Ian Lance Taylor <ian@cygnus.com>
+ * elflink.h (elf_link_add_object_symbols): When there is a size
+ change, use the larger size. From H.J. Lu <hjl@gnu.ai.mit.edu>.
+
* elf-m10200.c: Rename from elf32-mn10200.c.
* elf-m10300.c: Rename from elf32-mn10300.c.
* cpu-m10200.c: Rename from cpu-mn10200.c
diff --git a/bfd/elflink.h b/bfd/elflink.h
index dcb1a8b..699b015 100644
--- a/bfd/elflink.h
+++ b/bfd/elflink.h
@@ -998,11 +998,15 @@ elf_link_add_object_symbols (abfd, info)
{
if (h->size != 0 && h->size != sym.st_size && ! size_change_ok)
(*_bfd_error_handler)
- ("Warning: size of symbol `%s' changed from %lu to %lu in %s",
- name, (unsigned long) h->size, (unsigned long) sym.st_size,
- bfd_get_filename (abfd));
-
- h->size = sym.st_size;
+ ("Warning: size of symbol `%s' was %lu, but in %s is %lu; using %lu",
+ name, (unsigned long) h->size,
+ bfd_get_filename (abfd), (unsigned long) sym.st_size,
+ (h->size < sym.st_size
+ ? (unsigned long) sym.st_size
+ : (unsigned long) h->size));
+
+ if (h->size < sym.st_size)
+ h->size = sym.st_size;
}
if (ELF_ST_TYPE (sym.st_info) != STT_NOTYPE
&& (definition || h->type == STT_NOTYPE))