readelf.c (get_note_type): Handle notes not in core files.
authorNick Clifton <nickc@redhat.com>
Tue, 26 Oct 2004 16:05:42 +0000 (16:05 +0000)
committerNick Clifton <nickc@redhat.com>
Tue, 26 Oct 2004 16:05:42 +0000 (16:05 +0000)
  (process_note_sections): New function.
  (process_corefile_contents): Rename to ...
  (process_notes): ... this.
  (process_object): Call process_notes, not process_corefile_contents.
doc/binutils.texi: Update readelf -n documentation.

binutils/ChangeLog
binutils/Makefile.in
binutils/doc/binutils.texi
binutils/readelf.c

index 136ca4751071e97f1f293668712545b1fce1dede..775b2e148f801cdf5708a4bce3587940d77f3b1d 100644 (file)
@@ -1,3 +1,13 @@
+2004-10-26  Mark Mitchell  <mark@codesourcery.com>
+
+       * readelf.c (get_note_type): Handle notes not in core files.
+       (process_note_sections): New function.
+       (process_corefile_contents): Rename to ...
+       (process_notes): ... this.
+       (process_object): Call process_notes, not
+       process_corefile_contents.
+       * doc/binutils.texi: Update readelf -n documentation.
+
 2004-10-26  Jakub Jelinek  <jakub@redhat.com>
 
        * ar.c (extract_file): Set atime to mtime for ar xo.
index ac37a3d7bfa7c8cad4b53453af5d58404792d788..94123278dd9d4202c31bb22a66d89cca59979f5a 100644 (file)
@@ -1,6 +1,6 @@
-# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
 
-# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -64,68 +64,23 @@ host_triplet = @host@
 target_alias = @target_alias@
 target_triplet = @target@
 AR = @AR@
-AS = @AS@
 BUILD_DLLTOOL = @BUILD_DLLTOOL@
 BUILD_DLLWRAP = @BUILD_DLLWRAP@
 BUILD_MISC = @BUILD_MISC@
 BUILD_NLMCONV = @BUILD_NLMCONV@
 BUILD_SRCONV = @BUILD_SRCONV@
 BUILD_WINDRES = @BUILD_WINDRES@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
 CC = @CC@
-CPP = @CPP@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-DATADIRNAME = @DATADIRNAME@
 DEMANGLER_NAME = @DEMANGLER_NAME@
-DLLTOOL = @DLLTOOL@
 DLLTOOL_DEFS = @DLLTOOL_DEFS@
 EMULATION = @EMULATION@
 EMULATION_VECTOR = @EMULATION_VECTOR@
 EXEEXT = @EXEEXT@
-GCJ = @GCJ@
-GCJFLAGS = @GCJFLAGS@
-GMOFILES = @GMOFILES@
-GMSGFMT = @GMSGFMT@
-GNATBIND = @GNATBIND@
-GT_NO = @GT_NO@
-GT_YES = @GT_YES@
 HDEFINES = @HDEFINES@
-INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
-INSTOBJEXT = @INSTOBJEXT@
-INTLDEPS = @INTLDEPS@
-INTLOBJS = @INTLOBJS@
 LIBTOOL = @LIBTOOL@
-LN = @LN@
-LN_S = @LN_S@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MKINSTALLDIRS = @MKINSTALLDIRS@
-MSGFMT = @MSGFMT@
 NLMCONV_DEFS = @NLMCONV_DEFS@
-OBJDUMP = @OBJDUMP@
 OBJDUMP_DEFS = @OBJDUMP_DEFS@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-POFILES = @POFILES@
-POSUB = @POSUB@
 RANLIB = @RANLIB@
-STRIP = @STRIP@
-USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-bfdincludedir = @bfdincludedir@
-bfdlibdir = @bfdlibdir@
-build_noncanonical = @build_noncanonical@
-build_subdir = @build_subdir@
-do_compare = @do_compare@
-host_noncanonical = @host_noncanonical@
-host_subdir = @host_subdir@
-l = @l@
-ncn_cv_ = @ncn_cv_@
-target_noncanonical = @target_noncanonical@
-target_subdir = @target_subdir@
 
 INTLLIBS = @INTLLIBS@
 
@@ -329,7 +284,6 @@ DISTCLEANFILES = sysinfo sysroff.c sysroff.h \
 MOSTLYCLEANFILES = sysinfo binutils.log binutils.sum abcdefgh*
 
 CLEANFILES = dep.sed DEP DEPA DEP1 DEP2
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
 CONFIG_HEADER = config.h
 CONFIG_CLEAN_FILES = 
@@ -345,96 +299,77 @@ DEFS = @DEFS@ -I. -I$(srcdir) -I.
 CPPFLAGS = @CPPFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
-nlmconv_OBJECTS =  nlmconv.$(OBJEXT) nlmheader.$(OBJEXT) \
-bucomm.$(OBJEXT) version.$(OBJEXT) filemode.$(OBJEXT)
+nlmconv_OBJECTS =  nlmconv.o nlmheader.o bucomm.o version.o filemode.o
 nlmconv_LDADD = $(LDADD)
 nlmconv_DEPENDENCIES =  ../bfd/libbfd.la ../libiberty/libiberty.a
 nlmconv_LDFLAGS = 
-srconv_OBJECTS =  srconv.$(OBJEXT) coffgrok.$(OBJEXT) bucomm.$(OBJEXT) \
-version.$(OBJEXT) filemode.$(OBJEXT)
+srconv_OBJECTS =  srconv.o coffgrok.o bucomm.o version.o filemode.o
 srconv_LDADD = $(LDADD)
 srconv_DEPENDENCIES =  ../bfd/libbfd.la ../libiberty/libiberty.a
 srconv_LDFLAGS = 
-sysdump_OBJECTS =  sysdump.$(OBJEXT) bucomm.$(OBJEXT) version.$(OBJEXT) \
-filemode.$(OBJEXT)
+sysdump_OBJECTS =  sysdump.o bucomm.o version.o filemode.o
 sysdump_LDADD = $(LDADD)
 sysdump_DEPENDENCIES =  ../bfd/libbfd.la ../libiberty/libiberty.a
 sysdump_LDFLAGS = 
-coffdump_OBJECTS =  coffdump.$(OBJEXT) coffgrok.$(OBJEXT) \
-bucomm.$(OBJEXT) version.$(OBJEXT) filemode.$(OBJEXT)
+coffdump_OBJECTS =  coffdump.o coffgrok.o bucomm.o version.o filemode.o
 coffdump_LDADD = $(LDADD)
 coffdump_DEPENDENCIES =  ../bfd/libbfd.la ../libiberty/libiberty.a
 coffdump_LDFLAGS = 
-dlltool_OBJECTS =  dlltool.$(OBJEXT) defparse.$(OBJEXT) deflex.$(OBJEXT) \
-bucomm.$(OBJEXT) version.$(OBJEXT) filemode.$(OBJEXT)
+dlltool_OBJECTS =  dlltool.o defparse.o deflex.o bucomm.o version.o \
+filemode.o
 dlltool_DEPENDENCIES =  ../bfd/libbfd.la ../libiberty/libiberty.a
 dlltool_LDFLAGS = 
-windres_OBJECTS =  windres.$(OBJEXT) resrc.$(OBJEXT) rescoff.$(OBJEXT) \
-resbin.$(OBJEXT) rcparse.$(OBJEXT) rclex.$(OBJEXT) winduni.$(OBJEXT) \
-resres.$(OBJEXT) bucomm.$(OBJEXT) version.$(OBJEXT) filemode.$(OBJEXT)
+windres_OBJECTS =  windres.o resrc.o rescoff.o resbin.o rcparse.o \
+rclex.o winduni.o resres.o bucomm.o version.o filemode.o
 windres_DEPENDENCIES =  ../bfd/libbfd.la ../libiberty/libiberty.a
 windres_LDFLAGS = 
-dllwrap_OBJECTS =  dllwrap.$(OBJEXT) version.$(OBJEXT)
+dllwrap_OBJECTS =  dllwrap.o version.o
 dllwrap_DEPENDENCIES =  ../libiberty/libiberty.a
 dllwrap_LDFLAGS = 
-size_OBJECTS =  size.$(OBJEXT) bucomm.$(OBJEXT) version.$(OBJEXT) \
-filemode.$(OBJEXT)
+size_OBJECTS =  size.o bucomm.o version.o filemode.o
 size_LDADD = $(LDADD)
 size_DEPENDENCIES =  ../bfd/libbfd.la ../libiberty/libiberty.a
 size_LDFLAGS = 
