[PATCH 8/8] setools -- Preserve ABI between GCC 4.3 and GCC 4.4

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I'm really not sure about that one.

It seems that the ABI has changed between 4.3 and GCC 4.4, this patch
is creating a compatibility alias for libsefs functions.

Cheers,
Laurent Bigonville

Description: libsefs built with GCC 4.3 is not binary-compatible with itself built with GCC 4.4
 That's because mangling of va_list has changed in GCC 4.4.
 To cope with this situation, provide compatibility aliases for the affected symbols
 and update symbol files accordingly.
Author: Jakub Wilk <jwilk@xxxxxxxxxx>
Date: Thu, 13 May 2010 17:40:33 +0200
Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=577061

--- a/libsefs/src/fcfile.cc
+++ b/libsefs/src/fcfile.cc
@@ -689,3 +689,16 @@ const apol_vector_t *sefs_fcfile_get_fil
 	}
 	return fcfile->fileList();
 }
+
+#if defined(__ARM_EABI__) && defined(__GNUC__) && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4)
+// va_list mangling has been changed in g++ 4.4.
+// Add ABI <= g++-4.3 compatibility aliases.
+__asm__(".globl _ZN11sefs_fcfileC1EPFvPvPK11sefs_fclistiPKcS0_ES0_\n.set _ZN11sefs_fcfileC1EPFvPvPK11sefs_fclistiPKcS0_ES0_,_ZN11sefs_fcfileC1EPFvPvPK11sefs_fclistiPKcSt9__va_listES0_");
+__asm__(".globl _ZN11sefs_fcfileC1EPK11apol_vectorPFvPvPK11sefs_fclistiPKcS3_ES3_\n.set _ZN11sefs_fcfileC1EPK11apol_vectorPFvPvPK11sefs_fclistiPKcS3_ES3_,_ZN11sefs_fcfileC1EPK11apol_vectorPFvPvPK11sefs_fclistiPKcSt9__va_listES3_");
+__asm__(".globl _ZN11sefs_fcfileC1EPKcPFvPvPK11sefs_fclistiS1_S2_ES2_\n.set _ZN11sefs_fcfileC1EPKcPFvPvPK11sefs_fclistiS1_S2_ES2_,_ZN11sefs_fcfileC1EPKcPFvPvPK11sefs_fclistiS1_St9__va_listES2_");
+__asm__(".globl _ZN11sefs_fcfileC2EPFvPvPK11sefs_fclistiPKcS0_ES0_\n.set _ZN11sefs_fcfileC2EPFvPvPK11sefs_fclistiPKcS0_ES0_,_ZN11sefs_fcfileC2EPFvPvPK11sefs_fclistiPKcSt9__va_listES0_");
+__asm__(".globl _ZN11sefs_fcfileC2EPK11apol_vectorPFvPvPK11sefs_fclistiPKcS3_ES3_\n.set _ZN11sefs_fcfileC2EPK11apol_vectorPFvPvPK11sefs_fclistiPKcS3_ES3_,_ZN11sefs_fcfileC2EPK11apol_vectorPFvPvPK11sefs_fclistiPKcSt9__va_listES3_");
+__asm__(".globl _ZN11sefs_fcfileC2EPKcPFvPvPK11sefs_fclistiS1_S2_ES2_\n.set _ZN11sefs_fcfileC2EPKcPFvPvPK11sefs_fclistiS1_S2_ES2_,_ZN11sefs_fcfileC2EPKcPFvPvPK11sefs_fclistiS1_St9__va_listES2_");
+__asm__(".globl _ZN15sefs_filesystemC1EPKcPFvPvPK11sefs_fclistiS1_S2_ES2_\n.set _ZN15sefs_filesystemC1EPKcPFvPvPK11sefs_fclistiS1_S2_ES2_,_ZN15sefs_filesystemC1EPKcPFvPvPK11sefs_fclistiS1_St9__va_listES2_");
+__asm__(".globl _ZN15sefs_filesystemC2EPKcPFvPvPK11sefs_fclistiS1_S2_ES2_\n.set _ZN15sefs_filesystemC2EPKcPFvPvPK11sefs_fclistiS1_S2_ES2_,_ZN15sefs_filesystemC2EPKcPFvPvPK11sefs_fclistiS1_St9__va_listES2_");
+#endif
--- a/libsefs/src/fclist.cc
+++ b/libsefs/src/fclist.cc
@@ -764,3 +764,11 @@ bool query_str_compare(const char *targe
 		return false;
 	}
 }
