blob: bf9d162300de5c245966d74f030e10350cd63678 [file] [log] [blame]
diff -Nur a/ld/emultempl/pep.em b/ld/emultempl/pep.em
--- a/ld/emultempl/pep.em 2015-12-11 17:25:42.636935386 -0800
+++ b/ld/emultempl/pep.em 2015-12-11 17:26:46.504481832 -0800
@@ -1288,6 +1288,9 @@
return TRUE;
}
+ const char * pdb_name = _bfd_XXi_get_codeview_pdb_name (abfd);
+ unsigned int pdb_name_length = strlen(pdb_name);
+
if (t->build_id.sec->contents == NULL)
t->build_id.sec->contents = (unsigned char *) xmalloc (t->build_id.sec->size);
contents = t->build_id.sec->contents;
@@ -1306,7 +1309,7 @@
idd.MajorVersion = 0;
idd.MinorVersion = 0;
idd.Type = PE_IMAGE_DEBUG_TYPE_CODEVIEW;
- idd.SizeOfData = sizeof (CV_INFO_PDB70) + 1;
+ idd.SizeOfData = sizeof (CV_INFO_PDB70) + pdb_name_length + 1;
idd.AddressOfRawData = asec->vma - ib + link_order->offset
+ sizeof (struct external_IMAGE_DEBUG_DIRECTORY);
idd.PointerToRawData = asec->filepos + link_order->offset
@@ -1370,12 +1373,12 @@
t->build_id.style = emit_build_id;
t->build_id.sec = s;
- /* Section is a fixed size:
+ /* Section is a variable size:
One IMAGE_DEBUG_DIRECTORY entry, of type IMAGE_DEBUG_TYPE_CODEVIEW,
pointing at a CV_INFO_PDB70 record containing the build-id, with a
- null byte for PdbFileName. */
+ null terminated string for PdbFileName. */
s->size = sizeof (struct external_IMAGE_DEBUG_DIRECTORY)
- + sizeof (CV_INFO_PDB70) + 1;
+ + sizeof (CV_INFO_PDB70) + strlen(_bfd_XXi_get_codeview_pdb_name(link_info.output_bfd)) + 1;
return TRUE;
}