You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by Martin Sebor <se...@roguewave.com> on 2007/10/15 22:13:51 UTC

[Fwd: svn commit: r584880 - in /incubator/stdcxx/trunk/etc/config/src: NO_OBJECT_MANGLING.cpp object_mangling_imp.cpp]

Hi Farid,

Do I need to do something special in order for the VisualStudio
infrastructure to pick up this test or is it handled automatically
like on UNIX? The tricky part that I'm worried about is setting
LDOPTS in the main test to link it with object_mangling_imp.o.

Travis, do you know this part of the infrastructure yet to be able
to tell?

Thanks
Martin

-------- Original Message --------
Subject: svn commit: r584880 - in 
/incubator/stdcxx/trunk/etc/config/src: NO_OBJECT_MANGLING.cpp 
object_mangling_imp.cpp
Date: Mon, 15 Oct 2007 19:58:39 -0000
From: sebor@apache.org
Reply-To: stdcxx-dev@incubator.apache.org
To: stdcxx-commits@incubator.apache.org

Author: sebor
Date: Mon Oct 15 12:58:38 2007
New Revision: 584880

URL: http://svn.apache.org/viewvc?rev=584880&view=rev
Log:
2007-10-15  Martin Sebor  <se...@roguewave.com>

	* NO_OBJECT_MANGLING.cpp: New config test to determine whether
	namespace-scope objects have their types mangled into their
	names (as done by MSVC) or not (other compilers).
	* object_mangling_imp.cpp: Helper file to go with the above.

Added:
     incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp 
(with props)
     incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp 
(with props)

Added: incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp
URL: 
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp?rev=584880&view=auto
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp (added)
+++ incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp Mon Oct 
15 12:58:38 2007
@@ -0,0 +1,37 @@
+// checking for object name mangling
+
+/***************************************************************************
+ *
+ * Licensed to the Apache Software  Foundation (ASF) under one or more
+ * contributor  license agreements.  See  the NOTICE  file distributed
+ * with  this  work  for  additional information  regarding  copyright
+ * ownership.   The ASF  licenses this  file to  you under  the Apache
+ * License, Version  2.0 (the  License); you may  not use  this file
+ * except in  compliance with the License.   You may obtain  a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the  License is distributed on an  "AS IS" BASIS,
+ * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
+ * implied.   See  the License  for  the  specific language  governing
+ * permissions and limitations under the License.
+ *
+ * Copyright 1999-2007 Rogue Wave Software, Inc.
+ *
+ 
**************************************************************************/
+
+#ifdef _RWSTD_object_mangling_imp
+  // link with the object file below
+  // LDOPTS = object_mangling_imp.o
+#endif   // _RWSTD_object_mangling_imp
+
+// declared but not defined here (defined in object_mangling_imp.cpp)
+extern int declared_int_defined_char_array;
+
+int main ()
+{
+    // return 0 to indicate that the object has non-zero value
+    return !declared_int_defined_char_array;
+}

Propchange: incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp
------------------------------------------------------------------------------
     svn:eol-style = native

Propchange: incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp
------------------------------------------------------------------------------
     svn:keywords = Id

Added: incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp
URL: 
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp?rev=584880&view=auto
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp (added)
+++ incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp Mon 
Oct 15 12:58:38 2007
@@ -0,0 +1,29 @@
+
+/***************************************************************************
+ *
+ * Licensed to the Apache Software  Foundation (ASF) under one or more
+ * contributor  license agreements.  See  the NOTICE  file distributed
+ * with  this  work  for  additional information  regarding  copyright
+ * ownership.   The ASF  licenses this  file to  you under  the Apache
+ * License, Version  2.0 (the  License); you may  not use  this file
+ * except in  compliance with the License.   You may obtain  a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the  License is distributed on an  "AS IS" BASIS,
+ * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
+ * implied.   See  the License  for  the  specific language  governing
+ * permissions and limitations under the License.
+ *
+ * Copyright 1999-2007 Rogue Wave Software, Inc.
+ *
+ 
**************************************************************************/
+
+char declared_int_defined_char_array [sizeof (int)] = {
+    // define the object to have a different type than its declaration
+    // in NO_NAME_MANGLING.cpp to detect whether mangled object names
+    // include type information or not
+    '\1'
+};

