[PATCH/RFC] nm -u prints only sym names

Elias Athanasopoulos elathan@phys.uoa.gr
Thu Feb 13 13:20:00 GMT 2003


Hello!

When nm is invoked with -u it prints only the symbol names. Although this
does not affect the BSD and the POSIX output, it affects the SYSV output,
since information like sym size, type and section is not printed.

filter_symbols does the correct filtering, but there is a check in 
print_symbol which forces nm to print only sym names when -u is used.

This patch removes the check in print_symbol.

Also, there are checks, which I din't remove, in print_symbol_info_bsd and
print_symbol_info_posix which make nm to no print the symbol size when 
-u is used. The size of an ELF's undefined symbol is known and can be printed
(this is already done in print_symbol_info_sysv), but I don't know if 
removing the checks will brake other formats.

Regards,
Elias

-- 
University of Athens			I bet the human brain 
Physics Department				is a kludge --Marvin Minsky 


ChangeLog

2003-02-13  Elias Athanasopoulos  <elathan@phys.uoa.gr>

	* nm.c (print_symbol): Remove check for undefined_only.
	
===================================================================
RCS file: /home/anteater/bucvs/src/binutils/nm.c,v
retrieving revision 1.2
diff -u -r1.2 /home/anteater/bucvs/src/binutils/nm.c
--- /home/anteater/bucvs/src/binutils/nm.c	2003/02/13 12:33:16	1.2
+++ /home/anteater/bucvs/src/binutils/nm.c	2003/02/13 13:17:51
@@ -1214,29 +1214,22 @@
      bfd_vma ssize;
      bfd *archive_bfd;
 {
+  symbol_info syminfo;
+  struct extended_symbol_info info;
+    
   PROGRESS (1);
 
   (*format->print_symbol_filename) (archive_bfd, abfd);
 
-  if (undefined_only)
-    {
-      if (bfd_is_und_section (bfd_get_section (sym)))
-	print_symname ("%s", bfd_asymbol_name (sym), abfd);
-    }
+  bfd_get_symbol_info (abfd, sym, &syminfo);
+  info.sinfo = &syminfo;
+  info.ssize = ssize;
+  if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
+    info.elfinfo = (elf_symbol_type *) sym;
   else
-    {
-      symbol_info syminfo;
-      struct extended_symbol_info info;
-
-      bfd_get_symbol_info (abfd, sym, &syminfo);
-      info.sinfo = &syminfo;
-      info.ssize = ssize;
-      if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
-	info.elfinfo = (elf_symbol_type *) sym;
-      else
-	info.elfinfo = NULL;
-      (*format->print_symbol_info) (&info, abfd);
-    }
+    info.elfinfo = NULL;
+  
+  (*format->print_symbol_info) (&info, abfd);
 
   if (line_numbers)
     {
	



More information about the Binutils mailing list