public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/12843] New: [ABI] Possibly wrong mangling (incompatibility with icc7)
@ 2003-10-30 14:41 bangerth at dealii dot org
  2003-10-30 14:42 ` [Bug c++/12843] " nathan at gcc dot gnu dot org
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: bangerth at dealii dot org @ 2003-10-30 14:41 UTC (permalink / raw)
  To: gcc-bugs

PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

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

           Summary: [ABI] Possibly wrong mangling (incompatibility with
                    icc7)
           Product: gcc
           Version: 3.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: bangerth at dealii dot org
                CC: gcc-bugs at gcc dot gnu dot org

This code
--------------------------------
template <typename Container>
typename Container::iterator
f(Container)
{ return typename Container::iterator(); }

struct X {
    typedef int * iterator;
};

template X::iterator f<X> (X);
------------------------------
produces the following manglings of the instance of f():
  mainline -fabi-version=1:
    _Z1fI1XEN9Container8iteratorES1_
  mainline -fabi-version=2:
    _Z1fI1XENT_8iteratorES1_
  icc 7.0:
    _Z1fI1XEN9Container8iteratorET_

I am not familiar with the mangling rules, but someone might want to
check that we really do the right thing in this case and that it is icc's
faulty mangling that lets us not be link-compatible between icc and
mainline with -fabi-version=2.

W.


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

* [Bug c++/12843] [ABI] Possibly wrong mangling (incompatibility with icc7)
  2003-10-30 14:41 [Bug c++/12843] New: [ABI] Possibly wrong mangling (incompatibility with icc7) bangerth at dealii dot org
@ 2003-10-30 14:42 ` nathan at gcc dot gnu dot org
  2003-10-30 16:12   ` Carlo Wood
  2003-10-30 15:58 ` bangerth at ices dot utexas dot edu
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 7+ messages in thread
From: nathan at gcc dot gnu dot org @ 2003-10-30 14:42 UTC (permalink / raw)
  To: gcc-bugs

PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

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


nathan at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |FIXED


------- Additional Comments From nathan at gcc dot gnu dot org  2003-10-30 14:41 -------
The icc manglings and fabi-version=1 are definitly wrong. The name
of a template parameter should never appear in a mangling. The fabi=2
mangling looks good to me
1f -- func name
I1XE template arg list. arg is 1X
NT_ 8iteratorE - nested name using first template arg :: iterator
S1_ copy of substitution 1

defect in icc


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

* [Bug c++/12843] [ABI] Possibly wrong mangling (incompatibility with icc7)
  2003-10-30 14:41 [Bug c++/12843] New: [ABI] Possibly wrong mangling (incompatibility with icc7) bangerth at dealii dot org
  2003-10-30 14:42 ` [Bug c++/12843] " nathan at gcc dot gnu dot org
@ 2003-10-30 15:58 ` bangerth at ices dot utexas dot edu
  2003-10-30 16:19 ` carlo at alinoe dot com
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: bangerth at ices dot utexas dot edu @ 2003-10-30 15:58 UTC (permalink / raw)
  To: gcc-bugs

PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

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



------- Additional Comments From bangerth at ices dot utexas dot edu  2003-10-30 15:45 -------
Subject: Re:  [ABI] Possibly wrong mangling (incompatibility with icc7)


Thanks, Nathan, for this really quick review! I was almost sure that having 
the name of a parameter in the mangling must be wrong since one can change it 
between successive declarations. But not knowing the standard in this respect 
I thought I'd better ask.

Thanks
  Wolfgang

-------------------------------------------------------------------------
Wolfgang Bangerth              email:            bangerth@ices.utexas.edu
                               www: http://www.ices.utexas.edu/~bangerth/


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

* Re: [Bug c++/12843] [ABI] Possibly wrong mangling (incompatibility with icc7)
  2003-10-30 14:42 ` [Bug c++/12843] " nathan at gcc dot gnu dot org
