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> 2002-06-06 John David Anglin <dave@hiauly1.hia.nrc.ca>
* testsuite/binutils-all/objcopy.exp: clear xfail for * testsuite/binutils-all/objcopy.exp: clear xfail for

View File

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