public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug debug/40040]  New: gfortran invalid DW_AT_location for overridable variables
@ 2009-05-06  9:23 jan dot kratochvil at redhat dot com
  2009-05-06 10:25 ` [Bug debug/40040] " jakub at gcc dot gnu dot org
                   ` (13 more replies)
  0 siblings, 14 replies; 16+ messages in thread
From: jan dot kratochvil at redhat dot com @ 2009-05-06  9:23 UTC (permalink / raw)
  To: gcc-bugs

Variables in Fortran modules compiled in -fPIC shared libraries will get unique
address by a copy relocation to the main executable.  Still .debug_info of the
library contains absolute DW_AT_location of the variable - without any
indirection through the GOT vector.

Debugger will then print the variable location not in active use.  Current FSF
GDB cannot resolve these variables but it was found by a new patch for modules:
http://sourceware.org/gdb/wiki/ArcherBranchManagement
archer-jankratochvil-fortran-module

Assuming no DW_AT_location should exist for such variables.  DW_AT_declaration
should be present there as such variables are NOT optimized-out.  Or
DW_AT_location using DW_FORM_block* indirecting GOT could be present?

For C the problem does not happen with GCC as it will put there _two_ DIEs and
the first one is just a declaration.  Current FSF GDB ignores any non-first
DIEs for a named object.  Still the second invalid DIE is redundant + invalid
even in the C case.

GNU Fortran (GCC) 4.4.0 20090427 (Red Hat 4.4.0-3)
GNU Fortran (GCC) 4.5.0 20090501 (experimental)

------------------------------------------------------------------------------

cat >lib.f90 <<EOH
module lib
        integer :: var = 1
end module lib
EOH
cat >main.f90 <<EOH
        use lib
        if (var .ne. 1) call abort
end
EOH
F="gfortran -Wall -g"; $F -o lib.so -shared -fPIC lib.f90; $F -o main main.f90
./lib.so

$ nm -D lib.so | grep var
0000000000200798 D __lib_MOD_var
$ nm -D main | grep var
0000000000600c38 B __lib_MOD_var

$ readelf -a lib.so | approx-grep var
Section Headers:
  [Nr] Name              Type             Address           Offset
       Size              EntSize          Flags  Link  Info  Align
  [21] .data             PROGBITS         0000000000200798  00000798
       0000000000000004  0000000000000000  WA       0     0     4
Symbol table '.dynsym' contains 11 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     9: 0000000000200798     4 OBJECT  GLOBAL DEFAULT   21 __lib_MOD_var
Symbol table '.symtab' contains 57 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
    50: 0000000000200798     4 OBJECT  GLOBAL DEFAULT   21 __lib_MOD_var

$ readelf -a main | approx-grep var
Section Headers:
  [Nr] Name              Type             Address           Offset
       Size              EntSize          Flags  Link  Info  Align
  [25] .bss              NOBITS           0000000000600c38  00000c34
       0000000000000018  0000000000000000  WA       0     0     8
Relocation section '.rela.dyn' at offset 0x560 contains 2 entries:
  Offset          Info           Type           Sym. Value    Sym. Name +
Addend
000000600c38  000c00000005 R_X86_64_COPY     0000000000600c38 __lib_MOD_var + 0
Symbol table '.dynsym' contains 14 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
    12: 0000000000600c38     4 OBJECT  GLOBAL DEFAULT   25 __lib_MOD_var
Symbol table '.symtab' contains 77 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
    59: 0000000000600c38     4 OBJECT  GLOBAL DEFAULT   25 __lib_MOD_var

$ readelf -wi lib.so | approx-grep var
 <1><2d>: Abbrev Number: 2 (DW_TAG_module)
    <2e>   DW_AT_name        : lib
 <2><38>: Abbrev Number: 3 (DW_TAG_variable)
    <39>   DW_AT_name        : var
    <3f>   DW_AT_type        : <0x4f>
    <43>   DW_AT_external    : 1
    <44>   DW_AT_location    : 9 byte block: 3 98 7 20 0 0 0 0 0       
(DW_OP_addr: 200798)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid DW_AT_location

$ readelf -wi main | approx-grep var
 <1><2d>: Abbrev Number: 2 (DW_TAG_subprogram)
    <2f>   DW_AT_name        : (indirect string, offset: 0x9): MAIN__
 <2><50>: Abbrev Number: 4 (DW_TAG_imported_module)
    <53>   DW_AT_import      : <0x58>   [Abbrev Number: 5 (DW_TAG_module)]
 <1><58>: Abbrev Number: 5 (DW_TAG_module)
    <59>   DW_AT_name        : lib
    <5d>   DW_AT_declaration : 1


cat >clib.c <<EOH
int var = 1;

int
func (void)
{
  return var;
}
EOH
cat >cmain.c <<EOH
extern int var;

extern int func (void);

int
main (void)
{
  var = 2;
  return var == func () ? 0 : 1;
}
EOH
C="gcc -Wall -g"; $C -o clib.so -shared -fPIC clib.c; $C -o cmain cmain.c
./clib.so

$ nm -D clib.so | grep var
0000000000200800 D var
$ nm -D cmain | grep var
00000000006009c0 B var

$ readelf -wi clib.so | approx-grep var
 <1><55>: Abbrev Number: 4 (DW_TAG_variable)
    <56>   DW_AT_name        : var
    <5c>   DW_AT_type        : <0x4e>
    <60>   DW_AT_external    : 1
    <61>   DW_AT_declaration : 1
 <1><62>: Abbrev Number: 5 (DW_TAG_variable)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ redundant+invalid DIE
    <63>   DW_AT_name        : var
    <69>   DW_AT_type        : <0x4e>
    <6d>   DW_AT_external    : 1
    <6e>   DW_AT_location    : 9 byte block: 3 0 8 20 0 0 0 0 0        
(DW_OP_addr: 200800)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid DW_AT_location


-- 
           Summary: gfortran invalid DW_AT_location for overridable
                    variables
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jan dot kratochvil at redhat dot com
GCC target triplet: x86_64-unknown-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40040


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug debug/40040] gfortran invalid DW_AT_location for overridable variables
  2009-05-06  9:23 [Bug debug/40040] New: gfortran invalid DW_AT_location for overridable variables jan dot kratochvil at redhat dot com
@ 2009-05-06 10:25 ` jakub at gcc dot gnu dot org
  2009-05-06 10:55 ` jan dot kratochvil at redhat dot com
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: jakub at gcc dot gnu dot org @ 2009-05-06 10:25 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from jakub at gcc dot gnu dot org  2009-05-06 10:24 -------
I'd say this is actually a ld bug, not GCC.
GCC emits:
        .uleb128 0x3    # (DIE (0x38) DW_TAG_variable)
        .ascii "var\0"  # DW_AT_name
        .byte   0x1     # DW_AT_decl_file (pr40040lib.f90)
        .byte   0x2     # DW_AT_decl_line
        .long   0x4f    # DW_AT_type
        .byte   0x1     # DW_AT_external
        .byte   0x9     # DW_AT_location
        .byte   0x3     # DW_OP_addr
        .quad   __pr40040lib_MOD_var
and the relocation is preserved even by gas, .rela.debug_info has:
     6: 0000000000200738     4 OBJECT  GLOBAL DEFAULT   19 __pr40040lib_MOD_var
But then ld resolves all relocations in .rela.debug_info locally and throws
away that section, while perhaps best would be to drop most of the relocations
from that section and keep only some, against overridable objects.  Still the
question is if .rela.debug_info won't be too large for practical uses.

If DW_AT_location isn't provided, how would gdb find that address out?  Using
DW_AT_MIPS_linkage_name (currently not emitted) and symbol lookup?


-- 

