brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.8 KiB · 2b6c12e Raw
190 lines · plain
1## This test verifies that llvm-objcopy can add multiple sections to a Mach-O binary.2 3# RUN: yaml2obj %s -o %t4# RUN: echo -n FOOabcdefg > %t.foo.data5# RUN: echo -n BARabcdefg > %t.bar.data6 7## Case 1: Add a new section twice into an existing segment.8# RUN: llvm-objcopy --add-section __TEXT,__foo=%t.foo.data %t %t.foo.19# RUN: llvm-objcopy --add-section __TEXT,__bar=%t.bar.data %t.foo.1 %t.foo.bar.110# RUN: llvm-readobj --sections --section-data %t.foo.bar.1 \11# RUN:   | FileCheck %s -check-prefix=CASE112 13## Case 2: Add two new sections into an existing segment.14# RUN: llvm-objcopy --add-section __TEXT,__foo=%t.foo.data --add-section __TEXT,__bar=%t.bar.data %t %t.foo.bar.215# RUN: llvm-readobj --sections --section-data %t.foo.bar.2 \16# RUN:   | FileCheck %s -check-prefix=CASE117 18## Case 3: Add two new sections into two different segments.19# RUN: llvm-objcopy --add-section __FOO,__foo=%t.foo.data --add-section __BAR,__bar=%t.bar.data %t %t.foo.bar.320# RUN: llvm-readobj --sections --section-data %t.foo.bar.3 \21# RUN:   | FileCheck %s -check-prefix=CASE322 23--- !mach-o24FileHeader:25  magic:           0xFEEDFACF26  cputype:         0x0100000727  cpusubtype:      0x0000000328  filetype:        0x0000000129  ncmds:           130  sizeofcmds:      15231  flags:           0x0000200032  reserved:        0x0000000033LoadCommands:34  - cmd:             LC_SEGMENT_6435    cmdsize:         15236    segname:         __TEXT37    vmaddr:          038    vmsize:          439    fileoff:         18440    filesize:        441    maxprot:         742    initprot:        743    nsects:          144    flags:           045    Sections:46      - sectname:        __text47        segname:         __TEXT48        addr:            0x000000000000000049        content:         'AABBCCDD'50        size:            451        offset:          18452        align:           053        reloff:          0x0000000054        nreloc:          055        flags:           0x8000040056        reserved1:       0x0000000057        reserved2:       0x0000000058        reserved3:       0x0000000059 60# CASE1:        Sections [61# CASE1-NEXT:    Section {62# CASE1-NEXT:      Index: 063# CASE1-NEXT:      Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00)64# CASE1-NEXT:      Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)65# CASE1-NEXT:      Address: 0x066# CASE1-NEXT:      Size: 0x467# CASE1-NEXT:      Offset: 34468# CASE1-NEXT:      Alignment: 069# CASE1-NEXT:      RelocationOffset: 0x070# CASE1-NEXT:      RelocationCount: 071# CASE1-NEXT:      Type: Regular (0x0)72# CASE1-NEXT:      Attributes [ (0x800004)73# CASE1-NEXT:        PureInstructions (0x800000)74# CASE1-NEXT:        SomeInstructions (0x4)75# CASE1-NEXT:      ]76# CASE1-NEXT:      Reserved1: 0x077# CASE1-NEXT:      Reserved2: 0x078# CASE1-NEXT:      Reserved3: 0x079# CASE1-NEXT:      SectionData (80# CASE1-NEXT:        0000: AABBCCDD                             |....|81# CASE1-NEXT:      )82# CASE1-NEXT:    }83# CASE1-NEXT:    Section {84# CASE1-NEXT:      Index: 185# CASE1-NEXT:      Name: __foo (5F 5F 66 6F 6F 00 00 00 00 00 00 00 00 00 00 00)86# CASE1-NEXT:      Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)87# CASE1-NEXT:      Address: 0x488# CASE1-NEXT:      Size: 0xA89# CASE1-NEXT:      Offset: 34890# CASE1-NEXT:      Alignment: 091# CASE1-NEXT:      RelocationOffset: 0x092# CASE1-NEXT:      RelocationCount: 093# CASE1-NEXT:      Type: Regular (0x0)94# CASE1-NEXT:      Attributes [ (0x0)95# CASE1-NEXT:      ]96# CASE1-NEXT:      Reserved1: 0x097# CASE1-NEXT:      Reserved2: 0x098# CASE1-NEXT:      Reserved3: 0x099# CASE1-NEXT:      SectionData (100# CASE1-NEXT:        0000: 464F4F61 62636465 6667               |FOOabcdefg|101# CASE1-NEXT:      )102# CASE1-NEXT:    }103# CASE1-NEXT:    Section {104# CASE1-NEXT:      Index: 2105# CASE1-NEXT:      Name: __bar (5F 5F 62 61 72 00 00 00 00 00 00 00 00 00 00 00)106# CASE1-NEXT:      Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)107# CASE1-NEXT:      Address: 0xE108# CASE1-NEXT:      Size: 0xA109# CASE1-NEXT:      Offset: 358110# CASE1-NEXT:      Alignment: 0111# CASE1-NEXT:      RelocationOffset: 0x0112# CASE1-NEXT:      RelocationCount: 0113# CASE1-NEXT:      Type: Regular (0x0)114# CASE1-NEXT:      Attributes [ (0x0)115# CASE1-NEXT:      ]116# CASE1-NEXT:      Reserved1: 0x0117# CASE1-NEXT:      Reserved2: 0x0118# CASE1-NEXT:      Reserved3: 0x0119# CASE1-NEXT:      SectionData (120# CASE1-NEXT:        0000: 42415261 62636465 6667               |BARabcdefg|121# CASE1-NEXT:      )122# CASE1-NEXT:    }123# CASE1-NEXT:  ]124 125# CASE3:        Sections [126# CASE3-NEXT:    Section {127# CASE3-NEXT:      Index: 0128# CASE3-NEXT:      Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00)129# CASE3-NEXT:      Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)130# CASE3-NEXT:      Address: 0x0131# CASE3-NEXT:      Size: 0x4132# CASE3-NEXT:      Offset: 488133# CASE3-NEXT:      Alignment: 0134# CASE3-NEXT:      RelocationOffset: 0x0135# CASE3-NEXT:      RelocationCount: 0136# CASE3-NEXT:      Type: Regular (0x0)137# CASE3-NEXT:      Attributes [ (0x800004)138# CASE3-NEXT:        PureInstructions (0x800000)139# CASE3-NEXT:        SomeInstructions (0x4)140# CASE3-NEXT:      ]141# CASE3-NEXT:      Reserved1: 0x0142# CASE3-NEXT:      Reserved2: 0x0143# CASE3-NEXT:      Reserved3: 0x0144# CASE3-NEXT:      SectionData (145# CASE3-NEXT:        0000: AABBCCDD                             |....|146# CASE3-NEXT:      )147# CASE3-NEXT:    }148# CASE3-NEXT:    Section {149# CASE3-NEXT:      Index: 1150# CASE3-NEXT:      Name: __foo (5F 5F 66 6F 6F 00 00 00 00 00 00 00 00 00 00 00)151# CASE3-NEXT:      Segment: __FOO (5F 5F 46 4F 4F 00 00 00 00 00 00 00 00 00 00 00)152# CASE3-NEXT:      Address: 0xB8153# CASE3-NEXT:      Size: 0xA154# CASE3-NEXT:      Offset: 492155# CASE3-NEXT:      Alignment: 0156# CASE3-NEXT:      RelocationOffset: 0x0157# CASE3-NEXT:      RelocationCount: 0158# CASE3-NEXT:      Type: Regular (0x0)159# CASE3-NEXT:      Attributes [ (0x0)160# CASE3-NEXT:      ]161# CASE3-NEXT:      Reserved1: 0x0162# CASE3-NEXT:      Reserved2: 0x0163# CASE3-NEXT:      Reserved3: 0x0164# CASE3-NEXT:      SectionData (165# CASE3-NEXT:        0000: 464F4F61 62636465 6667               |FOOabcdefg|166# CASE3-NEXT:      )167# CASE3-NEXT:    }168# CASE3-NEXT:    Section {169# CASE3-NEXT:      Index: 2170# CASE3-NEXT:      Name: __bar (5F 5F 62 61 72 00 00 00 00 00 00 00 00 00 00 00)171# CASE3-NEXT:      Segment: __BAR (5F 5F 42 41 52 00 00 00 00 00 00 00 00 00 00 00)172# CASE3-NEXT:      Address: 0x40B8173# CASE3-NEXT:      Size: 0xA174# CASE3-NEXT:      Offset: 502175# CASE3-NEXT:      Alignment: 0176# CASE3-NEXT:      RelocationOffset: 0x0177# CASE3-NEXT:      RelocationCount: 0178# CASE3-NEXT:      Type: Regular (0x0)179# CASE3-NEXT:      Attributes [ (0x0)180# CASE3-NEXT:      ]181# CASE3-NEXT:      Reserved1: 0x0182# CASE3-NEXT:      Reserved2: 0x0183# CASE3-NEXT:      Reserved3: 0x0184# CASE3-NEXT:      SectionData (185# CASE3-NEXT:        0000: 42415261 62636465 6667               |BARabcdefg|186# CASE3-NEXT:      )187# CASE3-NEXT:    }188# CASE3-NEXT:  ]189 190