Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

177
Visualizações
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
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda