영어프랑스어스페인어

Ad


온웍스 파비콘

abidiff - 클라우드의 온라인

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터를 통해 OnWorks 무료 호스팅 제공업체에서 abidiff 실행

이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 명령 abidiff입니다.

프로그램:

이름


abidiff - ELF 파일의 ABI 비교

abidiff는 두 공유 라이브러리의 ABI(Application Binary Interface)를 비교합니다. 꼬마 요정
체재. 두 ABI 간의 차이점을 설명하는 의미 있는 보고서를 내보냅니다.

기능 및 변수에 대한 변경 사항을 포함하는 포괄적인 ABI 변경 보고서
하위 유형, 두 개의 입력 공유 라이브러리는 디버그 정보와 함께 제공되어야 합니다.
in 난쟁이 체재. 그렇지 않으면 만 꼬마 요정 추가 또는 제거된 기호가 보고됩니다.

기도


비디프 [옵션]

옵션


· --도움 | -h

명령에 대한 간단한 도움말을 표시하고 종료합니다.

· --번역 | -v

프로그램 버전을 표시하고 종료합니다.

· --디버그-정보-dir1 | --d1 <이중 경로1>

에 대한 디버그 정보가 있는 경우 첫 번째 공유 라이브러리 로 나뉩니다.
별도의 파일, 알려줍니다 아비디프 별도의 디버그 정보 파일을 찾을 수 있는 위치입니다.

참고 이중 경로 디버그 정보가 있는 루트 디렉토리를 가리켜야 합니다.
나무모양으로 배열되어 있습니다. Red Hat 기반 시스템에서 해당 디렉토리는
보통 /usr/lib/디버그.

이 옵션은 다음에 의해 설치된 분할 디버그 정보에 대해 필수가 아닙니다.
시스템의 패키지 관리자 때문에 아비디프 어디에서 찾을 수 있는지 알고 있습니다.

· --디버그-정보-dir2 | --d2 <이중 경로2>

처럼 --디버그-정보-dir1, 이 옵션은 아비디프 분할 디버그를 찾을 위치
정보 두 번째 공유 라이브러리 파일.

· --stat

자세한 ABI 차이점을 표시하는 대신 첫 번째 공유 라이브러리
두 번째 공유 라이브러리, 이러한 차이점에 대한 몇 가지 요약 통계를 표시합니다.

· --symtabs

기호 테이블만 표시 첫 번째 공유 라이브러리두 번째 공유 라이브러리.

· --삭제-fns

결과 보고서에서 첫 번째 공유 라이브러리
두 번째 공유 라이브러리, 삭제된 전역적으로 정의된 함수만 표시
첫 번째 공유 라이브러리.

· --변경-fns

결과 보고서에서 첫 번째 공유 라이브러리
두 번째 공유 라이브러리, 전역 함수의 하위 유형 변경 사항만 표시
정의 첫 번째 공유 라이브러리.

· --추가-fns

결과 보고서에서 첫 번째 공유 라이브러리
두 번째 공유 라이브러리, 추가된 전역적으로 정의된 함수만 표시
두 번째 공유 라이브러리.

· --삭제된 변수

결과 보고서에서 첫 번째 공유 라이브러리
두 번째 공유 라이브러리, 삭제된 전역적으로 정의된 변수만 표시
첫 번째 공유 라이브러리.

· --변경된 변수

결과 보고서에서 첫 번째 공유 라이브러리
두 번째 공유 라이브러리, 전역 하위 유형의 변경 사항만 표시
에 정의된 변수 첫 번째 공유 라이브러리

· --추가 변수

결과 보고서에서 첫 번째 공유 라이브러리
두 번째 공유 라이브러리, 추가(정의)된 전역 변수만 표시
두 번째 공유 라이브러리.

· --연결 이름 없음

결과 보고서에서 추가, 제거 또는
변경된 기능이나 변수.

· --no-show-locs
위치에 대한 정보를 표시하지 않음 공유 도서관 각각
유형이 변경되었습니다.

· --참조되지 않은 기호 없음

결과 보고서에는 기능 및
디버그 정보에서 참조하지 않는 변수 기호. 참고로
디버그 정보에서 참조하지 않는 이러한 기호, 변경 정보
추가되거나 제거된 기호가 표시됩니다.

· --억제 | --suppr <진압 경로>

다음 위치에 있는 억제 사양 파일 사용 진압 경로. 이
옵션은 명령줄에 여러 번 나타날 수 있습니다. 모든 억압
그런 다음 사양 파일이 고려됩니다.

· --떨어지다 <정규식>

읽을 때 첫 번째 공유 라이브러리두 번째 공유 라이브러리 ELF 입력 파일, 드롭
정규식과 이름이 일치하는 전역적으로 정의된 함수 및 변수
정규식. 결과적으로 이러한 함수 또는 변수와 관련된 변경 사항은 내보내지지 않습니다.
차이 보고서에서.

· --drop-fn <정규식>

읽을 때 첫 번째 공유 라이브러리두 번째 공유 라이브러리 ELF 입력 파일, 드롭
이름이 정규식과 일치하는 전역으로 정의된 함수 정규식. 로
결과적으로 이러한 기능과 관련된 변경 사항은 diff 보고서에서 내보내지지 않습니다.

· --drop-var <정규식>

읽을 때 첫 번째 공유 라이브러리두 번째 공유 라이브러리 ELF 입력 파일, 드롭
정규식과 일치하는 전역적으로 정의된 변수 정규식.

· --유지하다 <정규식>

읽을 때 첫 번째 공유 라이브러리두 번째 공유 라이브러리 ELF 입력 파일, 유지
이름이 정규식과 일치하는 전역적으로 정의된 함수 및 변수
정규식. 다른 모든 함수와 변수는 바닥에 떨어지므로
결과 diff 보고서에 나타납니다.

· --keep-fn <정규식>

읽을 때 첫 번째 공유 라이브러리두 번째 공유 라이브러리 ELF 입력 파일, 유지
이름이 정규식과 일치하는 전역으로 정의된 함수 정규식. 모든
다른 기능은 바닥에 떨어지므로 결과에 나타나지 않습니다.
차이 보고서.

· --keep-var <정규식>

읽을 때 첫 번째 공유 라이브러리두 번째 공유 라이브러리 ELF 입력 파일, 유지
정규식과 일치하는 이름이 전역적으로 정의됨 정규식. 그 외 모든 것들
변수는 바닥에 떨어지므로 결과 diff에 나타나지 않습니다.
보고합니다.

· --해가없는

diff 보고서에서 무해한 변경 사항만 표시합니다. 기본적으로 무해한
변경 사항은 diff 보고서에서 필터링되어 혼란을 최소화하고
실제 ABI 문제를 발견하기 위한 더 큰 변화.

· --무해

diff 보고서에서 유해한 변경 사항을 표시하지 마십시오. 기본적으로 유해한 항목만
변경 사항은 diff 보고서에 표시됩니다.

· --불필요한

diff 보고서에서 중복 변경 사항을 표시하십시오. 중복된 변경은 변경입니다.
보고서의 다른 곳에 표시되었습니다.

· --중복 없음

diff 보고서에서 다음을 수행하십시오. 않습니다. 중복 변경을 표시합니다. 중복된 변경은 변경입니다.
보고서의 다른 곳에 표시되었습니다. 이 옵션은 다음에 의해 켜집니다.
태만.

· --아키텍처 없음

ABI를 비교할 때 아키텍처를 고려하지 마십시오.

· --덤프-차이-트리
diff 보고서 후에 다음에서 사용하는 diff 노드 트리의 텍스트 표현을 내보냅니다.
변경된 기능과 변수를 나타내는 비교 엔진. 저것
표현은 디버깅 목적으로 오류 출력으로 내보내집니다. 참고
이 diff 트리는 일부 하위 유형이 있는 함수 및 변수에만 관련이 있습니다.
변경. 추가되거나 제거된 함수 및 변수에는 diff 노드 트리가 없습니다.
그들과 관련된.

· --통계

다양한 내부 사물에 대한 통계를 내보냅니다.

· --말 수가 많은

기타 내부 사항의 진행 상황에 대한 자세한 로그를 내보냅니다.

RETURN Values


종료 코드 아비디프 명령은 비교되는 바이너리의 ABI인 경우 0입니다.
동일하거나 다르거나 도구에 오류가 발생한 경우 XNUMX이 아닙니다.

후자의 경우 종료 코드는 각 비트에
구체적인 의미.

값이 1인 첫 번째 비트는 ABIDIFF_ERROR 오류가 있음을 의미합니다.

값 2의 두 번째 비트는 다음과 같이 명명됩니다. ABIDIFF_USAGE_ERROR 방법에 오류가 있음을 의미합니다.
사용자가 도구를 호출했습니다. 예를 들어 사용자가 도구를 호출한 경우 설정될 수 있습니다.
알 수 없는 명령줄 스위치, 잘못된 번호 또는 인수 등으로 이 비트가
설정한 다음 ABIDIFF_ERROR 비트도 설정해야 합니다.

값 4의 세 번째 비트는 다음과 같습니다. ABIDIFF_ABI_CHANGE 바이너리의 ABI를 의미합니다.
비교하면 다릅니다.

값 8의 네 번째 비트는 다음과 같이 명명됩니다. ABIDIFF_ABI_INCOMPATIBLE_CHANGE 의 ABI를 의미합니다.
비교되는 바이너리는 호환되지 않는 방식으로 다릅니다. 이 비트가 설정되면
ABIDIFF_ABI_CHANGE 비트도 설정해야 합니다. 만약 ABIDIFF_ABI_CHANGE 설정되고
ABIDIFF_INCOMPATIBLE_CHANGE is 않습니다. 설정하면 비교되는 ABI가
또는 호환되지 않을 수 있습니다. 이 경우 인간은 ABI 변경 사항을 검토해야 합니다.
호환되는지 여부를 결정합니다.

나머지 비트는 현재 사용되지 않습니다.

사용법 사용 예


1. 함수의 하위 유형 변경 감지:

$ 고양이 -n 테스트-v0.cc
1 // 다음과 같이 컴파일합니다.
2 // g++ -g -벽 -공유 -o libtest-v0.so 테스트-v0.cc
3
4 구조체 S0
삼 {
6 정수 m0;
7};
8
9 무효
10 foo(S0* /*매개변수 이름*/)
삼 {
12 // parameter_name으로 작업을 수행합니다.
13}
$
$ 고양이 -n 테스트-v1.cc
1 // 다음과 같이 컴파일합니다.
2 // g++ -g -벽 -공유 -o libtest-v1.so 테스트-v1.cc
3
4 구조체 type_base
삼 {
6 int가 삽입되었습니다.
7};
8
9 구조체 S0 : 공개 type_base
삼 {
11 정수 m0;
12};
13
14 무효
15 foo(S0* /*매개변수 이름*/)
삼 {
17 // parameter_name으로 작업을 수행합니다.
18}
$
$ g++ -g -벽 -공유 -o libtest-v0.so 테스트-v0.cc
$ g++ -g -벽 -공유 -o libtest-v1.so 테스트-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
기능 변경 요약: 0 제거, 1 변경, 0 추가 기능
변수 변경 요약: 0 제거됨, 0 변경됨, 0 추가된 변수

1개의 간접적인 하위 유형 변경이 있는 함수:

