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

Improve the default section alignment choice (> 4K page size compat) #216

Merged
merged 1 commit into from Jun 23, 2020

Commits on Jun 19, 2020

  1. Improve the default section alignment choice

    Currently patchelf uses the host system's page size (determined at build
    time) as the default section load memory alignment. This causes multiple
    issues
    
    - Cross-compilation: when using patchelf on ELFs targetting a different
      architecture from the host, the host page size is still used by
      default.
    
    - Variable page size architectures: ARMv8 systems can be configured in
      either 4K, 16K, or 64K page size mode depending on kernel
      configuration. An ARMv8 patchelf built on a 4K page size system will
      end up creating ELFs that cannot be used on a 64K page size system.
    
    - Reproducibility: the page size of the machine that built patchelf
      "leaks" into the binary.
    
    The build time --with-page-size as well as the run time --page-size
    options can be used to work around some of these issues. But it's much
    better to have patchelf do the right thing without explicit
    configuration.
    
    This commit adds support for inferring page size from the ELF header's
    "machine" field. The default values are extracted from GNU gold's source
    code. Note that both --with-page-size as well as --page-size continue to
    work and take precedence on the default value.
    delroth committed Jun 19, 2020
    Copy the full SHA
    0470d69 View commit details
    Browse the repository at this point in the history