Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for 64-bit symbol lookup tables. #21

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

qkaiser
Copy link

@qkaiser qkaiser commented Feb 14, 2024

To overcome the 4 GiB file size limit some operating system like Solaris 11.2 and GNU use a variant lookup table. Instead of 32-bit integers, 64-bit integers are used in the symbol lookup tables. The string "/SYM64/" instead "/" is used as identifier for this table¹.

A 32-bit archive symbol table has a zero length name, so ar_name contains the string "/" padded with 15 blank characters on the right. A 64-bit archive symbol table sets ar_name to the string "/SYM64/", padded with 9 blank characters to the right.

Without this fix errors like these are thrown by arpy.

To overcome the 4 GiB file size limit some operating system like Solaris
11.2 and GNU use a variant lookup table. Instead of 32-bit integers,
64-bit integers are used in the symbol lookup tables. The string
"/SYM64/" instead "/" is used as identifier for this table[0].

A 32-bit archive symbol table has a zero length name, so ar_name
contains the string "/" padded with 15 blank characters on the right. A
64-bit archive symbol table sets ar_name to the string "/SYM64/", padded
with 9 blank characters to the right.

[0]: https://docs.oracle.com/cd/E36784_01/html/E36873/ar.h-3head.html
@qkaiser
Copy link
Author

qkaiser commented Jun 10, 2024

@viraptor is this project still maintained ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant