Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

168
Views
No se puede mmap después de cambiar al modo de 64 bits en un proceso de espacio de usuario de Linux que comenzó como 32 bits

Intenté hacer una llamada al sistema mmap después de cambiar al modo de 64 bits en x86 Linux (Linux versión 5.15.6), pero la llamada al sistema devuelve ENOMEM . El siguiente código ensamblador proporciona un ejemplo reproducible mínimo:

 .text .global _start _start: .code32 jmp $0x33, $start64 // jmp to start64 and change mode to 64 bit .code64 start64: mov $9, %rax // mmap mov $0, %rdi // NULL mov $0x1000, %rsi // size mov $1, %rdx // PROT_READ mov $0x22, %r10 mov $0, %r8 mov $0, %r9 syscall mov $60, %rax // 64 bit style exit mov $0, %rdi syscall

La salida correspondiente de strace es:

 execve("./mmap_test32", ["./mmap_test32"], 0x7ffe0ccd7920 /* 60 vars */) = 0 mmap(NULL, 4096, PROT_READ, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0) = -1 ENOMEM (Cannot allocate memory) exit(0) = ? +++ exited with 0 +++

¿Alguien tiene una idea de por qué esto no funciona?

over 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!