bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug binutils/16252] New: readelf -wF mishandles DW_CFA_restore_state


From: address@hidden
Subject: [Bug binutils/16252] New: readelf -wF mishandles DW_CFA_restore_state
Date: Tue, 26 Nov 2013 11:19:11 +0000

http://sourceware.org/bugzilla/show_bug.cgi?id=16252

            Bug ID: 16252
           Summary: readelf -wF mishandles DW_CFA_restore_state
           Product: binutils
           Version: 2.23
            Status: NEW
          Severity: normal
          Priority: P2
         Component: binutils
          Assignee: unassigned at sourceware dot org
          Reporter: address@hidden

readelf -wF loses the state of the saved registers after DW_CFA_restore_state.

$ readelf -wf nptl/pthread_cond_timedwait.os
Contents of the .eh_frame section:

00000000 0000001c 00000000 CIE
  Version:               1
  Augmentation:          "zPLR"
  Code alignment factor: 1
  Data alignment factor: -4
  Return address column: 8
  Augmentation data:     9b ed ff ff ff 1b 1b

  DW_CFA_def_cfa: r4 (esp) ofs 4
  DW_CFA_offset: r8 (eip) at cfa-4
  DW_CFA_nop
  DW_CFA_nop

00000020 00000058 00000024 FDE cie=00000000 pc=00000000..00000570
  Augmentation data:     cf ff ff ff

  DW_CFA_advance_loc: 1 to 00000001
  DW_CFA_def_cfa_offset: 8
  DW_CFA_offset: r5 (ebp) at cfa-8
  DW_CFA_advance_loc: 1 to 00000002
  DW_CFA_def_cfa_offset: 12
  DW_CFA_offset: r7 (edi) at cfa-12
  DW_CFA_advance_loc: 1 to 00000003
  DW_CFA_def_cfa_offset: 16
  DW_CFA_offset: r6 (esi) at cfa-16
  DW_CFA_advance_loc: 1 to 00000004
  DW_CFA_def_cfa_offset: 20
  DW_CFA_offset: r3 (ebx) at cfa-20
  DW_CFA_advance_loc1: 114 to 00000076
  DW_CFA_def_cfa_offset: 52
  DW_CFA_remember_state
  DW_CFA_advance_loc2: 440 to 0000022e
  DW_CFA_def_cfa_offset: 20
  DW_CFA_advance_loc: 7 to 00000235
  DW_CFA_def_cfa_offset: 16
  DW_CFA_restore: r3 (ebx)
  DW_CFA_advance_loc: 1 to 00000236
  DW_CFA_def_cfa_offset: 12
  DW_CFA_restore: r6 (esi)
  DW_CFA_advance_loc: 1 to 00000237
  DW_CFA_def_cfa_offset: 8
  DW_CFA_restore: r7 (edi)
  DW_CFA_advance_loc: 1 to 00000238
  DW_CFA_def_cfa_offset: 4
  DW_CFA_restore: r5 (ebp)
  DW_CFA_advance_loc: 1 to 00000239
  DW_CFA_restore_state
  DW_CFA_advance_loc: 9 to 00000242
  DW_CFA_def_cfa_offset: 20
  DW_CFA_advance_loc: 63 to 00000281
  DW_CFA_def_cfa_offset: 52
  DW_CFA_advance_loc1: 84 to 000002d5
  DW_CFA_def_cfa_offset: 20
  DW_CFA_advance_loc1: 64 to 00000315
  DW_CFA_def_cfa_offset: 52
  DW_CFA_advance_loc1: 244 to 00000409
  DW_CFA_def_cfa_offset: 20
  DW_CFA_advance_loc: 28 to 00000425
  DW_CFA_def_cfa_offset: 52
  DW_CFA_nop
  DW_CFA_nop

$ readelf -wF nptl/pthread_cond_timedwait.os
Contents of the .eh_frame section:

00000000 0000001c 00000000 CIE "zPLR" cf=1 df=-4 ra=8
   LOC   CFA      ra      
00000000 esp+4    c-4   

00000020 00000058 00000024 FDE cie=00000000 pc=00000000..00000570
   LOC   CFA      ebx   ebp   esi   edi   ra      
00000000 esp+4    u     u     u     u     c-4   
00000001 esp+8    u     c-8   u     u     c-4   
00000002 esp+12   u     c-8   u     c-12  c-4   
00000003 esp+16   u     c-8   c-16  c-12  c-4   
00000004 esp+20   c-20  c-8   c-16  c-12  c-4   
00000076 esp+52   c-20  c-8   c-16  c-12  c-4   
0000022e esp+20   c-20  c-8   c-16  c-12  c-4   
00000235 esp+16   u     c-8   c-16  c-12  c-4   
00000236 esp+12   u     c-8   u     c-12  c-4   
00000237 esp+8    u     c-8   u     u     c-4   
00000238 esp+4    u     u     u     u     c-4   
00000239 esp+4    c-20  u     u     u     c-4   
00000242 esp+20   c-20  u     u     u     c-4   
00000281 esp+52   c-20  u     u     u     c-4   
000002d5 esp+20   c-20  u     u     u     c-4   
00000315 esp+52   c-20  u     u     u     c-4   
00000409 esp+20   c-20  u     u     u     c-4   
00000425 esp+52   c-20  u     u     u     c-4   

There is a DW_CFA_restore_state at 00000239 that restores the state at
00000076, but readelf -wF displays u for the saved registers.

-- 
You are receiving this mail because:
You are on the CC list for the bug.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]