GCC compilation yields "real.h:53: error: 'SIZEOF_LONG' undeclared here (not in a function)"
Asked Answered
H

2

1

I'm trying to compile GCC 4.7.2 on a Buffalo LinkStation Pro Duo (after unlocking it) which runs Linux 2.6.31.8 armv5tel.

Unfortunately, make throws quite some errors, starting with

gcc -c  -DIN_GCC_FRONTEND -g -fkeep-inline-functions -DIN_GCC   -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-formIn file included from ../../gcc-4.7.2/gcc/tree.h:32,
                 from ../../gcc-4.7.2/gcc/c-lang.c:27:
../../gcc-4.7.2/gcc/real.h:53: error: 'SIZEOF_LONG' undeclared here (not in a function)
In file included from ../../gcc-4.7.2/gcc/tree.h:32,
                 from ../../gcc-4.7.2/gcc/c-lang.c:27:
../../gcc-4.7.2/gcc/real.h:87:5: error: division by zero in #if
../../gcc-4.7.2/gcc/real.h:87:5: error: division by zero in #if
../../gcc-4.7.2/gcc/real.h:90:6: error: division by zero in #if

Line 53 of real.h reads unsigned long sig[SIGSZ];, where SIGSZ is defined at line 40 as
#define SIGSZ (SIGNIFICAND_BITS / HOST_BITS_PER_LONG)
while line 87 is #if REAL_WIDTH == 1 with REAL_WIDTH defined starting at line 72 as
#define REAL_WIDTH \
(REAL_VALUE_TYPE_SIZE/HOST_BITS_PER_WIDE_INT \
+ (REAL_VALUE_TYPE_SIZE%HOST_BITS_PER_WIDE_INT ? 1 : 0)) /* round up */

This seems to boil down to the HOST_BITS_PER_* being zero. Do I have to define these manually with some configure parameter or how can this issue be resolved?


update

config.log contains the following errors:

conftest.c:10:19: error: ppl_c.h: No such file or directory
conftest.c: In function 'main':
conftest.c:16: error: 'choke' undeclared (first use in this function)
conftest.c:16: error: (Each undeclared identifier is reported only once
conftest.c:16: error: for each function it appears in.)
conftest.c:16: error: expected ';' before 'me'
configure:5708: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| #define LT_OBJDIR ".libs/"
| /* end confdefs.h.  */
| #include "ppl_c.h"
| int
| main ()
| {
|.
|     #if PPL_VERSION_MAJOR != 0 || PPL_VERSION_MINOR < 11
|     choke me
|     #endif
|.
|   ;
|   r

Following this post I seem to have forgotten to install ppl, which I'll try now

Hartzog answered 13/12, 2012 at 9:57 Comment(0)
U
1

SIZEOF_LONG should be #defined by configure in the file auto-host.h. Your auto-host.h should contain something like:

/* The size of `long', as computed by sizeof. */
#ifndef USED_FOR_TARGET
#define SIZEOF_LONG 8
#endif

If the above is not present (and it looks like in your case it's indeed so), check config.log for errors. Search for errors around the string checking size of long.

Unquestioned answered 13/12, 2012 at 13:53 Comment(2)
That entry is there, although it's #define SIZEOF_LONG 4 here. There are other errors in config.log though, I appended them to my questionHartzog
I accept your answer since checking config.log pointed me to the lack of ppl. The actual solution did involve some more trouble though - if it's the solution, the compilation is still running...Hartzog
H
1
  • Thanks to chill's answer I checked config.log to discover
    conftest.c:10:19: error: ppl_c.h: No such file or directory
    (which, curiously, did not prevent configure from creating a Makefile and returning a success error code). The first google hit on that was this post, showing I didn't provide the ppl dependency.
  • The ppl-1.0 compilation greeted me with
    checked_float.inlines.hh:1012: error: 'frexpl' was not declared in this scope
    which led me to this post suggesting I'd use the 1.1 snapshot instead, which worked
  • Now, gcc's make offered me another "helpful" error:
    gcc/../libcpp/include/line-map.h:66: error: 'CHAR_BIT'
    which turned out to be due to C_INCLUDE_PATH ending with a colon (I already experienced the checking LIBRARY_PATH variable... contains current directory error mentioned in that post, but didn't think about checking other variables for that as well)

Compilation is still running, so far no more errors...

Hartzog answered 14/12, 2012 at 8:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.