-objdump_OBJECTS =  objdump.$(OBJEXT) budemang.$(OBJEXT) prdbg.$(OBJEXT) \
-rddbg.$(OBJEXT) debug.$(OBJEXT) stabs.$(OBJEXT) ieee.$(OBJEXT) \
-rdcoff.$(OBJEXT) bucomm.$(OBJEXT) version.$(OBJEXT) filemode.$(OBJEXT)
+objdump_OBJECTS =  objdump.o budemang.o prdbg.o rddbg.o debug.o stabs.o \
+ieee.o rdcoff.o bucomm.o version.o filemode.o
 objdump_DEPENDENCIES =  ../opcodes/libopcodes.la ../bfd/libbfd.la \
 ../libiberty/libiberty.a
 objdump_LDFLAGS = 
-ar_OBJECTS =  arparse.$(OBJEXT) arlex.$(OBJEXT) ar.$(OBJEXT) \
-not-ranlib.$(OBJEXT) arsup.$(OBJEXT) rename.$(OBJEXT) binemul.$(OBJEXT) \
-emul_$(EMULATION).$(OBJEXT) bucomm.$(OBJEXT) version.$(OBJEXT) \
-filemode.$(OBJEXT)
+ar_OBJECTS =  arparse.o arlex.o ar.o not-ranlib.o arsup.o rename.o \
+binemul.o emul_$(EMULATION).o bucomm.o version.o filemode.o
 ar_DEPENDENCIES =  ../bfd/libbfd.la ../libiberty/libiberty.a
 ar_LDFLAGS = 
-strings_OBJECTS =  strings.$(OBJEXT) bucomm.$(OBJEXT) version.$(OBJEXT) \
-filemode.$(OBJEXT)
+strings_OBJECTS =  strings.o bucomm.o version.o filemode.o
 strings_LDADD = $(LDADD)
 strings_DEPENDENCIES =  ../bfd/libbfd.la ../libiberty/libiberty.a
 strings_LDFLAGS = 
-ranlib_OBJECTS =  ar.$(OBJEXT) is-ranlib.$(OBJEXT) arparse.$(OBJEXT) \
-arlex.$(OBJEXT) arsup.$(OBJEXT) rename.$(OBJEXT) binemul.$(OBJEXT) \
-emul_$(EMULATION).$(OBJEXT) bucomm.$(OBJEXT) version.$(OBJEXT) \
-filemode.$(OBJEXT)
+ranlib_OBJECTS =  ar.o is-ranlib.o arparse.o arlex.o arsup.o rename.o \
+binemul.o emul_$(EMULATION).o bucomm.o version.o filemode.o
 ranlib_DEPENDENCIES =  ../bfd/libbfd.la ../libiberty/libiberty.a
 ranlib_LDFLAGS = 
-objcopy_OBJECTS =  objcopy.$(OBJEXT) not-strip.$(OBJEXT) \
-rename.$(OBJEXT) rddbg.$(OBJEXT) debug.$(OBJEXT) stabs.$(OBJEXT) \
-ieee.$(OBJEXT) rdcoff.$(OBJEXT) wrstabs.$(OBJEXT) bucomm.$(OBJEXT) \
-version.$(OBJEXT) filemode.$(OBJEXT)
+objcopy_OBJECTS =  objcopy.o not-strip.o rename.o rddbg.o debug.o \
+stabs.o ieee.o rdcoff.o wrstabs.o bucomm.o version.o filemode.o
 objcopy_LDADD = $(LDADD)
 objcopy_DEPENDENCIES =  ../bfd/libbfd.la ../libiberty/libiberty.a
 objcopy_LDFLAGS = 
-addr2line_OBJECTS =  addr2line.$(OBJEXT) budemang.$(OBJEXT) \
-bucomm.$(OBJEXT) version.$(OBJEXT) filemode.$(OBJEXT)
+addr2line_OBJECTS =  addr2line.o budemang.o bucomm.o version.o \
+filemode.o
 addr2line_LDADD = $(LDADD)
 addr2line_DEPENDENCIES =  ../bfd/libbfd.la ../libiberty/libiberty.a
 addr2line_LDFLAGS = 
