Skip to content

Commit

Permalink
COFF: handle "undef - ." expressions.
Browse files Browse the repository at this point in the history
This is another thing that the ELF implementation can do but is
missing from COFF.

llvm-svn: 306078
  • Loading branch information
espindola committed Jun 23, 2017
1 parent b2bbd9c commit 34e94a8
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 17 deletions.
11 changes: 0 additions & 11 deletions llvm/lib/MC/WinCOFFObjectWriter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -746,17 +746,6 @@ void WinCOFFObjectWriter::recordRelocation(
return;
}

if (!A.getFragment()) {
Asm.getContext().reportError(
Fixup.getLoc(),
Twine("symbol '") + A.getName() +
"' can not be undefined in a subtraction expression");
return;
}

assert(&A.getSection() != &B->getSection() &&
"This doesn't need a relocation");

// Offset of the symbol in the section
int64_t OffsetOfB = Layout.getSymbolOffset(*B);

Expand Down
2 changes: 0 additions & 2 deletions llvm/test/MC/COFF/bad-expr.s
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
// RUN: not llvm-mc -filetype=obj -triple i386-pc-win32 %s 2>&1 | FileCheck %s

// CHECK: symbol '__ImageBase' can not be undefined in a subtraction expression
// CHECK: symbol '__ImageBase' can not be undefined in a subtraction expression

.data
_x:
.long _x-__ImageBase
.long __ImageBase-_x
14 changes: 10 additions & 4 deletions llvm/test/MC/COFF/cross-section-relative.s
Original file line number Diff line number Diff line change
Expand Up @@ -58,17 +58,18 @@ t6:
.long g3-(t6+16)
.zero 4

.long foobar - .

// READOBJ: Section {
// READOBJ: Number: 5
// READOBJ: Name: .fix (2E 66 69 78 00 00 00 00)
// READOBJ: VirtualSize: 0x0
// READOBJ: VirtualAddress: 0x0
// READOBJ: RawDataSize: 56
// READOBJ: RawDataSize:
// READOBJ: PointerToRawData: 0xEC
// READOBJ: PointerToRelocations: 0x124
// READOBJ: PointerToRelocations:
// READOBJ: PointerToLineNumbers: 0x0
// READOBJ: RelocationCount: 6
// READOBJ: RelocationCount:
// READOBJ: LineNumberCount: 0
// READOBJ: Characteristics [ (0xC0500040)
// READOBJ: IMAGE_SCN_ALIGN_16BYTES (0x500000)
Expand All @@ -80,7 +81,7 @@ t6:
// READOBJ: 0000: 08000000 00000000 04000000 00000000 |................|
// READOBJ: 0010: 00000000 00000000 04000000 00000000 |................|
// READOBJ: 0020: 01020000 00000000 00010000 00000000 |................|
// READOBJ: 0030: 04000000 00000000 |........|
// READOBJ: 0030: 04000000 00000000 04000000 |............|
// READOBJ: )
// READOBJ: }
// READOBJ: ]
Expand Down Expand Up @@ -116,3 +117,8 @@ t6:
// READOBJ: Type: IMAGE_REL_AMD64_REL32 (4)
// READOBJ: Symbol: g3
// READOBJ: }
// READOBJ: Relocation {
// READOBJ: Offset: 0x38
// READOBJ: Type: IMAGE_REL_AMD64_REL32 (4)
// READOBJ: Symbol: foobar
// READOBJ: }

0 comments on commit 34e94a8

Please sign in to comment.