0
0
mirror of https://github.com/netwide-assembler/nasm.git synced 2025-10-10 00:25:06 -04:00

elf: change form for DW_AT_frame_base to DW_form_exprloc

data4 was not spec-compliant here, causing some tools reading
DWARF debug info to complain. Thanks to Nikita Smith for
debugging this!

Signed-off-by: Fabian Giesen <fabian.giesen@epicgames.com>
This commit is contained in:
Fabian Giesen
2022-10-03 14:43:58 -07:00
committed by H. Peter Anvin
parent 1d72743d6b
commit 9e03a95922

View File

@@ -3268,7 +3268,7 @@ static void dwarf_generate(void)
saa_write32(pinforel, pinfo->datalen + 4);
saa_write32(pinforel, ((dwarf_fsect->section + 2) << 8) + R_386_32);
saa_write32(pinfo,0); /* DW_AT_low_pc */
saa_write32(pinfo,0); /* DW_AT_frame_base */
saa_write8(pinfo,0); /* DW_AT_frame_base */
saa_write8(pinfo,0); /* end of entries */
saalen = pinfo->datalen;
infolen = saalen + 4;
@@ -3308,7 +3308,7 @@ static void dwarf_generate(void)
saa_write32(pinforel, ((dwarf_fsect->section + 2) << 8) + R_X86_64_32);
saa_write32(pinforel, 0);
saa_write32(pinfo,0); /* DW_AT_low_pc */
saa_write32(pinfo,0); /* DW_AT_frame_base */
saa_write8(pinfo,0); /* DW_AT_frame_base */
saa_write8(pinfo,0); /* end of entries */
saalen = pinfo->datalen;
infolen = saalen + 4;
@@ -3349,7 +3349,7 @@ static void dwarf_generate(void)
saa_write64(pinforel, ((uint64_t)(dwarf_fsect->section + 2) << 32) + R_X86_64_64);
saa_write64(pinforel, 0);
saa_write64(pinfo,0); /* DW_AT_low_pc */
saa_write64(pinfo,0); /* DW_AT_frame_base */
saa_write8(pinfo,0); /* DW_AT_frame_base */
saa_write8(pinfo,0); /* end of entries */
saalen = pinfo->datalen;
infolen = saalen + 4;
@@ -3393,7 +3393,7 @@ static void dwarf_generate(void)
saa_write8(pabbrev,DW_AT_low_pc);
saa_write8(pabbrev,DW_FORM_addr);
saa_write8(pabbrev,DW_AT_frame_base);
saa_write8(pabbrev,DW_FORM_data4);
saa_write8(pabbrev,DW_FORM_exprloc);
saa_write16(pabbrev,0); /* end of entry */
/* Terminal zero entry */
saa_write8(pabbrev,0);