[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug gas/17712] New: Invalid relocation record for pe-x86-64 absolute ad
From: |
m at rolle dot name |
Subject: |
[Bug gas/17712] New: Invalid relocation record for pe-x86-64 absolute addresses. |
Date: |
Mon, 15 Dec 2014 05:39:50 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=17712
Bug ID: 17712
Summary: Invalid relocation record for pe-x86-64 absolute
addresses.
Product: binutils
Version: 2.24
Status: NEW
Severity: normal
Priority: P2
Component: gas
Assignee: unassigned at sourceware dot org
Reporter: m at rolle dot name
This appears in the gas testsuite, for file
gas/testsuite/gas/i386/x86-64-branch.d.
The .s file contains four branches to absolute addressed, the first one being
call 0x100040
Calling objdump -r on the .o file shows
$ objdump -r x86-64-branch.o
x86-64-branch.o: file format pe-x86-64
RELOCATION RECORDS FOR [.text]:
OFFSET TYPE VALUE
000000000000001b R_X86_64_PC32 *ABS*
000000000000003f R_X86_64_PC32 *ABS*
0000000000000020 R_X86_64_PC32 *ABS*
0000000000000044 R_X86_64_PC32 *ABS*
In the .o file, the relocation records have a symbol index of -1. This is not
allowed by COFF standard. And in fact, the Windows DUMPBIN program crashes
when analyzing the reloc records.
A reloc MUST refer to an existing symbol in the COFF symbol table.
I suggest one of two remedies:
1 (preferred), don't have a reloc record at all. The absolute address is
already contained in the instruction code.
2 Create some dummy entry in the symbol table with a section of -1 and a value
of 0, and relocate to this symbol. Problem will be in choosing a symbol name
that won't conflict with anything else.
My version of gas is:
$ as -v
GNU assembler version 2.24.51 (x86_64-pc-cygwin) using BFD version (GNU
Binutils) 2.24.51.20140703
--
You are receiving this mail because:
You are on the CC list for the bug.
- [Bug gas/17712] New: Invalid relocation record for pe-x86-64 absolute addresses.,
m at rolle dot name <=