FEX-Emu / FEX-Emu/FEX

Walk through personality flags on 32-bit and 64-bit and ensure correct behaviour

Open
#1,119 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
8k
Forks
351
Avg merge
12h 31m
Merged PRs (30d)
102

Description

Not sure exactly how much this matters but we should double check it.

Flags to support:
- UNAME26
- Needs emulation
- ADDR_NO_RANDOMIZE
- Already handled in ELFCodeLoader
- FDPIC_FUNCPTRS
- nop on x86
- MMAP_PAGE_ZERO
- Allowed but doesn't do anything on x86
- ADDR_COMPAT_LAYOUT
- Changes allocation to BottomUp instead of top-down
- Would need emulation
- READ_IMPLIES_EXEC
- Needs NX support, which we don't have currently
- ADDR_LIMIT_32BIT
- nop on x86
- SHORT_INODE
- nop
- WHOLE_SECONDS
- nop
- STICKY_TIMEOUTS
- Causes select, pselect, and ppoll to not modify timeout on signal handler interrupt.
- Passthrough to host kernel makes FEX impl a nop.
- ADDR_LIMIT_3GB
- Changes the upper limit on mmap from 0xffff_e000 to 0xc000_0000 for 32-bit processes
- Needs emulation

Personalities:
- PER_LINUX32
- Changes uname result
- Needs emulation
- PER_SVR4/3
- PER_SCOSVR3/PER_OSR5
- PER_WYSEV386
- PER_ISCR4
- PER_BSD
- PER_SUNOS
- PER_XENIX
- PER_IRIX32
- PER_IRIXN32
- PER_IRIX64
- PER_RISCOS
- PER_SOLARIS
- PER_UW7
- PER_OSF4
- PER_HPUX
- nop

Contributor guide

Open the contributing guide

Research direction

Start by reviewing ELFCodeLoader, then walk through the listed personality flags separately for 32-bit and 64-bit behavior. Compare each flag and personality with the behavior described in the issue, identifying which are already handled, no-ops, or require emulation. Done means the relevant behaviors are correctly supported or explicitly confirmed as no-ops.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, linux
Domain
operating-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.