[llvm] [llvm][yaml2obj] Modify section header overriding timing (PR #130942)
James Henderson via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 2 00:26:40 PDT 2025
================
@@ -179,3 +179,34 @@ ProgramHeaders:
# RUN: FileCheck %s --check-prefix=INVALID-OFFSET
# INVALID-OFFSET: yaml2obj: error: 'Offset' for segment with index 1 must be less than or equal to the minimum file offset of all included sections (0x78)
+
+## Document that the "Offset" value should be checked before the section offset is overriden using "ShOffset".
+## And the offset of the first section in a segment should not greater than the offset of the segment.
+# RUN: yaml2obj --docnum=4 %s -o %t5
+# RUN: llvm-readelf %t5 --sections --program-headers | FileCheck %s --check-prefix=SHOFFSET
+
+# SHOFFSET: [Nr] Name Type Address Off
+# SHOFFSET: [ 1] .foo PROGBITS 0000000000000000 0000ff
+
+# SHOFFSET: Type Offset
+# SHOFFSET-NEXT: LOAD 0x000078
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+Sections:
+ - Name: .foo
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC ]
+ Size: 0x1
+## Note: the real .foo offset is much less than 0xFFFFFFFF or
+## 0xFFFFFF00, but no error is reported.
+ ShOffset: 0xFF
+ProgramHeaders:
+ - Type: PT_LOAD
+ Offset: 0x78
+ FirstSec: .foo
+ LastSec: .foo
+
----------------
jh7370 wrote:
Nit: you've got too many blank lines at EOF. The file should end with exactly one "\n".
https://github.com/llvm/llvm-project/pull/130942
More information about the llvm-commits
mailing list