Propchange: incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp
------------------------------------------------------------------------------
     svn:eol-style = native

Propchange: incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp
------------------------------------------------------------------------------
     svn:keywords = Id



RE: [Fwd: svn commit: r584880 - in /incubator/stdcxx/trunk/etc/config/src: NO_OBJECT_MANGLING.cpp object_mangling_imp.cpp]

Posted by Farid Zaripov <Fa...@epam.com>.
> -----Original Message-----
> From: Martin Sebor [mailto:sebor@roguewave.com] 
> Sent: Monday, October 15, 2007 11:14 PM
> To: stdcxx-dev@incubator.apache.org
> Subject: [Fwd: svn commit: r584880 - in 
> /incubator/stdcxx/trunk/etc/config/src: 
> NO_OBJECT_MANGLING.cpp object_mangling_imp.cpp]
> 
> Hi Farid,
> 
> Do I need to do something special in order for the 
> VisualStudio infrastructure to pick up this test or is it 
> handled automatically like on UNIX? The tricky part that I'm 
> worried about is setting LDOPTS in the main test to link it 
> with object_mangling_imp.o.

  The configure.wsf configuration script is fully compatible
with gnumakefile.cfg.

Farid.

Re: [Fwd: svn commit: r584880 - in /incubator/stdcxx/trunk/etc/config/src: NO_OBJECT_MANGLING.cpp object_mangling_imp.cpp]

Posted by Martin Sebor <se...@roguewave.com>.
Just as a heads up, even though this is a rather short notice,
since this test works as expected even on Windows/MSVC I'll go
ahead and merge it to 4.2.0 in preparation for the STDCXX-509
fix. If anyone has a problem with this, speak up.

Martin

