Skip to content

Commit

Permalink
[efi] Populate debug directory entry FileOffset field
Browse files Browse the repository at this point in the history
Signed-off-by: Michael Brown <mcb30@ipxe.org>
  • Loading branch information
mcb30 committed Sep 1, 2015
1 parent ed609c4 commit 619a377
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/util/elf2efi.c
Expand Up @@ -41,6 +41,7 @@
struct pe_section {
struct pe_section *next;
EFI_IMAGE_SECTION_HEADER hdr;
void ( * fixup ) ( struct pe_section *section );
uint8_t contents[0];
};

Expand Down Expand Up @@ -547,6 +548,20 @@ create_reloc_section ( struct pe_header *pe_header,
return reloc;
}

/**
* Fix up debug section
*
* @v debug Debug section
*/
static void fixup_debug_section ( struct pe_section *debug ) {
EFI_IMAGE_DEBUG_DIRECTORY_ENTRY *contents;

/* Fix up FileOffset */
contents = ( ( void * ) debug->contents );
contents->FileOffset += ( debug->hdr.PointerToRawData -
debug->hdr.VirtualAddress );
}

/**
* Create debug section
*
Expand Down Expand Up @@ -581,6 +596,7 @@ create_debug_section ( struct pe_header *pe_header, const char *filename ) {
debug->hdr.Characteristics = ( EFI_IMAGE_SCN_CNT_INITIALIZED_DATA |
EFI_IMAGE_SCN_MEM_NOT_PAGED |
EFI_IMAGE_SCN_MEM_READ );
debug->fixup = fixup_debug_section;

/* Create section contents */
contents->debug.TimeDateStamp = 0x10d1a884;
Expand All @@ -589,6 +605,7 @@ create_debug_section ( struct pe_header *pe_header, const char *filename ) {
( sizeof ( *contents ) - sizeof ( contents->debug ) );
contents->debug.RVA = ( debug->hdr.VirtualAddress +
offsetof ( typeof ( *contents ), rsds ) );
contents->debug.FileOffset = contents->debug.RVA;
contents->rsds.Signature = CODEVIEW_SIGNATURE_RSDS;
snprintf ( contents->name, sizeof ( contents->name ), "%s",
filename );
Expand Down Expand Up @@ -629,6 +646,8 @@ static void write_pe_file ( struct pe_header *pe_header,
fpos += section->hdr.SizeOfRawData;
fpos = efi_file_align ( fpos );
}
if ( section->fixup )
section->fixup ( section );
}

/* Write file header */
Expand Down

0 comments on commit 619a377

Please sign in to comment.