Skip to content

Commit 9e03a95

Browse files
Fabian Giesenhpax
authored andcommitted
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 <[email protected]>
1 parent 1d72743 commit 9e03a95

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

output/outelf.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3268,7 +3268,7 @@ static void dwarf_generate(void)
32683268
saa_write32(pinforel, pinfo->datalen + 4);
32693269
saa_write32(pinforel, ((dwarf_fsect->section + 2) << 8) + R_386_32);
32703270
saa_write32(pinfo,0); /* DW_AT_low_pc */
3271-
saa_write32(pinfo,0); /* DW_AT_frame_base */
3271+
saa_write8(pinfo,0); /* DW_AT_frame_base */
32723272
saa_write8(pinfo,0); /* end of entries */
32733273
saalen = pinfo->datalen;
32743274
infolen = saalen + 4;
@@ -3308,7 +3308,7 @@ static void dwarf_generate(void)
33083308
saa_write32(pinforel, ((dwarf_fsect->section + 2) << 8) + R_X86_64_32);
33093309
saa_write32(pinforel, 0);
33103310
saa_write32(pinfo,0); /* DW_AT_low_pc */
3311-
saa_write32(pinfo,0); /* DW_AT_frame_base */
3311+
saa_write8(pinfo,0); /* DW_AT_frame_base */
33123312
saa_write8(pinfo,0); /* end of entries */
33133313
saalen = pinfo->datalen;
33143314
infolen = saalen + 4;
@@ -3349,7 +3349,7 @@ static void dwarf_generate(void)
33493349
saa_write64(pinforel, ((uint64_t)(dwarf_fsect->section + 2) << 32) + R_X86_64_64);
33503350
saa_write64(pinforel, 0);
33513351
saa_write64(pinfo,0); /* DW_AT_low_pc */
3352-
saa_write64(pinfo,0); /* DW_AT_frame_base */
3352+
saa_write8(pinfo,0); /* DW_AT_frame_base */
33533353
saa_write8(pinfo,0); /* end of entries */
33543354
saalen = pinfo->datalen;
33553355
infolen = saalen + 4;
@@ -3393,7 +3393,7 @@ static void dwarf_generate(void)
33933393
saa_write8(pabbrev,DW_AT_low_pc);
33943394
saa_write8(pabbrev,DW_FORM_addr);
33953395
saa_write8(pabbrev,DW_AT_frame_base);
3396-
saa_write8(pabbrev,DW_FORM_data4);
3396+
saa_write8(pabbrev,DW_FORM_exprloc);
33973397
saa_write16(pabbrev,0); /* end of entry */
33983398
/* Terminal zero entry */
33993399
saa_write8(pabbrev,0);

0 commit comments

Comments
 (0)