[prev in list] [next in list] [prev in thread] [next in thread]
List: binutils-bugs
Subject: [Bug binutils/12807] New: OBJCOPY from ELF to COFF changes relocation type from 32 to 16 bits
From: "ee at la dot mine.nu" <sourceware-bugzilla () sourceware ! org>
Date: 2011-05-25 20:28:23
Message-ID: bug-12807-70 () http ! sourceware ! org/bugzilla/
[Download RAW message or body]
http://sourceware.org/bugzilla/show_bug.cgi?id=12807
Summary: OBJCOPY from ELF to COFF changes relocation type from
32 to 16 bits
Product: binutils
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: binutils
AssignedTo: unassigned@sources.redhat.com
ReportedBy: ee@la.mine.nu
Create a small C program and compile it with TCC compiler:
char *str = "STR";
void
empty( void )
{
}
$tcc -c -o t.o t.c
$objdump -x t.o
[...]
RELOCATION RECORDS FOR [.data]:
OFFSET TYPE VALUE
00000000 R_386_32 L.0
// disassembled:
.data:08000020 _data segment para public 'DATA' use32
.data:08000020 assume cs:_data
.data:08000020 ;org 8000020h
.data:08000020 public str
.data:08000020 24 00 00 08 str dd offset L_0 ; "STR"
.data:08000024 53 54 52 00 L_0 db 'STR',0 ;
$objcopy -O pe-i386 t.o tw.obj
$objdump -x tw.obj
[...]
RELOCATION RECORDS FOR [.data]:
OFFSET TYPE VALUE
00000000 1 L.0+0xfffffffc
// disassembled:
.data:00000020 _data segment para public 'DATA' use32
.data:00000020 assume cs:_data
.data:00000020 ;org 20h
.data:00000020 public str
.data:00000020 24 00 str dw offset L_0 ; "STR"
.data:00000022 00 00 align 4
.data:00000024 53 54 52 00 L_0 db 'STR',0 ;
===========================================================================
objcopy decides to change the R_386_32 type into type "1" - 16 bits
(instead of "6" - 32 bits). The PE format doesn't handle 16 bit relocations
so when you link the copied object into a program and run it you'll get a
segfault because the "str" pointer is null.
No error or warning is displayed by objcopy.
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic