[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