jakub at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |tromey at gcc dot gnu dot
                   |                            |org, roland at redhat dot
                   |                            |com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40040


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug debug/40040] gfortran invalid DW_AT_location for overridable variables
  2009-05-06  9:23 [Bug debug/40040] New: gfortran invalid DW_AT_location for overridable variables jan dot kratochvil at redhat dot com
  2009-05-06 10:25 ` [Bug debug/40040] " jakub at gcc dot gnu dot org
@ 2009-05-06 10:55 ` jan dot kratochvil at redhat dot com
  2009-05-06 16:42 ` burnus at gcc dot gnu dot org
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: jan dot kratochvil at redhat dot com @ 2009-05-06 10:55 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from jan dot kratochvil at redhat dot com  2009-05-06 10:54 -------
(In reply to comment #1)
> If DW_AT_location isn't provided, how would gdb find that address out?  Using
> DW_AT_MIPS_linkage_name (currently not emitted) and symbol lookup?

The GDB patch now assembles the symbol name from its parent DW_TAG_module as
`__modulename_MOD_varname'.  As GDB also has to know the C++ mangling rules I
believe this Fortran mangling is can be also used from GDB.

If GDB should never guess the fully qualified names I will have to file at
least one more GCC fortran debug/ PR for DW_TAG_imported_declaration which
already uses only DW_TAG_variable with DW_AT_declaration and no DW_AT_location.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40040


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug debug/40040] gfortran invalid DW_AT_location for overridable variables
  2009-05-06  9:23 [Bug debug/40040] New: gfortran invalid DW_AT_location for overridable variables jan dot kratochvil at redhat dot com
  2009-05-06 10:25 ` [Bug debug/40040] " jakub at gcc dot gnu dot org
  2009-05-06 10:55 ` jan dot kratochvil at redhat dot com