Martin Sebor wrote:
> Travis Vitek wrote:
>> No. I should probably double-check before opening my yapper. Here is the
>> the log from the windows configuration step. Both source files are
>> compiled and the final link line links both objects as you're expecting.
> 
> Great, thanks for the confirmation! I've configured the library
> with Visual Studio 8 and it looks like the test works as expected,
> i.e., it correctly detects that the compiler mangles the type of
> objects into their names. I.e., _RWSTD_NO_OBJECT_MANGLING is not
> #defined.
> 
> Btw., in case anyone's wondering why I need this, it's to fix
> STDCXX-509 in a binary compatible way. The original fix I had
> come up with was binary compatible everywhere except for MSVC
> (due to the compiler mangling algorithm). The new one that's
> in place now, isn't binary compatible at all. So I'm thinking
> I'll go back to the original fix for all platforms but MSVC
> (or more generally, for all platfrms where the new
> _RWSTD_NO_OBJECT_MANGLING macro is #defined), and either come
> up with a special case solution for MSVC (e.g., try to mangle
> the name myself), or leave the bug there until we can break
> binary compatibility. Suggestions are welcome!
> 
> Martin
> 
>>
>> Travis
>>
>> Compiling with command "cl /c /EHsc /GS /D_CRT_SECURE_NO_DEPRECATE /GR
>> /MDd /Zi /Gm /I"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests"
>> /D"_RWSHARED" /Fo"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\\"
>> /Fd"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\object_mangling_imp
>> .pdb" "C:\Build\stdcxx-trunk\etc\config\src\object_mangling_imp.cpp""
>> Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42
>> for 80x86
>> Copyright (C) Microsoft Corporation.  All rights reserved.
>>
>> object_mangling_imp.cpp
>>
>> Compiling with command "cl /c /EHsc /GS /D_CRT_SECURE_NO_DEPRECATE /GR
>> /MDd /Zi /Gm /I"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests"
>> /D"_RWSHARED" /Fo"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\\"
>> /Fd"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\NO_OBJECT_MANGLING.
>> pdb" "C:\Build\stdcxx-trunk\etc\config\src\NO_OBJECT_MANGLING.cpp""
>> Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42
>> for 80x86
>> Copyright (C) Microsoft Corporation.  All rights reserved.
>>
>> NO_OBJECT_MANGLING.cpp
>>
>> Linking with command "cl
>> "C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\NO_OBJECT_MANGLING.obj
>> "
>> "C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\object_mangling_imp.ob
>> j"
>> /Fe"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\NO_OBJECT_MANGLING.
>> exe" /link  /NODEFAULTLIB:"msvcprtd.lib" /DEBUG"
>> Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42
>> for 80x86
>> Copyright (C) Microsoft Corporation.  All rights reserved.
>>
>> Microsoft (R) Incremental Linker Version 8.00.50727.42
>> Copyright (C) Microsoft Corporation.  All rights reserved.
>>
>> /out:C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\NO_OBJECT_MANGLING
>> .exe /NODEFAULTLIB:msvcprtd.lib /DEBUG 
>> C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\NO_OBJECT_MANGLING.obj 
>> C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\object_mangling_imp.obj
>>
>> NO_OBJECT_MANGLING.obj : error LNK2001: unresolved external symbol "int
>> declared_int_defined_char_array" (?declared_int_defined_char_array@@3HA)
>>
>>
>>> Actually, I should clarify that a bit more. The framework treats each
>>> .cpp file as an independent config test. Since you've added two .cpp
>>> files, the framework attempts to make them both like regular config
>>> tests. It tries to build them into executables and execute them.
>>>
>>> Travis
>>>
>>>> The framework will add the new test, but it doesn't have any way to 
>>>> know
>>>> to compile and link object_name_mangling_imp.o. Something will need to
>>>> be updated for that to work correctly.
>>>>
>>>> Travis
> 


Re: [Fwd: svn commit: r584880 - in /incubator/stdcxx/trunk/etc/config/src: NO_OBJECT_MANGLING.cpp object_mangling_imp.cpp]

Posted by Martin Sebor <se...@roguewave.com>.
Travis Vitek wrote:
> No. I should probably double-check before opening my yapper. Here is the
> the log from the windows configuration step. Both source files are
> compiled and the final link line links both objects as you're expecting.

Great, thanks for the confirmation! I've configured the library
with Visual Studio 8 and it looks like the test works as expected,
i.e., it correctly detects that the compiler mangles the type of
objects into their names. I.e., _RWSTD_NO_OBJECT_MANGLING is not
#defined.

Btw., in case anyone's wondering why I need this, it's to fix
STDCXX-509 in a binary compatible way. The original fix I had
come up with was binary compatible everywhere except for MSVC
(due to the compiler mangling algorithm). The new one that's
in place now, isn't binary compatible at all. So I'm thinking
I'll go back to the original fix for all platforms but MSVC
(or more generally, for all platfrms where the new
_RWSTD_NO_OBJECT_MANGLING macro is #defined), and either come
up with a special case solution for MSVC (e.g., try to mangle
the name myself), or leave the bug there until we can break
binary compatibility. Suggestions are welcome!

Martin

> 
> Travis
> 
> Compiling with command "cl /c /EHsc /GS /D_CRT_SECURE_NO_DEPRECATE /GR
> /MDd /Zi /Gm /I"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests"
> /D"_RWSHARED" /Fo"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\\"
> /Fd"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\object_mangling_imp
> .pdb" "C:\Build\stdcxx-trunk\etc\config\src\object_mangling_imp.cpp""
> Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42
> for 80x86
> Copyright (C) Microsoft Corporation.  All rights reserved.
> 
> object_mangling_imp.cpp
> 
> Compiling with command "cl /c /EHsc /GS /D_CRT_SECURE_NO_DEPRECATE /GR
> /MDd /Zi /Gm /I"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests"
> /D"_RWSHARED" /Fo"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\\"
> /Fd"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\NO_OBJECT_MANGLING.
> pdb" "C:\Build\stdcxx-trunk\etc\config\src\NO_OBJECT_MANGLING.cpp""
> Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42
> for 80x86
> Copyright (C) Microsoft Corporation.  All rights reserved.
> 
> NO_OBJECT_MANGLING.cpp
> 
> Linking with command "cl
> "C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\NO_OBJECT_MANGLING.obj
> "
> "C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\object_mangling_imp.ob
> j"
> /Fe"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\NO_OBJECT_MANGLING.
> exe" /link  /NODEFAULTLIB:"msvcprtd.lib" /DEBUG"
> Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42
> for 80x86
> Copyright (C) Microsoft Corporation.  All rights reserved.
> 
> Microsoft (R) Incremental Linker Version 8.00.50727.42
> Copyright (C) Microsoft Corporation.  All rights reserved.
> 
> /out:C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\NO_OBJECT_MANGLING
> .exe 
> /NODEFAULTLIB:msvcprtd.lib 
> /DEBUG 
> C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\NO_OBJECT_MANGLING.obj 
> C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\object_mangling_imp.obj
> 
> NO_OBJECT_MANGLING.obj : error LNK2001: unresolved external symbol "int
> declared_int_defined_char_array" (?declared_int_defined_char_array@@3HA)
> 
> 
>> Actually, I should clarify that a bit more. The framework treats each
>> .cpp file as an independent config test. Since you've added two .cpp
>> files, the framework attempts to make them both like regular config
>> tests. It tries to build them into executables and execute them.
>>
>> Travis
>>
>>> The framework will add the new test, but it doesn't have any 
>>> way to know
>>> to compile and link object_name_mangling_imp.o. Something will need to
>>> be updated for that to work correctly.
>>>
>>> Travis 
>>>


RE: [Fwd: svn commit: r584880 - in /incubator/stdcxx/trunk/etc/config/src: NO_OBJECT_MANGLING.cpp object_mangling_imp.cpp]

Posted by Travis Vitek <tv...@roguewave.com>.
No. I should probably double-check before opening my yapper. Here is the
the log from the windows configuration step. Both source files are
compiled and the final link line links both objects as you're expecting.

Travis

Compiling with command "cl /c /EHsc /GS /D_CRT_SECURE_NO_DEPRECATE /GR
/MDd /Zi /Gm /I"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests"
/D"_RWSHARED" /Fo"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\\"
/Fd"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\object_mangling_imp
.pdb" "C:\Build\stdcxx-trunk\etc\config\src\object_mangling_imp.cpp""
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42
for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

object_mangling_imp.cpp

Compiling with command "cl /c /EHsc /GS /D_CRT_SECURE_NO_DEPRECATE /GR
/MDd /Zi /Gm /I"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests"
/D"_RWSHARED" /Fo"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\\"
/Fd"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\NO_OBJECT_MANGLING.
pdb" "C:\Build\stdcxx-trunk\etc\config\src\NO_OBJECT_MANGLING.cpp""
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42
for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

NO_OBJECT_MANGLING.cpp

Linking with command "cl
"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\NO_OBJECT_MANGLING.obj
"
"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\object_mangling_imp.ob
j"
/Fe"C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\NO_OBJECT_MANGLING.
exe" /link  /NODEFAULTLIB:"msvcprtd.lib" /DEBUG"
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42
for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

Microsoft (R) Incremental Linker Version 8.00.50727.42
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\NO_OBJECT_MANGLING
.exe 
/NODEFAULTLIB:msvcprtd.lib 
/DEBUG 
C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\NO_OBJECT_MANGLING.obj 
C:\Build\stdcxx-trunk\msvc-8.0\15d\include\tests\object_mangling_imp.obj

NO_OBJECT_MANGLING.obj : error LNK2001: unresolved external symbol "int
declared_int_defined_char_array" (?declared_int_defined_char_array@@3HA)


>
>Actually, I should clarify that a bit more. The framework treats each
>.cpp file as an independent config test. Since you've added two .cpp
>files, the framework attempts to make them both like regular config
>tests. It tries to build them into executables and execute them.
>
>Travis
>
>>
>>The framework will add the new test, but it doesn't have any 
>>way to know
>>to compile and link object_name_mangling_imp.o. Something will need to
>>be updated for that to work correctly.
>>
>>Travis 
>>

RE: [Fwd: svn commit: r584880 - in /incubator/stdcxx/trunk/etc/config/src: NO_OBJECT_MANGLING.cpp object_mangling_imp.cpp]

Posted by Travis Vitek <tv...@roguewave.com>.
Actually, I should clarify that a bit more. The framework treats each
.cpp file as an independent config test. Since you've added two .cpp
files, the framework attempts to make them both like regular config
tests. It tries to build them into executables and execute them.

Travis

>
>The framework will add the new test, but it doesn't have any 
>way to know
>to compile and link object_name_mangling_imp.o. Something will need to
>be updated for that to work correctly.
>
>Travis 
>
>>-----Original Message-----
>>From: Martin Sebor [mailto:sebor@roguewave.com] 
>>Sent: Monday, October 15, 2007 1:14 PM
>>To: stdcxx-dev@incubator.apache.org
>>Subject: [Fwd: svn commit: r584880 - in 
>>/incubator/stdcxx/trunk/etc/config/src: NO_OBJECT_MANGLING.cpp 
>>object_mangling_imp.cpp]
>>
>>Hi Farid,
>>
>>Do I need to do something special in order for the VisualStudio
>>infrastructure to pick up this test or is it handled automatically
>>like on UNIX? The tricky part that I'm worried about is setting
>>LDOPTS in the main test to link it with object_mangling_imp.o.
>>
>>Travis, do you know this part of the infrastructure yet to be able
>>to tell?
>>
>>Thanks
>>Martin
>>
>>-------- Original Message --------
>>Subject: svn commit: r584880 - in 
>>/incubator/stdcxx/trunk/etc/config/src: NO_OBJECT_MANGLING.cpp 
>>object_mangling_imp.cpp
>>Date: Mon, 15 Oct 2007 19:58:39 -0000
>>From: sebor@apache.org
>>Reply-To: stdcxx-dev@incubator.apache.org
>>To: stdcxx-commits@incubator.apache.org
>>
>>Author: sebor
>>Date: Mon Oct 15 12:58:38 2007
>>New Revision: 584880
>>
>>URL: http://svn.apache.org/viewvc?rev=584880&view=rev
>>Log:
>>2007-10-15  Martin Sebor  <se...@roguewave.com>
>>
>>	* NO_OBJECT_MANGLING.cpp: New config test to determine whether
>>	namespace-scope objects have their types mangled into their
>>	names (as done by MSVC) or not (other compilers).
>>	* object_mangling_imp.cpp: Helper file to go with the above.
>>
>>Added:
>>     incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp 
>>(with props)
>>     incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp 
>>(with props)
>>
>>Added: incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp
>>URL: 
>>http://svn.apache.org/viewvc/incubator/stdcxx/trunk/etc/config/
>>src/NO_OBJECT_MANGLING.cpp?rev=584880&view=auto
>>===============================================================
>>===============
>>--- 
>>incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp (added)
>>+++ 
>>incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp Mon Oct 
>>15 12:58:38 2007
>>@@ -0,0 +1,37 @@
>>+// checking for object name mangling
>>+
>>+/*************************************************************
>>**************
>>+ *
>>+ * Licensed to the Apache Software  Foundation (ASF) under 
>one or more
>>+ * contributor  license agreements.  See  the NOTICE  file 
>distributed
>>+ * with  this  work  for  additional information  regarding  
>copyright
>>+ * ownership.   The ASF  licenses this  file to  you under  
>the Apache
>>+ * License, Version  2.0 (the  License); you may  not use  this file
>>+ * except in  compliance with the License.   You may obtain  
>a copy of
>>+ * the License at
>>+ *
>>+ * http://www.apache.org/licenses/LICENSE-2.0
>>+ *
>>+ * Unless required by applicable law or agreed to in 
>writing, software
>>+ * distributed under the  License is distributed on an  "AS 
>IS" BASIS,
>>+ * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  
>express or
>>+ * implied.   See  the License  for  the  specific language  
>governing
>>+ * permissions and limitations under the License.
>>+ *
>>+ * Copyright 1999-2007 Rogue Wave Software, Inc.
>>+ *
>>+ 
>>***************************************************************
>>***********/
>>+
>>+#ifdef _RWSTD_object_mangling_imp
>>+  // link with the object file below
>>+  // LDOPTS = object_mangling_imp.o
>>+#endif   // _RWSTD_object_mangling_imp
>>+
>>+// declared but not defined here (defined in object_mangling_imp.cpp)
>>+extern int declared_int_defined_char_array;
>>+
>>+int main ()
>>+{
>>+    // return 0 to indicate that the object has non-zero value
>>+    return !declared_int_defined_char_array;
>>+}
>>
>>Propchange: 
>>incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp
>>---------------------------------------------------------------
>>---------------
>>     svn:eol-style = native
>>
>>Propchange: 
>>incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp
>>---------------------------------------------------------------
>>---------------
>>     svn:keywords = Id
>>
>>Added: incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp
>>URL: 
>>http://svn.apache.org/viewvc/incubator/stdcxx/trunk/etc/config/
>>src/object_mangling_imp.cpp?rev=584880&view=auto
>>===============================================================
>>===============
>>--- 
>>incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp (added)
>>+++ incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp Mon 
>>Oct 15 12:58:38 2007
>>@@ -0,0 +1,29 @@
>>+
>>+/*************************************************************
>>**************
>>+ *
>>+ * Licensed to the Apache Software  Foundation (ASF) under 
>one or more
>>+ * contributor  license agreements.  See  the NOTICE  file 
>distributed
>>+ * with  this  work  for  additional information  regarding  
>copyright
>>+ * ownership.   The ASF  licenses this  file to  you under  
>the Apache
>>+ * License, Version  2.0 (the  License); you may  not use  this file
>>+ * except in  compliance with the License.   You may obtain  
>a copy of
>>+ * the License at
>>+ *
>>+ * http://www.apache.org/licenses/LICENSE-2.0
>>+ *
>>+ * Unless required by applicable law or agreed to in 
>writing, software
>>+ * distributed under the  License is distributed on an  "AS 
>IS" BASIS,
>>+ * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  
>express or
>>+ * implied.   See  the License  for  the  specific language  
>governing
>>+ * permissions and limitations under the License.
>>+ *
>>+ * Copyright 1999-2007 Rogue Wave Software, Inc.
>>+ *
>>+ 
>>***************************************************************
>>***********/
>>+
>>+char declared_int_defined_char_array [sizeof (int)] = {
>>+    // define the object to have a different type than its 
>declaration
>>+    // in NO_NAME_MANGLING.cpp to detect whether mangled object names
>>+    // include type information or not
>>+    '\1'
>>+};
>>
>>Propchange: 
>>incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp
>>---------------------------------------------------------------
>>---------------
>>     svn:eol-style = native
>>
>>Propchange: 
>>incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp
>>---------------------------------------------------------------
>>---------------
>>     svn:keywords = Id
>>
>>
>>
>

RE: [Fwd: svn commit: r584880 - in /incubator/stdcxx/trunk/etc/config/src: NO_OBJECT_MANGLING.cpp object_mangling_imp.cpp]

Posted by Travis Vitek <tv...@roguewave.com>.
The framework will add the new test, but it doesn't have any way to know
to compile and link object_name_mangling_imp.o. Something will need to
be updated for that to work correctly.

Travis 

>-----Original Message-----
>From: Martin Sebor [mailto:sebor@roguewave.com] 
>Sent: Monday, October 15, 2007 1:14 PM
>To: stdcxx-dev@incubator.apache.org
>Subject: [Fwd: svn commit: r584880 - in 
>/incubator/stdcxx/trunk/etc/config/src: NO_OBJECT_MANGLING.cpp 
>object_mangling_imp.cpp]
>
>Hi Farid,
>
>Do I need to do something special in order for the VisualStudio
>infrastructure to pick up this test or is it handled automatically
>like on UNIX? The tricky part that I'm worried about is setting
>LDOPTS in the main test to link it with object_mangling_imp.o.
>
>Travis, do you know this part of the infrastructure yet to be able
>to tell?
>
>Thanks
>Martin
>
>-------- Original Message --------
>Subject: svn commit: r584880 - in 
>/incubator/stdcxx/trunk/etc/config/src: NO_OBJECT_MANGLING.cpp 
>object_mangling_imp.cpp
>Date: Mon, 15 Oct 2007 19:58:39 -0000
>From: sebor@apache.org
>Reply-To: stdcxx-dev@incubator.apache.org
>To: stdcxx-commits@incubator.apache.org
>
>Author: sebor
>Date: Mon Oct 15 12:58:38 2007
>New Revision: 584880
>
>URL: http://svn.apache.org/viewvc?rev=584880&view=rev
>Log:
>2007-10-15  Martin Sebor  <se...@roguewave.com>
>
>	* NO_OBJECT_MANGLING.cpp: New config test to determine whether
>	namespace-scope objects have their types mangled into their
>	names (as done by MSVC) or not (other compilers).
>	* object_mangling_imp.cpp: Helper file to go with the above.
>
>Added:
>     incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp 
>(with props)
>     incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp 
>(with props)
>
>Added: incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp
>URL: 
>http://svn.apache.org/viewvc/incubator/stdcxx/trunk/etc/config/
>src/NO_OBJECT_MANGLING.cpp?rev=584880&view=auto
>===============================================================
>===============
>--- 
>incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp (added)
>+++ 
>incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp Mon Oct 
>15 12:58:38 2007
>@@ -0,0 +1,37 @@
>+// checking for object name mangling
>+
>+/*************************************************************
>**************
>+ *
>+ * Licensed to the Apache Software  Foundation (ASF) under one or more
>+ * contributor  license agreements.  See  the NOTICE  file distributed
>+ * with  this  work  for  additional information  regarding  copyright
>+ * ownership.   The ASF  licenses this  file to  you under  the Apache
>+ * License, Version  2.0 (the  License); you may  not use  this file
>+ * except in  compliance with the License.   You may obtain  a copy of
>+ * the License at
>+ *
>+ * http://www.apache.org/licenses/LICENSE-2.0
>+ *
>+ * Unless required by applicable law or agreed to in writing, software
>+ * distributed under the  License is distributed on an  "AS IS" BASIS,
>+ * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
>+ * implied.   See  the License  for  the  specific language  governing
>+ * permissions and limitations under the License.
>+ *
>+ * Copyright 1999-2007 Rogue Wave Software, Inc.
>+ *
>+ 
>***************************************************************
>***********/
>+
>+#ifdef _RWSTD_object_mangling_imp
>+  // link with the object file below
>+  // LDOPTS = object_mangling_imp.o
>+#endif   // _RWSTD_object_mangling_imp
>+
>+// declared but not defined here (defined in object_mangling_imp.cpp)
>+extern int declared_int_defined_char_array;
>+
>+int main ()
>+{
>+    // return 0 to indicate that the object has non-zero value
>+    return !declared_int_defined_char_array;
>+}
>
>Propchange: 
>incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp
>---------------------------------------------------------------
>---------------
>     svn:eol-style = native
>
>Propchange: 
>incubator/stdcxx/trunk/etc/config/src/NO_OBJECT_MANGLING.cpp
>---------------------------------------------------------------
>---------------
>     svn:keywords = Id
>
>Added: incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp
>URL: 
>http://svn.apache.org/viewvc/incubator/stdcxx/trunk/etc/config/
>src/object_mangling_imp.cpp?rev=584880&view=auto
>===============================================================
>===============
>--- 
>incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp (added)
>+++ incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp Mon 
>Oct 15 12:58:38 2007
>@@ -0,0 +1,29 @@
>+
>+/*************************************************************
>**************
>+ *
>+ * Licensed to the Apache Software  Foundation (ASF) under one or more
>+ * contributor  license agreements.  See  the NOTICE  file distributed
>+ * with  this  work  for  additional information  regarding  copyright
>+ * ownership.   The ASF  licenses this  file to  you under  the Apache
>+ * License, Version  2.0 (the  License); you may  not use  this file
>+ * except in  compliance with the License.   You may obtain  a copy of
>+ * the License at
>+ *
>+ * http://www.apache.org/licenses/LICENSE-2.0
>+ *
>+ * Unless required by applicable law or agreed to in writing, software
>+ * distributed under the  License is distributed on an  "AS IS" BASIS,
>+ * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
>+ * implied.   See  the License  for  the  specific language  governing
>+ * permissions and limitations under the License.
>+ *
>+ * Copyright 1999-2007 Rogue Wave Software, Inc.
>+ *
>+ 
>***************************************************************
>***********/
>+
>+char declared_int_defined_char_array [sizeof (int)] = {
>+    // define the object to have a different type than its declaration
>+    // in NO_NAME_MANGLING.cpp to detect whether mangled object names
>+    // include type information or not
>+    '\1'
>+};
>
>Propchange: 
>incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp
>---------------------------------------------------------------
>---------------
>     svn:eol-style = native
>
>Propchange: 
>incubator/stdcxx/trunk/etc/config/src/object_mangling_imp.cpp
>---------------------------------------------------------------
>---------------
>     svn:keywords = Id
>
>
>