-readelf_OBJECTS =  readelf.$(OBJEXT) version.$(OBJEXT) \
-unwind-ia64.$(OBJEXT)
+readelf_OBJECTS =  readelf.o version.o unwind-ia64.o
 readelf_DEPENDENCIES =  ../libiberty/libiberty.a
 readelf_LDFLAGS = 
-nm_new_OBJECTS =  nm.$(OBJEXT) budemang.$(OBJEXT) bucomm.$(OBJEXT) \
-version.$(OBJEXT) filemode.$(OBJEXT)
+nm_new_OBJECTS =  nm.o budemang.o bucomm.o version.o filemode.o
 nm_new_LDADD = $(LDADD)
 nm_new_DEPENDENCIES =  ../bfd/libbfd.la ../libiberty/libiberty.a
 nm_new_LDFLAGS = 
-strip_new_OBJECTS =  objcopy.$(OBJEXT) is-strip.$(OBJEXT) \
-rename.$(OBJEXT) rddbg.$(OBJEXT) debug.$(OBJEXT) stabs.$(OBJEXT) \
-ieee.$(OBJEXT) rdcoff.$(OBJEXT) wrstabs.$(OBJEXT) bucomm.$(OBJEXT) \
-version.$(OBJEXT) filemode.$(OBJEXT)
+strip_new_OBJECTS =  objcopy.o is-strip.o rename.o rddbg.o debug.o \
+stabs.o ieee.o rdcoff.o wrstabs.o bucomm.o version.o filemode.o
 strip_new_LDADD = $(LDADD)
 strip_new_DEPENDENCIES =  ../bfd/libbfd.la ../libiberty/libiberty.a
 strip_new_LDFLAGS = 
-cxxfilt_OBJECTS =  cxxfilt.$(OBJEXT) bucomm.$(OBJEXT) version.$(OBJEXT) \
-filemode.$(OBJEXT)
+cxxfilt_OBJECTS =  cxxfilt.o bucomm.o version.o filemode.o
 cxxfilt_LDADD = $(LDADD)
 cxxfilt_DEPENDENCIES =  ../bfd/libbfd.la ../libiberty/libiberty.a
 cxxfilt_LDFLAGS = 
@@ -447,20 +382,23 @@ LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $
 CCLD = $(CC)
 LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
 DIST_COMMON =  README ./stamp-h.in ChangeLog Makefile.am Makefile.in \
-NEWS acinclude.m4 aclocal.m4 arlex.c arparse.c config.in configure \
-configure.in deflex.c defparse.c nlmheader.c rclex.c rcparse.c
+NEWS acinclude.m4 arlex.c arparse.c config.in configure configure.in \
+deflex.c defparse.c nlmheader.c rclex.c rcparse.c
+
 
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
-TAR = tar
+TAR = gtar
 GZIP_ENV = --best
 SOURCES = $(nlmconv_SOURCES) $(srconv_SOURCES) $(sysdump_SOURCES) $(coffdump_SOURCES) $(dlltool_SOURCES) $(windres_SOURCES) $(dllwrap_SOURCES) $(size_SOURCES) $(objdump_SOURCES) $(ar_SOURCES) $(strings_SOURCES) $(ranlib_SOURCES) $(objcopy_SOURCES) $(addr2line_SOURCES) $(readelf_SOURCES) $(nm_new_SOURCES) $(strip_new_SOURCES) $(cxxfilt_SOURCES)
 OBJECTS = $(nlmconv_OBJECTS) $(srconv_OBJECTS) $(sysdump_OBJECTS) $(coffdump_OBJECTS) $(dlltool_OBJECTS) $(windres_OBJECTS) $(dllwrap_OBJECTS) $(size_OBJECTS) $(objdump_OBJECTS) $(ar_OBJECTS) $(strings_OBJECTS) $(ranlib_OBJECTS) $(objcopy_OBJECTS) $(addr2line_OBJECTS) $(readelf_OBJECTS) $(nm_new_OBJECTS) $(strip_new_OBJECTS) $(cxxfilt_OBJECTS)
 
 all: all-redirect
 .SUFFIXES:
-.SUFFIXES: .S .c .l .lo .o .obj .s .y
+.SUFFIXES: .S .c .l .lo .o .s .y
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
        cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile
 
@@ -541,11 +479,6 @@ maintainer-clean-noinstPROGRAMS:
 .c.o:
        $(COMPILE) -c $<
 
-# FIXME: We should only use cygpath when building on Windows,
-# and only if it is available.
-.c.obj:
-       $(COMPILE) -c `cygpath -w $<`
-
 .s.o:
        $(COMPILE) -c $<
 
@@ -554,7 +487,6 @@ maintainer-clean-noinstPROGRAMS:
 
 mostlyclean-compile:
        -rm -f *.o core *.core
-       -rm -f *.$(OBJEXT)
 
 clean-compile:
 
@@ -699,7 +631,7 @@ maintainer-clean-recursive:
        dot_seen=no; \
        rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
          rev="$$subdir $$rev"; \
-         test "$$subdir" != "." || dot_seen=yes; \
+         test "$$subdir" = "." && dot_seen=yes; \
        done; \
        test "$$dot_seen" = "no" && rev=". $$rev"; \
        target=`echo $@ | sed s/-recursive//`; \
@@ -881,7 +813,7 @@ distclean-generic:
        -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
-       -test -z "arlex.cdeflex.crclex.carparse.harparse.cdefparse.hdefparse.cnlmheader.hnlmheader.crcparse.hrcparse.c" || rm -f arlex.c deflex.c rclex.c arparse.h arparse.c defparse.h defparse.c nlmheader.h nlmheader.c rcparse.h rcparse.c
+       -test -z "arlexldeflexlrclexlarparseharparsecdefparsehdefparsecnlmheaderhnlmheadercrcparsehrcparsec" || rm -f arlexl deflexl rclexl arparseh arparsec defparseh defparsec nlmheaderh nlmheaderc rcparseh rcparsec
 mostlyclean-am:  mostlyclean-hdr mostlyclean-binPROGRAMS \
                mostlyclean-noinstPROGRAMS mostlyclean-compile \
                mostlyclean-libtool mostlyclean-tags \
index 97a6538ddf5eb576e72d390e16edccda9e48f7c3..f2cd2d1a44debaaa8402f1177deedc4f0e2a93e6 100644 (file)
@@ -3225,8 +3225,8 @@ Display all the headers in the file.  Equivalent to @option{-h -l -S}.
 
 @item -n
 @itemx --notes
-@cindex ELF core notes
-Displays the contents of the NOTE segment, if it exists.
+@cindex ELF notes
+Displays the contents of the NOTE segments and/or sections, if any.
 
 @item -r
 @itemx --relocs
index 7944c2ae0ae8f7e297417b1e26894051192cf93a..a1dd71bc4e02c5dbbd758f1848e145a5ef0f9108 100644 (file)
@@ -10348,24 +10348,49 @@ get_note_type (unsigned e_type)
 {
   static char buff[64];
 
-  switch (e_type)
-    {
-    case NT_AUXV:      return _("NT_AUXV (auxiliary vector)");
-    case NT_PRSTATUS:  return _("NT_PRSTATUS (prstatus structure)");
-    case NT_FPREGSET:  return _("NT_FPREGSET (floating point registers)");
-    case NT_PRPSINFO:  return _("NT_PRPSINFO (prpsinfo structure)");
-    case NT_TASKSTRUCT:        return _("NT_TASKSTRUCT (task structure)");
-    case NT_PRXFPREG:  return _("NT_PRXFPREG (user_xfpregs structure)");
-    case NT_PSTATUS:   return _("NT_PSTATUS (pstatus structure)");
-    case NT_FPREGS:    return _("NT_FPREGS (floating point registers)");
-    case NT_PSINFO:    return _("NT_PSINFO (psinfo structure)");
-    case NT_LWPSTATUS: return _("NT_LWPSTATUS (lwpstatus_t structure)");
-    case NT_LWPSINFO:  return _("NT_LWPSINFO (lwpsinfo_t structure)");
-    case NT_WIN32PSTATUS: return _("NT_WIN32PSTATUS (win32_pstatus structure)");
-    default:
-      sprintf (buff, _("Unknown note type: (0x%08x)"), e_type);
-      return buff;
-    }
+  if (elf_header.e_type == ET_CORE)
+    switch (e_type)
+      {
+      case NT_AUXV:    
+       return _("NT_AUXV (auxiliary vector)");
+      case NT_PRSTATUS:        
+       return _("NT_PRSTATUS (prstatus structure)");
+      case NT_FPREGSET:        
+       return _("NT_FPREGSET (floating point registers)");
+      case NT_PRPSINFO:        
+       return _("NT_PRPSINFO (prpsinfo structure)");
+      case NT_TASKSTRUCT:      
+       return _("NT_TASKSTRUCT (task structure)");
+      case NT_PRXFPREG:        
+       return _("NT_PRXFPREG (user_xfpregs structure)");
+      case NT_PSTATUS: 
+       return _("NT_PSTATUS (pstatus structure)");
+      case NT_FPREGS:  
+       return _("NT_FPREGS (floating point registers)");
+      case NT_PSINFO:  
+       return _("NT_PSINFO (psinfo structure)");
+      case NT_LWPSTATUS:       
+       return _("NT_LWPSTATUS (lwpstatus_t structure)");
+      case NT_LWPSINFO:        
+       return _("NT_LWPSINFO (lwpsinfo_t structure)");
+      case NT_WIN32PSTATUS: 
+       return _("NT_WIN32PSTATUS (win32_pstatus structure)");
+      default:
+       break;
+      }
+  else
+    switch (e_type)
+      {
+      case NT_VERSION:
+       return _("NT_VERSION (version)");
+      case NT_ARCH:
+       return _("NT_ARCH (architecture)");
+      default:
+       break;
+      }
+
+  sprintf (buff, _("Unknown note type: (0x%08x)"), e_type);
+  return buff;
 }
 
 static const char *
