Browse Source
bfd/
* elf32-arm.c (elf32_arm_link_hash_entry): Add export_glue.
(elf32_arm_link_hash_newfunc): Initialize export_glue.
(record_arm_to_thumb_glue): Return stub symbol.
(elf32_arm_create_thumb_stub): New function.
(elf32_arm_to_thumb_stub): Use it.
(elf32_arm_to_thumb_export_stub): New function.
(elf32_arm_begin_write_processing): New function.
(allocate_dynrelocs): Allocate Arm stubs.
(elf_backend_begin_write_processing): Define.
(elf32_arm_symbian_begin_write_processing): Remove ATTRIBUTE_UNUSED.
Call elf32_arm_begin_write_processing.
ld/
* emultempl/armelf.em (arm_elf_before_allocation): Call
gld${EMULATION_NAME}_before_allocation after setting interworking bfd.
ld/testsuite/
* ld-arm/arm-elf.exp (armelftests): Add armthumb-lib.so. Add
-use-blx to mixed-lib.so
* ld-arm/armthumb-lib.d: New file.
* ld-arm/armthumb-lib.sym: New file.
gdb_6_6-branch
8 changed files with 248 additions and 29 deletions
@ -0,0 +1,44 @@ |
|||
|
|||
tmpdir/armthumb-lib.so: file format elf32-(little|big)arm |
|||
architecture: arm, flags 0x00000150: |
|||
HAS_SYMS, DYNAMIC, D_PAGED |
|||
start address 0x.* |
|||
|
|||
Disassembly of section .plt: |
|||
|
|||
.* <.plt>: |
|||
.*: e52de004 str lr, \[sp, #-4\]! |
|||
.*: e59fe004 ldr lr, \[pc, #4\] ; .* <\.plt\+0x10> |
|||
.*: e08fe00e add lr, pc, lr |
|||
.*: e5bef008 ldr pc, \[lr, #8\]! |
|||
.*: .* |
|||
.*: e28fc6.* add ip, pc, #.* ; 0x.* |
|||
.*: e28cca.* add ip, ip, #.* ; 0x.* |
|||
.*: e5bcf.* ldr pc, \[ip, #.*\]! |
|||
Disassembly of section .text: |
|||
|
|||
.* <lib_func1>: |
|||
.*: e1a0c00d mov ip, sp |
|||
.*: e92dd800 stmdb sp!, {fp, ip, lr, pc} |
|||
.*: ebfffff. bl .* <.text-0x..> |
|||
.*: e89d6800 ldmia sp, {fp, sp, lr} |
|||
.*: e12fff1e bx lr |
|||
.*: e1a00000 nop \(mov r0,r0\) |
|||
.*: e1a00000 nop \(mov r0,r0\) |
|||
.*: e1a00000 nop \(mov r0,r0\) |
|||
|
|||
.* <__real_lib_func2>: |
|||
.*: 4770 bx lr |
|||
.*: 46c0 nop \(mov r8, r8\) |
|||
.*: 46c0 nop \(mov r8, r8\) |
|||
.*: 46c0 nop \(mov r8, r8\) |
|||
.*: 46c0 nop \(mov r8, r8\) |
|||
.*: 46c0 nop \(mov r8, r8\) |
|||
.*: 46c0 nop \(mov r8, r8\) |
|||
.*: 46c0 nop \(mov r8, r8\) |
|||
|
|||
.* <lib_func2>: |
|||
.*: e59fc004 ldr ip, \[pc, #4\] ; 33c <lib_func2\+0xc> |
|||
.*: e08cc00f add ip, ip, pc |
|||
.*: e12fff1c bx ip |
|||
.*: ffffffe5 .* |
|||
@ -0,0 +1,18 @@ |
|||
|
|||
Symbol table for image: |
|||
Num Buc: Value Size Type Bind Vis Ndx Name |
|||
.. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS _edata |
|||
.. ..: .......0 20 FUNC GLOBAL DEFAULT 6 lib_func1 |
|||
.. ..: .......0 2 FUNC GLOBAL DEFAULT 6 lib_func2 |
|||
.. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS _bss_end__ |
|||
.. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __bss_end__ |
|||
.. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS _stack |
|||
.. ..: ........ 4 OBJECT GLOBAL DEFAULT 9 data_obj |
|||
.. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __bss_start__ |
|||
.. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __bss_start |
|||
.. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS _end |
|||
.. ..: 00000000 0 NOTYPE GLOBAL DEFAULT UND app_func2 |
|||
.. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __exidx_end |
|||
.. ..: ........ 0 NOTYPE GLOBAL DEFAULT 9 __data_start |
|||
.. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __end__ |
|||
.. ..: ........ 0 NOTYPE GLOBAL DEFAULT ABS __exidx_start |
|||
Loading…
Reference in new issue