#215·blink

Blink 拒绝了 Linux 可以接受和运行的 ELF 文件

作者: matheusmoreira创建于 2026年7月24日更新于 2026年7月24日
bad.s
asm
  .code64
  .set VADDR1, 0x400000          # code page load address
  .set VADDR2, 0x401000          # "embedded" page load address
  .section .elf, "ax"
ehdr:
  .byte 0x7f, 'E', 'L', 'F', 2, 1, 1, 0    # e_ident magic, ELFCLASS64, ELFDATA2LSB, EV_CURRENT, SYSV
  .quad 0                                  # e_ident padding
  .short 2                                 # e_type ET_EXEC
  .short 0x3e                              # e_machine EM_X86_64
  .long  1                                 # e_version
  .quad  VADDR1 + (_start - ehdr)          # e_entry
  .quad  phdr - ehdr                       # e_phoff
  .quad  0                                 # e_shoff
  .long  0                                 # e_flags
  .short 64                                # e_ehsize
  .short 56                                # e_phentsize
  .short 2                                 # e_phnum
  .short 0                                 # e_shentsize
  .short 0                                 # e_shnum
  .short 0                                 # e_shstrndx
phdr:
  .long  1                                 # [0] p_type PT_LOAD
  .long  5                                 #     p_flags R | X
  .quad  0                                 #     p_offset
  .quad  VADDR1                            #     p_vaddr
  .quad  VADDR1                            #     p_paddr
  .quad  0x1000                            #     p_filesz
  .quad  0x1000                            #     p_memsz
  .quad  0x1000                            #     p_align
  .long  1                                 # [1] p_type PT_LOAD "embedded" page
  .long  4                                 #     p_flags R
  .quad  0x1000                            #     p_offset        second page in the file
  .quad  VADDR2                            #     p_vaddr
  .quad  VADDR2                            #     p_paddr
  .quad  0x1000                            #     p_filesz    <= file size ...
  .quad  0x1000                            #     p_memsz
  .quad  0x1000                            #
…