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

[Bug default/25128] New: abidiff is incorrectly comparing the size for declaration-only types with --leaf-changes-only



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

            Bug ID: 25128
           Summary: abidiff is incorrectly comparing the size for
                    declaration-only types with --leaf-changes-only
           Product: libabigail
           Version: unspecified
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: default
          Assignee: dodji at redhat dot com
          Reporter: maennich at android dot com
                CC: libabigail at sourceware dot org
  Target Milestone: ---

Created attachment 12050
  --> https://sourceware.org/bugzilla/attachment.cgi?id=12050&action=edit
reproducer

Consider base.xml and new.xml in the attachment.

They are from different code states and there is an actual difference when
comparing them:

$ abidiff base.xml new.xml

1 function with some indirect sub-type change:

  [C]'function const cpumask* sched_trace_rd_span(root_domain*)' at
fair.c:10689:1 has some indirect sub-type changes:
    parameter 1 of type 'root_domain*' has sub-type changes:
      in pointed to type 'struct root_domain' at sched.h:740:1:
  [...]


That behaviour is correct.

When run in --leaf-changes-only mode, the comparison gets confused by a
declaration-only type:

$ abidiff base.xml new.xml --leaf-changes-only
Leaf changes summary: 2 artifacts changed
Changed leaf types summary: 2 leaf types changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
(1 filtered out)
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

'struct root_domain at sched.h:732:1' changed:
  type size changed from 14592 to 14720 (in bits)
  there are data member changes:
   type 'unsigned long int' of 'root_domain::max_cpu_capacity' changed:
     entity changed from 'unsigned long int' to 'struct max_cpu_capacity' at
sched.h:722:1
     type size changed from 64 to 192 (in bits)
, size changed from 64 to 192 (in bits) (by +128 bits)
   'perf_domain* root_domain::pd' offset changed from 14528 to 14656 (in bits)
(by +128 bits)

'struct xfrm_policy' changed:
  type size changed from 0 to 6336 (in bits)


The struct 'xfrm_policy' appears both xml representations in a slight different
way:

base.xml:
  [...]
  <abi-instr version='1.0' address-size='64' path='kernel/audit.c'
language='LANG_C89'>
  [...]
  <class-decl name='xfrm_policy' is-struct='yes' visibility='default'
is-declaration-only='yes' id='type-id-3146'/>
  [...]
  <abi-instr version='1.0' address-size='64' path='net/core/skbuff.c'
language='LANG_C89'>
  [...]
  <class-decl name='xfrm_policy' size-in-bits='6336' is-struct='yes'
visibility='default' filepath='include/net/xfrm.h' line='499' column='1'
id='type-id-12015'>

new.xml:
  [...]
  <abi-instr version='1.0' address-size='64' path='common/kernel/audit.c'
language='LANG_C89'>
  [...]
  <class-decl name='xfrm_policy' size-in-bits='6336' is-struct='yes'
visibility='default' is-declaration-only='yes' id='type-id-3147'/>
  [...]

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