2012-03-17 18 views
5

Xin chào Tôi có một tập lệnh liên kết trong đó tôi tìm thấy mã này "__exidx_start = .;" trong đó đặt giá trị nhãn cho giá trị của bộ đếm vị trí ".". Nhãn này không được sử dụng ở bất kỳ đâu trong cùng một tập lệnh trình liên kết.'__exidx_start' và '__exidx_end' họ sẽ làm gì?

Có một nhãn tương tự được xác định vài dòng bên dưới dòng đầu tiên và được xác định giống như cách "__exidx_end = .;".

Hai nhãn này là các khung của các phần .text.rodata, nhưng tôi không biết tại sao bất kỳ ai xác định hai nhãn đó nếu chúng không được sử dụng trong tập lệnh trình liên kết?

Trả lời

2

Chúng không được sử dụng trong tập lệnh trình liên kết, nhưng chúng được khai báo dưới dạng biến ngoài và được sử dụng trong thư viện gcc. Đưa chúng ra và đây là những gì sẽ xảy ra:

 
.../gcc/config/arm/unwind-arm.c:614: undefined reference to `__exidx_start' 
.../gcc/config/arm/unwind-arm.c:614: undefined reference to `__exidx_end' 
Các vấn đề liên quan