рдЕрдВрдЧреНрд░реЗрдЬрд╝реАрдлреНрд░реЗрдВрдЪрд╕реНрдкреЗрдирд┐рд╢

Ad


рдСрдирд╡рд░реНрдХреНрд╕ рдлрд╝реЗрд╡рд┐рдХреЙрди

abicompat - рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдСрдирд▓рд╛рдЗрди

рдЙрдмрдВрдЯреВ рдСрдирд▓рд╛рдЗрди, рдлреЗрдбреЛрд░рд╛ рдСрдирд▓рд╛рдЗрди, рд╡рд┐рдВрдбреЛрдЬ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдпрд╛ рдореИрдХ рдУрдПрд╕ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдСрдирд╡рд░реНрдХреНрд╕ рдореБрдлреНрдд рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ рдПрдмрд┐рдХреЙрдореНрдкреИрдЯ рдЪрд▓рд╛рдПрдВ

рдпрд╣ рдХрдорд╛рдВрдб рдПрдмрд┐рдХреЙрдореНрдкреИрдЯ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдорд╛рд░реЗ рдХрдИ рдореБрдлреНрдд рдСрдирд▓рд╛рдЗрди рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдЬреИрд╕реЗ рдХрд┐ рдЙрдмрдВрдЯреВ рдСрдирд▓рд╛рдЗрди, рдлреЗрдбреЛрд░рд╛ рдСрдирд▓рд╛рдЗрди, рд╡рд┐рдВрдбреЛрдЬ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдпрд╛ рдореИрдХ рдУрдПрд╕ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдирд╡рд░реНрдХреНрд╕ рдлреНрд░реА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХрд╛рд░реНрдпрдХреНрд░рдо:

рдирд╛рдо


abicompat - ABI рд╕рдВрдЧрддрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ

abicompat рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрднреА рднреА рд╣реИ рдпрд╛ рдирд╣реАрдВ
рдПрдмреАрдЖрдИ рдЙрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИред рдпрджрд┐ рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдХ ABI рдЕрд╕рдВрдЧрддрд┐ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреА рд╣реИ, рдлрд┐рд░ abicompat рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ
рд╡рд╣ рдЕрд╕рдВрдЧрддрд┐ рд╣реИ.

рдордВрдЧрд▓рд╛рдЪрд░рдг


рдПрдмрд┐рдХреЙрдореНрдкреИрдЯ [рд╡рд┐рдХрд▓реНрдк] [ ]

рд╡рд┐рдХрд▓реНрдк


┬╖ --рдорджрдж

рдЖрджреЗрд╢ рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред

┬╖ --рд╕рдВрд╕реНрдХрд░рдг | -v

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред

┬╖ --рд╕реВрдЪреА-рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд-рдкреНрд░рддреАрдХ | -u

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рддреАрдХреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред

┬╖ --рджрд┐рдЦрд╛рдПрдБ-рдЖрдзрд╛рд░-рдирд╛рдо | -b

рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдкрд░рд┐рдгрд╛рдореА рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ, рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддрд╛ рд╣реИ рдФрд░
рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдирд╛рдореЛрдВ рд╕реЗ рд╣реА рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП; рдкреВрд░реНрдг рдирд┐рд░рдкреЗрдХреНрд╖ рдирд╛рдо рд╕реЗ рдирд╣реАрдВ. рдпрд╣
рдЙрди рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдирд╛рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░
рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдирдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдирд╛рдо рдХреНрдпрд╛ рд╣реИрдВред

┬╖ --рдРрдк-рдбрд┐рдмрдЧ-рдЬрд╛рдирдХрд╛рд░реА-dir

рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдкрде рд╕реЗрдЯ рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдбрд┐рдмрдЧ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ
рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдбреАрдмрдЧ рд╣реЛрддрд╛ рд╣реИ
рдЬрд╛рдирдХрд╛рд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╕реЗрдЯ рдореЗрдВ рд╣реИред

┬╖ --lib-рдбреАрдмрдЧ-рдЬрд╛рдирдХрд╛рд░реА-dir1

рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдкрде рд╕реЗрдЯ рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдбреАрдмрдЧ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ
рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЦрд╛рдХрд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ
рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧ рдЬрд╛рдирдХрд╛рд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╕реЗрдЯ рдореЗрдВ рд╣реИред

┬╖ --lib-рдбреАрдмрдЧ-рдЬрд╛рдирдХрд╛рд░реА-dir2

рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдкрде рд╕реЗрдЯ рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рдЕрдВрддрд░реНрдЧрдд рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдбрд┐рдмрдЧ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ
рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЦрд╛рдХрд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ
рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧ рдЬрд╛рдирдХрд╛рд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╕реЗрдЯ рдореЗрдВ рд╣реИред

┬╖ --рдиреЛ-рд╢реЛ-рд▓реЛрдХреНрд╕
рдореЗрдВ рдХрд╣рд╛рдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рди рджрд┐рдЦрд╛рдПрдВ рджреВрд╕рд░рд╛ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдкрдиреЗ рдЕрдкрдиреЗ
рдкреНрд░рдХрд╛рд░ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ред

┬╖ --рдХрдордЬрд╝реЛрд░-рдореЛрдб

рдпрд╣ рдХреЗ рдХрдордЬреЛрд░ рдореЛрдб рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ abicompat. рдЗрд╕ рдореЛрдб рдореЗрдВ, рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ. рдЕрд░реНрдерд╛рддреН, рдПрдмрд┐рдХреЛрдореНрдкреИрдЯ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдПрдмрд┐рдХреЙрдореНрдкреИрдЯ--рдХрдордЬрд╝реЛрд░-рдореЛрдб

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ --рдХрдордЬрд╝реЛрд░-рдореЛрдб рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЫреЛрдбрд╝рд╛ рднреА рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЗрд╕рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рд╣реЛ
рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдп рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, abicompat рд╕реНрд╡рддрдГ
рдХрдордЬреЛрд░ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ:

abicompat

рдЗрд╕ рдХрдордЬреЛрд░ рдореЛрдб рдореЗрдВ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЙрдкрднреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдЬреИрд╕рд╛ рдХрд┐, рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЪрд░ рдХреЗ рдкреНрд░рддреАрдХреЛрдВ рдореЗрдВ)ред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ) рд╣реИрдВ
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВред рдФрд░ рдпрджрд┐ рдпреЗ
рдкреНрд░рдХрд╛рд░ рдХреЗ рджреЛ рд╕рдВрд╕реНрдХрд░рдг рднрд┐рдиреНрди рд╣реИрдВ, abicompat рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИрдВ
рдХрд░ рд░рд╣реЗ рд╣реИрдВ.

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЗрд╕ рд╡рд┐рдзрд╛ рдореЗрдВ, abicompat рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдорддрд▓рдм рд╡рд╣реА рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╣реЛрддрд╛ рд╣реИ
рдЙрдореНрдореАрдж рд╣реИ, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдПрдмреАрдЖрдИ рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдореЛрдб рдореЗрдВ, abicompat рдирд┐рд░реНрдпрд╛рддрд┐рдд рдлрд╝рдВрдХреНрд╢рдВрд╕ рдпрд╛ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛ рд╣реИ
(рдкреНрд░рддреАрдХ) рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИрдВ рд▓реЗрдХрд┐рди рдЬрд┐рдиреНрд╣реЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕реАрд▓рд┐рдП рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрдордЬрд╝реЛрд░ рдореЛрдбред

рд╡рд╛рдкрд╕реА рдорд╛рди


рдХрд╛ рдирд┐рдХрд╛рд╕ рдХреЛрдб abicompat рдпрджрд┐ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХрд╛ рдПрдмреАрдЖрдИ рд╣реИ рддреЛ рдХрдорд╛рдВрдб рдпрд╛ рддреЛ 0 рд╣реИ
рдпрджрд┐ рддреБрд▓рдирд╛ рдХреА рдЧрдИ рд╣реИ рддреЛ рд╡реЗ рд╕рдорд╛рди рд╣реИрдВ, рдпрд╛ рдЧреИрд░-рд╢реВрдиреНрдп рд╣реИрдВ рдпрджрд┐ рд╡реЗ рднрд┐рдиреНрди рд╣реИрдВ рдпрд╛ рдпрджрд┐ рдЙрдкрдХрд░рдг рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдЖрдИ рд╣реИред

рдмрд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рдХрд╛рд╕ рдХреЛрдб рдПрдХ 8-рдмрд┐рдЯ-рдЪреМрдбрд╝рд╛ рдмрд┐рдЯ рдлрд╝реАрд▓реНрдб рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдЯ рдореЗрдВ рдПрдХ рд╣реЛрддрд╛ рд╣реИ
рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрд░реНрде.

рдорд╛рди 1 рдХрд╛ рдкрд╣рд▓рд╛ рдмрд┐рдЯ, рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ ABIDIFF_ERROR рдорддрд▓рдм рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдереА.

рдорд╛рди 2 рдХрд╛ рджреВрд╕рд░рд╛ рдмрд┐рдЯ, рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ ABIDIFF_USAGE_ERROR рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдереА
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЯреВрд▓ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд┐рдпрд╛. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЯреВрд▓ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд┐рдпрд╛ рддреЛ рдЗрд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдХрд┐рд╕реА рдЕрдЬреНрдЮрд╛рдд рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реНрд╡рд┐рдЪ рдХреЗ рд╕рд╛рде, рдХрд┐рд╕реА рдЧрд▓рдд рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рддрд░реНрдХ рдЖрджрд┐ рдХреЗ рд╕рд╛рдеред рдпрджрд┐ рдпрд╣ рдмрд┐рдЯ рд╣реИ
рд╕реЗрдЯ рдХрд░реЗрдВ, рдлрд┐рд░ ABIDIFF_ERROR рдмрд┐рдЯ рднреА рд╕реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП.

рдорд╛рди 4 рдХрд╛ рддреАрд╕рд░рд╛ рдмрд┐рдЯ, рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ ABIDIFF_ABI_рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХрд╛ ABI
рддреБрд▓рдирд╛ рднрд┐рдиреНрди рд╣реИрдВред

рдорд╛рди 8 рдХрд╛ рдЪреМрдерд╛ рдмрд┐рдЯ, рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ ABIDIFF_ABI_INCOMPATIBLE_CHANGE рдХрд╛ рдорддрд▓рдм рд╣реИ ABI
рддреБрд▓рдирд╛ рдХреА рдЧрдИ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдЕрд╕рдВрдЧрдд рддрд░реАрдХреЗ рд╕реЗ рднрд┐рдиреНрди рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдмрд┐рдЯ рд╕реЗрдЯ рд╣реИ, рддреЛ
ABIDIFF_ABI_рдкрд░рд┐рд╡рд░реНрддрди рдмрд┐рдЯ рднреА рд╕реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП. рдпрджрд┐ ABIDIFF_ABI_рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗрдЯ рд╣реИ рдФрд░
ABIDIFF_INCOMPATIBLE_CHANGE is рдирд╣реАрдВ рд╕реЗрдЯ рдХрд░реЗрдВ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдмреАрдЖрдИ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ
рдпрд╛ рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ. рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрдХ рдЗрдВрд╕рд╛рди рдХреЛ рдПрдмреАрдЖрдИ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рд╕рдВрдЧрдд рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред

рд╢реЗрд╖ рдмрд┐рдЯреНрд╕ рдХрд╛ рдлрд┐рд▓рд╣рд╛рд▓ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг


┬╖ рдирдП рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдПрдмреАрдЖрдИ рдЕрд╕рдВрдЧрддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛:

$ рдХреИрдЯ-рдПрди рдЯреЗрд╕реНрдЯ0.рдПрдЪ
1 рд╕рдВрд░рдЪрдирд╛ рдлреВ
2 {
3 рдкреВрд░реНрдгрд╛рдВрдХ m0;
4
5 рдлреВ()
6 : рдПрдо0()
7 {}
8 };
9
10 рдлреВ*
11 рдлрд░реНрд╕реНрдЯ_рдлрдВрдХ();
12
13 рд╢реВрдиреНрдп
14 рд╕реЗрдХрдВрдб_рдлрдВрдХ(рдлреВ&);
15
16 рд╢реВрдиреНрдп
17 рдерд░реНрдб_рдлрдВрдХ();
$

$ cat -n test-app.cc
1 // рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ:
2 // рдЬреА++ -рдЬреА -рд╡реЙрд▓ -рдУ рдЯреЗрд╕реНрдЯ-рдРрдк -рдПрд▓ред -ltest-0 test-app.cc
3
4 # "test0.h" рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
5
6 рдЗрдВрдЯ
7 рдореБрдЦреНрдп()
8 {
9 рдлреВ* рдПрдл = рдлрд░реНрд╕реНрдЯ_рдлрдВрдХ();
10 рд╕реЗрдХрдВрдб_рдлрдВрдХ(*f);
11 рд╡рд╛рдкрд╕реА 0;
12}
$

$ cat -n test0.cc
1 // рдЗрд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ:
2 // g++ -g -Wall -shared -o libtest-0.so test0.cc
3
4 # "test0.h" рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
5
6 рдлреВ*
7 рдлрд░реНрд╕реНрдЯ_рдлрдВрдХ()
8 {
9 рдлреВ* рдПрдл = рдирдпрд╛ рдлреВ();
10 рд░рд┐рдЯрд░реНрди рдПрдл;
11}
12
13 рд╢реВрдиреНрдп
14 рд╕реЗрдХрдВрдб_рдлрдВрдХ(рдлреВ&)
15 {
16}
17
18 рд╢реВрдиреНрдп
19 рдерд░реНрдб_рдлрдВрдХ()
20 {
21}
$

$ рдХреИрдЯ-рдПрди рдЯреЗрд╕реНрдЯ1.рдПрдЪ
1 рд╕рдВрд░рдЪрдирд╛ рдлреВ
2 {
3 рдкреВрд░реНрдгрд╛рдВрдХ m0;
4 рдЪрд╛рд░ рдПрдо1; /* <- рдпрд╣рд╛рдВ рдПрдХ рдирдпрд╛ рд╕рджрд╕реНрдп рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ! */
5
6 рдлреВ()
7 : рдПрдо0(),
8 рдПрдо1()
9 {}
10 };
11
12 рдлреВ*
13 рдлрд░реНрд╕реНрдЯ_рдлрдВрдХ();
14
15 рд╢реВрдиреНрдп
16 рд╕реЗрдХрдВрдб_рдлрдВрдХ(рдлреВ&);
17
18 рд╢реВрдиреНрдп
19 рдерд░реНрдб_рдлрдВрдХ();
$

$ cat -n test1.cc
1 // рдЗрд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ:
2 // g++ -g -Wall -shared -o libtest-1.so test1.cc
3
4 # "test1.h" рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
5
6 рдлреВ*
7 рдлрд░реНрд╕реНрдЯ_рдлрдВрдХ()
8 {
9 рдлреВ* рдПрдл = рдирдпрд╛ рдлреВ();
10 рд░рд┐рдЯрд░реНрди рдПрдл;
11}
12
13 рд╢реВрдиреНрдп
14 рд╕реЗрдХрдВрдб_рдлрдВрдХ(рдлреВ&)
15 {
16}
17
18 /* рдЖрдЗрдП рдерд░реНрдб_рдлрдВрдХ() рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ
19 рд╢реВрдиреНрдп
20 рдерд░реНрдб_рдлрдВрдХ()
21 {
22}
23*/
$

┬╖ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ: libtest-0.so рдФрд░
libtest-1.so:

$ g++ -g -Wall -shared -o libtest-0.so test0.cc
$ g++ -g -Wall -shared -o libtest-1.so test1.cc

┬╖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ,
рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкрд░реАрдХреНрд╖рдг-рдРрдк рдмрд╛рдЗрдирд░реА:

$ рдЬреА++ -рдЬреА -рд╡реЙрд▓ -рдУ рдЯреЗрд╕реНрдЯ-рдРрдк -рдПрд▓ред -ltest-0.so test-app.cc

┬╖ рдЕрдм, рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ abicompat рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ libtest-1.so рдПрдмреАрдЖрдИ рдРрдк рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИ, рд╕рдореНрдорд╛рдирдкреВрд░реНрд╡рдХ
libtest-0.so рдХреЗ ABI рдХреЗ рд▓рд┐рдП:

$ abicompat рдЯреЗрд╕реНрдЯ-рдРрдк libtest-0.so libtest-1.so
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП 'libtest-1.so' рдХреЗ рд╕рд╛рде рдЕрдВрддрд░ рдХреЗ рдХрд╛рд░рдг ELF рдлрд╝рд╛рдЗрд▓ 'рдЯреЗрд╕реНрдЯ-рдРрдк' 'libtest-0.so' рдХреЗ рд╕рд╛рде ABI рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ:
рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкрд░рд┐рд╡рд░реНрддрди рд╕рд╛рд░рд╛рдВрд╢: 0 рд╣рдЯрд╛рдП рдЧрдП, 2 рдмрджрд▓реЗ рдЧрдП, 0 рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬреЛрдбрд╝реЗ рдЧрдП
рд╡реЗрд░рд┐рдПрдмрд▓ рдкрд░рд┐рд╡рд░реНрддрди рд╕рд╛рд░рд╛рдВрд╢: 0 рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛, 0 рдмрджрд▓рд╛ рдЧрдпрд╛, 0 рд╡реЗрд░рд┐рдПрдмрд▓ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛

рдХреБрдЫ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдЙрдк-рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде 2 рдХрд╛рд░реНрдп:

[рд╕реА]'рдлрдВрдХреНрд╢рди рдлреВ* рдлрд░реНрд╕реНрдЯ_рдлрдВрдХ()' рдореЗрдВ рдХреБрдЫ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдЙрдк-рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ:
рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░ рдмрджрд▓рд╛ рдЧрдпрд╛:
'struct foo' рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдЖрдХрд╛рд░ 32 рд╕реЗ 64 рдмрд┐рдЯреНрд╕ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛
1 рдбреЗрдЯрд╛ рд╕рджрд╕реНрдп рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐:
'char foo::m1', рдСрдлрд╕реЗрдЯ 32 рдкрд░ (рдмрд┐рдЯреНрд╕ рдореЗрдВ)
[рд╕реА]'рдлрдВрдХреНрд╢рди рд╡реЙрдпрдб рд╕реЗрдХреЗрдВрдб_рдлрдВрдХ(рдлреВ&)' рдореЗрдВ рдХреБрдЫ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдЙрдк-рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ:
'foo&' рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ 0 рдореЗрдВ рдЙрдк-рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ:
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рдВрджрд░реНрднрд┐рдд рдкреНрд░рдХрд╛рд░ 'рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлреВ' рдмрджрд▓ рдЧрдпрд╛ рд╣реИ

$

┬╖ рдЕрдм abicompat рдХреЗ рдХрдордЬреЛрд░ рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╛рдиреА, рдХреЗрд╡рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдкреНрд░рджрд╛рди рдХрд░рдирд╛
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг:

$ abicompat --weak-mode test-app libtest-1.so
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╛рд░реНрдп
'libtest-1.so'
рдРрд╕реЗ рдЙрдк-рдкреНрд░рдХрд╛рд░ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рднрд┐рдиреНрди рд╣реИрдВ
'рдкрд░реАрдХреНрд╖рдг-рдРрдк'
рдЕрдкреЗрдХреНрд╖рд╛:

рдлрд╝рдВрдХреНрд╢рди рдлреВ* рдлрд░реНрд╕реНрдЯ_рдлрдВрдХ():
рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░ рдмрджрд▓рд╛ рдЧрдпрд╛:
'struct foo' рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдЖрдХрд╛рд░ 32 рд╕реЗ 64 рдмрд┐рдЯреНрд╕ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛
1 рдбреЗрдЯрд╛ рд╕рджрд╕реНрдп рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐:
'char foo::m1', рдСрдлрд╕реЗрдЯ 32 рдкрд░ (рдмрд┐рдЯреНрд╕ рдореЗрдВ)

$

onworks.net рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ abicompat рдХрд╛ рдСрдирд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рдлреНрд░реА рд╕рд░реНрд╡рд░ рдФрд░ рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди

рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд╛рдЗрдиреЗрдХреНрд╕ рдПрдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

рд▓рд┐рдирдХреНрд╕ рдХрдорд╛рдВрдб

Ad