+
+#if defined(__ARM_EABI__) && defined(__GNUC__) && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4)
+// va_list mangling has been changed in g++ 4.4.
+// Add ABI <= g++-4.3 compatibility aliases.
+__asm__(".globl _ZN11sefs_fclistC1E16sefs_fclist_typePFvPvPKS_iPKcS1_ES1_\n.set _ZN11sefs_fclistC1E16sefs_fclist_typePFvPvPKS_iPKcS1_ES1_,_ZN11sefs_fclistC1E16sefs_fclist_typePFvPvPKS_iPKcSt9__va_listES1_");
+__asm__(".globl _ZN11sefs_fclistC2E16sefs_fclist_typePFvPvPKS_iPKcS1_ES1_\n.set _ZN11sefs_fclistC2E16sefs_fclist_typePFvPvPKS_iPKcS1_ES1_,_ZN11sefs_fclistC2E16sefs_fclist_typePFvPvPKS_iPKcSt9__va_listES1_");
+__asm__(".globl _ZNK11sefs_fclist9handleMsgEiPKcPv\n.set _ZNK11sefs_fclist9handleMsgEiPKcPv,_ZNK11sefs_fclist9handleMsgEiPKcSt9__va_list");
+#endif
--- a/libsefs/src/db.cc
+++ b/libsefs/src/db.cc
@@ -1302,3 +1302,12 @@ bool sefs_db_is_db(const char *filename)
 {
 	return sefs_db::isDB(filename);
 }
+
+#if defined(__ARM_EABI__) && defined(__GNUC__) && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4)
+// va_list mangling has been changed in g++ 4.4.
+// Add ABI <= g++-4.3 compatibility aliases.
+__asm__(".globl _ZN7sefs_dbC1EP15sefs_filesystemPFvPvPK11sefs_fclistiPKcS2_ES2_\n.set _ZN7sefs_dbC1EP15sefs_filesystemPFvPvPK11sefs_fclistiPKcS2_ES2_,_ZN7sefs_dbC1EP15sefs_filesystemPFvPvPK11sefs_fclistiPKcSt9__va_listES2_");
+__asm__(".globl _ZN7sefs_dbC1EPKcPFvPvPK11sefs_fclistiS1_S2_ES2_\n.set _ZN7sefs_dbC1EPKcPFvPvPK11sefs_fclistiS1_S2_ES2_,_ZN7sefs_dbC1EPKcPFvPvPK11sefs_fclistiS1_St9__va_listES2_");
+__asm__(".globl _ZN7sefs_dbC2EP15sefs_filesystemPFvPvPK11sefs_fclistiPKcS2_ES2_\n.set _ZN7sefs_dbC2EP15sefs_filesystemPFvPvPK11sefs_fclistiPKcS2_ES2_,_ZN7sefs_dbC2EP15sefs_filesystemPFvPvPK11sefs_fclistiPKcSt9__va_listES2_");
+__asm__(".globl _ZN7sefs_dbC2EPKcPFvPvPK11sefs_fclistiS1_S2_ES2_\n.set _ZN7sefs_dbC2EPKcPFvPvPK11sefs_fclistiS1_S2_ES2_,_ZN7sefs_dbC2EPKcPFvPvPK11sefs_fclistiS1_St9__va_listES2_");
+#endif
--- a/libsefs/src/filesystem.cc
+++ b/libsefs/src/filesystem.cc
@@ -731,3 +731,10 @@ extern const char *sefs_filesystem_get_d
 	}
 	return dev_name;
 }
+
+#if defined(__ARM_EABI__) && defined(__GNUC__) && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4)
+// va_list mangling has been changed in g++ 4.4.
+// Add ABI <= g++-4.3 compatibility aliases.
+__asm__(".globl _ZN15sefs_filesystemC1EPKcPFvPvPK11sefs_fclistiS1_S2_ES2_\n.set _ZN15sefs_filesystemC1EPKcPFvPvPK11sefs_fclistiS1_S2_ES2_,_ZN15sefs_filesystemC1EPKcPFvPvPK11sefs_fclistiS1_St9__va_listES2_");
+__asm__(".globl _ZN15sefs_filesystemC2EPKcPFvPvPK11sefs_fclistiS1_S2_ES2_\n.set _ZN15sefs_filesystemC2EPKcPFvPvPK11sefs_fclistiS1_S2_ES2_,_ZN15sefs_filesystemC2EPKcPFvPvPK11sefs_fclistiS1_St9__va_listES2_");
+#endif

--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with
the words "unsubscribe selinux" without quotes as the message.


[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux