ພາສາອັງກິດພາສາຝຣັ່ງແອສປາໂຍນ

Ad


OnWorks favicon

abidiff - ອອນໄລນ໌ຢູ່ໃນຄລາວ

ດໍາເນີນການ abidiff ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີຜ່ານ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ນີ້ແມ່ນຄໍາສັ່ງ abidiff ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ໂຄງການ:

NAME


abidiff - ປຽບທຽບ ABIs ຂອງໄຟລ໌ ELF

abidiff ປຽບທຽບ Application Binary Interfaces (ABI) ຂອງສອງຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນໃນ ELF
ຮູບແບບ. ມັນປ່ອຍບົດລາຍງານທີ່ມີຄວາມຫມາຍທີ່ອະທິບາຍຄວາມແຕກຕ່າງລະຫວ່າງສອງ ABIs.

ສໍາລັບບົດລາຍງານການປ່ຽນແປງ ABI ທີ່ສົມບູນແບບທີ່ປະກອບມີການປ່ຽນແປງກ່ຽວກັບຫນ້າທີ່ແລະຕົວແປ
ປະເພດຍ່ອຍ, ສອງຫ້ອງສະຫມຸດທີ່ແບ່ງປັນການປ້ອນຂໍ້ມູນຈະຕ້ອງມາພ້ອມກັບຂໍ້ມູນດີບັກຂອງເຂົາເຈົ້າ
in DWARF ຮູບແບບ. ຖ້າບໍ່ດັ່ງນັ້ນ, ເທົ່ານັ້ນ ELF ສັນຍາລັກທີ່ຖືກເພີ່ມຫຼືເອົາອອກໄດ້ຖືກລາຍງານ.

ການຮຽກຮ້ອງ


abidiff [ທາງ​ເລືອກ​]

OPTIONS


· - ຊ່ວຍ | -h

ສະແດງການຊ່ວຍເຫຼືອສັ້ນໆກ່ຽວກັບຄໍາສັ່ງແລະອອກ.

· - ການປ່ຽນແປງ | -v

ສະແດງສະບັບຂອງໂຄງການແລະອອກ.

· --debug-info-dir1 | --d1 <di-path1>

ສໍາລັບກໍລະນີທີ່ຂໍ້ມູນ debug ສໍາລັບ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ ແບ່ງອອກເປັນ
ໄຟລ໌ແຍກຕ່າງຫາກ, ບອກ Abidiff ບ່ອນທີ່ຈະຊອກຫາໄຟລ໌ຂໍ້ມູນ debug ແຍກຕ່າງຫາກນັ້ນ.

ໃຫ້ສັງເກດວ່າ di-ເສັ້ນທາງ ຕ້ອງຊີ້ໄປຫາໄດເລກະທໍລີຮາກທີ່ຂໍ້ມູນດີບັກ
ຖືກຈັດຢູ່ໃນລັກສະນະຄ້າຍຄືຕົ້ນໄມ້. ພາຍໃຕ້ລະບົບ Red Hat, ໄດເລກະທໍລີນັ້ນແມ່ນ
ປົກກະຕິແລ້ວ /usr/lib/debug.

ຈົ່ງຈື່ໄວ້ວ່າທາງເລືອກນີ້ບໍ່ຈໍາເປັນສໍາລັບການແບ່ງປັນຂໍ້ມູນດີບັກທີ່ຕິດຕັ້ງໂດຍ
ຜູ້ຈັດການຊຸດຂອງລະບົບຂອງເຈົ້າເພາະວ່າຫຼັງຈາກນັ້ນ Abidiff ຮູ້ບ່ອນທີ່ຈະຊອກຫາມັນ.

· --debug-info-dir2 | --d2 <di-path2>

ຄື --debug-info-dir1, ທາງເລືອກນີ້ບອກ Abidiff ບ່ອນ​ທີ່​ຈະ​ຊອກ​ຫາ debug ການ​ແບ່ງ​ປັນ​
ຂໍ້​ມູນ​ສໍາ​ລັບ​ການ​ ຫ້ອງສະໝຸດທີ່ສອງ ຍື່ນ.

· --ສະຖິຕິ

ແທນທີ່ຈະສະແດງຄວາມແຕກຕ່າງ ABI ລະອຽດລະຫວ່າງ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ ແລະ
ຫ້ອງສະໝຸດທີ່ສອງ, ພຽງແຕ່ສະແດງສະຖິຕິສະຫຼຸບບາງຢ່າງກ່ຽວກັບຄວາມແຕກຕ່າງເຫຼົ່ານີ້.

· --symtabs

ພຽງແຕ່ສະແດງຕາຕະລາງສັນຍາລັກຂອງ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ ແລະ ຫ້ອງສະໝຸດທີ່ສອງ.

· --deleted-fns

ໃນບົດລາຍງານຜົນໄດ້ຮັບກ່ຽວກັບຄວາມແຕກຕ່າງລະຫວ່າງ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ ແລະ
ຫ້ອງສະໝຸດທີ່ສອງ, ພຽງແຕ່ສະແດງຫນ້າທີ່ກໍານົດທົ່ວໂລກທີ່ຖືກລຶບຖິ້ມ
ຈາກ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ.

· --changed-fns

ໃນບົດລາຍງານຜົນໄດ້ຮັບກ່ຽວກັບຄວາມແຕກຕ່າງລະຫວ່າງ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ ແລະ
ຫ້ອງສະໝຸດທີ່ສອງ, ພຽງແຕ່ສະແດງການປ່ຽນແປງໃນປະເພດຍ່ອຍຂອງຫນ້າທີ່ທົ່ວໂລກ
ກຳ ນົດໃນ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ.

· --added-fns

ໃນບົດລາຍງານຜົນໄດ້ຮັບກ່ຽວກັບຄວາມແຕກຕ່າງລະຫວ່າງ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ ແລະ
ຫ້ອງສະໝຸດທີ່ສອງ, ພຽງແຕ່ສະແດງຫນ້າທີ່ກໍານົດທົ່ວໂລກທີ່ຖືກເພີ່ມໃສ່
ຫ້ອງສະໝຸດທີ່ສອງ.

· --deleted-vars

ໃນບົດລາຍງານຜົນໄດ້ຮັບກ່ຽວກັບຄວາມແຕກຕ່າງລະຫວ່າງ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ ແລະ
ຫ້ອງສະໝຸດທີ່ສອງ, ພຽງແຕ່ສະແດງຕົວແປທີ່ກໍານົດທົ່ວໂລກທີ່ຖືກລຶບຖິ້ມ
ຈາກ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ.

· --changed-vars

ໃນບົດລາຍງານຜົນໄດ້ຮັບກ່ຽວກັບຄວາມແຕກຕ່າງລະຫວ່າງ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ ແລະ
ຫ້ອງສະໝຸດທີ່ສອງ, ພຽງແຕ່ສະແດງການປ່ຽນແປງໃນປະເພດຍ່ອຍຂອງໂລກ
ຕົວແປທີ່ກໍານົດໃນ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ

· --added-vars

ໃນບົດລາຍງານຜົນໄດ້ຮັບກ່ຽວກັບຄວາມແຕກຕ່າງລະຫວ່າງ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ ແລະ
ຫ້ອງສະໝຸດທີ່ສອງ, ພຽງແຕ່ສະແດງຕົວແປທົ່ວໂລກທີ່ຖືກເພີ່ມ (ກໍານົດ) ໃສ່
ຫ້ອງສະໝຸດທີ່ສອງ.

· --no-linkage-name

ໃນບົດລາຍງານຜົນໄດ້ຮັບ, ບໍ່ສະແດງຊື່ການເຊື່ອມໂຍງຂອງການເພີ່ມ, ໂຍກຍ້າຍ, ຫຼື
ການປ່ຽນແປງຫນ້າທີ່ຫຼືຕົວແປ.

· --no-show-locs
ຢ່າສະແດງຂໍ້ມູນກ່ຽວກັບບ່ອນທີ່ຢູ່ໃນ ຄັ້ງທີສອງ ແບ່ງປັນ ຫ້ອງສະຫມຸດ ທີ່ກ່ຽວຂ້ອງ
ປະເພດຖືກປ່ຽນແປງ.

· --no-unreferenced-ສັນຍາລັກ

ໃນບົດລາຍງານຜົນໄດ້ຮັບ, ບໍ່ສະແດງຂໍ້ມູນການປ່ຽນແປງກ່ຽວກັບຫນ້າທີ່ແລະ
ສັນ​ຍາ​ລັກ​ຕົວ​ປ່ຽນ​ແປງ​ທີ່​ບໍ່​ໄດ້​ອ້າງ​ອີງ​ໂດຍ​ຂໍ້​ມູນ​ດີ​ບັກ​ໃດ​ຫນຶ່ງ​. ໃຫ້ສັງເກດວ່າສໍາລັບ
ສັນ​ຍາ​ລັກ​ເຫຼົ່າ​ນີ້​ບໍ່​ໄດ້​ອ້າງ​ອີງ​ໂດຍ​ຂໍ້​ມູນ debug ໃດ​, ຂໍ້​ມູນ​ການ​ປ່ຽນ​ແປງ​
ສັນຍາລັກທີ່ສະແດງອອກແມ່ນເພີ່ມຫຼືລົບອອກ.

· -- ການ​ສະ​ກັດ​ກັ້ນ​ | --suppr <ເສັ້ນທາງໄປສູ່ການສະກັດກັ້ນ>

ໃຊ້ໄຟລ໌ສະເພາະການສະກັດກັ້ນທີ່ຕັ້ງຢູ່ ເສັ້ນທາງໄປສູ່ການສະກັດກັ້ນ. ໃຫ້ສັງເກດວ່ານີ້
ທາງເລືອກສາມາດປາກົດຫຼາຍຄັ້ງໃນເສັ້ນຄໍາສັ່ງ; ການ​ສະ​ກັດ​ກັ້ນ​ທັງ​ຫມົດ​
ຫຼັງຈາກນັ້ນ, ໄຟລ໌ສະເພາະແມ່ນຖືກພິຈາລະນາ.

· -- ລຸດລົງ <regex>

ໃນເວລາອ່ານ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ ແລະ ຫ້ອງສະໝຸດທີ່ສອງ ໄຟລ໌ປ້ອນຂໍ້ມູນ ELF, ວາງ
ຫນ້າທີ່ກໍານົດທົ່ວໂລກແລະຕົວແປທີ່ຊື່ກົງກັບການສະແດງຜົນປົກກະຕິ
regex. ດັ່ງນັ້ນ, ບໍ່ມີການປ່ຽນແປງທີ່ກ່ຽວຂ້ອງກັບຫນ້າທີ່ຫຼືຕົວແປເຫຼົ່ານີ້ຈະຖືກປ່ອຍອອກມາ
ໃນ​ບົດ​ລາຍ​ງານ​ຄວາມ​ແຕກ​ຕ່າງ​.

· --drop-fn <regex>

ໃນເວລາອ່ານ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ ແລະ ຫ້ອງສະໝຸດທີ່ສອງ ໄຟລ໌ປ້ອນຂໍ້ມູນ ELF, ວາງ
ຫນ້າທີ່ກໍານົດທົ່ວໂລກທີ່ຊື່ກົງກັບການສະແດງຜົນປົກກະຕິ regexທີ່ຢູ່ ໃນຖານະເປັນ
ຜົນໄດ້ຮັບ, ບໍ່ມີການປ່ຽນແປງທີ່ກ່ຽວຂ້ອງກັບຫນ້າທີ່ເຫຼົ່ານີ້ຈະຖືກປ່ອຍອອກມາໃນບົດລາຍງານຄວາມແຕກຕ່າງ.

· --drop-var <regex>

ໃນເວລາອ່ານ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ ແລະ ຫ້ອງສະໝຸດທີ່ສອງ ໄຟລ໌ປ້ອນຂໍ້ມູນ ELF, ວາງ
ຕົວແປທີ່ກຳນົດໄວ້ທົ່ວໂລກທີ່ກົງກັບການສະແດງຜົນປົກກະຕິ regex.

· --ຮັກສາ <regex>

ໃນເວລາອ່ານ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ ແລະ ຫ້ອງສະໝຸດທີ່ສອງ ໄຟລ໌ປ້ອນຂໍ້ມູນ ELF, ຮັກສາ
ຫນ້າທີ່ກໍານົດທົ່ວໂລກແລະຕົວແປທີ່ຊື່ກົງກັບການສະແດງຜົນປົກກະຕິ
regex. ຫນ້າທີ່ແລະຕົວແປອື່ນໆທັງຫມົດແມ່ນຫຼຸດລົງຢູ່ເທິງພື້ນແລະດັ່ງນັ້ນຈະບໍ່
ປະກົດຢູ່ໃນບົດລາຍງານຄວາມແຕກຕ່າງຜົນໄດ້ຮັບ.

· --keep-fn <regex>

ໃນເວລາອ່ານ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ ແລະ ຫ້ອງສະໝຸດທີ່ສອງ ໄຟລ໌ປ້ອນຂໍ້ມູນ ELF, ຮັກສາ
ຫນ້າທີ່ກໍານົດທົ່ວໂລກທີ່ຊື່ກົງກັບການສະແດງຜົນປົກກະຕິ regexທີ່ຢູ່ ທັງຫມົດ
ຫນ້າ​ທີ່​ອື່ນໆ​ແມ່ນ​ໄດ້​ຫຼຸດ​ລົງ​ຢູ່​ໃນ​ພື້ນ​ເຮືອນ​ແລະ​ດັ່ງ​ນັ້ນ​ຈະ​ບໍ່​ປາ​ກົດ​ຢູ່​ໃນ​ຜົນ​ໄດ້​ຮັບ​
ລາຍ​ງານ​ຄວາມ​ແຕກ​ຕ່າງ​.

· --keep-var <regex>

ໃນເວລາອ່ານ ຫໍສະໝຸດທີ່ແບ່ງປັນທຳອິດ ແລະ ຫ້ອງສະໝຸດທີ່ສອງ ໄຟລ໌ປ້ອນຂໍ້ມູນ ELF, ຮັກສາ
ທົ່ວໂລກກໍານົດວ່າຊື່ໃດກົງກັບການສະແດງຜົນປົກກະຕິ regex. ອື່ນໆທັງ ໝົດ
ຕົວແປຖືກຫຼຸດລົງຢູ່ເທິງພື້ນແລະດັ່ງນັ້ນຈະບໍ່ປາກົດຢູ່ໃນຄວາມແຕກຕ່າງຜົນໄດ້ຮັບ
ລາຍງານ

· --ບໍ່ເປັນອັນຕະລາຍ

ໃນບົດລາຍງານຄວາມແຕກຕ່າງ, ສະແດງພຽງແຕ່ການປ່ຽນແປງທີ່ບໍ່ມີອັນຕະລາຍ. ໂດຍຄ່າເລີ່ມຕົ້ນ, ບໍ່ເປັນອັນຕະລາຍ
ການ​ປ່ຽນ​ແປງ​ໄດ້​ຖືກ​ກັ່ນ​ຕອງ​ອອກ​ຈາກ​ບົດ​ລາຍ​ງານ​ຄວາມ​ແຕກ​ຕ່າງ​ຮັກ​ສາ​ຄວາມ​ຫຍຸ້ງ​ຍາກ​ໃນ​ຕໍາ​່​ສຸດ​ທີ່​ແລະ​ມີ​
ການປ່ຽນແປງຫຼາຍກວ່າເກົ່າເພື່ອຈຸດບັນຫາ ABI ທີ່ແທ້ຈິງ.

· --ບໍ່ເປັນອັນຕະລາຍ

ໃນບົດລາຍງານຄວາມແຕກຕ່າງ, ຢ່າສະແດງການປ່ຽນແປງທີ່ເປັນອັນຕະລາຍ. ໂດຍຄ່າເລີ່ມຕົ້ນ, ພຽງແຕ່ເປັນອັນຕະລາຍ
ການ​ປ່ຽນ​ແປງ​ແມ່ນ​ສະ​ແດງ​ໃຫ້​ເຫັນ​ໃນ​ລາຍ​ງານ​ຄວາມ​ແຕກ​ຕ່າງ​.

· --ຊ້ຳຊ້ອນ

ໃນບົດລາຍງານຄວາມແຕກຕ່າງ, ສະແດງການປ່ຽນແປງທີ່ຊ້ໍາກັນ. ການປ່ຽນແປງຊໍ້າຊ້ອນແມ່ນການປ່ຽນແປງ
ທີ່ໄດ້ຖືກສະແດງຢູ່ບ່ອນອື່ນໃນບົດລາຍງານ.

· -- ບໍ່ຊໍ້າຊ້ອນ

