Set USE_BRL in elfxx-ia64.c at run-time?
H. J. Lu
hjl@lucon.org
Mon Mar 3 20:15:00 GMT 2003
More information about the Binutils mailing list
Mon Mar 3 20:15:00 GMT 2003
- Previous message (by thread): Set USE_BRL in elfxx-ia64.c at run-time?
- Next message (by thread): Set USE_BRL in elfxx-ia64.c at run-time?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mon, Mar 03, 2003 at 02:54:12PM -0500, Jim Wilson wrote: > H. J. Lu wrote: > > Right now, USE_BRL in elfxx-ia64.c is set at the compile time. > > Shouldn't we change it a run-time option? Is that a good idea? > > We could probably just remove the macro and emit BRL always. This will > hurt Itanium1 performance, but anyone who cares about performance > shouldn't be using an Itanium1 processor anyways. There probably aren't > many people left with working Itanium1 machines. > Like this? H.J. ---- 2003-03-03 H.J. Lu <hjl@gnu.org> * elfxx-ia64.c (USE_BRL): Removed. (oor_ip): Removed. --- bfd/elfxx-ia64.c.brl 2003-03-03 09:05:50.000000000 -0800 +++ bfd/elfxx-ia64.c 2003-03-03 12:05:16.000000000 -0800 @@ -656,31 +656,12 @@ static const bfd_byte plt_full_entry[PLT #define DYNAMIC_INTERPRETER(abfd) \ (elfNN_ia64_aix_vec (abfd->xvec) ? AIX_DYNAMIC_INTERPRETER : ELF_DYNAMIC_INTERPRETER) -/* Select out of range branch fixup type. Note that Itanium does - not support brl, and so it gets emulated by the kernel. */ -#undef USE_BRL - -#ifdef USE_BRL static const bfd_byte oor_brl[16] = { 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, /* [MLX] nop.m 0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* brl.sptk.few tgt;; */ 0x00, 0x00, 0x00, 0xc0 }; -#else -static const bfd_byte oor_ip[48] = -{ - 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, /* [MLX] nop.m 0 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, /* movl r15=0 */ - 0x01, 0x00, 0x00, 0x60, - 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, /* [MII] nop.m 0 */ - 0x00, 0x01, 0x00, 0x60, 0x00, 0x00, /* mov r16=ip;; */ - 0xf2, 0x80, 0x00, 0x80, /* add r16=r15,r16;; */ - 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, /* [MIB] nop.m 0 */ - 0x60, 0x80, 0x04, 0x80, 0x03, 0x00, /* mov b6=r16 */ - 0x60, 0x00, 0x80, 0x00 /* br b6;; */ -}; -#endif /* These functions do relaxation for IA-64 ELF. */ @@ -897,11 +878,7 @@ elfNN_ia64_relax_section (abfd, sec, lin size = sizeof (plt_full_entry); else { -#ifdef USE_BRL size = sizeof (oor_brl); -#else - size = sizeof (oor_ip); -#endif } /* Resize the current section to make room for the new branch. */ @@ -923,18 +900,10 @@ elfNN_ia64_relax_section (abfd, sec, lin } else { -#ifdef USE_BRL memcpy (contents + trampoff, oor_brl, size); irel->r_info = ELFNN_R_INFO (ELFNN_R_SYM (irel->r_info), R_IA64_PCREL60B); irel->r_offset = trampoff + 2; -#else - memcpy (contents + trampoff, oor_ip, size); - irel->r_info = ELFNN_R_INFO (ELFNN_R_SYM (irel->r_info), - R_IA64_PCREL64I); - irel->r_addend -= 16; - irel->r_offset = trampoff + 2; -#endif } /* Record the fixup so we don't do it again this section. */
- Previous message (by thread): Set USE_BRL in elfxx-ia64.c at run-time?
- Next message (by thread): Set USE_BRL in elfxx-ia64.c at run-time?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list