Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Run images whose PT_LOAD covers the low 64 KiB

Aperta
#440 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 2 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
c

Direzione di ricerca

Start with vdso_build and guest_invalidate_ptes, plus the fixed VDSO_BASE and the VDSO_OFF_SIGRET trampoline address the issue names. Reproduce by linking a static binary with -Wl,-Ttext-segment=0x8000 and running it under elfuse to see the SIGSEGV at 0x40. The issue leaves open whether to relocate the vDSO or refuse such images at load with a clear error, so confirm that choice with maintainers first. Done means the chosen behaviour is in place and the reproduction no longer faults silently.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

An ET_EXEC whose first PT_LOAD covers VDSO_BASE (0xF000) faults under elfuse. vdso_build writes the vDSO over the image's text at VDSO_BASE, and when the image starts at 0x0, the null page that guest_invalidate_ptes removes also takes its ELF header, so the first access to it faults.

Reproduction: aarch64-linux-gnu-gcc -static -O2 -Wl,-Ttext-segment=0x8000 hello.c (ld rounds the first PT_LOAD to 0x0), then elfuse ./a.out dies with SIGSEGV at 0x40. Linux 6.18 runs the same binary as root, where vm.mmap_min_addr does not apply.

The cause is the fixed VDSO_BASE. Linux places the vDSO in the mmap area, after the image is mapped, so it never collides with a PT_LOAD. Moving it in elfuse touches the shim, the signal trampoline address (VDSO_BASE + VDSO_OFF_SIGRET) and the boot and exec page-table setup. A smaller first step would refuse such an image at load with a clear error instead of faulting after the vDSO has been written over it.

Found while reviewing #435.

Lingua principale
C
Stelle
273
Fork
29
Merge medio
2g 3h
PR unite (30g)
14

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di sysprog21/elfuse

Tutte le issue di sysprog21/elfuse

Issue simili

Altre issue su C

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.