@ 2009-05-06 16:42 ` burnus at gcc dot gnu dot org
  2009-05-06 19:45 ` roland at redhat dot com
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: burnus at gcc dot gnu dot org @ 2009-05-06 16:42 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from burnus at gcc dot gnu dot org  2009-05-06 16:40 -------
(In reply to comment #2)
> The GDB patch now assembles the symbol name from its parent DW_TAG_module as
> `__modulename_MOD_varname'.  As GDB also has to know the C++ mangling rules I
> believe this Fortran mangling is can be also used from GDB.

Note: The Fortran mangling is highly compiler dependent. Intel's ifort uses
"modulename_mp_varname_", sunf95 uses "modulename.varname_", and g95 and NAG
f95 use "modulename_MP_varname" (however,  the latter two don't create
DW_TAG_module - g95 is based on gcc 4.0.x and NAG f95 uses the system's C
compiler).


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40040


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug debug/40040] gfortran invalid DW_AT_location for overridable variables
  2009-05-06  9:23 [Bug debug/40040] New: gfortran invalid DW_AT_location for overridable variables jan dot kratochvil at redhat dot com
                   ` (2 preceding siblings ...)
  2009-05-06 16:42 ` burnus at gcc dot gnu dot org
@ 2009-05-06 19:45 ` roland at redhat dot com
  2009-05-06 20:13 ` jan dot kratochvil at redhat dot com
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: roland at redhat dot com @ 2009-05-06 19:45 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from roland at redhat dot com  2009-05-06 19:45 -------
Hmm.  I am concerned by the idea of relocs for DWARF sections in final-linked
objects.  That is a hassle that consumers have not had to handle before. 
(AFAIK only consumers that handle ET_REL pseudo-final objects such as Linux
kernel .ko modules cope with reloc sections at all.)

I think what's ideal in the abstract is that the location expression indicates
how the variable is really accessed, i.e. loading the address from the GOT or
whatever it really does.

That might not always be possible in the defining declaration.  e.g., when the
definition is in a CU where there are no accesses, perhaps it can't tell
whether other CUs will be using direct addressing (e.g. @GOTOFF) or
GOT-indirect.

I read DWARF 3 section 4.1 item 4 to suggest that there should be a defining
DW_TAG_variable whose DW_AT_location can be the "base" one, i.e. direct address
in the definer, plus non-defining DW_TAG_variable (with DW_AT_declaration) DIEs
whose DW_AT_location expressions indicate how the variable is accessed in each
scope using it.  So, in the "main program" CU the DW_TAG_variable should have
DW_AT_declaration, DW_AT_external, and a DW_AT_location describing the main
program's copy (or its GOT lookup if PIC).  In the non-defining accessing CUs
in a DSO, there should be a similar DIE whose DW_AT_location describes that
DSO's GOT lookup, etc.  If the defining CU also contains accesses, then the
defining DW_TAG_variable's DW_AT_location would describe the GOT access if
that's what that CU uses, and then no DIE anywhere would have the direct
address location expression for the DSO initializer/copy.

I don't know how ready GDB et al are to cope with this, but it seems like the
"correct" route to me.  They'd have to find the right DIE for the scope of the
access, so it has the appropriate location expression.  For "blind" global
lookups, it would have to be sure to use the "dominating" DIE, i.e. choose one
somewhere in the main program before the defining definition in the DSO.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40040


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug debug/40040] gfortran invalid DW_AT_location for overridable variables
  2009-05-06  9:23 [Bug debug/40040] New: gfortran invalid DW_AT_location for overridable variables jan dot kratochvil at redhat dot com
                   ` (3 preceding siblings ...)
  2009-05-06 19:45 ` roland at redhat dot com
@ 2009-05-06 20:13 ` jan dot kratochvil at redhat dot com
  2009-08-21 18:40 ` burnus at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: jan dot kratochvil at redhat dot com @ 2009-05-06 20:13 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from jan dot kratochvil at redhat dot com  2009-05-06 20:12 -------
(In reply to comment #4)
> I don't know how ready GDB et al are to cope with this,

(For GDB the local definitions containing an address expression are even less
problematic than the current declarations requiring mangled symbols resolving.)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40040


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug debug/40040] gfortran invalid DW_AT_location for overridable variables
  2009-05-06  9:23 [Bug debug/40040] New: gfortran invalid DW_AT_location for overridable variables jan dot kratochvil at redhat dot com
                   ` (4 preceding siblings ...)
  2009-05-06 20:13 ` jan dot kratochvil at redhat dot com
@ 2009-08-21 18:40 ` burnus at gcc dot gnu dot org
  2010-04-20  9:14 ` jan dot kratochvil at redhat dot com
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: burnus at gcc dot gnu dot org @ 2009-08-21 18:40 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from burnus at gcc dot gnu dot org  2009-08-21 18:40 -------
What is actually the status of this PR? I read through it twice and I still do
not know whether this is a GCC bug or a GNU ld bug - and, if the former, how it
is supposed to be fixed.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40040


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug debug/40040] gfortran invalid DW_AT_location for overridable variables
  2009-05-06  9:23 [Bug debug/40040] New: gfortran invalid DW_AT_location for overridable variables jan dot kratochvil at redhat dot com
                   ` (5 preceding siblings ...)
  2009-08-21 18:40 ` burnus at gcc dot gnu dot org
@ 2010-04-20  9:14 ` jan dot kratochvil at redhat dot com
  2010-04-20  9:21 ` jakub at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: jan dot kratochvil at redhat dot com @ 2010-04-20  9:14 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from jan dot kratochvil at redhat dot com  2010-04-20 09:14 -------
Created an attachment (id=20436)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20436&action=view)
Preliminary GDB patch.

Tobias, could you add DW_AT_MIPS_linkage name?

You say in Comment 3 the debugger cannot guess the linkage name from
DW_AT_namespace hierarchy as it is not standardized across Fortran compilers.

If DW_AT_external is true the GDB patch ignores DW_AT_location and relies on
the ELF symbols which would work.  It should IMHO follow Roland's
Re: Cross-CU C++ DIE references vs. mangling
http://sourceware.org/ml/archer/2010-q1/msg00092.html


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40040


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug debug/40040] gfortran invalid DW_AT_location for overridable variables
  2009-05-06  9:23 [Bug debug/40040] New: gfortran invalid DW_AT_location for overridable variables jan dot kratochvil at redhat dot com
                   ` (6 preceding siblings ...)
  2010-04-20  9:14 ` jan dot kratochvil at redhat dot com
@ 2010-04-20  9:21 ` jakub at gcc dot gnu dot org
  2010-04-20 12:24 ` jan dot kratochvil at redhat dot com
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: jakub at gcc dot gnu dot org @ 2010-04-20  9:21 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from jakub at gcc dot gnu dot org  2010-04-20 09:21 -------
Please treat DW_AT_linkage_name the same as DW_AT_MIPS_linkage_name, for
-gdwarf-4 the patch I've posted yesterday emits the former rather than latter.

Currently the addition of DW_AT_{,MIPS_}linkage_name is guarded with
&& !is_fortran ()
that would probably need to go away.
BTW, should DW_AT_{,MIPS_}linkage_name be also present on DW_TAG_common_block?
If yes, we need to file a request similar to
http://dwarfstd.org/ShowIssue.php?issue=100419.4&type=open
for DW_AT_linkage_name to be allowed on DW_TAG_common_block.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40040


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug debug/40040] gfortran invalid DW_AT_location for overridable variables
  2009-05-06  9:23 [Bug debug/40040] New: gfortran invalid DW_AT_location for overridable variables jan dot kratochvil at redhat dot com
                   ` (7 preceding siblings ...)
  2010-04-20  9:21 ` jakub at gcc dot gnu dot org
@ 2010-04-20 12:24 ` jan dot kratochvil at redhat dot com
  2010-04-21 10:31 ` jakub at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: jan dot kratochvil at redhat dot com @ 2010-04-20 12:24 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from jan dot kratochvil at redhat dot com  2010-04-20 12:24 -------
(In reply to comment #8)
> BTW, should DW_AT_{,MIPS_}linkage_name be also present on DW_TAG_common_block?
[...]
> for DW_AT_linkage_name to be allowed on DW_TAG_common_block.

For DW_TAG_common_block:
+      /* SYMBOL_VALUE_ADDRESS never gets used as all its fields are static. 
*/
There is only important the user-visible DW_AT_name of DW_TAG_common_block.

Then there are child DIEs DW_TAG_variable.  Good point there should be
DW_AT_*linkage_name present the same way as normal variables should have it.

http://cvs.fedoraproject.org/viewvc/rpms/gdb/F-13/gdb-fortran-common.patch?content-type=text%2Fplain&view=co

 <2><4a>: Abbrev Number: 3 (DW_TAG_common_block)
    <4b>   DW_AT_name        : (indirect string, offset: 0xd3): fo_o
    <51>   DW_AT_location    : 9 byte block: 3 50 c 60 0 0 0 0 0       
(DW_OP_addr: 600c50)
 <3><5f>: Abbrev Number: 4 (DW_TAG_variable)
    <60>   DW_AT_name        : ix
    <65>   DW_AT_type        : <0x114>
    <69>   DW_AT_external    : 1
    <6a>   DW_AT_location    : 9 byte block: 3 50 c 60 0 0 0 0 0       
(DW_OP_addr: 600c50)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40040


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug debug/40040] gfortran invalid DW_AT_location for overridable variables
  2009-05-06  9:23 [Bug debug/40040] New: gfortran invalid DW_AT_location for overridable variables jan dot kratochvil at redhat dot com
                   ` (8 preceding siblings ...)
  2010-04-20 12:24 ` jan dot kratochvil at redhat dot com
@ 2010-04-21 10:31 ` jakub at gcc dot gnu dot org
  2010-04-21 10:39 ` fxcoudert at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: jakub at gcc dot gnu dot org @ 2010-04-21 10:31 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from jakub at gcc dot gnu dot org  2010-04-21 10:31 -------
BTW, gcc stopped emitting with
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=129882
- PR10220 commit.
Unfortunately that change isn't even mentioned in the ChangeLog entry nor I
could find any discussions about it on the mailing list from that time.


-- 

jakub at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |fxcoudert at gcc dot gnu dot
                   |                            |org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40040


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug debug/40040] gfortran invalid DW_AT_location for overridable variables
  2009-05-06  9:23 [Bug debug/40040] New: gfortran invalid DW_AT_location for overridable variables jan dot kratochvil at redhat dot com
                   ` (9 preceding siblings ...)
  2010-04-21 10:31 ` jakub at gcc dot gnu dot org
@ 2010-04-21 10:39 ` fxcoudert at gcc dot gnu dot org
  2010-04-21 10:43 ` jakub at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 16+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2010-04-21 10:39 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from fxcoudert at gcc dot gnu dot org  2010-04-21 10:38 -------
(In reply to comment #10)
> Unfortunately that change isn't even mentioned in the ChangeLog entry nor I
> could find any discussions about it on the mailing list from that time.

In the bugzilla PR you reference, there are links to the gcc-patches thread:
http://gcc.gnu.org/ml/gcc-patches/2007-11/msg00120.html
which itself refers to a thread on the gdb list:
http://www.sourceware.org/ml/gdb/2007-10/msg00205.html


Now, if you're refering to this hunk of the change:

--- trunk/gcc/dwarf2out.c       2007/11/04 04:34:47     129881
+++ trunk/gcc/dwarf2out.c       2007/11/04 14:43:45     129882
@@ -11356,7 +11356,8 @@
          && TREE_PUBLIC (decl)
          && DECL_ASSEMBLER_NAME (decl) != DECL_NAME (decl)
          && !DECL_ABSTRACT (decl)
-         && !(TREE_CODE (decl) == VAR_DECL && DECL_REGISTER (decl)))
+         && !(TREE_CODE (decl) == VAR_DECL && DECL_REGISTER (decl))
+         && !is_fortran ())
        add_AT_string (die, DW_AT_MIPS_linkage_name,
                       IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)));
     }

well, it looks like it wasn't approved, so I wouldn't be surprised if it's just
a something I had testing in my tree that I inadvertently committed at the
time. Sorry about that.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40040


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug debug/40040] gfortran invalid DW_AT_location for overridable variables
  2009-05-06  9:23 [Bug debug/40040] New: gfortran invalid DW_AT_location for overridable variables jan dot kratochvil at redhat dot com
                   ` (10 preceding siblings ...)
  2010-04-21 10:39 ` fxcoudert at gcc dot gnu dot org
@ 2010-04-21 10:43 ` jakub at gcc dot gnu dot org
  2010-04-21 10:46 ` fxcoudert at gcc dot gnu dot org
  2010-04-21 16:49 ` jakub at gcc dot gnu dot org
  13 siblings, 0 replies; 16+ messages in thread
From: jakub at gcc dot gnu dot org @ 2010-04-21 10:43 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from jakub at gcc dot gnu dot org  2010-04-21 10:43 -------
Yeah, that's exactly the hunk I'm referring to.  The gdb patch Jan provided
relies on DW_AT_MIPS_linkage_name (or DW_AT_linkage_name hopefully for DWARF4)
to be provided.  While for most normal Fortran identifiers when modules aren't
involved most implementations agree on appending _ at the end, for
objects/functions in modules the mangling differs between implementations and
certainly isn't something debug info consumers should hardcode.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40040


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug debug/40040] gfortran invalid DW_AT_location for overridable variables
  2009-05-06  9:23 [Bug debug/40040] New: gfortran invalid DW_AT_location for overridable variables jan dot kratochvil at redhat dot com
                   ` (11 preceding siblings ...)
  2010-04-21 10:43 ` jakub at gcc dot gnu dot org
@ 2010-04-21 10:46 ` fxcoudert at gcc dot gnu dot org
  2010-04-21 16:49 ` jakub at gcc dot gnu dot org
  13 siblings, 0 replies; 16+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2010-04-21 10:46 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from fxcoudert at gcc dot gnu dot org  2010-04-21 10:46 -------
I have googled the gcc.gnu.org domain for my name and DW_AT_MIPS_linkage_name,
and came up with nothing relevant. So, I never proposed or sought to get this
part approved, which confirms it's probably just human error. I am no longer a
Fortran maintainer, but I'm sure the reversion will be easily approved.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40040


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug debug/40040] gfortran invalid DW_AT_location for overridable variables
  2009-05-06  9:23 [Bug debug/40040] New: gfortran invalid DW_AT_location for overridable variables jan dot kratochvil at redhat dot com
                   ` (12 preceding siblings ...)
  2010-04-21 10:46 ` fxcoudert at gcc dot gnu dot org
@ 2010-04-21 16:49 ` jakub at gcc dot gnu dot org
  13 siblings, 0 replies; 16+ messages in thread
From: jakub at gcc dot gnu dot org @ 2010-04-21 16:49 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from jakub at gcc dot gnu dot org  2010-04-21 16:49 -------
Subject: Bug 40040

Author: jakub
Date: Wed Apr 21 16:48:41 2010
New Revision: 158612

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=158612
Log:
        PR debug/40040
        * dwarf2out.c (add_name_and_src_coords_attributes): Add
        DW_AT_{,MIPS_}linkage_name even for Fortran decls.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/dwarf2out.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40040


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bug debug/40040] gfortran invalid DW_AT_location for overridable variables
       [not found] <bug-40040-4@http.gcc.gnu.org/bugzilla/>
@ 2013-06-25  9:15 ` dominiq at lps dot ens.fr
  0 siblings, 0 replies; 16+ messages in thread
From: dominiq at lps dot ens.fr @ 2013-06-25  9:15 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40040

Dominique d'Humieres <dominiq at lps dot ens.fr> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |WAITING
   Last reconfirmed|                            |2013-06-25
     Ever confirmed|0                           |1

--- Comment #15 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
Is this fixed by revision 158612? If yes, please close this PR as FIXED.


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2013-06-25  9:15 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-05-06  9:23 [Bug debug/40040] New: gfortran invalid DW_AT_location for overridable variables jan dot kratochvil at redhat dot com
2009-05-06 10:25 ` [Bug debug/40040] " jakub at gcc dot gnu dot org
2009-05-06 10:55 ` jan dot kratochvil at redhat dot com
2009-05-06 16:42 ` burnus at gcc dot gnu dot org
2009-05-06 19:45 ` roland at redhat dot com
2009-05-06 20:13 ` jan dot kratochvil at redhat dot com
2009-08-21 18:40 ` burnus at gcc dot gnu dot org
2010-04-20  9:14 ` jan dot kratochvil at redhat dot com
2010-04-20  9:21 ` jakub at gcc dot gnu dot org
2010-04-20 12:24 ` jan dot kratochvil at redhat dot com
2010-04-21 10:31 ` jakub at gcc dot gnu dot org
2010-04-21 10:39 ` fxcoudert at gcc dot gnu dot org
2010-04-21 10:43 ` jakub at gcc dot gnu dot org
2010-04-21 10:46 ` fxcoudert at gcc dot gnu dot org
2010-04-21 16:49 ` jakub at gcc dot gnu dot org
     [not found] <bug-40040-4@http.gcc.gnu.org/bugzilla/>
2013-06-25  9:15 ` dominiq at lps dot ens.fr

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).