Macro expansion of B0 on Linux PPC system

classic Classic list List threaded Threaded
14 messages Options
Reply | Threaded
Open this post in threaded view
|

Macro expansion of B0 on Linux PPC system

Lee, Greg
When I try to build sqlite 3.18.0 on a Linux PPC system, I get a compile-time error. It looks like shell.c is trying to define a local variable "B0" in one of its routines. However, the include chain includes the termios.h header, which defines a macro "B0." I can easily work around this by undefining the macro, but thought it may be worth reporting for an upstream fix. Below is my system's information and the Makefile output.

Thanks,

                -Greg

[lee218@rzmanta23:spack.rzmanta2]$ uname -a
Linux rzmanta23 3.10.0-514.2.2.2chaos.ch6.ppc64le #1 SMP Wed Jan 11 16:59:26 PST 2017 ppc64le ppc64le ppc64le GNU/Linux

[lee218@rzmanta23:spack.rzmanta2]$ rpm -q glibc-headers
glibc-headers-2.17-157.el7.ppc64le

[lee218@rzmanta23:spack.rzmanta2]$ gcc --version
gcc (GCC) 4.9.3
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.



gcc -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.18.0\" -DPACKAGE_STRING=\"sqlite\ 3.18.0\" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\" -DPACKAGE_URL=\"\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.18.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DHAVE_DECL_STRERROR_R=1 -DHAVE_STRERROR_R=1 -DHAVE_EDITLINE_READLINE_H=1 -DHAVE_EDITLINE=1 -DHAVE_POSIX_FALLOCATE=1 -I. -I/nfs/tmp2/lee218/delete/spack.rzmanta2/var/spack/stage/sqlite-3.18.0-s7e2if4k2ygdmfbkiodulgrxmgg44vfy/sqlite-autoconf-3180000    -D_REENTRANT=1 -DSQLITE_THREADSAFE=1     -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_EXPLAIN_COMMENTS -g -O2 -MT sqlite3-sqlite3.o -MD -MP -MF .deps/sqlite3-sqlite3.Tpo -c -o sqlite3-sqlite3.o `test -f 'sqlite3.c' || echo '/nfs/tmp2/lee218/delete/spack.rzmanta2/var/spack/stage/sqlite-3.18.0-s7e2if4k2ygdmfbkiodulgrxmgg44vfy/sqlite-autoconf-3180000/'`sqlite3.c
In file included from /usr/include/termios.h:40:0,
                 from /usr/include/bits/ioctl-types.h:5,
                 from /usr/include/sys/ioctl.h:29,
                 from /usr/include/editline/readline.h:77,
                 from shell.c:71:
shell.c: In function 'KeccakF1600Step':
shell.c:722:7: error: expected identifier or '(' before numeric constant
   u64 B0, B1, B2, B3, B4;
       ^
shell.c:778:8: error: lvalue required as left operand of assignment
     B0 = (A00^D0);
        ^
shell.c:779:5: error: 'B1' undeclared (first use in this function)
     B1 = ROL64((A11^D1), 44);
     ^
shell.c:779:5: note: each undeclared identifier is reported only once for each function it appears in
shell.c:780:5: error: 'B2' undeclared (first use in this function)
     B2 = ROL64((A22^D2), 43);
     ^
shell.c:781:5: error: 'B3' undeclared (first use in this function)
     B3 = ROL64((A33^D3), 21);
     ^
shell.c:782:5: error: 'B4' undeclared (first use in this function)
     B4 = ROL64((A44^D4), 14);
     ^
shell.c:793:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A03^D3), 28);
        ^
shell.c:802:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A01^D1), 1);
        ^
shell.c:816:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A04^D4), 27);
        ^
shell.c:825:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A02^D2), 62);
        ^
shell.c:845:8: error: lvalue required as left operand of assignment
     B0 = (A00^D0);
        ^
shell.c:860:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A33^D3), 28);
        ^
shell.c:869:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A11^D1), 1);
        ^
shell.c:883:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A44^D4), 27);
        ^
shell.c:892:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A22^D2), 62);
        ^
shell.c:912:8: error: lvalue required as left operand of assignment
     B0 = (A00^D0);
        ^
shell.c:927:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A43^D3), 28);
        ^
shell.c:936:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A31^D1), 1);
        ^
shell.c:950:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A24^D4), 27);
        ^
shell.c:959:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A12^D2), 62);
        ^
shell.c:979:8: error: lvalue required as left operand of assignment
     B0 = (A00^D0);
        ^
shell.c:994:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A13^D3), 28);
        ^
