Skip to content

gcc cp except fails to compile due to macro problems #79

@ceneblock

Description

@ceneblock

When compiling I noticed this error:

 In file included from /tmp/propgcc/gcc/gcc/cp/except.c:912:0:           
 cfns.gperf: At top level:                               
 cfns.gperf:101:1: error: ‘gnu_inline’ attribute present on ‘libc_name_p’
 cfns.gperf:26:14: error: but not here                         
 In file included from /tmp/propgcc/gcc/gcc/cp/except.c:27:0:                        
 /tmp/propgcc/gcc/gcc/cp/except.c: In function ‘nothrow_spec_p’:                                                                                                                               
 /tmp/propgcc/gcc/gcc/system.h:636:55: warning: ISO C does not support ‘__FUNCTION__’ predefined identifier [-Wpedantic]                                                                       
     ((void)(!(EXPR) ? fancy_abort (__FILE__, __LINE__, __FUNCTION__), 0 : 0)) 

Luckily this has been a similar issue in the past and has been resolved. Here is an example from Dragonfly BSD:
DragonFlyBSD/DPorts#136

The patch itself is:

--- gcc/cp/cfns.h.orig	2015-02-13 08:27:46.000000000 +0200
+++ gcc/cp/cfns.h	2015-02-13 10:23:53.000000000 +0200
@@ -53,6 +53,9 @@
 static unsigned int hash (const char *, unsigned int);
 #ifdef __GNUC__
 __inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
 #endif
 const char * libc_name_p (const char *, unsigned int);
 /* maximum key range = 391, duplicates = 0 */
@@ -96,7 +99,7 @@
       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
       400, 400, 400, 400, 400, 400, 400
     };
-  register int hval = len;
+  register int hval = (int)len;
 
   switch (hval)
     {

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions