Tôi chỉ đang nghiên cứu cách TLS (lưu trữ cục bộ) được triển khai trên các hệ thống Linux. Tài liệu ELF Handling for Thread-Local Storage giải thích cách yêu cầu của một chương trình cho các biến thread-local có thể được mã hóa trong một nhị phân ELF và cách "thời gian chạy" nên xử lý các tệp nhị phân đó. Tuy nhiên, nó không rõ ràng với tôi cho dù trong thực tế "thời gian chạy" mà thiết lập các khu vực TLS sẽ là hạt nhân Linux (và mã của nó để tải ELF nhị phân) hoặc một số mã khởi tạo trong libc. NGUYÊN NHÂN Ai đó có thể giải thích ngắn gọn?Trên Linux, TLS được thiết lập bởi hạt nhân hay bằng libc (hoặc thời gian chạy ngôn ngữ khác)?
(Bối cảnh: Tôi đang cố gắng liên kết tĩnh và chạy một ứng dụng, nhưng nó sẽ làm thay đổi khi bắt đầu. Trong gdb, tôi có thể thấy mã segfaulting là một số mã init từ libc. sử dụng địa chỉ tương đối với GS, nhưng GS bằng không.)
glibc và musl là nguồn mở; bạn có thể kiểm tra mã nguồn cho chúng. –
Bạn đang thảo luận về TLS (lưu trữ cục bộ) hoặc TLS (bảo mật lớp truyền tải)? Nội dung đề xuất bộ nhớ cục bộ; tag [tag: ssl] gợi ý cái sau. Bạn đã đồng bộ hóa chưa? Tôi đã xóa [tag: ssl] và thêm [tag: thread-local-storage], mặc dù [tag: tls] không tự hiển nhiên được ánh xạ tới [tag: ssl]. –
@JonathanLeffler, tôi đã thêm tls, có nghĩa là lưu trữ cục bộ. Cảm ơn bạn đã sửa lỗi. –