Remove plugin directory per CPU capability hack
authorRémi Denis-Courmont <remi@remlab.net>
Mon, 9 May 2011 16:19:59 +0000 (19:19 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Mon, 9 May 2011 16:41:03 +0000 (19:41 +0300)
On x86, describing and probing optimized plugins is safe (thanks to the
removal of the -mmmx and -msse2 compiler flags).

On PowerPC, libvlccore is built with -maltivec. This is a bug (no
difference before or after the plugin directory hack).
Describing and probing Altivec plugins is no worse.

On ARM, NEON support is detected only at compilation time currently
for lack of a better alternative. So this is a non-issue.

src/libvlc.h
src/misc/cpu.c
src/modules/modules.c

index 73270c9..95f9f88 100644 (file)
@@ -68,7 +68,6 @@ void vlc_assert_locked (vlc_mutex_t *);
  */
 extern uint32_t cpu_flags;
 uint32_t CPUCapabilities( void );
-bool vlc_CPU_CheckPluginDir (const char *name);
 
 /*
  * Message/logging stuff
index a200936..f40654a 100644 (file)
@@ -317,25 +317,6 @@ unsigned vlc_CPU (void)
     return cpu_flags;
 }
 
-const struct
-{
-    uint32_t value;
-    char name[12];
-} cap_dirs[] = {
-#if defined ( __i386__ ) || defined ( __x86_64__ )
-    { CPU_CAPABILITY_MMX,     "mmx" },
-    { CPU_CAPABILITY_MMXEXT,  "mmxext" },
-    { CPU_CAPABILITY_3DNOW,   "3dnow" },
-    { CPU_CAPABILITY_SSE,     "sse" },
-#endif
-#if defined (__ppc__) || defined (__ppc64__) || defined (__powerpc__)
-    { CPU_CAPABILITY_ALTIVEC, "altivec" },
-#endif
-#if defined (__arm__)
-    { CPU_CAPABILITY_NEON,    "arm_neon" },
-#endif
-};
-
 /**
  * Return the number of available logical CPU.
  */
@@ -403,29 +384,6 @@ unsigned vlc_GetCPUCount(void)
 #endif
 }
 
-/**
- * Check if a directory name contains usable plugins w.r.t. the hardware
- * capabilities. Loading a plugin when the hardware has insufficient
- * capabilities may lead to illegal instructions (SIGILL) and must be avoided.
- *
- * @param name the name of the directory (<b>not</b> the path)
- *
- * @return true if the hardware has sufficient capabilities or the directory
- * does not require any special capability; false if the running hardware has
- * insufficient capabilities.
- */
-bool vlc_CPU_CheckPluginDir (const char *name)
-{
-    const unsigned flags = vlc_CPU ();
-    for (size_t i = 0; i < sizeof (cap_dirs) / sizeof (cap_dirs[0]); i++)
-    {
-        if (strcmp (name, cap_dirs[i].name))
-            continue;
-        return (flags & cap_dirs[i].value) != 0;
-    }
-    return true;
-}
-
 static vlc_memcpy_t pf_vlc_memcpy = memcpy;
 static vlc_memset_t pf_vlc_memset = memset;
 
index 2a4f668..4730661 100644 (file)
@@ -901,9 +901,7 @@ static void AllocatePluginDir( vlc_object_t *p_this, module_bank_t *p_bank,
             break;
 
         /* Skip ".", ".." */
-        if (!strcmp (file, ".") || !strcmp (file, "..")
-        /* Skip directories for unsupported optimizations */
-         || !vlc_CPU_CheckPluginDir (file))
+        if (!strcmp (file, ".") || !strcmp (file, ".."))
         {
             free (file);
             continue;