lvc / abi-dumper

Dump ABI of an ELF object containing DWARF debug info
GNU Lesser General Public License v2.1
177 stars 33 forks source link

Different ABI report for tesseract 4.1.1 #23

Open zdenop opened 4 years ago

zdenop commented 4 years ago

I tested tesseract 4.1.0 and tesseract 4.1.1 with these steps:

git clone https://github.com/tesseract-ocr/tesseract.git
git checkout 4.1.0
./autogen.sh && ./configure --prefix=/opt/tesseract410 --enable-debug CXXFLAGS="-pedantic -Og"
make -j 4 && make -j 4 training
sudo make install && sudo make training-install

make clean
git checkout 4.1.1
./autogen.sh && ./configure --prefix=/opt/tesseract411 --enable-debug CXXFLAGS="-pedantic -Og"
make -j 4 && make -j 4 training
sudo make install && sudo make training-install

abi-dumper /opt/tesseract410/lib/libtesseract.so.4 -o tesseract-4.1.0.dump -lver tesseract-4.1.0 -public-headers /opt/tesseract410/include/tesseract/

abi-dumper /opt/tesseract411/lib/libtesseract.so.4 -o tesseract-4.1.1.dump -lver tesseract-4.1.1 -public-headers /opt/tesseract411/include/tesseract/

abi-compliance-checker -l tesseract-4.1.1 -old tesseract-4.1.0.dump -new tesseract-4.1.1.dump

chromium-browser compat_reports/tesseract-4.1.1/tesseract-4.1.0_to_tesseract-4.1.1/compat_report.html

According my report there is Compatibility 1 00%. But abi-laboratory.pro report shows only 96.4% backward Compat. Why?

teseract_api_comp.tar.gz

linuxhw commented 4 years ago

I've checked your data and seems your test is OK in general.

The difference seems to be platform specific. The test at https://abi-laboratory.pro is performed on x86_64, but your test is performed on ARM. The binary compatibility is platform specific. You need to verify compatibility on ALL targeted processor architectures.

Also I see a difference in compile options generated by tesseract Makefile for x86_64 (just rebuild them in the same environment):

4.1.0:

GNU C++14 8.3.0 -march=ivybridge -mmmx -mno-3dnow -msse -mcx16 -msahf -mno-movbe -maes -mno-sha -mpclmul -mpopcnt -mno-abm -mno-lwp -mno-bmi -mno-sgx -mno-pconfig -mno-wbnoinvd -mno-tbm -mno-lzcnt -mno-rtm -mno-hle -mrdrnd -mf16c -mfsgsbase -mno-rdseed -mno-prfchw -mno-adx -mfxsr -mxsave -mxsaveopt -mno-prefetchwt1 -mno-clflushopt -mno-xsavec -mno-xsaves -mno-avx5124fmaps -mno-avx5124vnniw -mno-clwb -mno-mwaitx -mno-clzero -mno-pku -mno-rdpid -mno-gfni -mno-shstk -mno-avx512vbmi2 -mno-avx512vnni -mno-vaes -mno-vpclmulqdq -mno-avx512bitalg -mno-movdiri -mno-movdir64b --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=6144 -mtune=ivybridge -march=ivybridge -march=ivybridge -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mno-sse4a -mno-fma -mno-bmi2 -mno-avx2 -mno-xop -mno-fma4 -mno-avx512f -mno-avx512vl -mno-avx512pf -mno-avx512er -mno-avx512cd -mno-avx512dq -mno-avx512bw -mno-avx512ifma -mno-avx512vbmi -g -g -g -Og -Og -O3 -std=c++14 -fpermissive -fPIC -ffast-math

4.1.1:

GNU C++17 8.3.0 -mtune=generic -march=x86-64 -g -g -Og -Og -std=c++17 -fpermissive -fPIC

Thanks.