mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
2006-02-07 Paul Brook <paul@codesourcery.com>
ld/ * emultempl/armelf.em: Include elf/arm.h. (arm_elf_finish): Set low address bit if enty point is a Thumb function. ld/testsuite/ * ld-arm/arm-elf.exp: Add thumb-entry test. * ld-arm/thumb-entry.d: New test. * ld-arm/thumb-entry.s: New test.
This commit is contained in:
parent
f31cddcbd4
commit
1d022697d9
@ -1,3 +1,9 @@
|
||||
2006-02-07 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
* emultempl/armelf.em: Include elf/arm.h.
|
||||
(arm_elf_finish): Set low address bit if enty point is a Thumb
|
||||
function.
|
||||
|
||||
2006-02-01 Danny Smith <dannysmith@users.sourceforge.net>
|
||||
|
||||
* deffilep.y (def_image_name): If the image name does not have
|
||||
|
@ -26,6 +26,8 @@
|
||||
test -z "$TARGET2_TYPE" && TARGET2_TYPE="rel"
|
||||
cat >>e${EMULATION_NAME}.c <<EOF
|
||||
|
||||
#include "elf/arm.h"
|
||||
|
||||
static char *thumb_entry_symbol = NULL;
|
||||
static bfd *bfd_for_interwork;
|
||||
static int byteswap_code = 0;
|
||||
@ -150,11 +152,25 @@ arm_elf_finish (void)
|
||||
/* Call the elf32.em routine. */
|
||||
gld${EMULATION_NAME}_finish ();
|
||||
|
||||
if (thumb_entry_symbol == NULL)
|
||||
return;
|
||||
if (thumb_entry_symbol)
|
||||
{
|
||||
h = bfd_link_hash_lookup (link_info.hash, thumb_entry_symbol,
|
||||
FALSE, FALSE, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
struct elf_link_hash_entry * eh;
|
||||
|
||||
if (!entry_symbol.name)
|
||||
return;
|
||||
|
||||
h = bfd_link_hash_lookup (link_info.hash, entry_symbol.name,
|
||||
FALSE, FALSE, TRUE);
|
||||
eh = (struct elf_link_hash_entry *)h;
|
||||
if (!h || ELF_ST_TYPE(eh->type) != STT_ARM_TFUNC)
|
||||
return;
|
||||
}
|
||||
|
||||
h = bfd_link_hash_lookup (link_info.hash, thumb_entry_symbol,
|
||||
FALSE, FALSE, TRUE);
|
||||
|
||||
if (h != (struct bfd_link_hash_entry *) NULL
|
||||
&& (h->type == bfd_link_hash_defined
|
||||
@ -180,7 +196,8 @@ arm_elf_finish (void)
|
||||
|
||||
sprintf_vma (buffer + 2, val);
|
||||
|
||||
if (entry_symbol.name != NULL && entry_from_cmdline)
|
||||
if (thumb_entry_symbol != NULL && entry_symbol.name != NULL
|
||||
&& entry_from_cmdline)
|
||||
einfo (_("%P: warning: '--thumb-entry %s' is overriding '-e %s'\n"),
|
||||
thumb_entry_symbol, entry_symbol.name);
|
||||
entry_symbol.name = buffer;
|
||||
|
@ -1,3 +1,9 @@
|
||||
2006-02-07 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
* ld-arm/arm-elf.exp: Add thumb-entry test.
|
||||
* ld-arm/thumb-entry.d: New test.
|
||||
* ld-arm/thumb-entry.s: New test.
|
||||
|
||||
2006-02-04 Richard Sandiford <richard@codesourcery.com>
|
||||
|
||||
* ld-mips-elf/tls-hidden2a.s, ld-mips-elf/tls-hidden2b.s,
|
||||
|
@ -89,6 +89,9 @@ set armelftests {
|
||||
{"TLS dynamic application" "-T arm-dyn.ld tmpdir/tls-lib.so" "" {tls-app.s}
|
||||
{{objdump -fdw tls-app.d} {objdump -Rw tls-app.r}}
|
||||
"tls-app"}
|
||||
{"Thumb entry point" "-T arm.ld" "" {thumb-entry.s}
|
||||
{{readelf -h thumb-entry.d}}
|
||||
"thumb-entry"}
|
||||
}
|
||||
|
||||
run_ld_link_tests $armelftests
|
||||
|
3
ld/testsuite/ld-arm/thumb-entry.d
Normal file
3
ld/testsuite/ld-arm/thumb-entry.d
Normal file
@ -0,0 +1,3 @@
|
||||
#...
|
||||
Entry point address: 0x8001
|
||||
#...
|
8
ld/testsuite/ld-arm/thumb-entry.s
Normal file
8
ld/testsuite/ld-arm/thumb-entry.s
Normal file
@ -0,0 +1,8 @@
|
||||
.text
|
||||
.arch armv4t
|
||||
.thumb
|
||||
.global _start
|
||||
.thumb_func
|
||||
_start:
|
||||
bx lr
|
||||
|
Loading…
Reference in New Issue
Block a user