shell.c:1003:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A21^D1), 1);
        ^
shell.c:1017:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A34^D4), 27);
        ^
shell.c:1026:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A42^D2), 62);
        ^
make: *** [Makefile:543: sqlite3-shell.o] Error 1
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Macro expansion of B0 on Linux PPC system

Lee, Greg
I never got a reply on this issue and someone else tripped up on it:

https://github.com/spack/spack/issues/6698

Any help or even acknowledgement of this message would be appreciated.

Thanks,

                -Greg

From: Lee, Greg
Sent: Wednesday, May 03, 2017 3:49 PM
To: '[hidden email]' <[hidden email]>
Subject: Macro expansion of B0 on Linux PPC system

When I try to build sqlite 3.18.0 on a Linux PPC system, I get a compile-time error. It looks like shell.c is trying to define a local variable "B0" in one of its routines. However, the include chain includes the termios.h header, which defines a macro "B0." I can easily work around this by undefining the macro, but thought it may be worth reporting for an upstream fix. Below is my system's information and the Makefile output.

Thanks,

                -Greg

[lee218@rzmanta23:spack.rzmanta2]$ uname -a
Linux rzmanta23 3.10.0-514.2.2.2chaos.ch6.ppc64le #1 SMP Wed Jan 11 16:59:26 PST 2017 ppc64le ppc64le ppc64le GNU/Linux

[lee218@rzmanta23:spack.rzmanta2]$ rpm -q glibc-headers
glibc-headers-2.17-157.el7.ppc64le

[lee218@rzmanta23:spack.rzmanta2]$ gcc --version
gcc (GCC) 4.9.3
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.



gcc -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.18.0\" -DPACKAGE_STRING=\"sqlite\ 3.18.0\" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\<http://www.sqlite.org/>" -DPACKAGE_URL=\"\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.18.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DHAVE_DECL_STRERROR_R=1 -DHAVE_STRERROR_R=1 -DHAVE_EDITLINE_READLINE_H=1 -DHAVE_EDITLINE=1 -DHAVE_POSIX_FALLOCATE=1 -I. -I/nfs/tmp2/lee218/delete/spack.rzmanta2/var/spack/stage/sqlite-3.18.0-s7e2if4k2ygdmfbkiodulgrxmgg44vfy/sqlite-autoconf-3180000    -D_REENTRANT=1 -DSQLITE_THREADSAFE=1     -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_EXPLAIN_COMMENTS -g -O2 -MT sqlite3-sqlite3.o -MD -MP -MF .deps/sqlite3-sqlite3.Tpo -c -o sqlite3-sqlite3.o `test -f 'sqlite3.c' || echo '/nfs/tmp2/lee218/delete/spack.rzmanta2/var/spack/stage/sqlite-3.18.0-s7e2if4k2ygdmfbkiodulgrxmgg44vfy/sqlite-autoconf-3180000/'`sqlite3.c
In file included from /usr/include/termios.h:40:0,
                 from /usr/include/bits/ioctl-types.h:5,
                 from /usr/include/sys/ioctl.h:29,
                 from /usr/include/editline/readline.h:77,
                 from shell.c:71:
shell.c: In function 'KeccakF1600Step':
shell.c:722:7: error: expected identifier or '(' before numeric constant
   u64 B0, B1, B2, B3, B4;
       ^
shell.c:778:8: error: lvalue required as left operand of assignment
     B0 = (A00^D0);
        ^
shell.c:779:5: error: 'B1' undeclared (first use in this function)
     B1 = ROL64((A11^D1), 44);
     ^
shell.c:779:5: note: each undeclared identifier is reported only once for each function it appears in
shell.c:780:5: error: 'B2' undeclared (first use in this function)
     B2 = ROL64((A22^D2), 43);
     ^
shell.c:781:5: error: 'B3' undeclared (first use in this function)
     B3 = ROL64((A33^D3), 21);
     ^
shell.c:782:5: error: 'B4' undeclared (first use in this function)
     B4 = ROL64((A44^D4), 14);
     ^
shell.c:793:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A03^D3), 28);
        ^
shell.c:802:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A01^D1), 1);
        ^
shell.c:816:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A04^D4), 27);
        ^
shell.c:825:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A02^D2), 62);
        ^
shell.c:845:8: error: lvalue required as left operand of assignment
     B0 = (A00^D0);
        ^
shell.c:860:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A33^D3), 28);
        ^
shell.c:869:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A11^D1), 1);
        ^
shell.c:883:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A44^D4), 27);
        ^
shell.c:892:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A22^D2), 62);
        ^