ໃນບົດລາຍງານຄວາມແຕກຕ່າງ, ເຮັດ ບໍ່ ສະແດງການປ່ຽນແປງຊໍ້າຊ້ອນ. ການປ່ຽນແປງຊໍ້າຊ້ອນແມ່ນການປ່ຽນແປງ
ທີ່ໄດ້ຖືກສະແດງຢູ່ບ່ອນອື່ນໃນບົດລາຍງານ. ຕົວເລືອກນີ້ຖືກເປີດໂດຍ
Default

· -- ບໍ່ມີສະຖາປັດຕະຍະກໍາ

ຢ່າເອົາສະຖາປັດຕະຍະກໍາເຂົ້າໃນບັນຊີເມື່ອປຽບທຽບ ABIs.

· --dump-diff-tree
ຫຼັງຈາກບົດລາຍງານຄວາມແຕກຕ່າງກັນ, ປ່ອຍຕົວສະແດງຂໍ້ຄວາມຂອງ diff nodes tree ທີ່ໃຊ້ໂດຍ
ເຄື່ອງຈັກປຽບທຽບເພື່ອເປັນຕົວແທນຂອງຫນ້າທີ່ປ່ຽນແປງແລະຕົວແປ. ນັ້ນ
ການເປັນຕົວແທນຖືກປ່ອຍອອກມາໃຫ້ເກີດຄວາມຜິດພາດເພື່ອຈຸດປະສົງການດີບັກ. ໃຫ້ສັງເກດວ່າ
ຕົ້ນໄມ້ທີ່ແຕກຕ່າງນີ້ແມ່ນກ່ຽວຂ້ອງກັບໜ້າທີ່ ແລະຕົວແປທີ່ມີບາງປະເພດຍ່ອຍເທົ່ານັ້ນ
ການປ່ຽນແປງ. ຟັງຊັນທີ່ເພີ່ມ ຫຼືລຶບອອກ ແລະຕົວແປບໍ່ມີຕົ້ນໄມ້ຂໍ້ແຕກຕ່າງໃດໆ
ທີ່​ກ່ຽວ​ຂ້ອງ​ກັບ​ເຂົາ​ເຈົ້າ​.

· --ສະຖິຕິ

ປ່ອຍສະຖິຕິກ່ຽວກັບສິ່ງຕ່າງໆພາຍໃນ.

· -- verbose

ປ່ອຍບັນທຶກ verbose ກ່ຽວກັບຄວາມຄືບຫນ້າຂອງສິ່ງຕ່າງໆພາຍໃນອື່ນໆ.

ກັບຄືນ VALUES


ລະຫັດທາງອອກຂອງ Abidiff ຄໍາສັ່ງແມ່ນ 0 ຖ້າ ABI ຂອງ binaries ຖືກປຽບທຽບ
ເທົ່າກັບ, ຫຼືບໍ່ແມ່ນສູນຖ້າພວກມັນແຕກຕ່າງກັນຫຼືຖ້າເຄື່ອງມືພົບຂໍ້ຜິດພາດ.

ໃນກໍລະນີຕໍ່ມາ, ລະຫັດອອກແມ່ນ 8-bits-wide bit field ທີ່ແຕ່ລະ bit ມີ a
ຄວາມຫມາຍສະເພາະ.

ບິດທຳອິດຂອງຄ່າ 1, ຊື່ ABIDIFF_ERROR ຫມາຍ​ຄວາມ​ວ່າ​ມີ​ຄວາມ​ຜິດ​ພາດ​.

ບິດທີສອງ, ຂອງມູນຄ່າ 2, ຊື່ ABIDIFF_USAGE_ERROR ຫມາຍຄວາມວ່າມີຄວາມຜິດພາດໃນວິທີການ
ຜູ້ໃຊ້ໄດ້ຮຽກຮ້ອງເຄື່ອງມື. ມັນອາດຈະຖືກກໍານົດ, ຕົວຢ່າງ, ຖ້າຜູ້ໃຊ້ຮຽກຮ້ອງເຄື່ອງມື
ດ້ວຍການປ່ຽນເສັ້ນຄໍາສັ່ງທີ່ບໍ່ຮູ້ຈັກ, ມີຕົວເລກຜິດ ຫຼື argument, ແລະອື່ນໆ ຖ້າບິດນີ້ແມ່ນ
ຕັ້ງ, ຈາກນັ້ນ ABIDIFF_ERROR bit ຕ້ອງໄດ້ຮັບການຕັ້ງຄ່າເຊັ່ນດຽວກັນ.

ບິດທີສາມ, ຂອງມູນຄ່າ 4, ຊື່ ABIDIFF_ABI_CHANGE ຫມາຍຄວາມວ່າ ABI ຂອງ binaries ເປັນ
ປຽບທຽບແມ່ນແຕກຕ່າງກັນ.

ບິດທີສີ່, ຂອງມູນຄ່າ 8, ຊື່ ABIDIFF_ABI_INCOMPATIBLE_CHANGE ຫມາຍຄວາມວ່າ ABI ຂອງ
binaries ປຽບທຽບແມ່ນແຕກຕ່າງກັນໃນທາງທີ່ບໍ່ເຂົ້າກັນໄດ້. ຖ້າບິດນີ້ຖືກຕັ້ງ, ຫຼັງຈາກນັ້ນ
ABIDIFF_ABI_CHANGE bit ຕ້ອງໄດ້ຮັບການຕັ້ງຄ່າເຊັ່ນດຽວກັນ. ຖ້າ ABIDIFF_ABI_CHANGE ຖືກກໍານົດແລະ
ABIDIFF_INCOMPATIBLE_CHANGE is ບໍ່ ກໍານົດ, ຫຼັງຈາກນັ້ນມັນຫມາຍຄວາມວ່າ ABIs ທີ່ຖືກປຽບທຽບອາດຈະ
ຫຼືອາດຈະບໍ່ເຂົ້າກັນໄດ້. ໃນກໍລະນີດັ່ງກ່າວ, ມະນຸດຕ້ອງທົບທວນຄືນການປ່ຽນແປງ ABI
ເພື່ອຕັດສິນໃຈວ່າພວກມັນເຂົ້າກັນໄດ້ຫຼືບໍ່.

ບິດທີ່ຍັງເຫຼືອບໍ່ໄດ້ຖືກນໍາໃຊ້ສໍາລັບປັດຈຸບັນ.

ການນໍາໃຊ້ ຕົວຢ່າງ


1. ການກວດສອບການປ່ຽນແປງໃນປະເພດຍ່ອຍຂອງຟັງຊັນ:

$ cat -n test-v0.cc
1 // ລວບລວມຂໍ້ມູນນີ້ດ້ວຍ:
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 ໂຄງສ້າງ S0
5 {
6 int m0;
7 };
8
9 ຫວ່າງເປົ່າ
10 foo(S0* /*parameter_name*/)
11 {
12 // ເຮັດບາງສິ່ງບາງຢ່າງທີ່ມີ parameter_name.
13 }
$
$ cat -n test-v1.cc
1 // ລວບລວມຂໍ້ມູນນີ້ດ້ວຍ:
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 ໂຄງສ້າງ type_base
5 {
6 int ໃສ່;
7 };
8
9 ໂຄງສ້າງ S0 : public type_base
10 {
11 int m0;
12 };
13
14 ຫວ່າງເປົ່າ
15 foo(S0* /*parameter_name*/)
16 {
17 // ເຮັດບາງສິ່ງບາງຢ່າງທີ່ມີ parameter_name.
18 }
$
$g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
$g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
ຟັງຊັນການປ່ຽນແປງສະຫຼຸບ: 0 ລົບອອກ, 1 ປ່ຽນແປງ, 0 ເພີ່ມຟັງຊັນ
ສະຫຼຸບການປ່ຽນແປງຕົວແປ: 0 ລົບອອກ, 0 ປ່ຽນແປງ, 0 ເພີ່ມຕົວແປ

1 ຟັງຊັນທີ່ມີການປ່ຽນແປງບາງປະເພດຍ່ອຍທາງອ້ອມ:

[C] 'function void foo(S0*)' ມີການປ່ຽນແປງບາງປະເພດຍ່ອຍທາງອ້ອມ:
ພາຣາມິເຕີ 0 ຂອງປະເພດ 'S0*' ມີການປ່ຽນແປງປະເພດຍ່ອຍ:
ໃນຈຸດທີ່ພິມ 'struct S0':
ຂະຫນາດປ່ຽນຈາກ 32 ຫາ 64 bits
1 ການໃສ່ຊັ້ນພື້ນຖານ:
ໂຄງສ້າງ type_base
1 ການ​ປ່ຽນ​ແປງ​ສະ​ມາ​ຊິກ​ຂໍ້​ມູນ​:
'int S0::m0' ຊົດເຊີຍປ່ຽນຈາກ 0 ຫາ 32
$

2. ກວດພົບການປ່ຽນແປງອື່ນໃນປະເພດຍ່ອຍຂອງຟັງຊັນ:

$ cat -n test-v0.cc
1 // ລວບລວມຂໍ້ມູນນີ້ດ້ວຍ:
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 ໂຄງສ້າງ S0
5 {
6 int m0;
7 };
8
9 ຫວ່າງເປົ່າ
10 foo(S0& /*parameter_name*/)
11 {
12 // ເຮັດບາງສິ່ງບາງຢ່າງທີ່ມີ parameter_name.
13 }
$
$ cat -n test-v1.cc
1 // ລວບລວມຂໍ້ມູນນີ້ດ້ວຍ:
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 ໂຄງສ້າງ S0
5 {
6 char inserted_member;
7 int m0;
8 };
9
10 ຫວ່າງເປົ່າ
11 foo(S0& /*parameter_name*/)
12 {
13 // ເຮັດບາງສິ່ງບາງຢ່າງທີ່ມີ parameter_name.
14 }
$
$g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
$g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
ຟັງຊັນການປ່ຽນແປງສະຫຼຸບ: 0 ລົບອອກ, 1 ປ່ຽນແປງ, 0 ເພີ່ມຟັງຊັນ
ສະຫຼຸບການປ່ຽນແປງຕົວແປ: 0 ລົບອອກ, 0 ປ່ຽນແປງ, 0 ເພີ່ມຕົວແປ

1 ຟັງຊັນທີ່ມີການປ່ຽນແປງບາງປະເພດຍ່ອຍທາງອ້ອມ:

[C] 'function void foo(S0&)' ມີການປ່ຽນແປງບາງປະເພດຍ່ອຍທາງອ້ອມ:
ພາຣາມິເຕີ 0 ຂອງປະເພດ 'S0&' ມີການປ່ຽນແປງປະເພດຍ່ອຍ:
ໃນປະເພດອ້າງອີງ 'struct S0':
ຂະຫນາດປ່ຽນຈາກ 32 ຫາ 64 bits
1 ການແຊກສະມາຊິກຂໍ້ມູນ:
'char S0::inserted_member', ດ້ວຍຄ່າຊົດເຊີຍ 0 (ເປັນບິດ)
1 ການ​ປ່ຽນ​ແປງ​ສະ​ມາ​ຊິກ​ຂໍ້​ມູນ​:
'int S0::m0' ຊົດເຊີຍປ່ຽນຈາກ 0 ຫາ 32

$

3. ການ​ກວດ​ພົບ​ວ່າ​ຫນ້າ​ທີ່​ໄດ້​ຮັບ​ການ​ໂຍກ​ຍ້າຍ​ອອກ​ຫຼື​ເພີ່ມ​ເຂົ້າ​ໄປ​ໃນ​ຫ້ອງ​ສະ​ຫມຸດ​:

$ cat -n test-v0.cc
1 // ລວບລວມຂໍ້ມູນນີ້ດ້ວຍ:
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 ໂຄງສ້າງ S0
5 {
6 int m0;
7 };
8
9 ຫວ່າງເປົ່າ
10 foo(S0& /*parameter_name*/)
11 {
12 // ເຮັດບາງສິ່ງບາງຢ່າງທີ່ມີ parameter_name.
13 }
$
$ cat -n test-v1.cc
1 // ລວບລວມຂໍ້ມູນນີ້ດ້ວຍ:
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 ໂຄງສ້າງ S0
5 {
6 char inserted_member;
7 int m0;
8 };
9
10 ຫວ່າງເປົ່າ
11 bar(S0& /*parameter_name*/)
12 {
13 // ເຮັດບາງສິ່ງບາງຢ່າງທີ່ມີ parameter_name.
14 }
$
$g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
$g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
ສັງລວມການປ່ຽນແປງຟັງຊັນ: 1 ຖອດອອກ, 0 ປ່ຽນແປງ, 1 ຟັງຊັນເພີ່ມ
ສະຫຼຸບການປ່ຽນແປງຕົວແປ: 0 ລົບອອກ, 0 ປ່ຽນແປງ, 0 ເພີ່ມຕົວແປ

