* [parisc-linux] broken toolchain?
@ 2001-05-13 1:15 Matthew Wilcox
2001-05-13 1:23 ` John David Anglin
2001-05-14 17:45 ` Matthew Wilcox
0 siblings, 2 replies; 9+ messages in thread
From: Matthew Wilcox @ 2001-05-13 1:15 UTC (permalink / raw)
To: parisc-linux
as some of you know, i'm busy up here in canada building packages.
it seems to me that i'm getting a lot more unaligned data references from
things that I build than I was last week. Also I'm getting unaligned
data references from glibc 2.2.3 that i'm building on gsyprf11 which i
never had on jagu. I did an apt-get update on gsyprf11 and I remember
binutils getting updated, so I'm tempted to blame that. can anyone else
confirm/deny problems?
--
Revolutions do not require corporate support.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [parisc-linux] broken toolchain?
2001-05-13 1:15 [parisc-linux] broken toolchain? Matthew Wilcox
@ 2001-05-13 1:23 ` John David Anglin
2001-05-13 1:28 ` Matthew Wilcox
2001-05-13 13:15 ` Alan Modra
2001-05-14 17:45 ` Matthew Wilcox
1 sibling, 2 replies; 9+ messages in thread
From: John David Anglin @ 2001-05-13 1:23 UTC (permalink / raw)
To: Matthew Wilcox; +Cc: parisc-linux
> as some of you know, i'm busy up here in canada building packages.
> it seems to me that i'm getting a lot more unaligned data references from
> things that I build than I was last week. Also I'm getting unaligned
> data references from glibc 2.2.3 that i'm building on gsyprf11 which i
> never had on jagu. I did an apt-get update on gsyprf11 and I remember
> binutils getting updated, so I'm tempted to blame that. can anyone else
> confirm/deny problems?
There still issues re the management of the PIC register. These might
cause the unaligned data accesses that you are seeing. I know the
mainline gcc was broken by a patch that Alan Modra added to add
dwarf2 profiling support. On the branch, things are better but I just
discovered a new issue involving inline functions. Don't know where
things stand with the parisc-linux gcc source.
Dave
--
J. David Anglin dave.anglin@nrc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6605)
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [parisc-linux] broken toolchain?
2001-05-13 1:23 ` John David Anglin
@ 2001-05-13 1:28 ` Matthew Wilcox
2001-05-14 15:18 ` Bjorn Helgaas
2001-05-13 13:15 ` Alan Modra
1 sibling, 1 reply; 9+ messages in thread
From: Matthew Wilcox @ 2001-05-13 1:28 UTC (permalink / raw)
To: John David Anglin; +Cc: Matthew Wilcox, parisc-linux
On Sat, May 12, 2001 at 09:23:47PM -0400, John David Anglin wrote:
> There still issues re the management of the PIC register. These might
> cause the unaligned data accesses that you are seeing. I know the
> mainline gcc was broken by a patch that Alan Modra added to add
> dwarf2 profiling support. On the branch, things are better but I just
> discovered a new issue involving inline functions. Don't know where
> things stand with the parisc-linux gcc source.
I don't think tat's the case. Here's a dump:
!!die_if_kernel: ssh-keygen(6160): Unaligned data reference 28
YZrvWESTHLNXBCVMcbcbcbcbOGFRQPDI
PSW: 00000000000001001111111100001111
r0-3 00000000 00030ed0 0001cd47 00000003
r4-7 00000000 00000020 000000f6 bff04988
r8-11 00000003 000312ea 0008e010 0008cef0
r12-15 00000000 00000000 0008f350 00000000
r16-19 00000000 00038f00 00000004 0001f800
r20-23 00000005 40242090 000312ea 00000020
r24-27 00000020 bff04988 00000003 00030ed0
r28-31 00000003 00000037 bff04ac0 0001cd47
sr0-3 00000000 00000185 00000000 00000185
sr4-7 00000185 00000185 00000185 00000185
IASQ: 00000185 00000185 IAOQ: 000127ab 000127af
IIR: 4835082e ISR: 00000185 IOR: 000312e7
ORIG_R28: bff00000
now r19 is 1f800 so it doesn't seem unaligned to me. r22 or r9 look
like the problem children here. i'll have to disassemble the source to
find out and I'm just going out so that'll have to wait till tomorrow.
--
Revolutions do not require corporate support.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [parisc-linux] broken toolchain?
2001-05-13 1:23 ` John David Anglin
2001-05-13 1:28 ` Matthew Wilcox
@ 2001-05-13 13:15 ` Alan Modra
1 sibling, 0 replies; 9+ messages in thread
From: Alan Modra @ 2001-05-13 13:15 UTC (permalink / raw)
To: John David Anglin; +Cc: Matthew Wilcox, parisc-linux
On Sat, 12 May 2001, John David Anglin wrote:
> There still issues re the management of the PIC register. These might
> cause the unaligned data accesses that you are seeing. I know the
> mainline gcc was broken by a patch that Alan Modra added to add
> dwarf2 profiling support. On the branch, things are better but I just
> discovered a new issue involving inline functions. Don't know where
> things stand with the parisc-linux gcc source.
hppa-linux uses dwarf2 unwind for exceptions. Since the particular
breakage you mention only affects setjmp/longjmp exception handling, it
shouldn't be a problem unless people specify -fsjlj-exceptions.
Something like the following as yet untested patch should fix the problem.
gcc/ChangeLog.puffin
* config/pa/pa.c (hppa_init_pic_save): Revert back to saving pic
register after last_parm_insn.
(hppa_inline_pic_init): New function.
* config/pa/pa.h (INLINE_PIC_INIT): Define.
(hppa_inline_pic_init): Declare.
* integrate.c (expand_inline_function): Call INLINE_PIC_INIT.
--
Alan
Index: gcc/integrate.c
===================================================================
RCS file: /home/cvs/parisc/gcc/gcc/integrate.c,v
retrieving revision 1.6
diff -u -p -r1.6 integrate.c
--- integrate.c 2001/04/16 06:33:11 1.6
+++ integrate.c 2001/05/13 12:56:36
@@ -827,7 +827,12 @@ expand_inline_function (fndecl, parms, t
/* If the inline function needs to make PIC references, that means
that this function's PIC offset table must be used. */
if (inl_f->uses_pic_offset_table)
- current_function_uses_pic_offset_table = 1;
+ {
+ current_function_uses_pic_offset_table = 1;
+#ifdef INLINE_PIC_INIT
+ INLINE_PIC_INIT (inl_f);
+#endif
+ }
/* If this function needs a context, set it up. */
if (inl_f->needs_context)
Index: gcc/config/pa/pa.c
===================================================================
RCS file: /home/cvs/parisc/gcc/gcc/config/pa/pa.c,v
retrieving revision 1.21
diff -u -p -r1.21 pa.c
--- pa.c 2001/04/17 00:45:01 1.21
+++ pa.c 2001/05/13 12:57:07
@@ -3436,12 +3435,27 @@ hppa_init_pic_save ()
RTX_UNCHANGING_P (PIC_OFFSET_TABLE_SAVE_RTX) = 1;
insn = gen_rtx_SET (VOIDmode, PIC_OFFSET_TABLE_SAVE_RTX, picreg);
- /* Emit the insn at the beginning of the function after the prologue. */
- if (tail_recursion_reentry)
- emit_insn_before (insn, tail_recursion_reentry);
- else
- /* We must have been called via PROFILE_HOOK. */
- emit_insn (insn);
+ /* Emit the insn at the beginning of the function after the prologue.
+ The setjmp/longjmp exception handling code emits a call
+ immediately after last_parm_insn, and we need the pic save
+ register valid before the call. That's why this insn must be
+ part of the parm insns. */
+ push_topmost_sequence ();
+ last_parm_insn =
+ emit_insn_after (insn, last_parm_insn ? last_parm_insn : get_insns ());
+ pop_topmost_sequence ();
+}
+
+/* Unfortunately, parm insns are not copied for inline functions, so
+ we need to copy the initialization here. */
+void
+hppa_inline_pic_init (inl_f)
+ struct function *inl_f;
+{
+ if (inl_f->machine->pic_offset_table_save_rtx)
+ emit_insn (gen_rtx_SET (VOIDmode,
+ inl_f->machine->pic_offset_table_save_rtx,
+ gen_rtx_REG (word_mode, PIC_OFFSET_TABLE_REGNUM)));
}
void
Index: gcc/config/pa/pa.h
===================================================================
RCS file: /home/cvs/parisc/gcc/gcc/config/pa/pa.h,v
retrieving revision 1.13
diff -u -p -r1.13 pa.h
--- pa.h 2001/05/01 12:40:14 1.13
+++ pa.h 2001/05/13 12:57:20
@@ -522,6 +522,12 @@ extern int target_flags;
#define PIC_OFFSET_TABLE_SAVE_RTX (cfun->machine->pic_offset_table_save_rtx)
extern void hppa_init_pic_save PARAMS ((void));
+/* Handle any special initialization needed for inline functions that
+ make PIC references. */
+#define INLINE_PIC_INIT hppa_inline_pic_init
+struct function;
+extern void hppa_inline_pic_init PARAMS ((struct function *));
+
#define DEFAULT_PCC_STRUCT_RETURN 0
/* SOM ABI says that objects larger than 64 bits are returned in memory.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [parisc-linux] broken toolchain?
2001-05-13 1:28 ` Matthew Wilcox
@ 2001-05-14 15:18 ` Bjorn Helgaas
0 siblings, 0 replies; 9+ messages in thread
From: Bjorn Helgaas @ 2001-05-14 15:18 UTC (permalink / raw)
To: Matthew Wilcox, John David Anglin; +Cc: Matthew Wilcox, parisc-linux
> IASQ: 00000185 00000185 IAOQ: 000127ab 000127af
> IIR: 4835082e ISR: 00000185 IOR: 000312e7
> ORIG_R28: bff00000
If you trust IIR:
$ echo 0x4835082e=i | adb
LDW 1047(r1),r21
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [parisc-linux] broken toolchain?
2001-05-13 1:15 [parisc-linux] broken toolchain? Matthew Wilcox
2001-05-13 1:23 ` John David Anglin
@ 2001-05-14 17:45 ` Matthew Wilcox
2001-05-14 18:03 ` Bdale Garbee
2001-05-15 3:37 ` amodra
1 sibling, 2 replies; 9+ messages in thread
From: Matthew Wilcox @ 2001-05-14 17:45 UTC (permalink / raw)
To: Matthew Wilcox; +Cc: parisc-linux
On Sun, May 13, 2001 at 02:15:22AM +0100, Matthew Wilcox wrote:
> can anyone else confirm/deny problems?
I downgraded to binutils 2.11.90.0.5-1 from 2.11.90.0.7-1 and I've stopped
getting the unaligned references. Would someone like to volunteer to
find the bug? And does this mean we should stop the buildd?
--
Revolutions do not require corporate support.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [parisc-linux] broken toolchain?
2001-05-14 17:45 ` Matthew Wilcox
@ 2001-05-14 18:03 ` Bdale Garbee
2001-05-15 3:37 ` amodra
1 sibling, 0 replies; 9+ messages in thread
From: Bdale Garbee @ 2001-05-14 18:03 UTC (permalink / raw)
To: Matthew Wilcox; +Cc: parisc-linux
matthew@wil.cx (Matthew Wilcox) writes:
> And does this mean we should stop the buildd?
It has been down since my T1 routing got torched yesterday, I'll leave it
disabled until this is figured out.
Bdale
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [parisc-linux] broken toolchain?
2001-05-14 17:45 ` Matthew Wilcox
2001-05-14 18:03 ` Bdale Garbee
@ 2001-05-15 3:37 ` amodra
2001-05-15 12:24 ` Matthew Wilcox
1 sibling, 1 reply; 9+ messages in thread
From: amodra @ 2001-05-15 3:37 UTC (permalink / raw)
To: Matthew Wilcox; +Cc: parisc-linux
On Mon, May 14, 2001 at 06:45:25PM +0100, Matthew Wilcox wrote:
> On Sun, May 13, 2001 at 02:15:22AM +0100, Matthew Wilcox wrote:
> > can anyone else confirm/deny problems?
>
> I downgraded to binutils 2.11.90.0.5-1 from 2.11.90.0.7-1 and I've stopped
> getting the unaligned references.
Can you translate those meaningless (to me) version numbers into the
most recent date you see in bfd/, gas/, and ld/ ChangeLogs?
--
Alan Modra
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [parisc-linux] broken toolchain?
2001-05-15 3:37 ` amodra
@ 2001-05-15 12:24 ` Matthew Wilcox
0 siblings, 0 replies; 9+ messages in thread
From: Matthew Wilcox @ 2001-05-15 12:24 UTC (permalink / raw)
To: amodra; +Cc: Matthew Wilcox, parisc-linux
On Tue, May 15, 2001 at 01:07:49PM +0930, amodra@one.net.au wrote:
> Can you translate those meaningless (to me) version numbers into the
> most recent date you see in bfd/, gas/, and ld/ ChangeLogs?
the version numbers are those supplied by HJ Lu (not meaningless debian
version numbers :-)
2.11.90.0.7 was based on 2001 0427
2.11.90.0.5 was based on 2001 0414
--
Revolutions do not require corporate support.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2001-05-15 12:24 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-05-13 1:15 [parisc-linux] broken toolchain? Matthew Wilcox
2001-05-13 1:23 ` John David Anglin
2001-05-13 1:28 ` Matthew Wilcox
2001-05-14 15:18 ` Bjorn Helgaas
2001-05-13 13:15 ` Alan Modra
2001-05-14 17:45 ` Matthew Wilcox
2001-05-14 18:03 ` Bdale Garbee
2001-05-15 3:37 ` amodra
2001-05-15 12:24 ` Matthew Wilcox
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.