public inbox for libabigail@sourceware.org
 help / color / mirror / Atom feed
* [Bug default/20323] void* idiom for intel, PGI DWARF confuses subsequent parameter handling
  2016-01-01  0:00 [Bug default/20323] New: void* idiom for intel, PGI DWARF confuses subsequent parameter handling woodard at redhat dot com
                   ` (2 preceding siblings ...)
  2016-01-01  0:00 ` dodji at redhat dot com
@ 2016-01-01  0:00 ` woodard at redhat dot com
  2016-01-01  0:00 ` woodard at redhat dot com
  4 siblings, 0 replies; 6+ messages in thread
From: woodard at redhat dot com @ 2016-01-01  0:00 UTC (permalink / raw)
  To: libabigail

https://sourceware.org/bugzilla/show_bug.cgi?id=20323

--- Comment #1 from Ben Woodard <woodard at redhat dot com> ---
Created attachment 9377
  --> https://sourceware.org/bugzilla/attachment.cgi?id=9377&action=edit
jemalloc shared libraries

Here is a tar file with all the shared libraries.

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug default/20323] void* idiom for intel, PGI DWARF confuses subsequent parameter handling
  2016-01-01  0:00 [Bug default/20323] New: void* idiom for intel, PGI DWARF confuses subsequent parameter handling woodard at redhat dot com
  2016-01-01  0:00 ` [Bug default/20323] " dodji at redhat dot com
@ 2016-01-01  0:00 ` dodji at redhat dot com
  2016-01-01  0:00 ` dodji at redhat dot com
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: dodji at redhat dot com @ 2016-01-01  0:00 UTC (permalink / raw)
  To: libabigail

https://sourceware.org/bugzilla/show_bug.cgi?id=20323

--- Comment #2 from dodji at redhat dot com ---
What I read from looking at the debug info generated for the jemalloc binary
generated using the PGI compiler is that there is no parameter for the deallocx
function:

PGI:

 [   502]    subprogram
             external             (flag)
             name                 (string) "dallocx"
             decl_file            (data1) 1
             decl_line            (data2) 2477
             low_pc               (addr) +0x00000000000132d0 <dallocx>
             high_pc              (addr) +0x000000000001334a <__dallocxEND>
             frame_base           (block1)
              [   0] reg6

Whereas for for GCC, the debug info says dallocx has two parameters. The first
one is of type pointer to void, and the second one is of type int.

 [  4a9f]    subprogram
             external             (flag_present)
             name                 (strp) "dallocx"
             decl_file            (data1) 1
             decl_line            (data2) 2477
             prototyped           (flag_present)
             low_pc               (addr) +0x000000000000ca20 <dallocx>
             high_pc              (data8) 1449 (+0x000000000000cfc9)
             frame_base           (exprloc)
              [   0] call_frame_cfa
             GNU_all_tail_call_sites (flag_present)
             sibling              (ref4) [  54c5]
 [  4abd]      formal_parameter
               name                 (string) "ptr"
               decl_file            (data1) 1
               decl_line            (data2) 2477
               type                 (ref4) [    f6]
               location             (sec_offset) location list [  47f6]
 [  4acd]      formal_parameter
               name                 (strp) "flags"
               decl_file            (data1) 1
               decl_line            (data2) 2477
               type                 (ref4) [    46]
               location             (sec_offset) location list [  4996]

[...]
 [    f6]    pointer_type
             byte_size            (data1) 8

[...]
 [    46]    base_type
             byte_size            (data1) 4
             encoding             (data1) signed (5)
             name                 (string) "int"



That is why abidiff says that the dallocx function lost its two parameters when
comparing the one compiled with GCC against the one compiled with PGI.

So I would argue that the PGI compiler does not emit the description of the
parameters of the dallocx function and it should.

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug default/20323] New: void* idiom for intel, PGI DWARF confuses subsequent parameter handling
@ 2016-01-01  0:00 woodard at redhat dot com
  2016-01-01  0:00 ` [Bug default/20323] " dodji at redhat dot com
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: woodard at redhat dot com @ 2016-01-01  0:00 UTC (permalink / raw)
  To: libabigail

https://sourceware.org/bugzilla/show_bug.cgi?id=20323

            Bug ID: 20323
           Summary: void* idiom for intel, PGI DWARF confuses subsequent
                    parameter handling
           Product: libabigail
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: default
          Assignee: dodji at redhat dot com
          Reporter: woodard at redhat dot com
                CC: libabigail at sourceware dot org
  Target Milestone: ---

I believe that this is actually distinct from 20194 but the patch to fix that
may ultimately lead to this being resolved as well. At the very least they
should be looked at together.

I'm looking at:

  [C]'function void dallocx(void*, int)' at jemalloc.c:2477:1 has some indirect
sub-type changes:
    parameter 1 of type 'void*' changed:
      entity changed from 'void*' to 'int'
      type size changed from 64 to 32 bits
    parameter 2 of type 'int' was removed