1 ການ​ທໍາ​ງານ​ທີ່​ລົບ​ອອກ​:
'ຟັງຊັນ void foo(S0&)' {_Z3fooR2S0}

1 ຫນ້າທີ່ເພີ່ມ:
'function void bar(S0&)' {_Z3barR2S0}

$

ໃຊ້ abidiff ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net


ເຊີບເວີ ແລະສະຖານີເຮັດວຽກຟຣີ

ດາວໂຫຼດແອັບ Windows ແລະ Linux

  • 1
    ເຟດ
    ເຟດ
    Phaser ເປັນການເປີດໄວ, ຟຣີ, ແລະມ່ວນຊື່ນ
    ແຫຼ່ງ HTML5 ກອບເກມທີ່ສະເຫນີ
    WebGL ແລະ Canvas rendering ທົ່ວ
    desktop ແລະຕົວທ່ອງເວັບມືຖື. ເກມ
    ສາມາດຮ່ວມ...
    ດາວໂຫລດ Phaser
  • 2
    ເຄື່ອງຈັກ VASSAL
    ເຄື່ອງຈັກ VASSAL
    VASSAL ແມ່ນເຄື່ອງຈັກເກມສໍາລັບການສ້າງ
    ສະບັບເອເລັກໂຕຣນິກຂອງກະດານພື້ນເມືອງ
    ແລະເກມບັດ. ມັນສະຫນອງການສະຫນັບສະຫນູນສໍາລັບ
    ການສະແດງຊິ້ນສ່ວນເກມແລະການໂຕ້ຕອບ,
    ແລະ ...
    ດາວໂຫລດ VASSAL Engine
  • 3
    OpenPDF - ສ້ອມຂອງ iText
    OpenPDF - ສ້ອມຂອງ iText
    OpenPDF ແມ່ນຫ້ອງສະຫມຸດ Java ສໍາລັບການສ້າງ
    ແລະແກ້ໄຂໄຟລ໌ PDF ດ້ວຍ LGPL ແລະ
    ໃບອະນຸຍາດແຫຼ່ງເປີດ MPL. OpenPDF ແມ່ນ​
    LGPL/MPL open source ຜູ້ສືບທອດ iText,
    a
    ດາວໂຫລດ OpenPDF - Fork ຂອງ iText
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - ລະບົບສໍາລັບການອັດຕະໂນມັດ
    Geoscientific Analyzes - ແມ່ນພູມສາດ
    ຊອບແວລະບົບຂໍ້ມູນຂ່າວສານ (GIS) ກັບ
    ຄວາມສາມາດອັນຍິ່ງໃຫຍ່ສໍາລັບ geodata
    ການປຸງແຕ່ງ ແລະ ana...
    ດາວໂຫລດ SAGA GIS
  • 5
    ກ່ອງເຄື່ອງມືສໍາລັບ Java/JTOPen
    ກ່ອງເຄື່ອງມືສໍາລັບ Java/JTOPen
    IBM Toolbox ສໍາລັບ Java / JTOPen ແມ່ນ a
    ຫ້ອງສະຫມຸດຂອງຫ້ອງຮຽນ Java ສະຫນັບສະຫນູນ
    ໂປຣແກຣມລູກຄ້າ/ເຊີບເວີ ແລະອິນເຕີເນັດ
    ແບບຈໍາລອງກັບລະບົບທີ່ແລ່ນ OS/400,
    i5/OS, o...
    ດາວໂຫລດ Toolbox ສໍາລັບ Java/JTOPen
  • 6
    D3.js
    D3.js
    D3.js (ຫຼື D3 ສໍາລັບເອກະສານທີ່ຂັບເຄື່ອນດ້ວຍຂໍ້ມູນ)
    ເປັນຫ້ອງສະຫມຸດ JavaScript ທີ່ອະນຸຍາດໃຫ້ທ່ານ
    ເພື່ອຜະລິດຂໍ້ມູນແບບເຄື່ອນໄຫວ, ການໂຕ້ຕອບ
    ການສະແດງພາບໃນຕົວທ່ອງເວັບ. ດ້ວຍ D3
    ເຈົ້າ ...
    ດາວໂຫລດ D3.js
  • ເພີ່ມເຕີມ »

Linux ຄຳ ສັ່ງ

Ad