When computing size of symbols for an ELF target use the internal size field.

This commit is contained in:
Nick Clifton 2002-06-07 11:02:48 +00:00
parent 1634475f71
commit 6ab6b380ee
2 changed files with 14 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2002-06-07 Elias Athanasopoulos <eathan@otenet.gr>
* nm.c: When computing size of symbols for an ELF target use the
internal size field.
2002-06-06 John David Anglin <dave@hiauly1.hia.nrc.ca>
* testsuite/binutils-all/objcopy.exp: clear xfail for

View File

@ -1,6 +1,6 @@
/* nm.c -- Describe symbol table of a rel file.
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001
2001, 2002
Free Software Foundation, Inc.
This file is part of GNU Binutils.
@ -28,6 +28,7 @@
#include "aout/ranlib.h"
#include "demangle.h"
#include "libiberty.h"
#include "elf-bfd.h"
/* When sorting by size, we use this structure to hold the size and a
pointer to the minisymbol. */
@ -839,10 +840,10 @@ size_forward2 (P_x, P_y)
return sorters[0][reverse_sort] (x->minisym, y->minisym);
}
/* Sort the symbols by size. We guess the size by assuming that the
difference between the address of a symbol and the address of the
next higher symbol is the size. FIXME: ELF actually stores a size
with each symbol. We should use it. */
/* Sort the symbols by size. ELF provides a size but for other formats
we have to make a guess by assuming that the difference between the
address of a symbol and the address of the next higher symbol is the
size. */
static long
sort_symbols_by_size (abfd, dynamic, minisyms, symcount, size, symsizesp)
@ -904,7 +905,9 @@ sort_symbols_by_size (abfd, dynamic, minisyms, symcount, size, symsizesp)
sec = bfd_get_section (sym);
if (bfd_is_com_section (sec))
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
sz = ((elf_symbol_type *) sym)->internal_elf_sym.st_size;
else if (bfd_is_com_section (sec))
sz = sym->value;
else
{