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

[Bug default/20329] New: const void* type wrong



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

            Bug ID: 20329
           Summary: const void* type wrong
           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: ---

This is related to PR#20194 and uses the same objects from jemalloc found in
PR#20323.

Comparing: 
Generates the error:

  [C]'function size_t sallocx(int)' at jemalloc.c:2461:1 has some indirect
sub-type changes:
    parameter 1 of type 'int' changed:
      entity changed from 'int' to 'const void*'
      type size changed from 32 to 64 bits
    parameter 2 of type 'int' was added

When you look at the DWARF it appears like libabigail is stumbling over the
unspecified type provided by GCC 6.1 when it makes a pointer to a const (with
no type specified). 

Intel:
 [ 12508]    subprogram
             decl_line            (data2) 2461
             decl_column          (data1) 1
             decl_file            (data1) 20
             type                 (ref4) [   505]
             prototyped           (flag)
             name                 (strp) "sallocx"
             MIPS_linkage_name    (strp) "sallocx"
             low_pc               (addr) +0x000000000000af40 <sallocx>
             high_pc              (addr) +0x000000000000b0b0 <dallocx>
             external             (flag)
 [ 1252b]      formal_parameter
               decl_line            (data2) 2461
               decl_column          (data1) 24
               decl_file            (data1) 20
               type                 (ref4) [   52f]
               name                 (string) "ptr"
               location             (block1)
                [   0] reg5
 [ 1253a]      formal_parameter
               decl_line            (data2) 2461
               decl_column          (data1) 33
               decl_file            (data1) 20
               type                 (ref4) [   3e5]
               name                 (strp) "flags"
               location             (block1)
                [   0] reg4
 [   52f]    pointer_type
             type                 (ref4) [   534]
 [   534]    const_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"

GCC 6.1:
 [  54c5]    subprogram
             external             (flag_present)
             name                 (strp) "sallocx"
             decl_file            (data1) 1
             decl_line            (data2) 2461
             prototyped           (flag_present)
             type                 (ref4) [   10e]
             low_pc               (addr) +0x000000000000c8d0 <sallocx>
             high_pc              (data8) 324 (+0x000000000000ca14)
             frame_base           (exprloc)
              [   0] call_frame_cfa
             GNU_all_tail_call_sites (flag_present)
             sibling              (ref4) [  5830]
 [  54e7]      formal_parameter
               name                 (string) "ptr"
               decl_file            (data1) 1
               decl_line            (data2) 2461
               type                 (ref4) [   5b4]
               location             (sec_offset) location list [  6001]
 [  54f7]      formal_parameter
               name                 (strp) "flags"
               decl_file            (data1) 1
               decl_line            (data2) 2461
               type                 (ref4) [    46]
               location             (sec_offset) location list [  609c]

 [   5b4]    pointer_type
             byte_size            (data1) 8
             type                 (ref4) [   5ba]
 [   5ba]    const_type
[    46]    base_type
             byte_size            (data1) 4
             encoding             (data1) signed (5)
             name                 (string) "int"

You can see that the proper DWARF is there but the encoding seems confuse
libabigail into misattributing the second formal parameter from the function to
be the first leading to the error.

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