From: Alan Modra Date: Tue, 15 Oct 2024 22:00:07 +0000 (+1030) Subject: Assertion fail at peicode.h:607 X-Git-Tag: gdb-16-branchpoint~655 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=02d1e73bf63bb6d4e7c8b1eb35964cd2e00228d5;p=thirdparty%2Fbinutils-gdb.git Assertion fail at peicode.h:607 This is the assertion that vars->string_ptr < vars->end_string_ptr, ie. when it fails we've overflowed the string buffer area. Caused by allocating space for import_name but writing symbol_name, and they can be different. * peicode.h (SIZEOF_ILF_STRINGS): Revert 042f14505e change. --- diff --git a/bfd/peicode.h b/bfd/peicode.h index eb5d6da6169..1a084fda05b 100644 --- a/bfd/peicode.h +++ b/bfd/peicode.h @@ -410,7 +410,7 @@ pe_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd) There will be two symbols for the imported value, one the symbol name and one with _imp__ prefixed. Allowing for the terminating nul's this - is strlen (import_name) * 2 + 8 + 21 + strlen (source_dll). + is strlen (symbol_name) * 2 + 8 + 21 + strlen (source_dll). The strings in the string table must start STRING__SIZE_SIZE bytes into the table in order to for the string lookup code in coffgen/coffcode to @@ -426,7 +426,7 @@ pe_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd) #define SIZEOF_ILF_EXT_SYMS (NUM_ILF_SYMS * sizeof (*vars.esym_table)) #define SIZEOF_ILF_RELOCS (NUM_ILF_RELOCS * sizeof (*vars.reltab)) #define SIZEOF_ILF_INT_RELOCS (NUM_ILF_RELOCS * sizeof (*vars.int_reltab)) -#define SIZEOF_ILF_STRINGS (strlen (import_name) * 2 + 8 \ +#define SIZEOF_ILF_STRINGS (strlen (symbol_name) * 2 + 8 \ + 21 + strlen (source_dll) \ + NUM_ILF_SECTIONS * 9 \ + STRING_SIZE_SIZE)