Hi, Lv

On 2016/10/18 6:26, Zheng, Lv wrote:
> Hi, Yisheng
> 
>> From: Yisheng Xie [mailto:xieyishe...@huawei.com]
>> Subject: [PATCH] ACPICA: arm64: fix compile apci tools fail for arm64
>>
>> when try to cross compile acpi tool in dir kernel/tools
>> for arm64 use command:
>>     make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- acpi
>> it failed with the following log:
>> In file included
>>     from ../../../../../include/acpi/acpi.h:58:0,
>>     from ../../../../../drivers/acpi/acpica/utstring.c:44:
>>     ../../../../../include/acpi/actypes.h:130:34: error: conflicting types 
>> for 's64'
>>  typedef signed long long s64;
>>                            ^
>> In file included
>>     from /opt/aarch64-linux-gnu/libc/usr/include/asm-generic/types.h:6:0
>>     from /opt/aarch64-linux-gnu/libc/usr/include/asm/types.h:1,
>>     from ../../../../../include/uapi/linux/types.h:4,
>>     from ../../../../../include/linux/types.h:5,
>>     from /opt/aarch64-linux-gnu/libc/usr/include/asm/sigcontext.h:19,
>>     from /opt/aarch64-linux-gnu/libc/usr/include/bits/sigcontext.h:27,
>>     from /opt/aarch64-linux-gnu/libc/usr/include/signal.h:308,
>>     from ../../../../../include/acpi/platform/acenv.h:365,
>>     from ../../../../../include/acpi/acpi.h:56,
>>     from ./acpidump.h:55,
>>     from ../../os_specific/service_layers/oslinuxtbl.c:44:
>> ../../../../../include/asm-generic/int-ll64.h:24:26: note: previous 
>> declaration of 's64' was here
>>  typedef signed long long s64;
>>                            ^
>> Fix this compile problem.
> 
> This looks like a conflict between asm-generic/int-ll64.h and actypes.h.
> 
> When a build environment actually has s64 definition.
> ACPICA shouldn't define it.
> ACPICA should define ACPI_USE_SYSTEM_INTTYPES instead.
> 
> However it is not clear if a Linux userspace should be aware of s64.
> We couldn't see this issue in other arch builds.
> So I wonder if this is just a missing "#ifdef __KERNEL__" in 
> asm-generic/int-ll64.h.
> 
> If Linux should be aware of s64.
> Then ACPICA definition of s64 should be disabled by defining 
> ACPI_USE_SYSTEM_INTTYPES.
> Since this is a post-ACPICA-release issue.
> You should only fix it in tools/power/acpi/Makefile*.
> 
> So I think this patch is not a right fix, but a wrong workaround.
> It can easily cause regressions in other ACPICA builds.
> 
Thank you for your reply.
You are right that the  ACPI_USE_SYSTEM_INTTYPES in Makefile can fixed compile 
error,
I listed in change log. And I also have tried that way.
However, it still have many other errors.(I am sorry to not have listed all of 
them.)

>From the following log, you can see, all of the conflict type is from signal.h.
And maybe this patch is a better way to fix these compile error, without too 
much
change of code.

Are you sure that it will cause order problem when build ACPICA on other build
environment, for it only effect aarch64.

Thanks
Yisheng.

----------detail compile error log---------
In file included from 
/opt/aarch64-linux-gnu/libc/usr/include/asm/sigcontext.h:19:0,
                 from 
/opt/aarch64-linux-gnu/libc/usr/include/bits/sigcontext.h:27,
                 from /opt/aarch64-linux-gnu/libc/usr/include/signal.h:308,
                 from ../../../../../include/acpi/platform/acenv.h:365,
                 from ../../../../../include/acpi/acpi.h:56,
                 from ../../../../../drivers/acpi/acpica/tbprint.c:44:
../../../../../include/linux/types.h:14:26: error: conflicting types for 
'fd_set'
 typedef __kernel_fd_set  fd_set;
                          ^
In file included from /opt/aarch64-linux-gnu/libc/usr/include/sys/types.h:219:0,
                 from /opt/aarch64-linux-gnu/libc/usr/include/stdlib.h:314,
                 from ../../../../../include/acpi/platform/acenv.h:357,
                 from ../../../../../include/acpi/acpi.h:56,
                 from ../../../../../drivers/acpi/acpica/tbprint.c:44:
/opt/aarch64-linux-gnu/libc/usr/include/sys/select.h:75:5: note: previous 
declaration of 'fd_set' was here
   } fd_set;
     ^
In file included from 
/opt/aarch64-linux-gnu/libc/usr/include/asm/sigcontext.h:19:0,
                 from 
/opt/aarch64-linux-gnu/libc/usr/include/bits/sigcontext.h:27,
                 from /opt/aarch64-linux-gnu/libc/usr/include/signal.h:308,
                 from ../../../../../include/acpi/platform/acenv.h:365,
                 from ../../../../../include/acpi/acpi.h:56,
                 from ../../../../../drivers/acpi/acpica/tbprint.c:44:
../../../../../include/linux/types.h:15:25: error: conflicting types for 'dev_t'
 typedef __kernel_dev_t  dev_t;
                         ^
In file included from /opt/aarch64-linux-gnu/libc/usr/include/stdlib.h:314:0,
                 from ../../../../../include/acpi/platform/acenv.h:357,
                 from ../../../../../include/acpi/acpi.h:56,
                 from ../../../../../drivers/acpi/acpica/tbprint.c:44:
/opt/aarch64-linux-gnu/libc/usr/include/sys/types.h:60:17: note: previous 
declaration of 'dev_t' was here
 typedef __dev_t dev_t;
                 ^
...
In file included from 
/opt/aarch64-linux-gnu/libc/usr/include/asm/sigcontext.h:19:0,
                 from 
/opt/aarch64-linux-gnu/libc/usr/include/bits/sigcontext.h:27,
                 from /opt/aarch64-linux-gnu/libc/usr/include/signal.h:308,
                 from ../../../../../include/acpi/platform/acenv.h:365,
                 from ../../../../../include/acpi/acpi.h:56,
                 from ../../../../../drivers/acpi/acpica/tbprint.c:44:
../../../../../include/linux/types.h:25:26: error: conflicting types for 
'timer_t'
 typedef __kernel_timer_t timer_t;
                          ^
In file included from /opt/aarch64-linux-gnu/libc/usr/include/sys/types.h:132:0,
                 from /opt/aarch64-linux-gnu/libc/usr/include/stdlib.h:314,
                 from ../../../../../include/acpi/platform/acenv.h:357,
                 from ../../../../../include/acpi/acpi.h:56,
                 from ../../../../../drivers/acpi/acpica/tbprint.c:44:
/opt/aarch64-linux-gnu/libc/usr/include/time.h:103:19: note: previous 
declaration of 'timer_t' was here
 typedef __timer_t timer_t;
                   ^
...
In file included from 
/opt/aarch64-linux-gnu/libc/usr/include/asm/sigcontext.h:19:0,
                 from 
/opt/aarch64-linux-gnu/libc/usr/include/bits/sigcontext.h:27,
                 from /opt/aarch64-linux-gnu/libc/usr/include/signal.h:308,
                 from ../../../../../include/acpi/platform/acenv.h:365,
                 from ../../../../../include/acpi/acpi.h:56,
                 from ../../../../../drivers/acpi/acpica/tbprint.c:44:
../../../../../include/linux/types.h:45:26: error: conflicting types for 
'loff_t'
 typedef __kernel_loff_t  loff_t;
                          ^
In file included from /opt/aarch64-linux-gnu/libc/usr/include/stdlib.h:314:0,
                 from ../../../../../include/acpi/platform/acenv.h:357,
                 from ../../../../../include/acpi/acpi.h:56,
                 from ../../../../../drivers/acpi/acpica/tbprint.c:44:
/opt/aarch64-linux-gnu/libc/usr/include/sys/types.h:44:18: note: previous 
declaration of 'loff_t' was here
 typedef __loff_t loff_t;
                  ^
...
In file included from 
/opt/aarch64-linux-gnu/libc/usr/include/asm/sigcontext.h:19:0,
                 from 
/opt/aarch64-linux-gnu/libc/usr/include/bits/sigcontext.h:27,
                 from /opt/aarch64-linux-gnu/libc/usr/include/signal.h:308,
                 from ../../../../../include/acpi/platform/acenv.h:365,
                 from ../../../../../include/acpi/acpi.h:56,
                 from ../../../../../drivers/acpi/acpica/tbprint.c:44:
../../../../../include/linux/types.h:112:17: error: conflicting types for 
'u_int64_t'
 typedef  __u64  u_int64_t;
                 ^
In file included from /opt/aarch64-linux-gnu/libc/usr/include/stdlib.h:314:0,
                 from ../../../../../include/acpi/platform/acenv.h:357,
                 from ../../../../../include/acpi/acpi.h:56,
                 from ../../../../../drivers/acpi/acpica/tbprint.c:44:
/opt/aarch64-linux-gnu/libc/usr/include/sys/types.h:203:1: note: previous 
declaration of 'u_int64_t' was here
 __u_intN_t (64, __DI__);
 ^
...
In file included from 
/opt/aarch64-linux-gnu/libc/usr/include/asm/sigcontext.h:19:0,
                 from 
/opt/aarch64-linux-gnu/libc/usr/include/bits/sigcontext.h:27,
                 from /opt/aarch64-linux-gnu/libc/usr/include/signal.h:308,
                 from ../../../../../include/acpi/platform/acenv.h:365,
                 from ../../../../../include/acpi/acpi.h:56,
                 from ../../../../../drivers/acpi/acpica/tbprint.c:44:
../../../../../include/linux/types.h:113:17: error: conflicting types for 
'int64_t'
 typedef  __s64  int64_t;
                 ^
In file included from /opt/aarch64-linux-gnu/libc/usr/include/stdlib.h:314:0,
                 from ../../../../../include/acpi/platform/acenv.h:357,
                 from ../../../../../include/acpi/acpi.h:56,
                 from ../../../../../drivers/acpi/acpica/tbprint.c:44:
/opt/aarch64-linux-gnu/libc/usr/include/sys/types.h:197:1: note: previous 
declaration of 'int64_t' was here
 __intN_t (64, __DI__);
 ^
...
In file included from 
/opt/aarch64-linux-gnu/libc/usr/include/asm/sigcontext.h:19:0,
                 from 
/opt/aarch64-linux-gnu/libc/usr/include/bits/sigcontext.h:27,
                 from /opt/aarch64-linux-gnu/libc/usr/include/signal.h:308,
                 from ../../../../../include/acpi/platform/acenv.h:365,
                 from ../../../../../include/acpi/acpi.h:56,
                 from ../../../../../drivers/acpi/acpica/tbprint.c:44:
../../../../../include/linux/types.h:134:23: error: conflicting types for 
'blkcnt_t'
 typedef unsigned long blkcnt_t;
                       ^
In file included from /opt/aarch64-linux-gnu/libc/usr/include/stdlib.h:314:0,
                 from ../../../../../include/acpi/platform/acenv.h:357,
                 from ../../../../../include/acpi/acpi.h:56,
                 from ../../../../../drivers/acpi/acpica/tbprint.c:44:
/opt/aarch64-linux-gnu/libc/usr/include/sys/types.h:235:20: note: previous 
declaration of 'blkcnt_t' was here
 typedef __blkcnt_t blkcnt_t;  /* Type to count number of disk blocks.  */
                    ^

                                        

                                        
In file included from /opt/aarch64-linux-gnu/libc/usr/include/sys/types.h:219:0,
                 from /opt/aarch64-linux-gnu/libc/usr/include/stdlib.h:314,
                 from ../../../../../include/acpi/platform/acenv.h:357,
                 from ../../../../../include/acpi/acpi.h:56,
                 from acpidbg.c:12:
acpidbg.c: In function 'acpi_aml_set_fd':
../../../../../drivers/acpi/acpica/utprint.c:352:5: error: conflicting types 
for 'vsnprintf'
 int vsnprintf(char *string, acpi_size size, const char *format, va_list args)
     ^
...
In file included from ../../../../../include/acpi/platform/acenv.h:361:0,
                 from ../../../../../include/acpi/acpi.h:56,
                 from ../../../../../drivers/acpi/acpica/utprint.c:44:
/opt/aarch64-linux-gnu/libc/usr/include/stdio.h:390:12: note: previous 
declaration of 'vsnprintf' was here
 extern int vsnprintf (char *__restrict __s, size_t __maxlen,
            ^
....
../../../../../drivers/acpi/acpica/utprint.c:599:5: error: conflicting types 
for 'snprintf'
 int snprintf(char *string, acpi_size size, const char *format, ...)
     ^

In file included from ../../../../../include/acpi/platform/acenv.h:361:0,
                 from ../../../../../include/acpi/acpi.h:56,
                 from ../../../../../drivers/acpi/acpica/utprint.c:44:
/opt/aarch64-linux-gnu/libc/usr/include/stdio.h:386:12: note: previous 
declaration of 'snprintf' was here
 extern int snprintf (char *__restrict __s, size_t __maxlen,
            ^
...
acpidbg.c:303:25: warning: passing argument 2 of 'select' from incompatible 
pointer type [-Wincompatible-pointer-types]
   ret = select(maxfd+1, &rfds, &wfds, NULL, &tv);
                         ^
....
acpidbg.c:309:8: error: 'fd_set {aka struct <anonymous>}' has no member named 
'__fds_bits'
    if (FD_ISSET(STDIN_FILENO, &rfds))
        ^
make[2]: *** [utprint.o] Error 1
acpidbg.c:311:8: error: 'fd_set {aka struct <anonymous>}' has no member named 
'__fds_bits'
    if (FD_ISSET(fd, &wfds)) {
        ^
acpidbg.c:317:8: error: 'fd_set {aka struct <anonymous>}' has no member named 
'__fds_bits'
    if (FD_ISSET(fd, &rfds)) {
        ^
acpidbg.c:323:8: error: 'fd_set {aka struct <anonymous>}' has no member named 
'__fds_bits'
    if (FD_ISSET(STDOUT_FILENO, &wfds)) {
        ^





Reply via email to