--- bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx	Tue May  2 08:01:08 2006
+++ bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx	Fri Sep  8 17:25:05 2006
@@ -120,6 +120,9 @@
 			case typelib_TypeClass_UNSIGNED_HYPER:
 			case typelib_TypeClass_DOUBLE:
 				pCppStack += sizeof(sal_Int32); // extra long
+                break;
+            default:
+                break;
 			}
 			// no longer needed
 			TYPELIB_DANGER_RELEASE( pParamTypeDescr );
@@ -436,7 +439,7 @@
 unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions(
     void ** slots, unsigned char * code,
     typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset,
-    sal_Int32 functionCount, sal_Int32 vtableOffset)
+    sal_Int32 /*functionCount*/, sal_Int32 vtableOffset)
 {
     for (sal_Int32 i = 0; i < type->nMembers; ++i) {
         typelib_TypeDescription * member = 0;
--- bridges/source/cpp_uno/gcc3_freebsd_intel/except.cxx.orig	Wed Sep  7 18:20:22 2005
+++ bridges/source/cpp_uno/gcc3_freebsd_intel/except.cxx	Mon Sep 11 12:21:03 2006
@@ -37,6 +37,7 @@
 #include <dlfcn.h>
 #include <cxxabi.h>
 #include <hash_map>
+#include <sys/param.h>
 
 #include <rtl/strbuf.hxx>
 #include <rtl/ustrbuf.hxx>
@@ -122,7 +123,11 @@
 };
 //__________________________________________________________________________________________________
 RTTI::RTTI() SAL_THROW( () )
+#if __FreeBSD_version < 602103
     : m_hApp( dlopen( 0, RTLD_NOW | RTLD_GLOBAL ) )
+#else
+    : m_hApp( dlopen( 0, RTLD_LAZY ) )
+#endif
 {
 }
 //__________________________________________________________________________________________________
@@ -139,8 +144,8 @@
     OUString const & unoName = *(OUString const *)&pTypeDescr->aBase.pTypeName;
 
     MutexGuard guard( m_mutex );
-    t_rtti_map::const_iterator iFind( m_rttis.find( unoName ) );
-    if (iFind == m_rttis.end())
+    t_rtti_map::const_iterator iRttiFind( m_rttis.find( unoName ) );
+    if (iRttiFind == m_rttis.end())
     {
         // RTTI symbol
         OStringBuffer buf( 64 );
@@ -157,8 +162,11 @@
         buf.append( 'E' );
 
         OString symName( buf.makeStringAndClear() );
-//#iZ 22253 
+#if __FreeBSD_version < 602103 /* #i22253# */
         rtti = (type_info *)dlsym( RTLD_DEFAULT, symName.getStr() );
+#else
+        rtti = (type_info *)dlsym( m_hApp, symName.getStr() );
+#endif
 
         if (rtti)
         {
@@ -205,7 +213,7 @@
     }
     else
     {
-        rtti = iFind->second;
+        rtti = iRttiFind->second;
     }
 
     return rtti;
--- bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx	Mon Jun 19 19:43:09 2006
+++ bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx	Fri Sep  8 17:25:05 2006
@@ -142,6 +142,8 @@
 		case typelib_TypeClass_DOUBLE:
 			asm ( "fstpl %0\n\t" : : "m"(*(char *)pRegisterReturn) );
 			break;
+        default:
+            break;
 	}
 }
 
@@ -217,6 +219,9 @@
 			case typelib_TypeClass_UNSIGNED_HYPER:
 			case typelib_TypeClass_DOUBLE:
 				pCppStack += sizeof(sal_Int32); // extra long
+                break;
+            default:
+                break;
 			}
 			// no longer needed
 			TYPELIB_DANGER_RELEASE( pParamTypeDescr );
@@ -329,7 +334,6 @@
 	// is my surrogate
 	bridges::cpp_uno::shared::UnoInterfaceProxy * pThis
         = static_cast< bridges::cpp_uno::shared::UnoInterfaceProxy * >(pUnoI);
-	typelib_InterfaceTypeDescription * pTypeDescr = pThis->pTypeDescr;
 	
 	switch (pMemberDescr->eTypeClass)
 	{
--- bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx.orig	Wed Jul 19 05:30:01 2006
+++ bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx	Mon Sep 11 12:21:25 2006
@@ -37,6 +37,7 @@
 #include <dlfcn.h>
 #include <cxxabi.h>
 #include <hash_map>
+#include <sys/param.h>
 
 #include <rtl/strbuf.hxx>
 #include <rtl/ustrbuf.hxx>
@@ -122,7 +123,11 @@
 };
 //__________________________________________________________________________________________________
 RTTI::RTTI() SAL_THROW( () )
+#if __FreeBSD_version < 602103
     : m_hApp( dlopen( 0, RTLD_NOW | RTLD_GLOBAL ) )
+#else
+    : m_hApp( dlopen( 0, RTLD_LAZY ) )
+#endif
 {
 }
 //__________________________________________________________________________________________________
@@ -157,7 +162,11 @@
         buf.append( 'E' );
         
         OString symName( buf.makeStringAndClear() );
+#if __FreeBSD_version < 602103  /* #i22253# */
         rtti = (type_info *)dlsym( RTLD_DEFAULT, symName.getStr() );
+#else
+        rtti = (type_info *)dlsym( m_hApp, symName.getStr() );
+#endif
 
         if (rtti)
         {