[C]'function void foo(S0*)'에는 간접적인 하위 유형 변경 사항이 있습니다.
유형 'S0*'의 매개변수 0에 하위 유형 변경 사항이 있습니다.
'struct S0' 유형을 가리킵니다.
크기가 32비트에서 64비트로 변경됨
1개의 기본 클래스 삽입:
구조체 type_base
1 데이터 멤버 변경:
'int S0::m0' 오프셋이 0에서 32로 변경되었습니다.
$

2. 함수의 하위 유형에서 다른 변경 감지:

$ 고양이 -n 테스트-v0.cc
1 // 다음과 같이 컴파일합니다.
2 // g++ -g -벽 -공유 -o libtest-v0.so 테스트-v0.cc
3
4 구조체 S0
삼 {
6 정수 m0;
7};
8
9 무효
10 foo(S0& /*매개변수 이름*/)
삼 {
12 // parameter_name으로 작업을 수행합니다.
13}
$
$ 고양이 -n 테스트-v1.cc
1 // 다음과 같이 컴파일합니다.
2 // g++ -g -벽 -공유 -o libtest-v1.so 테스트-v1.cc
3
4 구조체 S0
삼 {
6자 삽입_멤버;
7 정수 m0;
8};
9
10 무효
11 foo(S0& /*매개변수 이름*/)
삼 {
13 // parameter_name으로 작업을 수행합니다.
14}
$
$ g++ -g -벽 -공유 -o libtest-v0.so 테스트-v0.cc
$ g++ -g -벽 -공유 -o libtest-v1.so 테스트-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
기능 변경 요약: 0 제거, 1 변경, 0 추가 기능
변수 변경 요약: 0 제거됨, 0 변경됨, 0 추가된 변수

1개의 간접적인 하위 유형 변경이 있는 함수:

[C]'function void foo(S0&)'에는 간접적인 하위 유형 변경 사항이 있습니다.
'S0&' 유형의 매개변수 0에 하위 유형 변경 사항이 있습니다.
참조된 유형 '구조체 S0'에서:
크기가 32비트에서 64비트로 변경됨
1 데이터 멤버 삽입:
오프셋 0에서 'char S0::inserted_member'(비트 단위)
1 데이터 멤버 변경:
'int S0::m0' 오프셋이 0에서 32로 변경되었습니다.

$

3. 라이브러리에 제거되거나 추가된 함수 감지:

$ 고양이 -n 테스트-v0.cc
1 // 다음과 같이 컴파일합니다.
2 // g++ -g -벽 -공유 -o libtest-v0.so 테스트-v0.cc
3
4 구조체 S0
삼 {
6 정수 m0;
7};
8
9 무효
10 foo(S0& /*매개변수 이름*/)
삼 {
12 // parameter_name으로 작업을 수행합니다.
13}
$
$ 고양이 -n 테스트-v1.cc
1 // 다음과 같이 컴파일합니다.
2 // g++ -g -벽 -공유 -o libtest-v1.so 테스트-v1.cc
3
4 구조체 S0
삼 {
6자 삽입_멤버;
7 정수 m0;
8};
9
10 무효
11 bar(S0& /*parameter_name*/)
삼 {
13 // parameter_name으로 작업을 수행합니다.
14}
$
$ g++ -g -벽 -공유 -o libtest-v0.so 테스트-v0.cc
$ g++ -g -벽 -공유 -o libtest-v1.so 테스트-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
기능 변경 사항 요약: 1 제거, 0 변경, 1 추가 기능
변수 변경 요약: 0 제거됨, 0 변경됨, 0 추가된 변수

1 제거된 기능:
'함수 무효 foo(S0&)' {_Z3fooR2S0}

1 추가된 기능:
'함수 무효 바(S0&)' {_Z3barR2S0}

$

onworks.net 서비스를 사용하여 온라인에서 abidiff 사용


무료 서버 및 워크스테이션

Windows 및 Linux 앱 다운로드

Linux 명령

Ad