GCC has:

 [  4a9f]    subprogram
             external             (flag_present)
             name                 (strp) "dallocx"
             decl_file            (data1) 1
             decl_line            (data2) 2477
             prototyped           (flag_present)
             low_pc               (addr) +0x000000000000ca20 <dallocx>
             high_pc              (data8) 1449 (+0x000000000000cfc9)
             frame_base           (exprloc)
              [   0] call_frame_cfa
             GNU_all_tail_call_sites (flag_present)
             sibling              (ref4) [  54c5]
 [  4abd]      formal_parameter
               name                 (string) "ptr"
               decl_file            (data1) 1
               decl_line            (data2) 2477
               type                 (ref4) [    f6]
               location             (sec_offset) location list [  47f6]
 [  4acd]      formal_parameter
               name                 (strp) "flags"
               decl_file            (data1) 1
               decl_line            (data2) 2477
               type                 (ref4) [    46]
               location             (sec_offset) location list [  4996]

 [    46]    base_type
             byte_size            (data1) 4
             encoding             (data1) signed (5)
             name                 (string) "int"

 [    f6]    pointer_type
             byte_size            (data1) 8

Intel has:

 [ 12832]    subprogram
             decl_line            (data2) 2477
             decl_column          (data1) 1
             decl_file            (data1) 20
             prototyped           (flag)
             name                 (strp) "dallocx"
             MIPS_linkage_name    (strp) "dallocx"
             low_pc               (addr) +0x000000000000b0b0 <dallocx>
             high_pc              (addr) +0x000000000000b310 <sdallocx>
             external             (flag)
 [ 12851]      formal_parameter
               decl_line            (data2) 2477
               decl_column          (data1) 18
               decl_file            (data1) 20
               type                 (ref4) [   5fc]
               name                 (string) "ptr"
               location             (block1)
                [   0] reg5
 [ 12860]      formal_parameter
               decl_line            (data2) 2477
               decl_column          (data1) 27
               decl_file            (data1) 20
               type                 (ref4) [   3e5]
               name                 (strp) "flags"
               location             (block1)
                [   0] reg4

 [   5fc]    pointer_type
             type                 (ref4) [   539]

 [   539]    base_type
             byte_size            (data1) 0
             encoding             (data1) signed (5)
             name                 (strp) "void"

 [   3e5]    base_type
             byte_size            (data1) 4
             encoding             (data1) signed (5)
             name                 (string) "int"

So the error is wrong: Parameter 2 of type int was not removed. I believe that
the processing is getting confused by the intel/pgi idiom of expressing a
void*.

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug default/20323] void* idiom for intel, PGI DWARF confuses subsequent parameter handling
  2016-01-01  0:00 [Bug default/20323] New: void* idiom for intel, PGI DWARF confuses subsequent parameter handling woodard at redhat dot com
@ 2016-01-01  0:00 ` dodji at redhat dot com
  2016-01-01  0:00 ` dodji at redhat dot com
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: dodji at redhat dot com @ 2016-01-01  0:00 UTC (permalink / raw)
  To: libabigail

https://sourceware.org/bugzilla/show_bug.cgi?id=20323
Bug 20323 depends on bug 20194, which changed state.

Bug 20194 Summary: Fail to recognize void type represented by DW_TAG_base_type
https://sourceware.org/bugzilla/show_bug.cgi?id=20194

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug default/20323] void* idiom for intel, PGI DWARF confuses subsequent parameter handling
  2016-01-01  0:00 [Bug default/20323] New: void* idiom for intel, PGI DWARF confuses subsequent parameter handling woodard at redhat dot com
                   ` (3 preceding siblings ...)
  2016-01-01  0:00 ` woodard at redhat dot com
@ 2016-01-01  0:00 ` woodard at redhat dot com
  4 siblings, 0 replies; 6+ messages in thread
From: woodard at redhat dot com @ 2016-01-01  0:00 UTC (permalink / raw)
  To: libabigail

https://sourceware.org/bugzilla/show_bug.cgi?id=20323

Ben Woodard <woodard at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Depends on|                            |20194


Referenced Bugs:

https://sourceware.org/bugzilla/show_bug.cgi?id=20194
[Bug 20194] Intel void* idiom has wrong size
-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug default/20323] void* idiom for intel, PGI DWARF confuses subsequent parameter handling
  2016-01-01  0:00 [Bug default/20323] New: void* idiom for intel, PGI DWARF confuses subsequent parameter handling woodard at redhat dot com
  2016-01-01  0:00 ` [Bug default/20323] " dodji at redhat dot com
  2016-01-01  0:00 ` dodji at redhat dot com
@ 2016-01-01  0:00 ` dodji at redhat dot com
  2016-01-01  0:00 ` woodard at redhat dot com
  2016-01-01  0:00 ` woodard at redhat dot com
  4 siblings, 0 replies; 6+ messages in thread
From: dodji at redhat dot com @ 2016-01-01  0:00 UTC (permalink / raw)
  To: libabigail

https://sourceware.org/bugzilla/show_bug.cgi?id=20323

dodji at redhat dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |WAITING

--- Comment #3 from dodji at redhat dot com ---
I am putting this problem report in the WAITING state until we hear more from
the PGI people.  I still think that the PGI compiler should emit debug info
describing the parameters of the function here, unless there is something I am
missing.

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-07-08  8:41 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-01  0:00 [Bug default/20323] New: void* idiom for intel, PGI DWARF confuses subsequent parameter handling woodard at redhat dot com
2016-01-01  0:00 ` [Bug default/20323] " dodji at redhat dot com
2016-01-01  0:00 ` dodji at redhat dot com
2016-01-01  0:00 ` dodji at redhat dot com
2016-01-01  0:00 ` woodard at redhat dot com
2016-01-01  0:00 ` woodard at redhat dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).