mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-24 05:23:45 +02:00
34f7950ebf
* Section association cannot use just the section name as many sections can have the same name. With this patch, the comdat symbol in an assoc section is interpreted to mean a symbol in the associated section and the mapping is discovered from it. * Comdat symbols were not being set correctly. Instead we were getting whatever was output first for that section. A consequence is that associative sections now must use .section to set the association. Using .linkonce would not work since it is not possible to change a sections comdat symbol (it is used to decide if we should create a new section or reuse an existing one). This includes r210298, which was reverted because it was asserting on an associated section having the same comdat as the associated section. llvm-svn: 210367
192 lines
4.4 KiB
ArmAsm
192 lines
4.4 KiB
ArmAsm
// RUN: llvm-mc -triple i386-pc-win32 -filetype=obj %s | llvm-readobj -s -t | FileCheck %s
|
|
// RUN: llvm-mc -triple x86_64-pc-win32 -filetype=obj %s | llvm-readobj -s -t | FileCheck %s
|
|
|
|
.section assocSec, "dr", discard, "assocSym"
|
|
.long 1
|
|
|
|
.section secName, "dr", discard, "Symbol1"
|
|
.globl Symbol1
|
|
Symbol1:
|
|
.long 1
|
|
|
|
.section secName, "dr", one_only, "Symbol2"
|
|
.globl Symbol2
|
|
Symbol2:
|
|
.long 1
|
|
|
|
.section SecName, "dr", same_size, "Symbol3"
|
|
.globl Symbol3
|
|
Symbol3:
|
|
.long 1
|
|
|
|
.section SecName, "dr", same_contents, "Symbol4"
|
|
.globl Symbol4
|
|
Symbol4:
|
|
.long 1
|
|
|
|
.section SecName, "dr", associative, "assocSym"
|
|
.globl Symbol5
|
|
Symbol5:
|
|
.long 1
|
|
|
|
.section SecName, "dr", largest, "Symbol6"
|
|
.globl Symbol6
|
|
Symbol6:
|
|
.long 1
|
|
|
|
.section SecName, "dr", newest, "Symbol7"
|
|
.globl Symbol7
|
|
Symbol7:
|
|
.long 1
|
|
|
|
// CHECK: Sections [
|
|
// CHECK: Section {
|
|
// CHECK: Number: 1
|
|
// CHECK: Name: assocSec
|
|
// CHECK: Characteristics [
|
|
// CHECK: IMAGE_SCN_LNK_COMDAT
|
|
// CHECK: ]
|
|
// CHECK: }
|
|
// CHECK: Section {
|
|
// CHECK: Number: 2
|
|
// CHECK: Name: secName
|
|
// CHECK: Characteristics [
|
|
// CHECK: IMAGE_SCN_LNK_COMDAT
|
|
// CHECK: ]
|
|
// CHECK: }
|
|
// CHECK: Section {
|
|
// CHECK: Number: 3
|
|
// CHECK: Name: secName
|
|
// CHECK: Characteristics [
|
|
// CHECK: IMAGE_SCN_LNK_COMDAT
|
|
// CHECK: ]
|
|
// CHECK: }
|
|
// CHECK: Section {
|
|
// CHECK: Number: 4
|
|
// CHECK: Name: SecName
|
|
// CHECK: Characteristics [
|
|
// CHECK: IMAGE_SCN_LNK_COMDAT
|
|
// CHECK: ]
|
|
// CHECK: }
|
|
// CHECK: Section {
|
|
// CHECK: Number: 5
|
|
// CHECK: Name: SecName
|
|
// CHECK: Characteristics [
|
|
// CHECK: IMAGE_SCN_LNK_COMDAT
|
|
// CHECK: ]
|
|
// CHECK: }
|
|
// CHECK: Section {
|
|
// CHECK: Number: 6
|
|
// CHECK: Name: SecName
|
|
// CHECK: Characteristics [
|
|
// CHECK: IMAGE_SCN_LNK_COMDAT
|
|
// CHECK: ]
|
|
// CHECK: }
|
|
// CHECK: Section {
|
|
// CHECK: Number: 7
|
|
// CHECK: Name: SecName
|
|
// CHECK: Characteristics [
|
|
// CHECK: IMAGE_SCN_LNK_COMDAT
|
|
// CHECK: ]
|
|
// CHECK: }
|
|
// CHECK: Section {
|
|
// CHECK: Number: 8
|
|
// CHECK: Name: SecName
|
|
// CHECK: Characteristics [
|
|
// CHECK: IMAGE_SCN_LNK_COMDAT
|
|
// CHECK: ]
|
|
// CHECK: }
|
|
// CHECK: ]
|
|
// CHECK: Symbols [
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: assocSec
|
|
// CHECK: Section: assocSec (1)
|
|
// CHECK: AuxSectionDef {
|
|
// CHECK: Selection: Any
|
|
// CHECK: }
|
|
// CHECK: }
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: assocSym
|
|
// CHECK: Section: assocSec
|
|
// CHECK: }
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: secName
|
|
// CHECK: Section: secName (2)
|
|
// CHECK: AuxSectionDef {
|
|
// CHECK: Selection: Any
|
|
// CHECK: }
|
|
// CHECK: }
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: Symbol1
|
|
// CHECK: Section: secName (2)
|
|
// CHECK: }
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: secName
|
|
// CHECK: Section: secName (3)
|
|
// CHECK: AuxSectionDef {
|
|
// CHECK: Selection: NoDuplicates
|
|
// CHECK: }
|
|
// CHECK: }
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: Symbol2
|
|
// CHECK: Section: secName (3)
|
|
// CHECK: }
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: SecName
|
|
// CHECK: Section: SecName (4)
|
|
// CHECK: AuxSectionDef {
|
|
// CHECK: Selection: SameSize
|
|
// CHECK: }
|
|
// CHECK: }
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: Symbol3
|
|
// CHECK: Section: SecName (4)
|
|
// CHECK: }
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: SecName
|
|
// CHECK: Section: SecName (5)
|
|
// CHECK: AuxSymbolCount: 1
|
|
// CHECK: AuxSectionDef {
|
|
// CHECK: Selection: ExactMatch
|
|
// CHECK: }
|
|
// CHECK: }
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: Symbol4
|
|
// CHECK: Section: SecName (5)
|
|
// CHECK: }
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: SecName
|
|
// CHECK: Section: SecName (6)
|
|
// CHECK: AuxSectionDef {
|
|
// CHECK: Selection: Associative
|
|
// CHECK: AssocSection: assocSec (1)
|
|
// CHECK: }
|
|
// CHECK: }
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: SecName
|
|
// CHECK: Section: SecName (7)
|
|
// CHECK: AuxSectionDef {
|
|
// CHECK: Selection: Largest
|
|
// CHECK: }
|
|
// CHECK: }
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: Symbol6
|
|
// CHECK: Section: SecName (7)
|
|
// CHECK: }
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: SecName
|
|
// CHECK: Section: SecName (8)
|
|
// CHECK: AuxSectionDef {
|
|
// CHECK: Selection: Newest (0x7)
|
|
// CHECK: }
|
|
// CHECK: }
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: Symbol7
|
|
// CHECK: Section: SecName (8)
|
|
// CHECK: }
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: Symbol5
|
|
// CHECK: Section: SecName (6)
|
|
// CHECK: }
|
|
// CHECK: ]
|