> > I'm not sure because my line numbers don't match. If it is this > assert: > > case elfcpp::R_X86_64_TPOFF32: // Local-exec > if (tls_segment == NULL) > { > gold_assert(parameters->errors()->error_count() > 0 > || issue_undefined_symbol_error(gsym)); > return; > } > value -= tls_segment->memsz(); > Relocate_functions<size, false>::rela32(view, value, addend); > break;
I looked it up and it was the place I got ICE, too. > > then the problem is that there is a TPOFF32 relocation but none of the > input files has a section with the SHF_TLS flag set. This should not > be possible--the TPOFF32 relocation implies a TLS variable, but the > absence of any SHF_TLS sections implies that there are no TLS > variables. I get: a.o: file format elf64-x86-64 Disassembly of section .text: 0000000000000000 <main>: 0: 55 push %rbp 1: 48 89 e5 mov %rsp,%rbp 4: 64 48 8b 04 25 00 00 mov %fs:0x0,%rax b: 00 00 9: R_X86_64_TPOFF32 __gcov_indirect_call_counters_ltopriv d: 64 48 8b 14 25 00 00 mov %fs:0x0,%rdx 14: 00 00 12: R_X86_64_TPOFF32 __gcov_indirect_call_callee_ltopriv 16: 48 89 d1 mov %rdx,%rcx 19: ba 00 00 00 00 mov $0x0,%edx 1a: R_X86_64_32 main 1e: be eb 72 70 06 mov $0x67072eb,%esi 23: 48 89 c7 mov %rax,%rdi 26: e8 00 00 00 00 callq 2b <main+0x2b> 27: R_X86_64_PC32 __gcov_indirect_call_profiler+0xfffffffffffffffc 2b: 64 48 c7 04 25 00 00 movq $0x0,%fs:0x0 32: 00 00 00 00 00 00 30: R_X86_64_TPOFF32 __gcov_indirect_call_callee_ltopriv 38: bf 00 00 00 00 mov $0x0,%edi 39: R_X86_64_32 .bss+0x8 3d: e8 00 00 00 00 callq 42 <main+0x42> 3e: R_X86_64_PC32 __gcov_time_profiler+0xfffffffffffffffc 42: ba 00 00 00 00 mov $0x0,%edx 47: 48 8b 05 00 00 00 00 mov 0x0(%rip),%rax # 4e <main+0x4e> 4a: R_X86_64_PC32 .bss+0xfffffffffffffffc 4e: 48 83 c0 01 add $0x1,%rax 52: 48 89 05 00 00 00 00 mov %rax,0x0(%rip) # 59 <main+0x59> 55: R_X86_64_PC32 .bss+0xfffffffffffffffc 59: 89 d0 mov %edx,%eax 5b: 5d pop %rbp 5c: c3 retq 000000000000005d <_GLOBAL__sub_I_65535_0_main>: 5d: 55 push %rbp 5e: 48 89 e5 mov %rsp,%rbp 61: bf 00 00 00 00 mov $0x0,%edi 62: R_X86_64_32 .data+0x40 66: e8 00 00 00 00 callq 6b <_GLOBAL__sub_I_65535_0_main+0xe> 67: R_X86_64_PC32 __gcov_init+0xfffffffffffffffc 6b: 5d pop %rbp 6c: c3 retq and in asm: .file "ccstYwxO.ltrans0.o" .text .globl main .type main, @function main: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movq %fs:__gcov_indirect_call_counters_ltopriv@tpoff, %rax movq %fs:__gcov_indirect_call_callee_ltopriv@tpoff, %rdx movq %rdx, %rcx movl $main, %edx movl $108032747, %esi movq %rax, %rdi call __gcov_indirect_call_profiler movq $0, %fs:__gcov_indirect_call_callee_ltopriv@tpoff movl $__gcov8.main, %edi call __gcov_time_profiler movl $0, %edx movq __gcov0.main(%rip), %rax addq $1, %rax movq %rax, __gcov0.main(%rip) movl %edx, %eax popq %rbp .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size main, .-main .hidden __gcov_indirect_call_callee_ltopriv .tls_common __gcov_indirect_call_callee_ltopriv,8,8 .hidden __gcov_indirect_call_counters_ltopriv .tls_common __gcov_indirect_call_counters_ltopriv,8,8 .local __gcov0.main .comm __gcov0.main,8,8 .local __gcov8.main .comm __gcov8.main,8,8 .type _GLOBAL__sub_I_65535_0_main, @function ... Honza > > Why would there be a TPOFF32 relocation in the simple test case from > Markus? > > If that is not the assertion, let me know what is. > > Ian
a.o
Description: application/object