* [Buildroot] [PATCH] package/gcc: backport xtensa trap pattern for 5.x
@ 2016-11-14 10:05 Max Filippov
2016-11-14 21:55 ` Thomas Petazzoni
0 siblings, 1 reply; 5+ messages in thread
From: Max Filippov @ 2016-11-14 10:05 UTC (permalink / raw)
To: buildroot
gcc 5.x uses trap pattern extensively to mark locations where program
execution should never get. Default pattern implementation emits a call
to 'abort' function. This function however is not always available, e.g.
it's not available for the libc dynamic linker. Backport implementation
of the trap pattern for xtensa that does not result in a call to
'abort'.
Fixes:
http://autobuild.buildroot.net/results/0fbcc4475545904bf88f25a3bdf3ee552bf4960e
http://autobuild.buildroot.net/results/cb7f5bdfac615d774f3bcd1b802f8d74460bc557
http://autobuild.buildroot.net/results/cf3dc9ae4f74ff28b285f1a862b71d96384d7651
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
.../5.4.0/875-xtensa-implement-trap-pattern.patch | 67 ++++++++++++++++++++++
1 file changed, 67 insertions(+)
create mode 100644 package/gcc/5.4.0/875-xtensa-implement-trap-pattern.patch
diff --git a/package/gcc/5.4.0/875-xtensa-implement-trap-pattern.patch b/package/gcc/5.4.0/875-xtensa-implement-trap-pattern.patch
new file mode 100644
index 0000000..870b079
--- /dev/null
+++ b/package/gcc/5.4.0/875-xtensa-implement-trap-pattern.patch
@@ -0,0 +1,67 @@
+From 2b4b5775554c91a63ccae4ee566db696b633652e Mon Sep 17 00:00:00 2001
+From: jcmvbkbc <jcmvbkbc@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Wed, 10 Jun 2015 15:07:40 +0000
+Subject: [PATCH] xtensa: implement trap pattern
+
+2015-06-10 Max Filippov <jcmvbkbc@gmail.com>
+gcc/
+ * config/xtensa/xtensa.h (TARGET_DEBUG): New definition.
+ * config/xtensa/xtensa.md (define_attr "type"): New type "trap".
+ (define_insn "trap"): New definition.
+
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk at 224330 138bc75d-0d04-0410-961f-82ee72b054a4
+---
+ gcc/config/xtensa/xtensa.h | 1 +
+ gcc/config/xtensa/xtensa.md | 15 ++++++++++++++-
+ 2 files changed, 15 insertions(+), 1 deletion(-)
+
+diff --git a/gcc/config/xtensa/xtensa.h b/gcc/config/xtensa/xtensa.h
+index 615f741..fb8702c 100644
+--- a/gcc/config/xtensa/xtensa.h
++++ b/gcc/config/xtensa/xtensa.h
+@@ -67,6 +67,7 @@ extern unsigned xtensa_current_frame_size;
+ #define TARGET_THREADPTR XCHAL_HAVE_THREADPTR
+ #define TARGET_LOOPS XCHAL_HAVE_LOOPS
+ #define TARGET_WINDOWED_ABI (XSHAL_ABI == XTHAL_ABI_WINDOWED)
++#define TARGET_DEBUG XCHAL_HAVE_DEBUG
+
+ #define TARGET_DEFAULT \
+ ((XCHAL_HAVE_L32R ? 0 : MASK_CONST16) | \
+diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md
+index 6d84384..a577aa3 100644
+--- a/gcc/config/xtensa/xtensa.md
++++ b/gcc/config/xtensa/xtensa.md
+@@ -86,7 +86,7 @@
+ ;; Attributes.
+
+ (define_attr "type"
+- "unknown,jump,call,load,store,move,arith,multi,nop,farith,fmadd,fconv,fload,fstore,mul16,mul32,div32,mac16,rsr,wsr,entry"
++ "unknown,jump,call,load,store,move,arith,multi,nop,farith,fmadd,fconv,fload,fstore,mul16,mul32,div32,mac16,rsr,wsr,entry,trap"
+ (const_string "unknown"))
+
+ (define_attr "mode"
+@@ -1764,6 +1764,19 @@
+ [(set_attr "length" "0")
+ (set_attr "type" "nop")])
+
++(define_insn "trap"
++ [(trap_if (const_int 1) (const_int 0))]
++ ""
++{
++ if (TARGET_DEBUG)
++ return "break\t1, 15";
++ else
++ return (TARGET_DENSITY ? "ill.n" : "ill");
++}
++ [(set_attr "type" "trap")
++ (set_attr "mode" "none")
++ (set_attr "length" "3")])
++
+ ;; Setting up a frame pointer is tricky for Xtensa because GCC doesn't
+ ;; know if a frame pointer is required until the reload pass, and
+ ;; because there may be an incoming argument value in the hard frame
+--
+2.1.4
+
--
2.1.4
^ permalink raw reply related [flat|nested] 5+ messages in thread* [Buildroot] [PATCH] package/gcc: backport xtensa trap pattern for 5.x
2016-11-14 10:05 [Buildroot] [PATCH] package/gcc: backport xtensa trap pattern for 5.x Max Filippov
@ 2016-11-14 21:55 ` Thomas Petazzoni
2016-11-14 22:45 ` Thomas Petazzoni
2016-11-15 0:31 ` Max Filippov
0 siblings, 2 replies; 5+ messages in thread
From: Thomas Petazzoni @ 2016-11-14 21:55 UTC (permalink / raw)
To: buildroot
Hello,
On Mon, 14 Nov 2016 02:05:41 -0800, Max Filippov wrote:
> gcc 5.x uses trap pattern extensively to mark locations where program
> execution should never get. Default pattern implementation emits a call
> to 'abort' function. This function however is not always available, e.g.
> it's not available for the libc dynamic linker. Backport implementation
> of the trap pattern for xtensa that does not result in a call to
> 'abort'.
>
> Fixes:
> http://autobuild.buildroot.net/results/0fbcc4475545904bf88f25a3bdf3ee552bf4960e
> http://autobuild.buildroot.net/results/cb7f5bdfac615d774f3bcd1b802f8d74460bc557
> http://autobuild.buildroot.net/results/cf3dc9ae4f74ff28b285f1a862b71d96384d7651
>
> Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
> ---
> .../5.4.0/875-xtensa-implement-trap-pattern.patch | 67 ++++++++++++++++++++++
> 1 file changed, 67 insertions(+)
> create mode 100644 package/gcc/5.4.0/875-xtensa-implement-trap-pattern.patch
Applied to master, thanks. However, I'm wondering if this backport
should also be done on gcc versions earlier than 5.x. Could you clarify
this point?
Thanks!
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] package/gcc: backport xtensa trap pattern for 5.x
2016-11-14 21:55 ` Thomas Petazzoni
@ 2016-11-14 22:45 ` Thomas Petazzoni
2016-11-15 0:31 ` Max Filippov
1 sibling, 0 replies; 5+ messages in thread
From: Thomas Petazzoni @ 2016-11-14 22:45 UTC (permalink / raw)
To: buildroot
Hello,
On Mon, 14 Nov 2016 22:55:53 +0100, Thomas Petazzoni wrote:
> Hello,
>
> On Mon, 14 Nov 2016 02:05:41 -0800, Max Filippov wrote:
> > gcc 5.x uses trap pattern extensively to mark locations where program
> > execution should never get. Default pattern implementation emits a call
> > to 'abort' function. This function however is not always available, e.g.
> > it's not available for the libc dynamic linker. Backport implementation
> > of the trap pattern for xtensa that does not result in a call to
> > 'abort'.
> >
> > Fixes:
> > http://autobuild.buildroot.net/results/0fbcc4475545904bf88f25a3bdf3ee552bf4960e
> > http://autobuild.buildroot.net/results/cb7f5bdfac615d774f3bcd1b802f8d74460bc557
> > http://autobuild.buildroot.net/results/cf3dc9ae4f74ff28b285f1a862b71d96384d7651
> >
> > Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
> > ---
> > .../5.4.0/875-xtensa-implement-trap-pattern.patch | 67 ++++++++++++++++++++++
> > 1 file changed, 67 insertions(+)
> > create mode 100644 package/gcc/5.4.0/875-xtensa-implement-trap-pattern.patch
>
> Applied to master, thanks. However, I'm wondering if this backport
> should also be done on gcc versions earlier than 5.x. Could you clarify
> this point?
FYI, I've rebuilt the Xtensa pre-built toolchain and deployed it to
autobuild.b.o for our autobuilders to use.
Thanks!
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] package/gcc: backport xtensa trap pattern for 5.x
2016-11-14 21:55 ` Thomas Petazzoni
2016-11-14 22:45 ` Thomas Petazzoni
@ 2016-11-15 0:31 ` Max Filippov
2016-11-15 10:01 ` Thomas Petazzoni
1 sibling, 1 reply; 5+ messages in thread
From: Max Filippov @ 2016-11-15 0:31 UTC (permalink / raw)
To: buildroot
Hi Thomas,
On Mon, Nov 14, 2016 at 1:55 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Applied to master, thanks. However, I'm wondering if this backport
> should also be done on gcc versions earlier than 5.x. Could you clarify
> this point?
I haven't seen that issue with earlier gcc versions, it only started showing
up with gcc-5.x.
--
Thanks.
-- Max
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-11-15 10:01 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-14 10:05 [Buildroot] [PATCH] package/gcc: backport xtensa trap pattern for 5.x Max Filippov
2016-11-14 21:55 ` Thomas Petazzoni
2016-11-14 22:45 ` Thomas Petazzoni
2016-11-15 0:31 ` Max Filippov
2016-11-15 10:01 ` Thomas Petazzoni
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox