xref: /llvm-project/llvm/test/tools/llvm-objcopy/COFF/bigobj.test (revision 3f53722347ce4afd68431da471dc19fa047cf7ef)
11be91958SMartin StorsjoRUN: %python %p/../Inputs/ungzip.py %p/Inputs/bigobj.o.gz > %t.in.o
21be91958SMartin Storsjo
31be91958SMartin StorsjoRUN: llvm-objdump -t %t.in.o | FileCheck %s --check-prefixes=SYMBOLS,SYMBOLS-BIG,SYMBOLS-ORIG
41be91958SMartin Storsjo
51be91958SMartin Storsjo# Do a plain copy, to check that section numbers in symbols referring
61be91958SMartin Storsjo# to sections outside of the small object format are handled correctly.
71be91958SMartin StorsjoRUN: llvm-objcopy -R '.text$4' %t.in.o %t.small.o
81be91958SMartin StorsjoRUN: llvm-objdump -t %t.in.o | FileCheck %s --check-prefixes=SYMBOLS,SYMBOLS-BIG,SYMBOLS-ORIG
91be91958SMartin Storsjo
101be91958SMartin Storsjo# Remove a section, making the section count fit into a small object.
111be91958SMartin StorsjoRUN: llvm-objcopy -R '.text$4' %t.in.o %t.small.o
121be91958SMartin StorsjoRUN: llvm-objdump -t %t.small.o | FileCheck %s --check-prefixes=SYMBOLS,SYMBOLS-SMALL,SYMBOLS-REMOVED-SMALL
131be91958SMartin Storsjo
141be91958SMartin Storsjo# Add a .gnu_debuglink section, forcing the object back to big format.
151be91958SMartin StorsjoRUN: llvm-objcopy --add-gnu-debuglink=%t.in.o %t.small.o %t.big.o
16*3f537223SAlexander ShaposhnikovRUN: llvm-objdump -t %t.big.o | FileCheck %s --check-prefixes=SYMBOLS,SYMBOLS-BIG,SYMBOLS-REMOVED-BIG
171be91958SMartin Storsjo
181be91958SMartin Storsjo# In big object format, the .file symbol occupies one symbol table entry for
191be91958SMartin Storsjo# the auxillary data, but needs two entries in the small format, forcing the
201be91958SMartin Storsjo# raw symbol indices of later symbols to change.
211be91958SMartin StorsjoSYMBOLS:            SYMBOL TABLE:
221be91958SMartin StorsjoSYMBOLS-NEXT:       [ 0]{{.*}} (nx 1) {{.*}} .text
231be91958SMartin StorsjoSYMBOLS-NEXT:       AUX scnlen
241be91958SMartin StorsjoSYMBOLS-SMALL-NEXT: [ 2]{{.*}} (nx 2) {{.*}} .file
251be91958SMartin StorsjoSYMBOLS-BIG-NEXT:   [ 2]{{.*}} (nx 1) {{.*}} .file
261be91958SMartin StorsjoSYMBOLS-NEXT:       AUX abcdefghijklmnopqrs
271be91958SMartin StorsjoSYMBOLS-SMALL-NEXT: [ 5]{{.*}} (nx 0) {{.*}} foo
281be91958SMartin StorsjoSYMBOLS-BIG-NEXT:   [ 4]{{.*}} (nx 0) {{.*}} foo
291be91958SMartin Storsjo
301be91958SMartin Storsjo# Check that the section numbers outside of signed 16 bit int range
311be91958SMartin Storsjo# are represented properly. After removing one section, the section
321be91958SMartin Storsjo# numbers decrease.
331be91958SMartin StorsjoSYMBOLS-ORIG:          [ 5](sec 65280){{.*}} symbol65280
341be91958SMartin StorsjoSYMBOLS-REMOVED-SMALL: [ 6](sec 65279){{.*}} symbol65280
351be91958SMartin StorsjoSYMBOLS-REMOVED-BIG:   [ 5](sec 65279){{.*}} symbol65280
36