assert(target->hasAttr(r.type, RelocAttrBits::UNSIGNED));
if (r.offset % sizeof(CompactUnwindEntry<Ptr>) == 0) {
- if (auto *referentIsec = r.referent.dyn_cast<InputSection *>())
- if (!cast<ConcatInputSection>(referentIsec)->shouldOmitFromOutput())
- allEntriesAreOmitted = false;
+ InputSection *referentIsec;
+ if (auto *isec = r.referent.dyn_cast<InputSection *>())
+ referentIsec = isec;
+ else
+ referentIsec = cast<Defined>(r.referent.dyn_cast<Symbol *>())->isec;
+
+ if (!cast<ConcatInputSection>(referentIsec)->shouldOmitFromOutput())
+ allEntriesAreOmitted = false;
continue;
}
uint64_t referentVA = TombstoneValue<Ptr>;
if (auto *referentSym = r.referent.dyn_cast<Symbol *>()) {
if (!isa<Undefined>(referentSym)) {
- assert(referentSym->isInGot());
if (auto *defined = dyn_cast<Defined>(referentSym))
checkTextSegment(defined->isec);
// At this point in the link, we may not yet know the final address of
--- /dev/null
+# REQUIRES: x86
+## These yaml files were from an object file produced with 'ld -r', specifically:
+##
+## // foo.s
+## .text
+## .globl _main
+## _main:
+## .cfi_startproc
+## .cfi_def_cfa_offset 16
+## .cfi_endproc
+## nop
+##
+## llvm-mc -filetype=obj -triple=x86_64-apple-macos10.15 -o foo1.o foo.s
+## ld -r -o foo.o foo1.o
+
+
+# RUN: rm -rf %t; mkdir -p %t
+# RUN: yaml2obj %s -o %t/foo.o
+# RUN: %lld -o %t/a.out %t/foo.o
+
+--- !mach-o
+FileHeader:
+ magic: 0xFEEDFACF
+ cputype: 0x01000007
+ cpusubtype: 0x00000003
+ filetype: 0x00000001
+ ncmds: 2
+ sizeofcmds: 384
+ flags: 0x00000000
+ reserved: 0x00000000
+LoadCommands:
+ - cmd: LC_SEGMENT_64
+ cmdsize: 312
+ segname: ''
+ vmaddr: 0
+ vmsize: 64
+ fileoff: 448
+ filesize: 64
+ maxprot: 7
+ initprot: 7
+ nsects: 2
+ flags: 0
+ Sections:
+ - sectname: __text
+ segname: __TEXT
+ addr: 0x0000000000000000
+ size: 1
+ offset: 0x000001C0
+ align: 0
+ reloff: 0x00000000
+ nreloc: 0
+ flags: 0x80000400
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ content: '90'
+ - sectname: __compact_unwind
+ segname: __LD
+ addr: 0x0000000000000020
+ size: 32
+ offset: 0x000001E0
+ align: 3
+ reloff: 0x00000200
+ nreloc: 1
+ flags: 0x02000000
+ reserved1: 0x00000000
+ reserved2: 0x00000000
+ reserved3: 0x00000000
+ content: '0000000000000000010000000000020200000000000000000000000000000000'
+ relocations:
+ - address: 0x00000000
+ symbolnum: 1
+ pcrel: false
+ length: 3
+ extern: true
+ type: 0
+ scattered: false
+ value: 0
+ - cmd: LC_SYMTAB
+ cmdsize: 24
+ symoff: 520
+ nsyms: 2
+ stroff: 552
+ strsize: 24
+LinkEditData:
+ NameList:
+ - n_strx: 8
+ n_type: 0x0E
+ n_sect: 2
+ n_desc: 0
+ n_value: 8
+ - n_strx: 2
+ n_type: 0x0F
+ n_sect: 1
+ n_desc: 32
+ n_value: 0
+ StringTable:
+ - ' '
+ - _main
+
+...