Skip to content

Conversation

UnkDevE
Copy link

@UnkDevE UnkDevE commented Aug 10, 2020

While compiling from source, I ran into a few errors,

some header files were missing from glfft and there was a multiple definitions error with the function pointers in glava.h.

adding the headers missing and making the function pointers static fix the problem.

However there are warnings from the function pointers, so I'm unsure whether using static was the right option.

Here are the warnings:

/home/ethan/projects/C/glava/glava/glava.h:17:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      | ^~~~~~~~~~~~~
/home/ethan/projects/C/glava/glava/glava.h:18:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      | ^~~~~~~~~~~~~
/home/ethan/projects/C/glava/glava/glava.h:18:64: warning: ‘glava_return’ defined but not used [-Wunused-variable]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      |                                                                ^~~~~~~~~~~~
/home/ethan/projects/C/glava/glava/glava.h:17:64: warning: ‘glava_abort’ defined but not used [-Wunused-variable]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      |                                                                ^~~~~~~~~~~
[5/19] Compiling C object libglava.so.p/glava_glava.c.o
In file included from ../glava/render.h:8,
                 from ../glava/glava.c:18:
../glava/glava.h:17:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      | ^~~~~~~~~~~~~
../glava/glava.c:79:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   79 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)     (void) = glava_return_builtin;
      | ^~~~~~~~~~~~~
../glava/glava.c:80:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   80 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)      (void) = glava_abort_builtin;
      | ^~~~~~~~~~~~~
[6/19] Compiling C object libglava.so.p/glava_xwin.c.o
In file included from ../glava/render.h:8,
                 from ../glava/xwin.c:29:
../glava/glava.h:17:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:64: warning: ‘glava_return’ defined but not used [-Wunused-variable]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      |                                                                ^~~~~~~~~~~~
[7/19] Compiling C object libglava.so.p/glava_glx_wcb.c.o
In file included from ../glava/render.h:8,
                 from ../glava/glx_wcb.c:25:
../glava/glava.h:17:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:64: warning: ‘glava_return’ defined but not used [-Wunused-variable]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      |                                                                ^~~~~~~~~~~~
[8/19] Compiling C object libglava-obs.so.p/glava-obs_entry.c.o
In file included from ../glava-obs/entry.c:7:
../glava-obs/../glava/glava.h:17:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      | ^~~~~~~~~~~~~
../glava-obs/../glava/glava.h:18:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      | ^~~~~~~~~~~~~
../glava-obs/../glava/glava.h:18:64: warning: ‘glava_return’ defined but not used [-Wunused-variable]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      |                                                                ^~~~~~~~~~~~
../glava-obs/../glava/glava.h:17:64: warning: ‘glava_abort’ defined but not used [-Wunused-variable]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      |                                                                ^~~~~~~~~~~
[10/19] Compiling C object libglava.so.p/glava_glsl_ext.c.o
In file included from ../glava/glsl_ext.c:16:
../glava/glava.h:17:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:64: warning: ‘glava_return’ defined but not used [-Wunused-variable]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      |                                                                ^~~~~~~~~~~~
[13/19] Compiling C object libglava.so.p/glava_render.c.o
In file included from ../glava/render.h:8,
                 from ../glava/render.c:20:
../glava/glava.h:17:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:64: warning: ‘glava_return’ defined but not used [-Wunused-variable]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      |                      

Copy link

@jwakely jwakely left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks wrong, the variables should be extern and defined in exactly one .c file. #185 does it right.

For why a fix is needed for GCC 10, see the changes for -fno-common in the GCC 10 release notes and Porting to GCC 10 page.

@UnkDevE
Copy link
Author

UnkDevE commented Dec 10, 2021 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants