Tôi đang tìm cách đơn giản để sắp xếp lại các phần tệp ELF. Tôi có một chuỗi các phần tùy chỉnh mà tôi muốn tất cả được căn chỉnh theo một thứ tự nhất định.Cách đơn giản để sắp xếp lại các phần tệp ELF
Cách duy nhất tôi tìm thấy cách thực hiện là sử dụng tập lệnh Trình liên kết. Tuy nhiên tài liệu chỉ ra rằng việc chỉ định một kịch bản liên kết tùy chỉnh sẽ ghi đè mặc định. Kịch bản trình liên kết mặc định có rất nhiều nội dung trong đó tôi không muốn phải sao chép trong tập lệnh tùy chỉnh của mình chỉ để có được ba phần luôn cùng nhau theo một thứ tự nhất định. Nó không có vẻ rất linh hoạt để mã cứng hành vi liên kết như thế.
Tại sao tôi muốn thực hiện việc này? Tôi có một phần dữ liệu mà tôi cần biết vị trí bộ nhớ thời gian chạy (bắt đầu và kết thúc). Vì vậy, tôi đã tạo hai phần bổ sung và đặt các biến sentinel vào chúng. Sau đó tôi muốn sử dụng các vị trí bộ nhớ của các biến đó để biết phạm vi của phần không rõ trong bộ nhớ.
.markerA
int markerA;
.targetSection
... Lots of variables ...
.markerB
int markerB;
Trong ví dụ trên, tôi sẽ biết rằng dữ liệu trong .targetSection nằm giữa địa chỉ của markerA và markerB.
Có cách nào khác để thực hiện việc này không? Có thư viện nào cho phép tôi đọc trong hình ảnh ELF hiện đang thực hiện và xác định vị trí và kích thước của phần không?
Chuỗi công cụ của bạn (trình biên dịch/trình liên kết) là gì? Bạn có thể sao chép-dán tập lệnh trình liên kết mặc định vào một tệp khác và chỉ thay đổi những gì bạn muốn ... –
Tôi đang sử dụng gcc. Tôi biết tôi có thể xuất tập lệnh trình liên kết hiện tại, sửa đổi và sử dụng nó. Tuy nhiên, có thể có hàng trăm ứng dụng này, không phải tất cả được phát triển bởi nhóm của chúng tôi và tôi ghét phải liên kết tất cả chúng với phiên bản "cũ" của tập lệnh trình liên kết. Tôi đã hy vọng có một cách để đặt hàng một số phần mà không can thiệp vào phần còn lại của hành vi liên kết. – MrSlippers
Có lý do gì khiến bạn sử dụng tập lệnh liên kết không? Có lẽ bạn có thể đặt các biến của bạn vào cấu trúc dữ liệu khung (struct, class, ...) và phân bổ một biến tĩnh. – Uhli