@ 2003-10-30 16:12   ` Carlo Wood
  0 siblings, 0 replies; 7+ messages in thread
From: Carlo Wood @ 2003-10-30 16:12 UTC (permalink / raw)
  To: nathan at gcc dot gnu dot org; +Cc: gcc-bugs

On Thu, Oct 30, 2003 at 02:41:10PM -0000, nathan at gcc dot gnu dot org wrote:
> The icc manglings and fabi-version=1 are definitly wrong. The name
> of a template parameter should never appear in a mangling. The fabi=2
> mangling looks good to me
> 1f -- func name
> I1XE template arg list. arg is 1X
> NT_ 8iteratorE - nested name using first template arg :: iterator
> S1_ copy of substitution 1
> 
> defect in icc

This is probably because the ABI was changed since it publication
one or two years ago.

<nested-name> ::= N [<CV-qualifiers>] <prefix> <unqualified-name> E
		  ::= N [<CV-qualifiers>] <template-prefix> <template-args> E

    <prefix> ::= <prefix> <unqualified-name>
	     ::= <template-prefix> <template-args>
             ::= <template-param>				<== NEW
	     ::= # empty
	     ::= <substitution>

    <template-prefix> ::= <prefix> <template unqualified-name>
                      ::= <template-param>			<== NEW
                      ::= <substitution>

Those <template-param> were not there in the beginning.
This also reveals a bug in the demangler.
I guess I'll have to go over the most recent specification to check
what all was changed.

-- 
Carlo Wood <carlo@alinoe.com>


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

* [Bug c++/12843] [ABI] Possibly wrong mangling (incompatibility with icc7)
  2003-10-30 14:41 [Bug c++/12843] New: [ABI] Possibly wrong mangling (incompatibility with icc7) bangerth at dealii dot org
  2003-10-30 14:42 ` [Bug c++/12843] " nathan at gcc dot gnu dot org
  2003-10-30 15:58 ` bangerth at ices dot utexas dot edu
@ 2003-10-30 16:19 ` carlo at alinoe dot com
  2004-07-13 20:27 ` reichelt at gcc dot gnu dot org
  2004-07-13 20:27 ` reichelt at gcc dot gnu dot org
  4 siblings, 0 replies; 7+ messages in thread
From: carlo at alinoe dot com @ 2003-10-30 16:19 UTC (permalink / raw)
  To: gcc-bugs

PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

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



------- Additional Comments From carlo at alinoe dot com  2003-10-30 16:12 -------
Subject: Re:  [ABI] Possibly wrong mangling (incompatibility with icc7)

On Thu, Oct 30, 2003 at 02:41:10PM -0000, nathan at gcc dot gnu dot org wrote:
> The icc manglings and fabi-version=1 are definitly wrong. The name
> of a template parameter should never appear in a mangling. The fabi=2
> mangling looks good to me
> 1f -- func name
> I1XE template arg list. arg is 1X
> NT_ 8iteratorE - nested name using first template arg :: iterator
> S1_ copy of substitution 1
> 
> defect in icc

This is probably because the ABI was changed since it publication
one or two years ago.

<nested-name> ::= N [<CV-qualifiers>] <prefix> <unqualified-name> E
		  ::= N [<CV-qualifiers>] <template-prefix> <template-args> E

    <prefix> ::= <prefix> <unqualified-name>
	     ::= <template-prefix> <template-args>
             ::= <template-param>				<== NEW
	     ::= # empty
	     ::= <substitution>

    <template-prefix> ::= <prefix> <template unqualified-name>
                      ::= <template-param>			<== NEW
                      ::= <substitution>

Those <template-param> were not there in the beginning.
This also reveals a bug in the demangler.
I guess I'll have to go over the most recent specification to check
what all was changed.


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

* [Bug c++/12843] [ABI] Possibly wrong mangling (incompatibility with icc7)
  2003-10-30 14:41 [Bug c++/12843] New: [ABI] Possibly wrong mangling (incompatibility with icc7) bangerth at dealii dot org
                   ` (3 preceding siblings ...)
  2004-07-13 20:27 ` reichelt at gcc dot gnu dot org
@ 2004-07-13 20:27 ` reichelt at gcc dot gnu dot org
  4 siblings, 0 replies; 7+ messages in thread
From: reichelt at gcc dot gnu dot org @ 2004-07-13 20:27 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From reichelt at gcc dot gnu dot org  2004-07-13 20:27 -------
... to mark as invalid.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |INVALID


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


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

* [Bug c++/12843] [ABI] Possibly wrong mangling (incompatibility with icc7)
  2003-10-30 14:41 [Bug c++/12843] New: [ABI] Possibly wrong mangling (incompatibility with icc7) bangerth at dealii dot org
                   ` (2 preceding siblings ...)
  2003-10-30 16:19 ` carlo at alinoe dot com
@ 2004-07-13 20:27 ` reichelt at gcc dot gnu dot org
  2004-07-13 20:27 ` reichelt at gcc dot gnu dot org
  4 siblings, 0 replies; 7+ messages in thread
From: reichelt at gcc dot gnu dot org @ 2004-07-13 20:27 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From reichelt at gcc dot gnu dot org  2004-07-13 20:27 -------
Reopening ...

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |UNCONFIRMED
         Resolution|FIXED                       |


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


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

end of thread, other threads:[~2004-07-13 20:27 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-10-30 14:41 [Bug c++/12843] New: [ABI] Possibly wrong mangling (incompatibility with icc7) bangerth at dealii dot org
2003-10-30 14:42 ` [Bug c++/12843] " nathan at gcc dot gnu dot org
2003-10-30 16:12   ` Carlo Wood
2003-10-30 15:58 ` bangerth at ices dot utexas dot edu
2003-10-30 16:19 ` carlo at alinoe dot com
2004-07-13 20:27 ` reichelt at gcc dot gnu dot org
2004-07-13 20:27 ` reichelt at gcc dot gnu dot org

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