[llvm-branch-commits] [llvm] [llvm-readobj, ELF] Support reading binary with more than PN_XNUM segments. (PR #165278)
James Henderson via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Feb 27 01:13:49 PST 2026
================
@@ -0,0 +1,45 @@
+## When an ELF object has PN_XNUM (0xffff) or more sections, its e_phnum field
+## should be PN_XNUM and sh_info of the section header at index 0 is used
+## to store the value.
+
+# RUN: yaml2obj --docnum=1 %s -o %t1
+# RUN: llvm-readelf --file-headers %t1 | FileCheck %s --check-prefix=VALID-GNU
+## The ELF header should have e_phnum == PN_XNUM
+# VALID-GNU: Number of program headers: 65535 (2)
+# RUN: llvm-readobj --file-headers %t1 | FileCheck %s --check-prefix=VALID-LLVM
+# VALID-LLVM: ProgramHeaderCount: 65535 (2)
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ EPhNum: 65535
+Sections:
+ - Type: SHT_NULL
+ Info: 2
+ProgramHeaders:
+ - Type: PT_LOAD
+ - Type: PT_LOAD
+
+# RUN: yaml2obj --docnum=2 %s -o %t2
+
+# RUN: llvm-readobj --file-headers %t2 2>&1 | FileCheck %s --implicit-check-not=warning: -DFILE=%t2 --check-prefix=INVALID-LLVM
----------------
jh7370 wrote:
Delete the blank line between the yaml2obj and other run lines, to make it clear that this is part of the same test case.
I'd also add a brief comment describing the purpose of the test case (i.e. what you are testing here).
https://github.com/llvm/llvm-project/pull/165278
More information about the llvm-branch-commits
mailing list