shell.c:912:8: error: lvalue required as left operand of assignment
     B0 = (A00^D0);
        ^
shell.c:927:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A43^D3), 28);
        ^
shell.c:936:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A31^D1), 1);
        ^
shell.c:950:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A24^D4), 27);
        ^
shell.c:959:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A12^D2), 62);
        ^
shell.c:979:8: error: lvalue required as left operand of assignment
     B0 = (A00^D0);
        ^
shell.c:994:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A13^D3), 28);
        ^
shell.c:1003:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A21^D1), 1);
        ^
shell.c:1017:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A34^D4), 27);
        ^
shell.c:1026:8: error: lvalue required as left operand of assignment
     B0 = ROL64((A42^D2), 62);
        ^
make: *** [Makefile:543: sqlite3-shell.o] Error 1
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Macro expansion of B0 on Linux PPC system

Richard Hipp-3
On 12/15/17, Lee, Greg <[hidden email]> wrote:
> I never got a reply on this issue and someone else tripped up on it:
>
> https://github.com/spack/spack/issues/6698
>
> Any help or even acknowledgement of this message would be appreciated.
>

I believe the problem was fixed on the highlighted check-in here:
https://www.sqlite.org/src/timeline?y=ci&c=b9a58daca&n=9

That fix should have appeared in SQLite version 3.19.0.  Version
3.21.0 is the latest.

Are you still having issues?
--
D. Richard Hipp
[hidden email]
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Macro expansion of B0 on Linux PPC system

Lee, Greg
I am still seeing the problem on Power 8 and others report the problem persists on Power 9. Please see the spack github issue. I also attached a configure/make output if that helps.


     -Greg


________________________________
From: [hidden email] <[hidden email]> on behalf of Richard Hipp <[hidden email]>
Sent: Friday, December 15, 2017 7:21 PM
To: SQLite mailing list
Cc: [hidden email]; Lee, Greg
Subject: Re: [sqlite] Macro expansion of B0 on Linux PPC system

On 12/15/17, Lee, Greg <[hidden email]> wrote:
> I never got a reply on this issue and someone else tripped up on it:
>
> https://github.com/spack/spack/issues/6698
>
> Any help or even acknowledgement of this message would be appreciated.
>

I believe the problem was fixed on the highlighted check-in here:
https://www.sqlite.org/src/timeline?y=ci&c=b9a58daca&n=9

That fix should have appeared in SQLite version 3.19.0.  Version
3.21.0 is the latest.

Are you still having issues?
--
D. Richard Hipp
[hidden email]
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Macro expansion of B0 on Linux PPC system

Richard Hipp-3
On 12/18/17, Lee, Greg <[hidden email]> wrote:
> I am still seeing the problem on Power 8 and others report the problem
> persists on Power 9. Please see the spack github issue. I also attached a
> configure/make output if that helps.

So, what you are saying, then, is that "B0" is a reserved word on
Power 8 and Power 9 systems, and can never be used as a local variable
name?

--
D. Richard Hipp
[hidden email]
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Macro expansion of B0 on Linux PPC system

Simon Slavin-3


On 19 Dec 2017, at 2:55am, Richard Hipp <[hidden email]> wrote:

> On 12/18/17, Lee, Greg <[hidden email]> wrote:
>> I am still seeing the problem on Power 8 and others report the problem
>> persists on Power 9. Please see the spack github issue. I also attached a
>> configure/make output if that helps.
>
> So, what you are saying, then, is that "B0" is a reserved word on
> Power 8 and Power 9 systems, and can never be used as a local variable
> name?

