[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/23750] New: Linker does not support R_ARM_GOT_BREL with -fdpic
From: |
d.rodionov at samsung dot com |
Subject: |
[Bug ld/23750] New: Linker does not support R_ARM_GOT_BREL with -fdpic |
Date: |
Tue, 09 Oct 2018 15:37:13 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=23750
Bug ID: 23750
Summary: Linker does not support R_ARM_GOT_BREL with -fdpic
Product: binutils
Version: unspecified
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: ld
Assignee: unassigned at sourceware dot org
Reporter: d.rodionov at samsung dot com
Target Milestone: ---
Hello!
What do I need:
I have MMU-less ARM CPU with XIP (eXecution In Place). I need ELF file with
.text and .plt sections into FLASH. It means that @plt entries must be _NOT_
pc-relative.
commit a0c3048e3f397a595a14208e82e21399131f782b
Author: Tom Tromey <address@hidden>
Date: Mon Oct 8 16:39:29 2018 -0600
I have configured binutils as follows (with default target=arm-linux-gnueabi):
./configure --enable-fdpic --enable-lto --enable-plugins --disable-werror
CPPFLAGS=-UFORTIFY_SOURCE --disable-gdb --disable-sim --disable-libdecnumber
--disable-readline --prefix=/home/rodionov/gnu/install/ --target=arm-none-eabi
$make
$make install
I have test.c file:
$ cat test.c
extern void external_func(int a);
volatile int global = 4;
void test(void)
{
external_func(global);
}
Obtain object file:
$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 7-2018-q2-update)
7.3.1 20180622 (release) [ARM/embedded-7-branch revision 261907]
$ arm-none-eabi-gcc -fpic -c -mno-pic-data-is-text-relative test.c -o test.o
Try to link:
$ ./arm-none-eabi-ld --version
GNU ld (GNU Binutils) 2.31.51.20181008
$ ./arm-none-eabi-ld -fdpic -shared -no-pic-data-is-text-relative test.o -o
test.so
But resulting @plt is pc-relative and cannot be used with XIP:
000081d4 <address@hidden>:
81d4: e28fc600 add ip, pc, #0, 12
81d8: e28cca10 add ip, ip, #16, 20 ; 0x10000
81dc: e5bcf0d8 ldr pc, [ip, #216]! ; 0xd8
I have found into code (binutils-gdb/bfd/elf32-arm.c) plt that I want:
2288 /* ARM FDPIC PLT entry. */
2289 /* The last 5 words contain PLT lazy fragment code and data. */
2290 static const bfd_vma elf32_arm_fdpic_plt_entry [] =
2291 {
2292 0xe59fc008, /* ldr r12, .L1 */
2293 0xe08cc009, /* add r12, r12, r9 */
2294 0xe59c9004, /* ldr r9, [r12, #4] */
2295 0xe59cf000, /* ldr pc, [r12] */
2296 0x00000000, /* L1. .word foo(GOTOFFFUNCDESC) */
2297 0x00000000, /* L1. .word foo(funcdesc_value_reloc_offset) */
2298 0xe51fc00c, /* ldr r12, [pc, #-12] */
2299 0xe92d1000, /* push {r12} */
2300 0xe599c004, /* ldr r12, [r9, #4] */
2301 0xe599f000, /* ldr pc, [r9] */
2302 };
So, as I can see, I need to reconfigure binutils with
--target=arm-linux-uclinuxfdpiceabi to enable -m armelf_linux_fdpiceabi
emulation and r9-relative @plt (as above) entry:
~$ ./configure --enable-fdpic --enable-lto --enable-plugins --disable-werror
CPPFLAGS=-UFORTIFY_SOURCE --disable-gdb --disable-sim --disable-libdecnumber
--disable-readline --prefix=/home/rodionov/gnu/install/
--target=arm-linux-uclinuxfdpiceabi
Try to link object file with just built linker:
~$ ./arm-linux-uclinuxfdpiceabi-ld -fdpic -shared -m armelf_linux_fdpiceabi
test.o -o test.so
./arm-linux-uclinuxfdpiceabi-ld: test.o: in function `test':
test.c:(.text+0x18): dangerous relocation: unsupported relocation
$ readelf -a test.o
...
Relocation section '.rel.text' at offset 0x200 contains 2 entries:
Offset Info Type Sym.Value Sym. Name
0000000e 00000d0a R_ARM_THM_CALL 00000000 external_func
00000018 00000b1a R_ARM_GOT_BREL 00000000 global
...
As I can see, the second relocation causes the error: unsupported relocation.
Could anyone help with this situation? Is there a bug into binutils or am I
doing something wrong?
Thanks.
Dmitrii Rodionov
--
You are receiving this mail because:
You are on the CC list for the bug.
- [Bug ld/23750] New: Linker does not support R_ARM_GOT_BREL with -fdpic,
d.rodionov at samsung dot com <=
- [Bug ld/23750] Linker does not support R_ARM_GOT_BREL with -fdpic, d.rodionov at samsung dot com, 2018/10/09
- [Bug ld/23750] Linker does not support R_ARM_GOT_BREL with -fdpic, clyon at gcc dot gnu.org, 2018/10/09
- [Bug ld/23750] Linker does not support R_ARM_GOT_BREL with -fdpic, d.rodionov at samsung dot com, 2018/10/09
- [Bug ld/23750] Linker does not support R_ARM_GOT_BREL with -fdpic, clyon at gcc dot gnu.org, 2018/10/09
- [Bug ld/23750] Linker does not support R_ARM_GOT_BREL with -fdpic, d.rodionov at samsung dot com, 2018/10/10
- [Bug ld/23750] Linker does not support R_ARM_GOT_BREL with -fdpic, clyon at gcc dot gnu.org, 2018/10/10
- [Bug ld/23750] Linker does not support R_ARM_GOT_BREL with -fdpic, d.rodionov at samsung dot com, 2018/10/12
- [Bug ld/23750] Linker does not support R_ARM_GOT_BREL with -fdpic, d.rodionov at samsung dot com, 2018/10/12