brintos

brintos / llvm-project-archived public Read only

0
0
Text · 32.5 KiB · 856cf37 Raw
795 lines · plain
1## Check how we dump program headers and print sections to segments2## mapping (llvm-readelf only) with -l, --program-headers and --segments options.3 4## Check that -l, --program-headers and --segments are the same option.5 6## Case A: test llvm-readelf tool.7# RUN: yaml2obj --docnum=1 -DBITS=32 -DMACHINE=EM_386 %s -o %t32.elf8# RUN: llvm-readelf -l %t32.elf 2>&1 > %t.readelf-l.txt9# RUN: llvm-readelf --program-headers %t32.elf 2>&1 > %t.readelf-pheaders.txt10# RUN: cmp %t.readelf-l.txt %t.readelf-pheaders.txt11# RUN: llvm-readelf --segments %t32.elf 2>&1 > %t.readelf-segments.txt12# RUN: cmp %t.readelf-l.txt %t.readelf-segments.txt13 14## Case B: test llvm-readobj tool.15# RUN: llvm-readobj -l %t32.elf 2>&1 > %t.readobj-l.txt16# RUN: llvm-readobj --program-headers %t32.elf 2>&1 > %t.readobj-pheaders.txt17# RUN: cmp %t.readobj-l.txt %t.readobj-pheaders.txt18# RUN: llvm-readobj --segments %t32.elf 2>&1 > %t.readobj-segments.txt19# RUN: cmp %t.readobj-l.txt %t.readobj-segments.txt20 21## Check we are able to print program headers of different types.22# RUN: FileCheck %s --check-prefixes=ELF32,MAPPING \23# RUN:   --match-full-lines --strict-whitespace --input-file=%t.readelf-l.txt24# RUN: FileCheck %s --check-prefixes=ELF-LLVM,ELF32-LLVM \25# RUN:   --match-full-lines --input-file=%t.readobj-l.txt26 27# RUN: yaml2obj --docnum=1 -DBITS=64 -DMACHINE=EM_X86_64 %s -o %t64.elf28# RUN: llvm-readelf -l %t64.elf | \29# RUN:   FileCheck %s --check-prefixes=ELF64,MAPPING --strict-whitespace --match-full-lines30# RUN: llvm-readobj -l %t64.elf | FileCheck %s --check-prefixes=ELF-LLVM,ELF64-LLVM31 32#       ELF32:There are 26 program headers, starting at offset 5233# ELF32-EMPTY:34# ELF32-NEXT:Program Headers:35# ELF32-NEXT:  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align36# ELF32-NEXT:  PHDR           0x000374 0x00001000 0x00001000 0x00003 0x00003  W  0x137# ELF32-NEXT:  PHDR           0x000377 0x00002000 0x00002000 0x00007 0x00007   E 0x138# ELF32-NEXT:  NULL           0x000377 0x00002000 0x00002000 0x00007 0x00007   E 0x139# ELF32-NEXT:  DYNAMIC        0x000374 0x00001000 0x00001000 0x00003 0x00003 RWE 0x140# ELF32-NEXT:  INTERP         0x00037e 0x00003000 0x00003000 0x00004 0x00004 RW  0x141# ELF32-NEXT:      [Requesting program interpreter: ABC]42# ELF32-NEXT:  NOTE           0x000374 0x00001000 0x00001000 0x00003 0x00003     0x143# ELF32-NEXT:  SHLIB          0x000374 0x00001000 0x00001000 0x00001 0x00001     0x144# ELF32-NEXT:  TLS            0x000382 0x00004000 0x00004000 0x00001 0x00001     0x145# ELF32-NEXT:  <unknown>: 0x60000000 0x000374 0x00001000 0x00001000 0x00003 0x00003     0x146# ELF32-NEXT:  GNU_EH_FRAME   0x000374 0x00001000 0x00001000 0x00003 0x00003     0x147# ELF32-NEXT:  SUNW_UNWIND    0x000374 0x00001000 0x00001000 0x00003 0x00003     0x148# ELF32-NEXT:  GNU_STACK      0x000374 0x00001000 0x00001000 0x00003 0x00003     0x149# ELF32-NEXT:  GNU_RELRO      0x000374 0x00001000 0x00001000 0x00003 0x00003     0x150# ELF32-NEXT:  GNU_PROPERTY   0x000374 0x00001000 0x00001000 0x00003 0x00003     0x151# ELF32-NEXT:  OPENBSD_MUTABLE 0x000374 0x00001000 0x00001000 0x00003 0x00003     0x152# ELF32-NEXT:  OPENBSD_RANDOMIZE 0x000374 0x00001000 0x00001000 0x00003 0x00003     0x153# ELF32-NEXT:  OPENBSD_WXNEEDED 0x000374 0x00001000 0x00001000 0x00003 0x00003     0x154# ELF32-NEXT:  OPENBSD_NOBTCFI 0x000374 0x00001000 0x00001000 0x00003 0x00003     0x155# ELF32-NEXT:  OPENBSD_SYSCALLS 0x000374 0x00001000 0x00001000 0x00003 0x00003     0x156# ELF32-NEXT:  OPENBSD_BOOTDATA 0x000374 0x00001000 0x00001000 0x00003 0x00003     0x157# ELF32-NEXT:  <unknown>: 0x6fffffff 0x000374 0x00001000 0x00001000 0x00003 0x00003     0x158# ELF32-NEXT:  <unknown>: 0x70000000 0x000374 0x00001000 0x00001000 0x00003 0x00003     0x159# ELF32-NEXT:  <unknown>: 0x70000001 0x000374 0x00001000 0x00001000 0x00003 0x00003     0x160# ELF32-NEXT:  <unknown>: 0x70000002 0x000374 0x00001000 0x00001000 0x00003 0x00003     0x161# ELF32-NEXT:  <unknown>: 0x70000003 0x000374 0x00001000 0x00001000 0x00003 0x00003     0x162# ELF32-NEXT:  <unknown>: 0x7fffffff 0x000374 0x00001000 0x00001000 0x00003 0x00003     0x163# ELF32-EMPTY:64 65#       ELF64:There are 26 program headers, starting at offset 6466# ELF64-EMPTY:67# ELF64-NEXT:Program Headers:68# ELF64-NEXT:  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align69# ELF64-NEXT:  PHDR           0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003  W  0x170# ELF64-NEXT:  PHDR           0x0005f3 0x0000000000002000 0x0000000000002000 0x000007 0x000007   E 0x171# ELF64-NEXT:  NULL           0x0005f3 0x0000000000002000 0x0000000000002000 0x000007 0x000007   E 0x172# ELF64-NEXT:  DYNAMIC        0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003 RWE 0x173# ELF64-NEXT:  INTERP         0x0005fa 0x0000000000003000 0x0000000000003000 0x000004 0x000004 RW  0x174# ELF64-NEXT:      [Requesting program interpreter: ABC]75# ELF64-NEXT:  NOTE           0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x176# ELF64-NEXT:  SHLIB          0x0005f0 0x0000000000001000 0x0000000000001000 0x000001 0x000001     0x177# ELF64-NEXT:  TLS            0x0005fe 0x0000000000004000 0x0000000000004000 0x000001 0x000001     0x178# ELF64-NEXT:  <unknown>: 0x60000000 0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x179# ELF64-NEXT:  GNU_EH_FRAME   0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x180# ELF64-NEXT:  SUNW_UNWIND    0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x181# ELF64-NEXT:  GNU_STACK      0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x182# ELF64-NEXT:  GNU_RELRO      0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x183# ELF64-NEXT:  GNU_PROPERTY   0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x184# ELF64-NEXT:  OPENBSD_MUTABLE 0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x185# ELF64-NEXT:  OPENBSD_RANDOMIZE 0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x186# ELF64-NEXT:  OPENBSD_WXNEEDED 0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x187# ELF64-NEXT:  OPENBSD_NOBTCFI 0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x188# ELF64-NEXT:  OPENBSD_SYSCALLS 0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x189# ELF64-NEXT:  OPENBSD_BOOTDATA 0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x190# ELF64-NEXT:  <unknown>: 0x6fffffff 0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x191# ELF64-NEXT:  <unknown>: 0x70000000 0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x192# ELF64-NEXT:  <unknown>: 0x70000001 0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x193# ELF64-NEXT:  <unknown>: 0x70000002 0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x194# ELF64-NEXT:  <unknown>: 0x70000003 0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x195# ELF64-NEXT:  <unknown>: 0x7fffffff 0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003     0x196# ELF64-EMPTY:97 98#      MAPPING: Section to Segment mapping:99# MAPPING-NEXT:  Segment Sections...100# MAPPING-NEXT:   00     .foo.begin .foo.end {{$}}101# MAPPING-NEXT:   01     .bar.begin .bar.end {{$}}102# MAPPING-NEXT:   02     .bar.begin .bar.end {{$}}103# MAPPING-NEXT:   03     .foo.begin .foo.end {{$}}104# MAPPING-NEXT:   04     .interp {{$}}105# MAPPING-NEXT:   05     .foo.begin .foo.end {{$}}106# MAPPING-NEXT:   06     .foo.begin {{$}}107# MAPPING-NEXT:   07     .tls {{$}}108# MAPPING-NEXT:   08     .foo.begin .foo.end {{$}}109# MAPPING-NEXT:   09     .foo.begin .foo.end {{$}}110# MAPPING-NEXT:   10     .foo.begin .foo.end {{$}}111# MAPPING-NEXT:   11     .foo.begin .foo.end {{$}}112# MAPPING-NEXT:   12     .foo.begin .foo.end {{$}}113# MAPPING-NEXT:   13     .foo.begin .foo.end {{$}}114# MAPPING-NEXT:   14     .foo.begin .foo.end {{$}}115# MAPPING-NEXT:   15     .foo.begin .foo.end {{$}}116# MAPPING-NEXT:   16     .foo.begin .foo.end {{$}}117# MAPPING-NEXT:   17     .foo.begin .foo.end {{$}}118# MAPPING-NEXT:   18     .foo.begin .foo.end {{$}}119# MAPPING-NEXT:   19     .foo.begin .foo.end {{$}}120# MAPPING-NEXT:   20     .foo.begin .foo.end {{$}}121# MAPPING-NEXT:   21     .foo.begin .foo.end {{$}}122# MAPPING-NEXT:   22     .foo.begin .foo.end {{$}}123# MAPPING-NEXT:   23     .foo.begin .foo.end {{$}}124# MAPPING-NEXT:   24     .foo.begin .foo.end {{$}}125# MAPPING-NEXT:   25     .foo.begin .foo.end {{$}}126# MAPPING-NEXT:   None   .unused .strtab .shstrtab {{$}}127 128# ELF-LLVM:      ProgramHeaders [129# ELF-LLVM-NEXT:   ProgramHeader {130# ELF-LLVM-NEXT:     Type: PT_PHDR (0x6)131# ELF32-LLVM-NEXT:   Offset: 0x374132# ELF64-LLVM-NEXT:   Offset: 0x5F0133# ELF-LLVM-NEXT:     VirtualAddress: 0x1000134# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000135# ELF-LLVM-NEXT:     FileSize: 3136# ELF-LLVM-NEXT:     MemSize: 3137# ELF-LLVM-NEXT:     Flags [ (0x2)138# ELF-LLVM-NEXT:       PF_W (0x2)139# ELF-LLVM-NEXT:     ]140# ELF-LLVM-NEXT:     Alignment: 1141# ELF-LLVM-NEXT:   }142# ELF-LLVM-NEXT:   ProgramHeader {143# ELF-LLVM-NEXT:     Type: PT_PHDR (0x6)144# ELF32-LLVM-NEXT:   Offset: 0x377145# ELF64-LLVM-NEXT:   Offset: 0x5F3146# ELF-LLVM-NEXT:     VirtualAddress: 0x2000147# ELF-LLVM-NEXT:     PhysicalAddress: 0x2000148# ELF-LLVM-NEXT:     FileSize: 7149# ELF-LLVM-NEXT:     MemSize: 7150# ELF-LLVM-NEXT:     Flags [ (0x1)151# ELF-LLVM-NEXT:       PF_X (0x1)152# ELF-LLVM-NEXT:     ]153# ELF-LLVM-NEXT:     Alignment: 1154# ELF-LLVM-NEXT:   }155# ELF-LLVM-NEXT:   ProgramHeader {156# ELF-LLVM-NEXT:     Type: PT_NULL (0x0)157# ELF32-LLVM-NEXT:   Offset: 0x377158# ELF64-LLVM-NEXT:   Offset: 0x5F3159# ELF-LLVM-NEXT:     VirtualAddress: 0x2000160# ELF-LLVM-NEXT:     PhysicalAddress: 0x2000161# ELF-LLVM-NEXT:     FileSize: 7162# ELF-LLVM-NEXT:     MemSize: 7163# ELF-LLVM-NEXT:     Flags [ (0x1)164# ELF-LLVM-NEXT:       PF_X (0x1)165# ELF-LLVM-NEXT:     ]166# ELF-LLVM-NEXT:     Alignment: 1167# ELF-LLVM-NEXT:   }168# ELF-LLVM-NEXT:   ProgramHeader {169# ELF-LLVM-NEXT:     Type: PT_DYNAMIC (0x2)170# ELF32-LLVM-NEXT:   Offset: 0x374171# ELF64-LLVM-NEXT:   Offset: 0x5F0172# ELF-LLVM-NEXT:     VirtualAddress: 0x1000173# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000174# ELF-LLVM-NEXT:     FileSize: 3175# ELF-LLVM-NEXT:     MemSize: 3176# ELF-LLVM-NEXT:     Flags [ (0x7)177# ELF-LLVM-NEXT:       PF_R (0x4)178# ELF-LLVM-NEXT:       PF_W (0x2)179# ELF-LLVM-NEXT:       PF_X (0x1)180# ELF-LLVM-NEXT:     ]181# ELF-LLVM-NEXT:     Alignment: 1182# ELF-LLVM-NEXT:   }183# ELF-LLVM-NEXT:   ProgramHeader {184# ELF-LLVM-NEXT:     Type: PT_INTERP (0x3)185# ELF32-LLVM-NEXT:   Offset: 0x37E186# ELF64-LLVM-NEXT:   Offset: 0x5FA187# ELF-LLVM-NEXT:     VirtualAddress: 0x3000188# ELF-LLVM-NEXT:     PhysicalAddress: 0x3000189# ELF-LLVM-NEXT:     FileSize: 4190# ELF-LLVM-NEXT:     MemSize: 4191# ELF-LLVM-NEXT:     Flags [ (0x6)192# ELF-LLVM-NEXT:       PF_R (0x4)193# ELF-LLVM-NEXT:       PF_W (0x2)194# ELF-LLVM-NEXT:     ]195# ELF-LLVM-NEXT:     Alignment: 1196# ELF-LLVM-NEXT:   }197# ELF-LLVM-NEXT:   ProgramHeader {198# ELF-LLVM-NEXT:     Type: PT_NOTE (0x4)199# ELF32-LLVM-NEXT:   Offset: 0x374200# ELF64-LLVM-NEXT:   Offset: 0x5F0201# ELF-LLVM-NEXT:     VirtualAddress: 0x1000202# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000203# ELF-LLVM-NEXT:     FileSize: 3204# ELF-LLVM-NEXT:     MemSize: 3205# ELF-LLVM-NEXT:     Flags [ (0x0)206# ELF-LLVM-NEXT:     ]207# ELF-LLVM-NEXT:     Alignment: 1208# ELF-LLVM-NEXT:   }209# ELF-LLVM-NEXT:   ProgramHeader {210# ELF-LLVM-NEXT:     Type: PT_SHLIB (0x5)211# ELF32-LLVM-NEXT:   Offset: 0x374212# ELF64-LLVM-NEXT:   Offset: 0x5F0213# ELF-LLVM-NEXT:     VirtualAddress: 0x1000214# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000215# ELF-LLVM-NEXT:     FileSize: 1216# ELF-LLVM-NEXT:     MemSize: 1217# ELF-LLVM-NEXT:     Flags [ (0x0)218# ELF-LLVM-NEXT:     ]219# ELF-LLVM-NEXT:     Alignment: 1220# ELF-LLVM-NEXT:   }221# ELF-LLVM-NEXT:   ProgramHeader {222# ELF-LLVM-NEXT:     Type: PT_TLS (0x7)223# ELF32-LLVM-NEXT:   Offset: 0x382224# ELF64-LLVM-NEXT:   Offset: 0x5FE225# ELF-LLVM-NEXT:     VirtualAddress: 0x4000226# ELF-LLVM-NEXT:     PhysicalAddress: 0x4000227# ELF-LLVM-NEXT:     FileSize: 1228# ELF-LLVM-NEXT:     MemSize: 1229# ELF-LLVM-NEXT:     Flags [ (0x0)230# ELF-LLVM-NEXT:     ]231# ELF-LLVM-NEXT:     Alignment: 1232# ELF-LLVM-NEXT:   }233# ELF-LLVM-NEXT:   ProgramHeader {234# ELF-LLVM-NEXT:     Type: Unknown (0x60000000)235# ELF32-LLVM-NEXT:   Offset: 0x374236# ELF64-LLVM-NEXT:   Offset: 0x5F0237# ELF-LLVM-NEXT:     VirtualAddress: 0x1000238# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000239# ELF-LLVM-NEXT:     FileSize: 3240# ELF-LLVM-NEXT:     MemSize: 3241# ELF-LLVM-NEXT:     Flags [ (0x0)242# ELF-LLVM-NEXT:     ]243# ELF-LLVM-NEXT:     Alignment: 1244# ELF-LLVM-NEXT:   }245# ELF-LLVM-NEXT:   ProgramHeader {246# ELF-LLVM-NEXT:     Type: PT_GNU_EH_FRAME (0x6474E550)247# ELF32-LLVM-NEXT:   Offset: 0x374248# ELF64-LLVM-NEXT:   Offset: 0x5F0249# ELF-LLVM-NEXT:     VirtualAddress: 0x1000250# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000251# ELF-LLVM-NEXT:     FileSize: 3252# ELF-LLVM-NEXT:     MemSize: 3253# ELF-LLVM-NEXT:     Flags [ (0x0)254# ELF-LLVM-NEXT:     ]255# ELF-LLVM-NEXT:     Alignment: 1256# ELF-LLVM-NEXT:   }257# ELF-LLVM-NEXT:   ProgramHeader {258# ELF-LLVM-NEXT:     Type: PT_SUNW_UNWIND (0x6464E550)259# ELF32-LLVM-NEXT:   Offset: 0x374260# ELF64-LLVM-NEXT:   Offset: 0x5F0261# ELF-LLVM-NEXT:     VirtualAddress: 0x1000262# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000263# ELF-LLVM-NEXT:     FileSize: 3264# ELF-LLVM-NEXT:     MemSize: 3265# ELF-LLVM-NEXT:     Flags [ (0x0)266# ELF-LLVM-NEXT:     ]267# ELF-LLVM-NEXT:     Alignment: 1268# ELF-LLVM-NEXT:   }269# ELF-LLVM-NEXT:   ProgramHeader {270# ELF-LLVM-NEXT:     Type: PT_GNU_STACK (0x6474E551)271# ELF32-LLVM-NEXT:   Offset: 0x374272# ELF64-LLVM-NEXT:   Offset: 0x5F0273# ELF-LLVM-NEXT:     VirtualAddress: 0x1000274# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000275# ELF-LLVM-NEXT:     FileSize: 3276# ELF-LLVM-NEXT:     MemSize: 3277# ELF-LLVM-NEXT:     Flags [ (0x0)278# ELF-LLVM-NEXT:     ]279# ELF-LLVM-NEXT:     Alignment: 1280# ELF-LLVM-NEXT:   }281# ELF-LLVM-NEXT:   ProgramHeader {282# ELF-LLVM-NEXT:     Type: PT_GNU_RELRO (0x6474E552)283# ELF32-LLVM-NEXT:   Offset: 0x374284# ELF64-LLVM-NEXT:   Offset: 0x5F0285# ELF-LLVM-NEXT:     VirtualAddress: 0x1000286# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000287# ELF-LLVM-NEXT:     FileSize: 3288# ELF-LLVM-NEXT:     MemSize: 3289# ELF-LLVM-NEXT:     Flags [ (0x0)290# ELF-LLVM-NEXT:     ]291# ELF-LLVM-NEXT:     Alignment: 1292# ELF-LLVM-NEXT:   }293# ELF-LLVM-NEXT:   ProgramHeader {294# ELF-LLVM-NEXT:     Type: PT_GNU_PROPERTY (0x6474E553)295# ELF32-LLVM-NEXT:   Offset: 0x374296# ELF64-LLVM-NEXT:   Offset: 0x5F0297# ELF-LLVM-NEXT:     VirtualAddress: 0x1000298# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000299# ELF-LLVM-NEXT:     FileSize: 3300# ELF-LLVM-NEXT:     MemSize: 3301# ELF-LLVM-NEXT:     Flags [ (0x0)302# ELF-LLVM-NEXT:     ]303# ELF-LLVM-NEXT:     Alignment: 1304# ELF-LLVM-NEXT:   }305# ELF-LLVM-NEXT:   ProgramHeader {306# ELF-LLVM-NEXT:     Type: PT_OPENBSD_MUTABLE (0x65A3DBE5)307# ELF32-LLVM-NEXT:   Offset: 0x374308# ELF64-LLVM-NEXT:   Offset: 0x5F0309# ELF-LLVM-NEXT:     VirtualAddress: 0x1000310# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000311# ELF-LLVM-NEXT:     FileSize: 3312# ELF-LLVM-NEXT:     MemSize: 3313# ELF-LLVM-NEXT:     Flags [ (0x0)314# ELF-LLVM-NEXT:     ]315# ELF-LLVM-NEXT:     Alignment: 1316# ELF-LLVM-NEXT:   }317# ELF-LLVM-NEXT:   ProgramHeader {318# ELF-LLVM-NEXT:     Type: PT_OPENBSD_RANDOMIZE (0x65A3DBE6)319# ELF32-LLVM-NEXT:   Offset: 0x374320# ELF64-LLVM-NEXT:   Offset: 0x5F0321# ELF-LLVM-NEXT:     VirtualAddress: 0x1000322# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000323# ELF-LLVM-NEXT:     FileSize: 3324# ELF-LLVM-NEXT:     MemSize: 3325# ELF-LLVM-NEXT:     Flags [ (0x0)326# ELF-LLVM-NEXT:     ]327# ELF-LLVM-NEXT:     Alignment: 1328# ELF-LLVM-NEXT:   }329# ELF-LLVM-NEXT:   ProgramHeader {330# ELF-LLVM-NEXT:     Type: PT_OPENBSD_WXNEEDED (0x65A3DBE7)331# ELF32-LLVM-NEXT:   Offset: 0x374332# ELF64-LLVM-NEXT:   Offset: 0x5F0333# ELF-LLVM-NEXT:     VirtualAddress: 0x1000334# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000335# ELF-LLVM-NEXT:     FileSize: 3336# ELF-LLVM-NEXT:     MemSize: 3337# ELF-LLVM-NEXT:     Flags [ (0x0)338# ELF-LLVM-NEXT:     ]339# ELF-LLVM-NEXT:     Alignment: 1340# ELF-LLVM-NEXT:   }341# ELF-LLVM-NEXT:   ProgramHeader {342# ELF-LLVM-NEXT:     Type: PT_OPENBSD_NOBTCFI (0x65A3DBE8)343# ELF32-LLVM-NEXT:   Offset: 0x374344# ELF64-LLVM-NEXT:   Offset: 0x5F0345# ELF-LLVM-NEXT:     VirtualAddress: 0x1000346# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000347# ELF-LLVM-NEXT:     FileSize: 3348# ELF-LLVM-NEXT:     MemSize: 3349# ELF-LLVM-NEXT:     Flags [ (0x0)350# ELF-LLVM-NEXT:     ]351# ELF-LLVM-NEXT:     Alignment: 1352# ELF-LLVM-NEXT:   }353# ELF-LLVM-NEXT:   ProgramHeader {354# ELF-LLVM-NEXT:     Type: PT_OPENBSD_SYSCALLS (0x65A3DBE9)355# ELF32-LLVM-NEXT:   Offset: 0x374356# ELF64-LLVM-NEXT:   Offset: 0x5F0357# ELF-LLVM-NEXT:     VirtualAddress: 0x1000358# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000359# ELF-LLVM-NEXT:     FileSize: 3360# ELF-LLVM-NEXT:     MemSize: 3361# ELF-LLVM-NEXT:     Flags [ (0x0)362# ELF-LLVM-NEXT:     ]363# ELF-LLVM-NEXT:     Alignment: 1364# ELF-LLVM-NEXT:   }365# ELF-LLVM-NEXT:   ProgramHeader {366# ELF-LLVM-NEXT:     Type: PT_OPENBSD_BOOTDATA (0x65A41BE6)367# ELF32-LLVM-NEXT:   Offset: 0x374368# ELF64-LLVM-NEXT:   Offset: 0x5F0369# ELF-LLVM-NEXT:     VirtualAddress: 0x1000370# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000371# ELF-LLVM-NEXT:     FileSize: 3372# ELF-LLVM-NEXT:     MemSize: 3373# ELF-LLVM-NEXT:     Flags [ (0x0)374# ELF-LLVM-NEXT:     ]375# ELF-LLVM-NEXT:     Alignment: 1376# ELF-LLVM-NEXT:   }377# ELF-LLVM-NEXT:   ProgramHeader {378# ELF-LLVM-NEXT:     Type: Unknown (0x6FFFFFFF)379# ELF32-LLVM-NEXT:   Offset: 0x374380# ELF64-LLVM-NEXT:   Offset: 0x5F0381# ELF-LLVM-NEXT:     VirtualAddress: 0x1000382# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000383# ELF-LLVM-NEXT:     FileSize: 3384# ELF-LLVM-NEXT:     MemSize: 3385# ELF-LLVM-NEXT:     Flags [ (0x0)386# ELF-LLVM-NEXT:     ]387# ELF-LLVM-NEXT:     Alignment: 1388# ELF-LLVM-NEXT:   }389# ELF-LLVM-NEXT:   ProgramHeader {390# ELF-LLVM-NEXT:     Type: Unknown (0x70000000)391# ELF32-LLVM-NEXT:   Offset: 0x374392# ELF64-LLVM-NEXT:   Offset: 0x5F0393# ELF-LLVM-NEXT:     VirtualAddress: 0x1000394# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000395# ELF-LLVM-NEXT:     FileSize: 3396# ELF-LLVM-NEXT:     MemSize: 3397# ELF-LLVM-NEXT:     Flags [ (0x0)398# ELF-LLVM-NEXT:     ]399# ELF-LLVM-NEXT:     Alignment: 1400# ELF-LLVM-NEXT:   }401# ELF-LLVM-NEXT:   ProgramHeader {402# ELF-LLVM-NEXT:     Type: Unknown (0x70000001)403# ELF32-LLVM-NEXT:   Offset: 0x374404# ELF64-LLVM-NEXT:   Offset: 0x5F0405# ELF-LLVM-NEXT:     VirtualAddress: 0x1000406# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000407# ELF-LLVM-NEXT:     FileSize: 3408# ELF-LLVM-NEXT:     MemSize: 3409# ELF-LLVM-NEXT:     Flags [ (0x0)410# ELF-LLVM-NEXT:     ]411# ELF-LLVM-NEXT:     Alignment: 1412# ELF-LLVM-NEXT:   }413# ELF-LLVM-NEXT:   ProgramHeader {414# ELF-LLVM-NEXT:     Type: Unknown (0x70000002)415# ELF32-LLVM-NEXT:   Offset: 0x374416# ELF64-LLVM-NEXT:   Offset: 0x5F0417# ELF-LLVM-NEXT:     VirtualAddress: 0x1000418# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000419# ELF-LLVM-NEXT:     FileSize: 3420# ELF-LLVM-NEXT:     MemSize: 3421# ELF-LLVM-NEXT:     Flags [ (0x0)422# ELF-LLVM-NEXT:     ]423# ELF-LLVM-NEXT:     Alignment: 1424# ELF-LLVM-NEXT:   }425# ELF-LLVM-NEXT:   ProgramHeader {426# ELF-LLVM-NEXT:     Type: Unknown (0x70000003)427# ELF32-LLVM-NEXT:   Offset: 0x374428# ELF64-LLVM-NEXT:   Offset: 0x5F0429# ELF-LLVM-NEXT:     VirtualAddress: 0x1000430# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000431# ELF-LLVM-NEXT:     FileSize: 3432# ELF-LLVM-NEXT:     MemSize: 3433# ELF-LLVM-NEXT:     Flags [ (0x0)434# ELF-LLVM-NEXT:     ]435# ELF-LLVM-NEXT:     Alignment: 1436# ELF-LLVM-NEXT:   }437# ELF-LLVM-NEXT:   ProgramHeader {438# ELF-LLVM-NEXT:     Type: Unknown (0x7FFFFFFF)439# ELF32-LLVM-NEXT:   Offset: 0x374440# ELF64-LLVM-NEXT:   Offset: 0x5F0441# ELF-LLVM-NEXT:     VirtualAddress: 0x1000442# ELF-LLVM-NEXT:     PhysicalAddress: 0x1000443# ELF-LLVM-NEXT:     FileSize: 3444# ELF-LLVM-NEXT:     MemSize: 3445# ELF-LLVM-NEXT:     Flags [ (0x0)446# ELF-LLVM-NEXT:     ]447# ELF-LLVM-NEXT:     Alignment: 1448# ELF-LLVM-NEXT:   }449# ELF-LLVM-NEXT: ]450 451--- !ELF452FileHeader:453  Class:   ELFCLASS[[BITS]]454  Data:    ELFDATA2LSB455  Type:    ET_EXEC456  Machine: [[MACHINE]]457Sections:458  - Name:    .foo.begin459    Type:    SHT_PROGBITS460    Flags:   [ SHF_ALLOC ]461    Address: 0x1000462    Size:    0x1463  - Name:    .foo.end464    Type:    SHT_PROGBITS465    Flags:   [ SHF_ALLOC ]466    Size:    0x2467  - Name:    .bar.begin468    Type:    SHT_PROGBITS469    Flags:   [ SHF_ALLOC ]470    Address: 0x2000471    Size:    0x3472  - Name:    .bar.end473    Type:    SHT_PROGBITS474    Flags:   [ SHF_ALLOC ]475    Size:    0x4476  - Name:    .interp477    Type:    SHT_PROGBITS478    Flags:   [ SHF_ALLOC ]479    Address: 0x3000480    Content: "41424300" ## "ABC"481  - Name:    .tls482    Type:    SHT_PROGBITS483    Flags:   [ SHF_ALLOC, SHF_TLS ]484    Address: 0x4000485    Size:    0x1486  - Name:    .unused487    Type:    SHT_PROGBITS488    Flags:   [ SHF_ALLOC, SHF_TLS ]489    Address: 0x5000490    Size:    0x1491ProgramHeaders:492## Case 1: an arbitrary segment with sections.493  - Type:     PT_PHDR494    Flags:    [ PF_W ]495    VAddr:    0x1000496    FirstSec: .foo.begin497    LastSec:  .foo.end498## Case 2: another segment with different sections.499  - Type:     PT_PHDR500    Flags:    [ PF_X ]501    VAddr:    0x2000502    FirstSec: .bar.begin503    LastSec:  .bar.end504## Case 3: the PT_NULL segment.505  - Type:     PT_NULL506    Flags:    [ PF_X ]507    VAddr:    0x2000508    FirstSec: .bar.begin509    LastSec:  .bar.end510## Case 4: the PT_DYNAMIC segment.511  - Type:     PT_DYNAMIC512    Flags:    [ PF_R, PF_W, PF_X ]513    VAddr:    0x1000514    FirstSec: .foo.begin515    LastSec:  .foo.end516## Case 5: the PT_INTERP segment.517  - Type:     PT_INTERP518    Flags:    [ PF_R, PF_W ]519    VAddr:    0x3000520    FirstSec: .interp521    LastSec:  .interp522## Case 6: the PT_NOTE segment.523  - Type:     PT_NOTE524    VAddr:    0x1000525    FirstSec: .foo.begin526    LastSec:  .foo.end527## Case 7: the PT_SHLIB segment.528  - Type:     PT_SHLIB529    VAddr:    0x1000530    FirstSec: .foo.begin531    LastSec:  .foo.begin532## Case 8: the PT_TLS segment.533  - Type:     PT_TLS534    VAddr:    0x4000535    FirstSec: .tls536    LastSec:  .tls537## Case 9: the PT_LOOS segment.538  - Type:     0x60000000 ## PT_LOOS539    VAddr:    0x1000540    FirstSec: .foo.begin541    LastSec:  .foo.end542## Case 10: the PT_GNU_EH_FRAME segment.543  - Type:     PT_GNU_EH_FRAME544    VAddr:    0x1000545    FirstSec: .foo.begin546    LastSec:  .foo.end547## Case 11: the PT_SUNW_UNWIND segment.548  - Type:     0x6464e550 ## PT_SUNW_UNWIND549    VAddr:    0x1000550    FirstSec: .foo.begin551    LastSec:  .foo.end552## Case 12: the PT_GNU_STACK segment.553  - Type:     PT_GNU_STACK554    VAddr:    0x1000555    FirstSec: .foo.begin556    LastSec:  .foo.end557## Case 13: the PT_GNU_RELRO segment.558  - Type:     PT_GNU_RELRO559    VAddr:    0x1000560    FirstSec: .foo.begin561    LastSec:  .foo.end562## Case 14: the PT_GNU_PROPERTY segment.563  - Type:     PT_GNU_PROPERTY564    VAddr:    0x1000565    FirstSec: .foo.begin566    LastSec:  .foo.end567## Case 15: the PT_OPENBSD_MUTABLE segment.568  - Type:     0x65a3dbe5 ## PT_OPENBSD_MUTABLE569    VAddr:    0x1000570    FirstSec: .foo.begin571    LastSec:  .foo.end572## Case 16: the PT_OPENBSD_RANDOMIZE segment.573  - Type:     0x65a3dbe6 ## PT_OPENBSD_RANDOMIZE574    VAddr:    0x1000575    FirstSec: .foo.begin576    LastSec:  .foo.end577## Case 17: the PT_OPENBSD_WXNEEDED segment.578  - Type:     0x65a3dbe7 ## PT_OPENBSD_WXNEEDED579    VAddr:    0x1000580    FirstSec: .foo.begin581    LastSec:  .foo.end582## Case 18: the PT_OPENBSD_NOBTCFI segment.583  - Type:     0x65a3dbe8 ## PT_OPENBSD_NOBTCFI584    VAddr:    0x1000585    FirstSec: .foo.begin586    LastSec:  .foo.end587## Case 19: the PT_OPENBSD_SYSCALLS segment.588  - Type:     0x65a3dbe9 ## PT_OPENBSD_SYSCALLS589    VAddr:    0x1000590    FirstSec: .foo.begin591    LastSec:  .foo.end592## Case 20: the PT_OPENBSD_BOOTDATA segment.593  - Type:     0x65a41be6 ## PT_OPENBSD_BOOTDATA594    VAddr:    0x1000595    FirstSec: .foo.begin596    LastSec:  .foo.end597## Case 21: the PT_HIOS segment.598  - Type:     0x6fffffff ## PT_HIOS599    VAddr:    0x1000600    FirstSec: .foo.begin601    LastSec:  .foo.end602## Case 22: the PT_LOPROC/PT_ARM_ARCHEXT/PT_MIPS_REGINFO segment.603  - Type:     0x70000000 ## PT_LOPROC/PT_ARM_ARCHEXT/PT_MIPS_REGINFO604    VAddr:    0x1000605    FirstSec: .foo.begin606    LastSec:  .foo.end607## Case 23: the PT_ARM_EXIDX/PT_MIPS_RTPROC segment.608  - Type:     0x70000001 ## PT_ARM_EXIDX, PT_MIPS_RTPROC609    VAddr:    0x1000610    FirstSec: .foo.begin611    LastSec:  .foo.end612## Case 24: the PT_MIPS_OPTIONS segment.613  - Type:     0x70000002 ## PT_MIPS_OPTIONS614    VAddr:    0x1000615    FirstSec: .foo.begin616    LastSec:  .foo.end617## Case 25: the PT_MIPS_ABIFLAGS/PT_RISCV_ATTRIBUTES segment.618  - Type:     0x70000003 ## PT_MIPS_ABIFLAGS/PT_RISCV_ATTRIBUTES619    VAddr:    0x1000620    FirstSec: .foo.begin621    LastSec:  .foo.end622## Case 26: the PT_HIPROC segment.623  - Type:     0x7fffffff ## PT_HIPROC624    VAddr:    0x1000625    FirstSec: .foo.begin626    LastSec: .foo.end627 628## Check how we dump ARM specific program headers.629# RUN: yaml2obj --docnum=1 -DBITS=64 -DMACHINE=EM_ARM %s -o %tarm.elf630# RUN: llvm-readelf --program-headers %tarm.elf | FileCheck %s --check-prefix=ARM-GNU631# RUN: llvm-readobj --program-headers %tarm.elf | FileCheck %s --check-prefix=ARM-LLVM632 633# ARM-GNU:      <unknown>: 0x70000000 0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003 0x1634# ARM-GNU-NEXT:            EXIDX      0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003 0x1635# ARM-GNU-NEXT: <unknown>: 0x70000002 0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003 0x1636 637# ARM-LLVM:      ProgramHeader {638# ARM-LLVM:        Type: Unknown (0x70000000)639# ARM-LLVM:      ProgramHeader {640# ARM-LLVM-NEXT:   Type: PT_ARM_EXIDX (0x70000001)641# ARM-LLVM:      ProgramHeader {642# ARM-LLVM-NEXT:   Type: Unknown (0x70000002)643 644## Check how we dump MIPS specific program headers.645# RUN: yaml2obj --docnum=1 -DBITS=64 -DMACHINE=EM_MIPS %s -o %tmips.elf646# RUN: llvm-readelf --program-headers %tmips.elf | FileCheck %s --check-prefix=MIPS-GNU647# RUN: llvm-readobj --program-headers %tmips.elf | FileCheck %s --check-prefix=MIPS-LLVM648 649# MIPS-GNU:      REGINFO  0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003 0x1650# MIPS-GNU-NEXT: RTPROC   0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003 0x1651# MIPS-GNU-NEXT: OPTIONS  0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003 0x1652# MIPS-GNU-NEXT: ABIFLAGS 0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003 0x1653 654# MIPS-LLVM:      ProgramHeader {655# MIPS-LLVM:        Type: PT_MIPS_REGINFO (0x70000000)656# MIPS-LLVM:      ProgramHeader {657# MIPS-LLVM-NEXT:   Type: PT_MIPS_RTPROC (0x70000001)658# MIPS-LLVM:      ProgramHeader {659# MIPS-LLVM-NEXT:   Type: PT_MIPS_OPTIONS (0x70000002)660# MIPS-LLVM:      ProgramHeader {661# MIPS-LLVM-NEXT:   Type: PT_MIPS_ABIFLAGS (0x70000003)662 663## CHECK how we dump RISCV specific program headers.664# RUN: yaml2obj --docnum=1 -DBITS=64 -DMACHINE=EM_RISCV %s -o %triscv.elf665# RUN: llvm-readelf --program-headers %triscv.elf | FileCheck %s --check-prefix=RISCV-GNU666# RUN: llvm-readobj --program-headers %triscv.elf | FileCheck %s --check-prefix=RISCV-LLVM667 668# RISCV-GNU:       ATTRIBUTES  0x0005f0 0x0000000000001000 0x0000000000001000 0x000003 0x000003 0x1669# RISCV-LLVM:      ProgramHeader {670# RISCV-LLVM:        Type: PT_RISCV_ATTRIBUTES (0x70000003)671 672## Check that llvm-readelf reports a warning when a program interpreter673## name is non-null-terminated or when PT_INTERP has an offset that674## goes past the end of the file.675# RUN: yaml2obj --docnum=2 %s -o %t.err676 677## Show the size of the output produced. It is used in the YAML below.678# RUN: wc -c < %t.err | FileCheck %s --check-prefix=SIZE679# SIZE: 616680 681## Write the additional 'C', '\0, 'C' bytes to the end.682# RUN: echo -n -e "C\x00C" >> %t.err683 684# RUN: llvm-readelf --program-headers %t.err 2>&1 | \685# RUN:   FileCheck %s -DFILE=%t.err --check-prefix=ERROR-INTERP --implicit-check-not=warning:686 687# ERROR-INTERP:      Type           Offset688# ERROR-INTERP-NEXT: INTERP         0x000[[#%x,OFFSET:0x268]]689# ERROR-INTERP-NEXT:     [Requesting program interpreter: C]690# ERROR-INTERP-NEXT: INTERP         0x000[[#OFFSET + 1]]691# ERROR-INTERP-NEXT:     [Requesting program interpreter: ]692# ERROR-INTERP-NEXT: INTERP         0x000[[#OFFSET + 2]]693# ERROR-INTERP-NEXT: warning: '[[FILE]]': unable to read program interpreter name at offset 0x[[#OFFSET+2]]: it is not null-terminated694# ERROR-INTERP-NEXT: INTERP         0x000[[#OFFSET + 3]]695# ERROR-INTERP-NEXT: warning: '[[FILE]]': unable to read program interpreter name at offset 0x[[#OFFSET+3]]: it goes past the end of the file (0x[[#OFFSET + 3]])696# ERROR-INTERP-NEXT: INTERP         0xaabbccddeeff1122697# ERROR-INTERP-NEXT: warning: '[[FILE]]': unable to read program interpreter name at offset 0xaabbccddeeff1122: it goes past the end of the file (0x[[#OFFSET + 3]])698# ERROR-INTERP-NEXT: INTERP         0xaabbccddeeff1122699 700--- !ELF701FileHeader:702  Class: ELFCLASS64703  Data:  ELFDATA2LSB704  Type:  ET_EXEC705ProgramHeaders:706## Case 1: the offset points to the first additional byte.707  - Type:   PT_INTERP708    Offset: 616709## Case 1: the offset points to the second additional byte,710##         which is a null byte.711  - Type:   PT_INTERP712    Offset: 617713## Case 3: the offset points to the third additional714##         byte, which is the last byte in the file.715  - Type:   PT_INTERP716    Offset: 618717## Case 4: the offset goes 1 byte past the end of the file.718  - Type:   PT_INTERP719    Offset: 619720## Case 5: an arbitrary large offset that goes past the end of the file.721  - Type:   PT_INTERP722    Offset: 0xAABBCCDDEEFF1122723## Case 6: the same as case 5. Used to demonstrate that we don't report724##         the same warning twice.725  - Type:   PT_INTERP726    Offset: 0xAABBCCDDEEFF1122727 728## Check we report a warning when we are unable to read program headers.729## Case A: the e_phentsize field is invalid.730# RUN: yaml2obj --docnum=3 -DPHENTSIZE=1 %s -o %t.phdr.err731# RUN: llvm-readelf --program-headers %t.phdr.err 2>&1 | \732# RUN:   FileCheck %s -DFILE=%t.phdr.err --check-prefix=WARN-PHENTSIZE-GNU733# RUN: llvm-readobj --program-headers %t.phdr.err 2>&1 | \734# RUN:   FileCheck %s -DFILE=%t.phdr.err --check-prefix=WARN-PHENTSIZE-LLVM735 736# WARN-PHENTSIZE-GNU:      Program Headers:737# WARN-PHENTSIZE-GNU-NEXT:   Type Offset VirtAddr PhysAddr FileSiz  MemSiz Flg Align738# WARN-PHENTSIZE-GNU-NEXT: warning: '[[FILE]]': unable to dump program headers: invalid e_phentsize: 1739# WARN-PHENTSIZE-GNU:      Section to Segment mapping:740# WARN-PHENTSIZE-GNU-NEXT:   Segment Sections...741# WARN-PHENTSIZE-GNU-NEXT: warning: '[[FILE]]': can't read program headers to build section to segment mapping: invalid e_phentsize: 1742 743# WARN-PHENTSIZE-LLVM:      ProgramHeaders [744# WARN-PHENTSIZE-LLVM-NEXT: warning: '[[FILE]]': unable to dump program headers: invalid e_phentsize: 1745# WARN-PHENTSIZE-LLVM-NEXT: ]746 747--- !ELF748FileHeader:749  Class:      ELFCLASS64750  Data:       ELFDATA2LSB751  Type:       ET_EXEC752  EPhEntSize: [[PHENTSIZE=<none>]]753  EPhOff:     [[PHOFF=<none>]]754Sections:755  - Name: .foo756    Type: SHT_PROGBITS757ProgramHeaders:758  - Type:     PT_PHDR759    FirstSec: .foo760    LastSec:  .foo761 762## Case B: the value of the e_phoff field is invalid.763 764## Check that we do not report a warning when the program header table ends right before the end of the file.765## 0x160 + size of headers (56) == file size.766# RUN: yaml2obj --docnum=3 -DPHOFF=0x160 %s -o %t.phdr.no.err2767# RUN: llvm-readelf %t.phdr.no.err2 --program-headers 2>&1 | FileCheck %s --implicit-check-not=warning:768# RUN: llvm-readobj %t.phdr.no.err2 --program-headers 2>&1 | FileCheck %s --implicit-check-not=warning:769 770## Check we report a warning when e_phoff goes 1 byte past the end of the file.771# RUN: yaml2obj --docnum=3 -DPHOFF=0x161 %s -o %t.phdr.err2772# RUN: llvm-readelf --program-headers %t.phdr.err2 2>&1 | \773# RUN:   FileCheck %s -DFILE=%t.phdr.err2 --check-prefix=WARN-PHOFF-GNU -DOFF=0x161774# RUN: llvm-readobj --program-headers %t.phdr.err2 2>&1 | \775# RUN:   FileCheck %s -DFILE=%t.phdr.err2 --check-prefix=WARN-PHOFF-LLVM -DOFF=0x161776 777# WARN-PHOFF-GNU:      Program Headers:778# WARN-PHOFF-GNU-NEXT:   Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align779# WARN-PHOFF-GNU-NEXT: warning: '[[FILE]]': unable to dump program headers: program headers are longer than binary of size 408: e_phoff = [[OFF]], e_phnum = 1, e_phentsize = 56780# WARN-PHOFF-GNU:      Section to Segment mapping:781# WARN-PHOFF-GNU-NEXT:   Segment Sections...782# WARN-PHOFF-GNU-NEXT: warning: '[[FILE]]': can't read program headers to build section to segment mapping: program headers are longer than binary of size 408: e_phoff = [[OFF]], e_phnum = 1, e_phentsize = 56783 784# WARN-PHOFF-LLVM:      ProgramHeaders [785# WARN-PHOFF-LLVM-NEXT: warning: '[[FILE]]': unable to dump program headers: program headers are longer than binary of size 408: e_phoff = [[OFF]], e_phnum = 1, e_phentsize = 56786# WARN-PHOFF-LLVM-NEXT: ]787 788## Check we report a warning when the value of e_phoff is so large that789## e_phoff + e_phnum * e_phentsize > UINT64_MAX.790# RUN: yaml2obj --docnum=3 -DPHOFF=0xffffffffffffffff %s -o %t.phdr.err3791# RUN: llvm-readelf --program-headers %t.phdr.err3 2>&1 | \792# RUN:   FileCheck %s -DFILE=%t.phdr.err3 --check-prefix=WARN-PHOFF-GNU -DOFF=0xffffffffffffffff793# RUN: llvm-readobj --program-headers %t.phdr.err3 2>&1 | \794# RUN:   FileCheck %s -DFILE=%t.phdr.err3 --check-prefix=WARN-PHOFF-LLVM -DOFF=0xffffffffffffffff795