* IA64 linker is broken @ 2003-03-04 20:13 H. J. Lu 2003-03-18 15:25 ` [PATCH] " Jakub Jelinek 0 siblings, 1 reply; 3+ messages in thread From: H. J. Lu @ 2003-03-04 20:13 UTC (permalink / raw) To: rth; +Cc: binutils Hi Richard, You added a call to get_dyn_sym_info in your last change without checking relocation type. Now --foo.s-- .section .text { .mib nop.m 0 nop.i 0 br.cond.dpnt.many .b1_1 ;; } .section .text1 .b1_1: { .mii nop.m 0 nop.i 0 nop.i 0 } ---- No longer works. You may want to check the relocation type first. H.J. ^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] Re: IA64 linker is broken 2003-03-04 20:13 IA64 linker is broken H. J. Lu @ 2003-03-18 15:25 ` Jakub Jelinek 2003-03-18 18:57 ` Richard Henderson 0 siblings, 1 reply; 3+ messages in thread From: Jakub Jelinek @ 2003-03-18 15:25 UTC (permalink / raw) To: H. J. Lu, rth; +Cc: binutils On Tue, Mar 04, 2003 at 12:13:22PM -0800, H. J. Lu wrote: > Hi Richard, > > You added a call to get_dyn_sym_info in your last change without checking > relocation type. Now > > --foo.s-- > .section .text > { .mib > nop.m 0 > nop.i 0 > br.cond.dpnt.many .b1_1 ;; > } > .section .text1 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ I guess you meant .section .text1, "ax", @progbits here. Branches to unallocated sections aren't good idea. > .b1_1: > { .mii > nop.m 0 > nop.i 0 > nop.i 0 > } > ---- > > No longer works. You may want to check the relocation type first. But this is certainly true, dyn_i is only used for LTOFF22X and thus IMHO should be only called in that case. Fixes H.J.'s testcase. Ok to commit? 2003-03-18 Jakub Jelinek <jakub@redhat.com> * elfxx-ia64.c (elfNN_ia64_relax_section): Only call get_dyn_sym_info for R_IA64_LTOFF22X relocations against local symbols. Reported by H.J.Lu <hjl@gnu.org>. --- bfd/elfxx-ia64.c.jj 2003-03-17 12:57:52.000000000 -0500 +++ bfd/elfxx-ia64.c 2003-03-18 10:07:30.000000000 -0500 @@ -791,7 +791,10 @@ elfNN_ia64_relax_section (abfd, sec, lin tsec = bfd_section_from_elf_index (abfd, isym->st_shndx); toff = isym->st_value + irel->r_addend; - dyn_i = get_dyn_sym_info (ia64_info, NULL, abfd, irel, FALSE); + if (r_type == R_IA64_LTOFF22X) + dyn_i = get_dyn_sym_info (ia64_info, NULL, abfd, irel, FALSE); + else + dyn_i = NULL; } else { Jakub ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Re: IA64 linker is broken 2003-03-18 15:25 ` [PATCH] " Jakub Jelinek @ 2003-03-18 18:57 ` Richard Henderson 0 siblings, 0 replies; 3+ messages in thread From: Richard Henderson @ 2003-03-18 18:57 UTC (permalink / raw) To: Jakub Jelinek; +Cc: H. J. Lu, binutils On Tue, Mar 18, 2003 at 04:25:51PM +0100, Jakub Jelinek wrote: > * elfxx-ia64.c (elfNN_ia64_relax_section): Only call > get_dyn_sym_info for R_IA64_LTOFF22X relocations against local > symbols. Reported by H.J.Lu <hjl@gnu.org>. No. First, this is also used for LDXMOV, second, I think the better fix is in get_dyn_sym_info. r~ * elfxx-ia64.c (get_dyn_sym_info): Return NULL gracefully for local symbols that have no dyninfo. Index: elfxx-ia64.c =================================================================== RCS file: /cvs/src/src/bfd/elfxx-ia64.c,v retrieving revision 1.71 diff -u -p -u -r1.71 elfxx-ia64.c --- elfxx-ia64.c 3 Mar 2003 23:19:19 -0000 1.71 +++ elfxx-ia64.c 18 Mar 2003 18:55:01 -0000 @@ -1965,7 +1965,11 @@ get_dyn_sym_info (ia64_info, h, abfd, re struct elfNN_ia64_local_hash_entry *loc_h; loc_h = get_local_sym_hash (ia64_info, abfd, rel, create); - BFD_ASSERT (loc_h); + if (!loc_h) + { + BFD_ASSERT (!create); + return NULL; + } pp = &loc_h->info; } ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2003-03-18 18:57 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2003-03-04 20:13 IA64 linker is broken H. J. Lu 2003-03-18 15:25 ` [PATCH] " Jakub Jelinek 2003-03-18 18:57 ` Richard Henderson
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).