@@ -10440,22 +10465,18 @@ process_note (Elf_Internal_Note *pnote)
   const char *nt;
 
   if (pnote->namesz == 0)
-    {
-      /* If there is no note name, then use the default set of
-        note type strings.  */
-      nt = get_note_type (pnote->type);
-    }
+    /* If there is no note name, then use the default set of
+       note type strings.  */
+    nt = get_note_type (pnote->type);
+
   else if (strncmp (pnote->namedata, "NetBSD-CORE", 11) == 0)
-    {
-      /* NetBSD-specific core file notes.  */
-      nt = get_netbsd_elfcore_note_type (pnote->type);
-    }
+    /* NetBSD-specific core file notes.  */
+    nt = get_netbsd_elfcore_note_type (pnote->type);
+
   else
-    {
-      /* Don't recognize this note name; just use the default set of
-        note type strings.  */
+    /* Don't recognize this note name; just use the default set of
+       note type strings.  */
       nt = get_note_type (pnote->type);
-    }
 
   printf ("  %s\t\t0x%08lx\t%s\n",
          pnote->namesz ? pnote->namedata : "(NONE)",
@@ -10570,24 +10591,39 @@ process_corefile_note_segments (FILE *file)
 }
 
 static int
-process_corefile_contents (FILE *file)
+process_note_sections (FILE *file)
+{
+  Elf_Internal_Shdr *section;
+  unsigned long i;
+  int res = 1;
+
+  for (i = 0, section = section_headers;
+       i < elf_header.e_shnum;
+       i++, section++)
+    if (section->sh_type == SHT_NOTE)
+      res &= process_corefile_note_segment (file,
+                                           (bfd_vma) section->sh_offset,
+                                           (bfd_vma) section->sh_size);
+
+  return res;
+}
+
+static int
+process_notes (FILE *file)
 {
   /* If we have not been asked to display the notes then do nothing.  */
   if (! do_notes)
     return 1;
 
-  /* If file is not a core file then exit.  */
   if (elf_header.e_type != ET_CORE)
-    return 1;
+    return process_note_sections (file);
 
   /* No program headers means no NOTE segment.  */
-  if (elf_header.e_phnum == 0)
-    {
-      printf (_("No note segments present in the core file.\n"));
-      return 1;
-   }
+  if (elf_header.e_phnum > 0)
+    return process_corefile_note_segments (file);
 
-  return process_corefile_note_segments (file);
+  printf (_("No note segments present in the core file.\n"));
+  return 1;
 }
 
 static int
@@ -10756,7 +10792,7 @@ process_object (char *file_name, FILE *file)
 
   process_section_contents (file);
 
-  process_corefile_contents (file);
+  process_notes (file);
 
   process_gnu_liblist (file);