Tôi muốn tạo chương trình với phần đặc biệt ở cuối Bộ nhớ ảo. Vì vậy, tôi muốn làm một cái gì đó linker script như thế này:Đặt rõ ràng bắt đầu con trỏ ngăn xếp với tập lệnh liên kết
/* ... */
.section_x 0xffff0000 : {
_start_section_x = .;
. = . + 0xffff;
_end_section_x = .;
}
Vấn đề là gcc/ld/glibc dường như tải các ngăn xếp ở vị trí này theo mặc định cho một ứng dụng 32 bit, thậm chí nếu nó trùng lặp một biết phần. Các mã trên không của ra khỏi ngăn xếp gây ra một ngoại lệ. Có cách nào để nói cho các liên kết để sử dụng một vị trí bộ nhớ VM cho ngăn xếp? (Đồng thời, tôi muốn đảm bảo heap không kéo dài phần này của bộ nhớ ảo ...).
Bạn cần cung cấp thêm thông tin về mục tiêu của mình. Nội dung đăng ký ban đầu (xác định vị trí ngăn xếp) phụ thuộc vào mục tiêu. –
Đây là hệ thống arm-8 (biên dịch ở chế độ 32 bit). Tôi đang sử dụng một hạt nhân Linux 3.10 với một gcc 4.7.0 toolchain. – HardcoreHenry