objdump disassembly of files without symbols
Alan Modra
amodra@gmail.com
Tue Mar 10 03:24:23 GMT 2020
ubsan complains about memcpy with a NULL src even when size is zero.
* objdump.c (disassemble_section): Don't call qsort unless
sym count is at least two.
(disassemble_data): Don't call memcpy with NULL src.
diff --git a/binutils/objdump.c b/binutils/objdump.c
index 6eef38f0e2..211be9239f 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -3109,7 +3109,8 @@ disassemble_section (bfd *abfd, asection *section, void *inf)
/* Sort the symbols into value and section order. */
compare_section = section;
- qsort (sorted_syms, sorted_symcount, sizeof (asymbol *), compare_symbols);
+ if (sorted_symcount > 1)
+ qsort (sorted_syms, sorted_symcount, sizeof (asymbol *), compare_symbols);
/* Skip over the relocs belonging to addresses below the
start address. */
@@ -3376,10 +3377,13 @@ disassemble_data (bfd *abfd)
sorted_symcount = symcount ? symcount : dynsymcount;
sorted_syms = (asymbol **) xmalloc ((sorted_symcount + synthcount)
* sizeof (asymbol *));
- memcpy (sorted_syms, symcount ? syms : dynsyms,
- sorted_symcount * sizeof (asymbol *));
+ if (sorted_symcount != 0)
+ {
+ memcpy (sorted_syms, symcount ? syms : dynsyms,
+ sorted_symcount * sizeof (asymbol *));
- sorted_symcount = remove_useless_symbols (sorted_syms, sorted_symcount);
+ sorted_symcount = remove_useless_symbols (sorted_syms, sorted_symcount);
+ }
for (i = 0; i < synthcount; ++i)
{
--
Alan Modra
Australia Development Lab, IBM
More information about the Binutils
mailing list