I don’t think it likes B3 either.  Given this error message:

  >> 121   shell.c:894:7: error: expected identifier or ‘(’ before numeric constant
     122      u64 B0, B1, B2, B3, B4;

Is there a chance that it is interpreting "B0" as a number in hexadecimal ?

Simon.
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Macro expansion of B0 on Linux PPC system

Rowan Worth-2
On 19 December 2017 at 11:23, Simon Slavin <[hidden email]> wrote:

>
>
> On 19 Dec 2017, at 2:55am, Richard Hipp <[hidden email]> wrote:
>
> > On 12/18/17, Lee, Greg <[hidden email]> wrote:
> >> I am still seeing the problem on Power 8 and others report the problem
> >> persists on Power 9. Please see the spack github issue. I also attached
> a
> >> configure/make output if that helps.
> >
> > So, what you are saying, then, is that "B0" is a reserved word on
> > Power 8 and Power 9 systems, and can never be used as a local variable
> > name?
>
> I don’t think it likes B3 either.  Given this error message:
>
>   >> 121   shell.c:894:7: error: expected identifier or ‘(’ before numeric
> constant
>      122      u64 B0, B1, B2, B3, B4;
>
> Is there a chance that it is interpreting "B0" as a number in hexadecimal ?
>

I doubt it. Use `gcc -E -o shell.i ...` to generate the preprocessed source
and make sense of the error.

-Rowan
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Macro expansion of B0 on Linux PPC system

Lee, Greg
In reply to this post by Richard Hipp-3
The problem appears to come from the inclusion of editline/readline.h, which ultimately includes termios.h. I'm not sure who should "fix" this, but below is a simple reproducer demonstrating the error. In Spack, we have a patch to sqlite's shell.c that applies the undef trick that I use in the reproducer.

[lee218@ray23:20171218_sqlite_B0_macro]$ cat test.c
#include <stdlib.h>
#include <stdio.h>
#include <editline/readline.h>
#ifdef FIX
    #undef B0
#endif
int main()
{
    int B0 = 9;
    printf("B0 = %d\n", B0);
    return 0;
}
[lee218@ray23:20171218_sqlite_B0_macro]$ gcc test.c
In file included from /usr/include/termios.h:40:0,
                 from /usr/include/bits/ioctl-types.h:5,
                 from /usr/include/sys/ioctl.h:29,
                 from /usr/include/editline/readline.h:77,
                 from test.c:3:
test.c: In function 'main':
test.c:9:9: error: expected identifier or '(' before numeric constant
     int B0 = 9;
         ^
[lee218@ray23:20171218_sqlite_B0_macro]$ gcc test.c -DFIX
[lee218@ray23:20171218_sqlite_B0_macro]$


________________________________
From: [hidden email] <[hidden email]> on behalf of Richard Hipp <[hidden email]>
Sent: Monday, December 18, 2017 6:55:40 PM
To: Lee, Greg
Cc: SQLite mailing list; [hidden email]
Subject: Re: [sqlite] Macro expansion of B0 on Linux PPC system

On 12/18/17, Lee, Greg <[hidden email]> wrote:
> I am still seeing the problem on Power 8 and others report the problem
> persists on Power 9. Please see the spack github issue. I also attached a
> configure/make output if that helps.

So, what you are saying, then, is that "B0" is a reserved word on
Power 8 and Power 9 systems, and can never be used as a local variable
name?

--
D. Richard Hipp
[hidden email]
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Macro expansion of B0 on Linux PPC system

Warren Young
In reply to this post by Lee, Greg
On May 3, 2017, at 4:48 PM, Lee, Greg <[hidden email]> wrote:
>
>   u64 B0, B1, B2, B3, B4;

That’s the first actual use of u64 in that module.  Are you sure your platform’s 64-bit integer types are being detected properly?  Maybe post the output of a ./configure run, or the resulting config.h file?

_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Macro expansion of B0 on Linux PPC system

Gary R. Schmidt-2
In reply to this post by Richard Hipp-3
On 19/12/2017 13:55, Richard Hipp wrote:
> On 12/18/17, Lee, Greg <[hidden email]> wrote:
>> I am still seeing the problem on Power 8 and others report the problem
>> persists on Power 9. Please see the spack github issue. I also attached a
>> configure/make output if that helps.
>
> So, what you are saying, then, is that "B0" is a reserved word on
> Power 8 and Power 9 systems, and can never be used as a local variable
> name?
>
The "#define B0 0" etcetera have been in the terminal I/O include
file(s) of UNIX systems since time immemorial.

I've just run up a quickie that shows the same problem on Solaris:
#include <stdio.h>
#include <sys/termios.h>

int fred(int me)
{
    int B0, B1;

    B0 = me;

    B1 = me / 2;

    printf("String B0 is: %d, %d\n", B0, B1);
}

$ cc -c a.c
"a.c", line 6: syntax error before or at: 0
"a.c", line 8: left operand must be modifiable lvalue: op "="
"a.c", line 10: undefined symbol: B1
cc: acomp failed for a.c

Same-same on SLES:
$ cc -c a.c
In file included from /usr/include/termios.h:39:0,
                  from /usr/include/sys/termios.h:3,
                  from a.c:2:
a.c: In function ???fred???:
a.c:6:8: error: expected identifier or ???(??? before numeric constant
     int B0, B1;
         ^
a.c:8:7: error: lvalue required as left operand of assignment
     B0 = me;
        ^
a.c:10:4: error: ???B1??? undeclared (first use in this function)
     B1 = me / 2;
     ^
a.c:10:4: note: each undeclared identifier is reported only once for
each function it appears in


Looks like something must be including file(s) on Linux PowerPC that
isn't included on other systems.

        Cheers,
                Gary B-)
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Macro expansion of B0 on Linux PPC system

Gary R. Schmidt
In reply to this post by Richard Hipp-3
On 19/12/2017 13:55, Richard Hipp wrote:
> On 12/18/17, Lee, Greg <[hidden email]> wrote:
>> I am still seeing the problem on Power 8 and others report the problem
>> persists on Power 9. Please see the spack github issue. I also attached a
>> configure/make output if that helps.
>
> So, what you are saying, then, is that "B0" is a reserved word on
> Power 8 and Power 9 systems, and can never be used as a local variable
> name?
>
The "#define B0 0" etcetera have been in the terminal I/O include
file(s) of UNIX systems since time immemorial.

I've just run up a quickie that shows the same problem on Solaris:
#include <stdio.h>
#include <sys/termios.h>

int fred(int me)
{
    int B0, B1;

    B0 = me;

    B1 = me / 2;

    printf("String B0 is: %d, %d\n", B0, B1);
}

$ cc -c a.c
"a.c", line 6: syntax error before or at: 0
"a.c", line 8: left operand must be modifiable lvalue: op "="
"a.c", line 10: undefined symbol: B1
cc: acomp failed for a.c

Same-same on SLES:
$ cc -c a.c
In file included from /usr/include/termios.h:39:0,
                  from /usr/include/sys/termios.h:3,
                  from a.c:2:
a.c: In function ???fred???:
a.c:6:8: error: expected identifier or ???(??? before numeric constant
     int B0, B1;
         ^
a.c:8:7: error: lvalue required as left operand of assignment
     B0 = me;
        ^
a.c:10:4: error: ???B1??? undeclared (first use in this function)
     B1 = me / 2;
     ^
a.c:10:4: note: each undeclared identifier is reported only once for
each function it appears in


Looks like something must be including file(s) on Linux PowerPC that
isn't included on other systems.

        Cheers,
                Gary B-)
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Macro expansion of B0 on Linux PPC system

Rowan Worth-2
In reply to this post by Richard Hipp-3
On 16 December 2017 at 11:21, Richard Hipp <[hidden email]> wrote:

> On 12/15/17, Lee, Greg <[hidden email]> wrote:
> > I never got a reply on this issue and someone else tripped up on it:
> >
> > https://github.com/spack/spack/issues/6698
> >
> > Any help or even acknowledgement of this message would be appreciated.
> >
>
> I believe the problem was fixed on the highlighted check-in here:
> https://www.sqlite.org/src/timeline?y=ci&c=b9a58daca&n=9
>
> That fix should have appeared in SQLite version 3.19.0.  Version
> 3.21.0 is the latest.
>
> Are you still having issues?


Looks like the #undef was lost when shell.c.in was introduced:

https://www.sqlite.org/src/info/17e0bb12d82b510b

-Rowan
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Macro expansion of B0 on Linux PPC system

Richard Hipp-3
In reply to this post by Lee, Greg
On 5/3/17, Lee, Greg <[hidden email]> wrote:
> When I try to build sqlite 3.18.0 on a Linux PPC system, I get a
> compile-time error.

Can you please try again using the latest trunk version of SQLite and
let me know if you are still encountering problems.  You can download
a tarball of the latest trunk checkin from
https://sqlite.org/src/tarball/sqlite.tar.gz?r=trunk

We are dependent on you to run this test since we do not have access
to a Linux PPC system.

---
D. Richard Hipp
[hidden email]
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Macro expansion of B0 on Linux PPC system

Lee, Greg
The tarball you pointed me to appears to build OK on Linux PPC. Thanks.

________________________________
From: [hidden email] <[hidden email]> on behalf of Richard Hipp <[hidden email]>
Sent: Wednesday, December 20, 2017 3:49:45 PM
To: SQLite mailing list
Cc: Lee, Greg
Subject: Re: [sqlite] Macro expansion of B0 on Linux PPC system

On 5/3/17, Lee, Greg <[hidden email]> wrote:
> When I try to build sqlite 3.18.0 on a Linux PPC system, I get a
> compile-time error.

Can you please try again using the latest trunk version of SQLite and
let me know if you are still encountering problems.  You can download
a tarball of the latest trunk checkin from
https://sqlite.org/src/tarball/sqlite.tar.gz?r=trunk

We are dependent on you to run this test since we do not have access
to a Linux PPC system.

---
D. Richard Hipp
[hidden email]
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users