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

[Bug default/23705] New: abidiff issue with harfbuzz



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

            Bug ID: 23705
           Summary: abidiff issue with harfbuzz
           Product: libabigail
           Version: unspecified
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: default
          Assignee: dodji at redhat dot com
          Reporter: bochecha at daitauha dot fr
                CC: libabigail at sourceware dot org
  Target Milestone: ---

Created attachment 11271
  --> https://sourceware.org/bugzilla/attachment.cgi?id=11271&action=edit
A tarball containing the libraries, debuginfos and headers, to reproduce the
commands in the bug description

I **think** I found one more issue where libabigail thinks we broke ABI but we
didn't.

$ abidiff --no-added-syms --drop-private-types --headers-dir1
harfbuzz-1.8.4/usr/include --headers-dir2 harfbuzz-1.9.0/usr/include
--debug-info-dir1 harfbuzz-1.8.4/usr/lib/debug --debug-info-dir2
harfbuzz-1.9.0/usr/lib/debug
harfbuzz-1.8.4/usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.10800.4
harfbuzz-1.9.0/usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.10900.0 
Functions changes summary: 0 Removed, 1 Changed, 0 Added (11 filtered out)
functions
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable

1 function with some indirect sub-type change:

  [C]'function hb_blob_t* hb_glib_blob_create(GBytes*)' at hb-glib.cc:424:1 has
some indirect sub-type changes:
    return type changed:
      entity changed from 'hb_blob_t*' to 'void'
      type size changed from 64 to 0 (in bits)

Neither the code (hb-glib.cc) nor the header (hb-glib.h) changed anything on
this function between harfbuzz 1.8.4 and 1.9.0.

I tried looking at abidw:

$ abidw --debug-info-dir harfbuzz-1.8.4/usr/lib/debug --headers-dir
harfbuzz-1.8.4/usr/include
harfbuzz-1.8.4/usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.10800.4

That tells me the following about this function:

    <function-decl name='hb_glib_blob_create'
mangled-name='hb_glib_blob_create' filepath='../../src/hb-glib.cc' line='426'
column='1' visibility='default' binding='global' size-in-bits='64'
elf-symbol-id='hb_glib_blob_create'>
      <parameter type-id='type-id-2761' name='gbytes'
filepath='../../src/hb-glib.cc' line='426' column='1'/>
      <return type-id='type-id-77'/>
    </function-decl>

The return type is type-id-77 which is:

    <pointer-type-def type-id='type-id-74' size-in-bits='64' id='type-id-77'/>

If I get this right, it's a pointer to type-id-74, which is:

    <class-decl name='hb_blob_t' size-in-bits='448' is-struct='yes'
visibility='default' filepath='../../src/hb-blob-private.hh' line='39'
column='1' id='type-id-74'>

Alright, so abidw seems to confirm that in 1.8.4, hb_glib_blob_create returns a
pointer to hb_blob_t.

Doing the same thing with 1.9.0:

$ abidw --debug-info-dir harfbuzz-1.9.0/usr/lib/debug --headers-dir
harfbuzz-1.9.0/usr/include
harfbuzz-1.9.0/usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.10900.0 

That tells me the following about this function:

    <function-decl name='hb_glib_blob_create'
mangled-name='hb_glib_blob_create' filepath='../../src/hb-glib.cc' line='424'
column='1' visibility='default' binding='global' size-in-bits='64'
elf-symbol-id='hb_glib_blob_create'>
      <parameter type-id='type-id-3953' name='gbytes'
filepath='../../src/hb-glib.cc' line='424' column='1'/>
      <return type-id='type-id-42'/>
    </function-decl>

The return type is type-id-42 which is:

    <pointer-type-def type-id='type-id-38' size-in-bits='64' id='type-id-42'/>

If I get this right, it's a pointer to type-id-38, which is:

    <class-decl name='hb_blob_t' size-in-bits='448' is-struct='yes'
visibility='default' filepath='../../src/hb-blob.hh' line='39' column='1'
id='type-id-38'>

Alright, so abidw seems to confirm that in 1.9.0, hb_glib_blob_create returns a
pointer to hb_blob_t.

So, why would abidiff think the function returns void in 1.9.0?

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