* [PATCH] Fix up typed DWARF stack support for POINTERS_EXTEND_UNSIGNED targets (PR debug/48853)
@ 2011-05-05 9:22 Jakub Jelinek
2011-05-05 14:53 ` Jason Merrill
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Jakub Jelinek @ 2011-05-05 9:22 UTC (permalink / raw)
To: Jason Merrill, Richard Henderson; +Cc: gcc-patches, H.J. Lu, Steve Ellcey
Hi!
My typed DWARF stack changes apparently broke ia64-hpux and H.J.'s out of
tree x32 target. There are several issues:
1) for SUBREG mem_loc_descriptor's 3rd argument was wrong, found by code
inspection
2) CONST/SYMBOL_REF/LABEL_REF when in MEM addresses on POINTERS_EXTEND_UNSIGNED
targets are often Pmode, which is unfortunately larger than DWARF2_ADDR_SIZE
and my conditional would just return NULL in that case instead of
emitting DW_OP_addr.
3) and, when mem_loc_descriptor is called from unwind code, Pmodes larger
than DWARF2_ADDR_SIZE would result in the new DW_OP_GNU_*_type etc. ops
which are not allowed in .eh_frame/.debug_frame
The following patch ought to fix that, bootstrapped/regtested on
x86_64-linux and i686-linux and Steve tested it on ia64-hpux and H.J. on his
port. Ok for trunk?
2011-05-05 Jakub Jelinek <jakub@redhat.com>
PR debug/48853
* dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Pass mem_mode
instead of mode as 3rd argument to recursive call.
(mem_loc_descriptor) <case REG>: If POINTERS_EXTEND_UNSIGNED, don't
emit DW_OP_GNU_regval_type if mode is Pmode and mem_mode is not
VOIDmode.
(mem_loc_descriptor) <case SYMBOL_REF>: If POINTERS_EXTEND_UNSIGNED,
don't give up if mode is Pmode and mem_mode is not VOIDmode.
(mem_loc_descriptor) <case CONST_INT>: If POINTERS_EXTEND_UNSIGNED,
use int_loc_descriptor if mode is Pmode and mem_mode is not VOIDmode.
--- gcc/dwarf2out.c.jj 2011-05-04 10:14:08.000000000 +0200
+++ gcc/dwarf2out.c 2011-05-04 19:08:22.000000000 +0200
@@ -13883,7 +13883,7 @@ mem_loc_descriptor (rtx rtl, enum machin
mem_loc_result = mem_loc_descriptor (SUBREG_REG (rtl),
GET_MODE (SUBREG_REG (rtl)),
- mode, initialized);
+ mem_mode, initialized);
if (mem_loc_result == NULL)
break;
type_die = base_type_for_mode (mode, 0);
@@ -13906,7 +13906,13 @@ mem_loc_descriptor (rtx rtl, enum machin
case REG:
if (GET_MODE_CLASS (mode) != MODE_INT
- || GET_MODE_SIZE (mode) > DWARF2_ADDR_SIZE)
+ || (GET_MODE_SIZE (mode) > DWARF2_ADDR_SIZE
+#ifdef POINTERS_EXTEND_UNSIGNED
+ && (mode != Pmode
+ || GET_MODE_SIZE (ptr_mode) != DWARF2_ADDR_SIZE
+ || mem_mode == VOIDmode)
+#endif
+ ))
{
dw_die_ref type_die;
@@ -14049,9 +14055,18 @@ mem_loc_descriptor (rtx rtl, enum machin
pool. */
case CONST:
case SYMBOL_REF:
+ if (GET_MODE_CLASS (mode) != MODE_INT)
+ break;
+#ifndef POINTERS_EXTEND_UNSIGNED
+ if (GET_MODE_SIZE (mode) > DWARF2_ADDR_SIZE)
+ break;
+#else
if (GET_MODE_SIZE (mode) > DWARF2_ADDR_SIZE
- || GET_MODE_CLASS (mode) != MODE_INT)
+ && (mode != Pmode
+ || GET_MODE_SIZE (ptr_mode) != DWARF2_ADDR_SIZE
+ || mem_mode == VOIDmode))
break;
+#endif
if (GET_CODE (rtl) == SYMBOL_REF
&& SYMBOL_REF_TLS_MODEL (rtl) != TLS_MODEL_NONE)
{
@@ -14288,7 +14303,14 @@ mem_loc_descriptor (rtx rtl, enum machin
break;
case CONST_INT:
- if (GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE)
+ if (GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE
+#ifdef POINTERS_EXTEND_UNSIGNED
+ || (mode == Pmode
+ && GET_MODE_SIZE (ptr_mode) == DWARF2_ADDR_SIZE
+ && mem_mode != VOIDmode
+ && trunc_int_for_mode (INTVAL (rtl), ptr_mode) == INTVAL (rtl))
+#endif
+ )
{
mem_loc_result = int_loc_descriptor (INTVAL (rtl));
break;
Jakub
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Fix up typed DWARF stack support for POINTERS_EXTEND_UNSIGNED targets (PR debug/48853)
2011-05-05 9:22 [PATCH] Fix up typed DWARF stack support for POINTERS_EXTEND_UNSIGNED targets (PR debug/48853) Jakub Jelinek
@ 2011-05-05 14:53 ` Jason Merrill
2011-05-05 15:24 ` Jakub Jelinek
2011-05-07 5:21 ` H.J. Lu
2011-05-11 22:14 ` H.J. Lu
2 siblings, 1 reply; 10+ messages in thread
From: Jason Merrill @ 2011-05-05 14:53 UTC (permalink / raw)
To: Jakub Jelinek; +Cc: Richard Henderson, gcc-patches, H.J. Lu, Steve Ellcey
> + && (mode != Pmode
> + || GET_MODE_SIZE (ptr_mode) != DWARF2_ADDR_SIZE
This test seems overly cautious; it seems implausible to have
DWARF2_ADDR_SIZE smaller than GET_MODE_SIZE (ptr_mode), and having it be
larger doesn't seem like a problem.
> + || mem_mode == VOIDmode)
We can't handle Pmode void* like other pointers?
Jason
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Fix up typed DWARF stack support for POINTERS_EXTEND_UNSIGNED targets (PR debug/48853)
2011-05-05 14:53 ` Jason Merrill
@ 2011-05-05 15:24 ` Jakub Jelinek
2011-05-05 15:29 ` Jason Merrill
0 siblings, 1 reply; 10+ messages in thread
From: Jakub Jelinek @ 2011-05-05 15:24 UTC (permalink / raw)
To: Jason Merrill; +Cc: Richard Henderson, gcc-patches, H.J. Lu, Steve Ellcey
On Thu, May 05, 2011 at 10:25:53AM -0400, Jason Merrill wrote:
> >+ && (mode != Pmode
> >+ || GET_MODE_SIZE (ptr_mode) != DWARF2_ADDR_SIZE
>
> This test seems overly cautious; it seems implausible to have
> DWARF2_ADDR_SIZE smaller than GET_MODE_SIZE (ptr_mode), and having
> it be larger doesn't seem like a problem.
Ok, I guess I can leave those ptr_mode GET_MODE_SIZE tests out.
> >+ || mem_mode == VOIDmode)
>
> We can't handle Pmode void* like other pointers?
mem_mode == VOIDmode doesn't mean a void* pointer, mem_mode != VOIDmode
means mem_loc_descriptor is called on some MEM's address and gives the
mode of the MEM, while VOIDmode mem_mode means it isn't a memory address,
but just a random rtl that we wish to translate into DWARF location
expression.
If it is not a MEM address (i.e. mem_mode is VOIDmode) and
Pmode is wider than DWARF2_ADDR_SIZE, then how do you otherwise find out
if it is a pointer and you leave it up to the debug info consumer to do
some zero/sign/something else extension from DWARF2_ADDR_SIZE to
Pmode size, or if it is any other DImode quantity, which needs to be
represented using DW_OP_GNU_*_type?
Say for i?86 -m32
unsigned long long x = (uintptr_t) &y + 0x123456789abcULL;
(plus:DI (zero_extend:DI (symbol_ref:SI "y")) (const_double 0x123456789abc))
using untyped ops would be incorrect.
We could have some flag/global var whether mem_loc_descriptor is called
from unwind info code or not, and just assume untyped (ptr_mode) arithmetics
is always fine in that case, and just use always DW_OP_GNU_*_type
on POINTERS_EXTEND_UNSIGNED targets for Pmode elsewhere, the problem with
that is that the generated debug info for -gdwarf-strict would be very bad
and debug info would be unnecessarily large.
And we'd still need to represent Pmode SYMBOL_REF/CONST/LABEL_REF somehow
with the zero/sign extension being explicit (like
DW_OP_addr <foo + 6> DW_OP_GNU_convert <unsigned int> DW_OP_GNU_convert <long long>
for zero-extension, s/unsigned int/int/ for sign extension). Unfortunately
POINTERS_EXTEND_UNSIGNED can be also -1 which means target has special
instruction to do the extension, but nothing says what that insn actually
performs. So I think it is better to use untyped ops for memory addresses
and typed ops outside of memory addresses when the mode is larger than
DWARF2_ADDR_SIZE.
Jakub
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Fix up typed DWARF stack support for POINTERS_EXTEND_UNSIGNED targets (PR debug/48853)
2011-05-05 15:24 ` Jakub Jelinek
@ 2011-05-05 15:29 ` Jason Merrill
0 siblings, 0 replies; 10+ messages in thread
From: Jason Merrill @ 2011-05-05 15:29 UTC (permalink / raw)
To: Jakub Jelinek; +Cc: Richard Henderson, gcc-patches, H.J. Lu, Steve Ellcey
On 05/05/2011 10:56 AM, Jakub Jelinek wrote:
>> We can't handle Pmode void* like other pointers?
>
> mem_mode == VOIDmode doesn't mean a void* pointer, mem_mode != VOIDmode
> means mem_loc_descriptor is called on some MEM's address and gives the
> mode of the MEM, while VOIDmode mem_mode means it isn't a memory address,
> but just a random rtl that we wish to translate into DWARF location
> expression.
Ah, OK.
Jason
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Fix up typed DWARF stack support for POINTERS_EXTEND_UNSIGNED targets (PR debug/48853)
2011-05-05 9:22 [PATCH] Fix up typed DWARF stack support for POINTERS_EXTEND_UNSIGNED targets (PR debug/48853) Jakub Jelinek
2011-05-05 14:53 ` Jason Merrill
@ 2011-05-07 5:21 ` H.J. Lu
2011-05-09 19:24 ` Jason Merrill
2011-05-11 22:14 ` H.J. Lu
2 siblings, 1 reply; 10+ messages in thread
From: H.J. Lu @ 2011-05-07 5:21 UTC (permalink / raw)
To: Jakub Jelinek; +Cc: Jason Merrill, Richard Henderson, gcc-patches, Steve Ellcey
On Thu, May 5, 2011 at 2:20 AM, Jakub Jelinek <jakub@redhat.com> wrote:
> Hi!
>
> My typed DWARF stack changes apparently broke ia64-hpux and H.J.'s out of
> tree x32 target. There are several issues:
> 1) for SUBREG mem_loc_descriptor's 3rd argument was wrong, found by code
> inspection
> 2) CONST/SYMBOL_REF/LABEL_REF when in MEM addresses on POINTERS_EXTEND_UNSIGNED
> targets are often Pmode, which is unfortunately larger than DWARF2_ADDR_SIZE
> and my conditional would just return NULL in that case instead of
> emitting DW_OP_addr.
> 3) and, when mem_loc_descriptor is called from unwind code, Pmodes larger
> than DWARF2_ADDR_SIZE would result in the new DW_OP_GNU_*_type etc. ops
> which are not allowed in .eh_frame/.debug_frame
> The following patch ought to fix that, bootstrapped/regtested on
> x86_64-linux and i686-linux and Steve tested it on ia64-hpux and H.J. on his
> port. Ok for trunk?
>
> 2011-05-05 Jakub Jelinek <jakub@redhat.com>
>
> PR debug/48853
> * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Pass mem_mode
> instead of mode as 3rd argument to recursive call.
> (mem_loc_descriptor) <case REG>: If POINTERS_EXTEND_UNSIGNED, don't
> emit DW_OP_GNU_regval_type if mode is Pmode and mem_mode is not
> VOIDmode.
> (mem_loc_descriptor) <case SYMBOL_REF>: If POINTERS_EXTEND_UNSIGNED,
> don't give up if mode is Pmode and mem_mode is not VOIDmode.
> (mem_loc_descriptor) <case CONST_INT>: If POINTERS_EXTEND_UNSIGNED,
> use int_loc_descriptor if mode is Pmode and mem_mode is not VOIDmode.
>
Here is the missing patch for case SUBREG. OK for trunk if there is
no regressions?
Thanks.
H.J.
----
2011-05-06 H.J. Lu <hongjiu.lu@intel.com>
PR debug/48853
* dwarf2out.c (mem_loc_descriptor) <case SUBREG>: If
POINTERS_EXTEND_UNSIGNED, don't give up if mode is Pmode and
mem_mode is not VOIDmode.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 026e4a7..049ca8e 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -13892,7 +13892,11 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode,
break;
if (GET_MODE_CLASS (mode) == MODE_INT
&& GET_MODE_CLASS (GET_MODE (SUBREG_REG (rtl))) == MODE_INT
- && GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE
+ && (GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE
+#ifdef POINTERS_EXTEND_UNSIGNED
+ || (mode == Pmode && mem_mode != VOIDmode)
+#endif
+ )
&& GET_MODE_SIZE (GET_MODE (SUBREG_REG (rtl))) <= DWARF2_ADDR_SIZE)
{
mem_loc_result = mem_loc_descriptor (SUBREG_REG (rtl),
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Fix up typed DWARF stack support for POINTERS_EXTEND_UNSIGNED targets (PR debug/48853)
2011-05-07 5:21 ` H.J. Lu
@ 2011-05-09 19:24 ` Jason Merrill
0 siblings, 0 replies; 10+ messages in thread
From: Jason Merrill @ 2011-05-09 19:24 UTC (permalink / raw)
To: H.J. Lu; +Cc: Jakub Jelinek, Richard Henderson, gcc-patches, Steve Ellcey
OK.
Jason
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Fix up typed DWARF stack support for POINTERS_EXTEND_UNSIGNED targets (PR debug/48853)
2011-05-05 9:22 [PATCH] Fix up typed DWARF stack support for POINTERS_EXTEND_UNSIGNED targets (PR debug/48853) Jakub Jelinek
2011-05-05 14:53 ` Jason Merrill
2011-05-07 5:21 ` H.J. Lu
@ 2011-05-11 22:14 ` H.J. Lu
2011-05-12 16:40 ` Jakub Jelinek
2 siblings, 1 reply; 10+ messages in thread
From: H.J. Lu @ 2011-05-11 22:14 UTC (permalink / raw)
To: Jakub Jelinek; +Cc: Jason Merrill, Richard Henderson, gcc-patches, Steve Ellcey
[-- Attachment #1: Type: text/plain, Size: 4773 bytes --]
On Thu, May 5, 2011 at 2:20 AM, Jakub Jelinek <jakub@redhat.com> wrote:
> Hi!
>
> My typed DWARF stack changes apparently broke ia64-hpux and H.J.'s out of
> tree x32 target. There are several issues:
> 1) for SUBREG mem_loc_descriptor's 3rd argument was wrong, found by code
> inspection
> 2) CONST/SYMBOL_REF/LABEL_REF when in MEM addresses on POINTERS_EXTEND_UNSIGNED
> targets are often Pmode, which is unfortunately larger than DWARF2_ADDR_SIZE
> and my conditional would just return NULL in that case instead of
> emitting DW_OP_addr.
> 3) and, when mem_loc_descriptor is called from unwind code, Pmodes larger
> than DWARF2_ADDR_SIZE would result in the new DW_OP_GNU_*_type etc. ops
> which are not allowed in .eh_frame/.debug_frame
> The following patch ought to fix that, bootstrapped/regtested on
> x86_64-linux and i686-linux and Steve tested it on ia64-hpux and H.J. on his
> port. Ok for trunk?
>
> 2011-05-05 Jakub Jelinek <jakub@redhat.com>
>
> PR debug/48853
> * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Pass mem_mode
> instead of mode as 3rd argument to recursive call.
> (mem_loc_descriptor) <case REG>: If POINTERS_EXTEND_UNSIGNED, don't
> emit DW_OP_GNU_regval_type if mode is Pmode and mem_mode is not
> VOIDmode.
> (mem_loc_descriptor) <case SYMBOL_REF>: If POINTERS_EXTEND_UNSIGNED,
> don't give up if mode is Pmode and mem_mode is not VOIDmode.
> (mem_loc_descriptor) <case CONST_INT>: If POINTERS_EXTEND_UNSIGNED,
> use int_loc_descriptor if mode is Pmode and mem_mode is not VOIDmode.
>
Another problem. This patch
http://gcc.gnu.org/ml/gcc-patches/2011-03/msg01730.html
has
@@ -14562,7 +15110,10 @@ loc_descriptor (rtx rtl, enum machine_mo
up an entire register. For now, just assume that it is
legitimate to make the Dwarf info refer to the whole register which
contains the given subreg. */
- loc_result = loc_descriptor (SUBREG_REG (rtl), mode, initialized);
+ if (REG_P (SUBREG_REG (rtl)) && subreg_lowpart_p (rtl))
+ loc_result = loc_descriptor (SUBREG_REG (rtl), mode, initialized);
+ else
+ goto do_default;
break;
case REG:
It doesn't work with Pmode != ptr_mode. I got
Breakpoint 5, loc_descriptor (rtl=0x7ffff0acc900, mode=SImode,
initialized=VAR_INIT_STATUS_INITIALIZED)
at /export/gnu/import/git/gcc-x32/gcc/dwarf2out.c:15027
15027 if ((REG_P (SUBREG_REG (rtl))
(gdb) bt
#0 loc_descriptor (rtl=0x7ffff0acc900, mode=SImode,
initialized=VAR_INIT_STATUS_INITIALIZED)
at /export/gnu/import/git/gcc-x32/gcc/dwarf2out.c:15027
#1 0x00000000006dae2a in loc_descriptor (rtl=0x7ffff0a6c660, mode=SImode,
initialized=VAR_INIT_STATUS_INITIALIZED)
at /export/gnu/import/git/gcc-x32/gcc/dwarf2out.c:15071
#2 0x00000000006dbc69 in dw_loc_list_1 (loc=0x7ffff0a87320,
varloc=0x7ffff0a6c660, want_address=2,
initialized=VAR_INIT_STATUS_INITIALIZED)
at /export/gnu/import/git/gcc-x32/gcc/dwarf2out.c:15346
#3 0x00000000006dc5b2 in dw_loc_list (loc_list=0x7ffff0a6c800,
decl=0x7ffff0a87320, want_address=2)
at /export/gnu/import/git/gcc-x32/gcc/dwarf2out.c:15602
#4 0x00000000006dd920 in loc_list_from_tree (loc=0x7ffff0a87320,
want_address=2) at /export/gnu/import/git/gcc-x32/gcc/dwarf2out.c:15990
#5 0x00000000006e3d81 in add_location_or_const_value_attribute (
die=0x7ffff0acd640, decl=0x7ffff0a87320, cache_p=0 '\000',
attr=DW_AT_location)
at /export/gnu/import/git/gcc-x32/gcc/dwarf2out.c:17500
#6 0x00000000006eae13 in gen_formal_parameter_die (node=0x7ffff0a87320,
origin=0x7ffff0b71d48, emit_name_p=1 '\001', context_die=0x7ffff0acd5a0)
at /export/gnu/import/git/gcc-x32/gcc/dwarf2out.c:19244
#7 0x00000000006f6432 in gen_decl_die (decl=0x7ffff0a87320, origin=0x0,
---Type <return> to continue, or q <return> to quit---q
contextQuit
(gdb) call debug_rtx (rtl)
(subreg:SI (symbol_ref:DI ("a") [flags 0x2] <var_decl 0x7ffff0a87000 a>) 0)
(gdb) f 1
#1 0x00000000006dae2a in loc_descriptor (rtl=0x7ffff0a6c660, mode=SImode,
initialized=VAR_INIT_STATUS_INITIALIZED)
at /export/gnu/import/git/gcc-x32/gcc/dwarf2out.c:15071
15071 loc_result = loc_descriptor (loc, mode, initialized);
(gdb) call debug_rtx (rtl)
(var_location xxxxx (subreg:SI (symbol_ref:DI ("a") [flags 0x2]
<var_decl 0x7ffff0a87000 a>) 0))
This patch restores the old behavior for Pmode. OK for trunk if there
are no regressions?
Thanks.
--
H.J.
2011-05-11 H.J. Lu <hongjiu.lu@intel.com>
PR debug/48853
* dwarf2out.c (loc_descriptor) <case SUBREG>: If
POINTERS_EXTEND_UNSIGNED is defined, don't give up if mode of
SUBREG is Pmode.
[-- Attachment #2: gcc-pr48853-2.patch --]
[-- Type: text/x-diff, Size: 875 bytes --]
2011-05-11 H.J. Lu <hongjiu.lu@intel.com>
PR debug/48853
* dwarf2out.c (loc_descriptor) <case SUBREG>: If
POINTERS_EXTEND_UNSIGNED is defined, don't give up if mode of
SUBREG is Pmode.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index b85a55e..03d12de 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -15024,7 +15024,12 @@ loc_descriptor (rtx rtl, enum machine_mode mode,
up an entire register. For now, just assume that it is
legitimate to make the Dwarf info refer to the whole register which
contains the given subreg. */
- if (REG_P (SUBREG_REG (rtl)) && subreg_lowpart_p (rtl))
+ if ((REG_P (SUBREG_REG (rtl))
+#ifdef POINTERS_EXTEND_UNSIGNED
+ || GET_MODE (SUBREG_REG (rtl)) == Pmode
+#endif
+ )
+ && subreg_lowpart_p (rtl))
loc_result = loc_descriptor (SUBREG_REG (rtl), mode, initialized);
else
goto do_default;
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Fix up typed DWARF stack support for POINTERS_EXTEND_UNSIGNED targets (PR debug/48853)
2011-05-11 22:14 ` H.J. Lu
@ 2011-05-12 16:40 ` Jakub Jelinek
2011-05-12 17:38 ` H.J. Lu
0 siblings, 1 reply; 10+ messages in thread
From: Jakub Jelinek @ 2011-05-12 16:40 UTC (permalink / raw)
To: H.J. Lu; +Cc: Jason Merrill, Richard Henderson, gcc-patches, Steve Ellcey
On Wed, May 11, 2011 at 12:28:18PM -0700, H.J. Lu wrote:
> This patch restores the old behavior for Pmode. OK for trunk if there
> are no regressions?
That is IMHO wrong, ignoring subregs is a very bad idea.
While you can workaround generation of the DW_OP_GNU_convert that way
(why do you want that?, just install newer gdb that has typed dwarf stack
support, coming hopefully soon), you'd get incorrect debug info for
long long to int casts.
Jakub
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Fix up typed DWARF stack support for POINTERS_EXTEND_UNSIGNED targets (PR debug/48853)
2011-05-12 16:40 ` Jakub Jelinek
@ 2011-05-12 17:38 ` H.J. Lu
2011-05-12 19:55 ` Tom Tromey
0 siblings, 1 reply; 10+ messages in thread
From: H.J. Lu @ 2011-05-12 17:38 UTC (permalink / raw)
To: Jakub Jelinek; +Cc: Jason Merrill, Richard Henderson, gcc-patches, Steve Ellcey
On Thu, May 12, 2011 at 7:56 AM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Wed, May 11, 2011 at 12:28:18PM -0700, H.J. Lu wrote:
>> This patch restores the old behavior for Pmode. OK for trunk if there
>> are no regressions?
>
> That is IMHO wrong, ignoring subregs is a very bad idea.
> While you can workaround generation of the DW_OP_GNU_convert that way
> (why do you want that?, just install newer gdb that has typed dwarf stack
> support, coming hopefully soon), you'd get incorrect debug info for
> long long to int casts.
>
I will wait for the new gdb.
Thanks.
--
H.J.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Fix up typed DWARF stack support for POINTERS_EXTEND_UNSIGNED targets (PR debug/48853)
2011-05-12 17:38 ` H.J. Lu
@ 2011-05-12 19:55 ` Tom Tromey
0 siblings, 0 replies; 10+ messages in thread
From: Tom Tromey @ 2011-05-12 19:55 UTC (permalink / raw)
To: H.J. Lu
Cc: Jakub Jelinek, Jason Merrill, Richard Henderson, gcc-patches,
Steve Ellcey
>>>>> "H.J." == H J Lu <hjl.tools@gmail.com> writes:
H.J.> On Thu, May 12, 2011 at 7:56 AM, Jakub Jelinek <jakub@redhat.com> wrote:
>> On Wed, May 11, 2011 at 12:28:18PM -0700, H.J. Lu wrote:
>>> This patch restores the old behavior for Pmode. OK for trunk if there
>>> are no regressions?
>>
>> That is IMHO wrong, ignoring subregs is a very bad idea.
>> While you can workaround generation of the DW_OP_GNU_convert that way
>> (why do you want that?, just install newer gdb that has typed dwarf stack
>> support, coming hopefully soon), you'd get incorrect debug info for
>> long long to int casts.
>>
H.J.> I will wait for the new gdb.
I'm going to commit the changes today.
Tom
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2011-05-12 16:07 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-05 9:22 [PATCH] Fix up typed DWARF stack support for POINTERS_EXTEND_UNSIGNED targets (PR debug/48853) Jakub Jelinek
2011-05-05 14:53 ` Jason Merrill
2011-05-05 15:24 ` Jakub Jelinek
2011-05-05 15:29 ` Jason Merrill
2011-05-07 5:21 ` H.J. Lu
2011-05-09 19:24 ` Jason Merrill
2011-05-11 22:14 ` H.J. Lu
2011-05-12 16:40 ` Jakub Jelinek
2011-05-12 17:38 ` H.J. Lu
2011-05-12 19:55 ` Tom Tromey
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).