1
0
Fork 1
mirror of https://github.com/NixOS/nixpkgs.git synced 2024-11-25 23:20:55 +00:00

libomxil-bellagio: fix build failures against -fno-common compiler

On vanilla gcc-10 (and gcc-9 -fno-common) build fails as:

```
../libtool --tag=CC   --mode=link gcc ... -o libomxil-bellagio.la ...
ld: .libs/libomxil_bellagio_la-omx_reference_resource_manager.o:(.bss+0x18):
  multiple definition of `globalIndex';
    .libs/libomxil_bellagio_la-st_static_component_loader.o:(.bss+0x358):
      first defined here
```

Upstream gcc-10 changed the default from -fcommon to fno-common:
    https://gcc.gnu.org/PR85678.

The error also happens if CFLAGS=-fno-common passed explicitly.
This commit is contained in:
Sergei Trofimovich 2021-09-12 09:35:02 +01:00
parent 9270c06e73
commit fb106ee08b
2 changed files with 36 additions and 1 deletions

View file

@ -12,7 +12,10 @@ stdenv.mkDerivation rec {
configureFlags =
lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ "ac_cv_func_malloc_0_nonnull=yes" ];
patches = [ ./fedora-fixes.patch ];
patches = [
./fedora-fixes.patch
./fno-common.patch
];
doCheck = false; # fails

View file

@ -0,0 +1,32 @@
Fix build faiure on gcc-10 (defaults to -fno-common).
--- a/src/omx_reference_resource_manager.c
+++ b/src/omx_reference_resource_manager.c
@@ -30,6 +30,11 @@
#include "base/omx_base_component.h"
#include "queue.h"
+int globalIndex;
+NameIndexType *listOfcomponentRegistered;
+ComponentListType **globalComponentList;
+ComponentListType **globalWaitingComponentList;
+
/**
* This is the static base pointer of the list
*/
--- a/src/omx_reference_resource_manager.h
+++ b/src/omx_reference_resource_manager.h
@@ -49,10 +49,10 @@ struct NameIndexType {
};
-int globalIndex;
-NameIndexType *listOfcomponentRegistered;
-ComponentListType **globalComponentList;
-ComponentListType **globalWaitingComponentList;
+extern int globalIndex;
+extern NameIndexType *listOfcomponentRegistered;
+extern ComponentListType **globalComponentList;
+extern ComponentListType **globalWaitingComponentList;
OMX_ERRORTYPE RM_RegisterComponent(char *name, int max_components);
OMX_ERRORTYPE addElemToList(ComponentListType **list, OMX_COMPONENTTYPE *openmaxStandComp, int index, OMX_BOOL bIsWaiting);