| ## Test that ECSYMBOLS section is created when ARM64EC is used. |
| |
| # RUN: yaml2obj %s -o %t.arm64ec.obj -DMACHINE=IMAGE_FILE_MACHINE_ARM64EC |
| # RUN: yaml2obj %s -o %t.arm64.obj -DMACHINE=IMAGE_FILE_MACHINE_ARM64 |
| # RUN: yaml2obj %s -o %t.amd64.obj -DMACHINE=IMAGE_FILE_MACHINE_AMD64 |
| |
| ## Create ARM64EC archive. |
| # RUN: rm -f %t*.a |
| # RUN: llvm-ar cr %t1.a %t.arm64ec.obj |
| # RUN: llvm-nm --print-armap %t1.a | FileCheck --check-prefixes=NOMAP,ECMAP %s |
| |
| ## Add ARM64 object to the archive. |
| # RUN: llvm-ar r %t1.a %t.arm64.obj |
| # RUN: llvm-nm --print-armap %t1.a | FileCheck --check-prefixes=MAP,ECMAP %s |
| |
| ## Create ARM64 archive. |
| # RUN: llvm-ar cr %t2.a %t.arm64.obj |
| # RUN: llvm-nm --print-armap %t2.a | FileCheck --check-prefixes=MAP,NOECMAP %s |
| |
| ## Add ARM64EC object to the archive. |
| # RUN: llvm-ar r %t2.a %t.arm64ec.obj |
| # RUN: llvm-nm --print-armap %t2.a | FileCheck --check-prefixes=MAP,ECMAP %s |
| |
| ## Create mixed archive with ARM64 and ARM64EC members. |
| # RUN: llvm-ar cr %t3.a %t.arm64ec.obj %t.arm64.obj |
| # RUN: llvm-nm --print-armap %t3.a | FileCheck --check-prefixes=MAP,ECMAP %s |
| |
| ## Create mixed archive with ARM64 and AMD64 members. |
| # RUN: llvm-ar cr %t4.a %t.amd64.obj %t.arm64.obj |
| # RUN: llvm-nm --print-armap %t4.a | FileCheck --check-prefixes=MAP,AMDECMAP %s |
| |
| ## Create an archive with no symbol table. |
| # RUN: llvm-ar crS %t5.a %t.amd64.obj %t.arm64.obj |
| # RUN: llvm-nm --print-armap %t5.a | FileCheck --check-prefixes=NOMAP,NOECMAP %s |
| |
| # MAP: Archive map |
| # MAP-NEXT: a in ecsymbols.yaml.tmp.arm64.obj |
| # MAP-NEXT: b in ecsymbols.yaml.tmp.arm64.obj |
| # MAP-NEXT: c in ecsymbols.yaml.tmp.arm64.obj |
| # MAP-EMPTY: |
| # NOMAP-NOT: Archive map |
| |
| # ECMAP: Archive EC map |
| # ECMAP-NEXT: a in ecsymbols.yaml.tmp.arm64ec.obj |
| # ECMAP-NEXT: b in ecsymbols.yaml.tmp.arm64ec.obj |
| # ECMAP-NEXT: c in ecsymbols.yaml.tmp.arm64ec.obj |
| # ECMAP-EMPTY: |
| # NOECMAP-NOT: Archive EC map |
| |
| # AMDECMAP: Archive EC map |
| # AMDECMAP-NEXT: a in ecsymbols.yaml.tmp.amd64.obj |
| # AMDECMAP-NEXT: b in ecsymbols.yaml.tmp.amd64.obj |
| # AMDECMAP-NEXT: c in ecsymbols.yaml.tmp.amd64.obj |
| # AMDECMAP-EMPTY: |
| |
| --- !COFF |
| header: |
| Machine: [[MACHINE]] |
| Characteristics: [ ] |
| sections: |
| - Name: .text |
| Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] |
| Alignment: 4 |
| SectionData: '' |
| symbols: |
| - Name: b |
| Value: 0 |
| SectionNumber: 1 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_FUNCTION |
| StorageClass: IMAGE_SYM_CLASS_EXTERNAL |
| - Name: c |
| Value: 0 |
| SectionNumber: 1 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_FUNCTION |
| StorageClass: IMAGE_SYM_CLASS_EXTERNAL |
| - Name: a |
| Value: 0 |
| SectionNumber: 1 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_FUNCTION |
| StorageClass: IMAGE_SYM_CLASS_EXTERNAL |
| ... |