Skip to content

Discern ELF targeting eBPF for Windows from ones targeting Linux #3956

Description

@lmb

Describe the feature you'd like supported

Right now it is not possible to determine the target platform from the contents of an ELF. A program compiled against Linux headers looks the same as a programs compiled against Windows ones. This is a problem for projects which need to support loading ELF from both platforms because while the ELF are superficially similar the contents aren't compatible:

There should be a way for toolchains to figure out the platform of an ELF.

Proposed solution

  1. Add a new ELF section similar to .license which contains a string that indicates the platform, e.g. windows or linux.
  2. Somehow set the ELF OS/ABI field to something meaningful.
    $ readelf -h testdata/loader-clang-el.elf 
    ELF Header:
      Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
      Class:                             ELF64
      Data:                              2's complement, little endian
      Version:                           1 (current)
      OS/ABI:                            UNIX - System V
      ABI Version:                       0
    

It would be best if this was coordinated with upstream libbpf somehow.

Additional context

No response

Metadata

Metadata

Assignees

Labels

P2enhancementNew feature or requesttriagedDiscussed in a triage meeting

Type

No type

Fields

No fields configured for issues without a type.

Projects

Status
Todo

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions