This is the mail archive of the gdb-prs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug gdb/20287] X32 and "gdb_static_assert (sizeof (nat_siginfo_t) == sizeof (siginfo_t))"


https://sourceware.org/bugzilla/show_bug.cgi?id=20287

--- Comment #34 from Jeffrey Walton <noloader at gmail dot com> ---
(In reply to Pedro Alves from comment #33)
> Created attachment 9360 [details]
> Fix
> 
> Like this.  Can you give it a try?

Applied to HEAD with `patch -p1 < 9360.diff`.

It looks like there are some issues, but I _think_ some progress was made since
the assert did not fire.

However, when I commented out the assert in the 7.11.1 tarball, I did not
encounter the issues below.

**********

gcc -g -O2   -I. -I. -I./common -I./config
-DLOCALEDIR="\"/usr/local/share/locale\"" -DHAVE_CONFIG_H -I./../include/opcode
-I./../opcodes/.. -I./../readline/.. -I./../zlib -I../bfd -I./../bfd
-I./../include -I../libdecnumber -I./../libdecnumber  -I./gnulib/import
-Ibuild-gnulib/import    -Wall -Wpointer-arith -Wno-unused -Wunused-value
-Wunused-function -Wno-switch -Wno-char-subscripts -Wempty-body -Wpointer-sign
-Wmissing-prototypes -Wdeclaration-after-statement -Wmissing-parameter-type
-Wold-style-declaration -Wold-style-definition -Wformat-nonliteral  -c -o
amd64-linux-siginfo.o -MT amd64-linux-siginfo.o -MMD -MP -MF
.deps/amd64-linux-siginfo.Tpo ./nat/amd64-linux-siginfo.c
./nat/amd64-linux-siginfo.c:297:9: error: unknown type name âx32_siginfo_tâ
 typedef x32_siginfo_t ptrace_siginfo_t;
         ^
./nat/amd64-linux-siginfo.c: In function âcompat_siginfo_from_siginfoâ:
./nat/amd64-linux-siginfo.c:313:29: error: request for member âsi_signoâ in
something not a structure or union
   to->si_signo = from_ptrace.si_signo;
                             ^
./nat/amd64-linux-siginfo.c:314:29: error: request for member âsi_errnoâ in
something not a structure or union
   to->si_errno = from_ptrace.si_errno;
                             ^
./nat/amd64-linux-siginfo.c:315:28: error: request for member âsi_codeâ in
something not a structure or union
   to->si_code = from_ptrace.si_code;
                            ^
./nat/amd64-linux-siginfo.c:319:39: error: request for member â_sifieldsâ in
something not a structure or union
       to->cpt_si_timerid = from_ptrace.cpt_si_timerid;
                                       ^
./nat/amd64-linux-siginfo.c:320:39: error: request for member â_sifieldsâ in
something not a structure or union
       to->cpt_si_overrun = from_ptrace.cpt_si_overrun;
                                       ^
./nat/amd64-linux-siginfo.c:321:46: error: request for member â_sifieldsâ in
something not a structure or union
       to->cpt_si_ptr = (intptr_t) from_ptrace.cpt_si_ptr;
                                              ^
./nat/amd64-linux-siginfo.c:325:35: error: request for member â_sifieldsâ in
something not a structure or union
       to->cpt_si_pid = from_ptrace.cpt_si_pid;
                                   ^
./nat/amd64-linux-siginfo.c:326:35: error: request for member â_sifieldsâ in
something not a structure or union
       to->cpt_si_uid = from_ptrace.cpt_si_uid;
                                   ^
./nat/amd64-linux-siginfo.c:330:35: error: request for member â_sifieldsâ in
something not a structure or union
       to->cpt_si_pid = from_ptrace.cpt_si_pid;
                                   ^
./nat/amd64-linux-siginfo.c:331:35: error: request for member â_sifieldsâ in
something not a structure or union
       to->cpt_si_uid = from_ptrace.cpt_si_uid;
                                   ^
./nat/amd64-linux-siginfo.c:332:46: error: request for member â_sifieldsâ in
something not a structure or union
       to->cpt_si_ptr = (intptr_t) from_ptrace.cpt_si_ptr;
                                              ^
./nat/amd64-linux-siginfo.c:339:32: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_pid = from_ptrace.cpt_si_pid;
                                ^
./nat/amd64-linux-siginfo.c:340:32: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_uid = from_ptrace.cpt_si_uid;
                                ^
./nat/amd64-linux-siginfo.c:341:35: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_status = from_ptrace.cpt_si_status;
                                   ^
./nat/amd64-linux-siginfo.c:342:34: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_utime = from_ptrace.cpt_si_utime;
                                  ^
./nat/amd64-linux-siginfo.c:343:34: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_stime = from_ptrace.cpt_si_stime;
                                  ^
./nat/amd64-linux-siginfo.c:349:44: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_addr = (intptr_t) from_ptrace.cpt_si_addr;
                                            ^
./nat/amd64-linux-siginfo.c:352:33: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_band = from_ptrace.cpt_si_band;
                                 ^
./nat/amd64-linux-siginfo.c:353:31: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_fd = from_ptrace.cpt_si_fd;
                               ^
./nat/amd64-linux-siginfo.c:356:32: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_pid = from_ptrace.cpt_si_pid;
                                ^
./nat/amd64-linux-siginfo.c:357:32: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_uid = from_ptrace.cpt_si_uid;
                                ^
./nat/amd64-linux-siginfo.c:358:43: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_ptr = (intptr_t) from_ptrace.cpt_si_ptr;
                                           ^
./nat/amd64-linux-siginfo.c: In function âsiginfo_from_compat_siginfoâ:
./nat/amd64-linux-siginfo.c:373:12: error: request for member âsi_signoâ in
something not a structure or union
   to_ptrace.si_signo = from->si_signo;
            ^
./nat/amd64-linux-siginfo.c:374:12: error: request for member âsi_errnoâ in
something not a structure or union
   to_ptrace.si_errno = from->si_errno;
            ^
./nat/amd64-linux-siginfo.c:375:12: error: request for member âsi_codeâ in
something not a structure or union
   to_ptrace.si_code = from->si_code;
            ^
./nat/amd64-linux-siginfo.c:377:16: error: request for member âsi_codeâ in
something not a structure or union
   if (to_ptrace.si_code == SI_TIMER)
                ^
./nat/amd64-linux-siginfo.c:379:16: error: request for member â_sifieldsâ in
something not a structure or union
       to_ptrace.cpt_si_timerid = from->cpt_si_timerid;
                ^
./nat/amd64-linux-siginfo.c:380:16: error: request for member â_sifieldsâ in
something not a structure or union
       to_ptrace.cpt_si_overrun = from->cpt_si_overrun;
                ^
./nat/amd64-linux-siginfo.c:381:16: error: request for member â_sifieldsâ in
something not a structure or union
       to_ptrace.cpt_si_ptr = (void *) (intptr_t) from->cpt_si_ptr;
                ^
./nat/amd64-linux-siginfo.c:383:21: error: request for member âsi_codeâ in
something not a structure or union
   else if (to_ptrace.si_code == SI_USER)
                     ^
./nat/amd64-linux-siginfo.c:385:16: error: request for member â_sifieldsâ in
something not a structure or union
       to_ptrace.cpt_si_pid = from->cpt_si_pid;
                ^
./nat/amd64-linux-siginfo.c:386:16: error: request for member â_sifieldsâ in
something not a structure or union
       to_ptrace.cpt_si_uid = from->cpt_si_uid;
                ^
./nat/amd64-linux-siginfo.c:388:16: error: request for member âsi_codeâ in
something not a structure or union
   if (to_ptrace.si_code < 0)
                ^
./nat/amd64-linux-siginfo.c:390:16: error: request for member â_sifieldsâ in
something not a structure or union
       to_ptrace.cpt_si_pid = from->cpt_si_pid;
                ^
./nat/amd64-linux-siginfo.c:391:16: error: request for member â_sifieldsâ in
something not a structure or union
       to_ptrace.cpt_si_uid = from->cpt_si_uid;
                ^
./nat/amd64-linux-siginfo.c:392:16: error: request for member â_sifieldsâ in
something not a structure or union
       to_ptrace.cpt_si_ptr = (void *) (intptr_t) from->cpt_si_ptr;
                ^
./nat/amd64-linux-siginfo.c:396:24: error: request for member âsi_signoâ in
something not a structure or union
       switch (to_ptrace.si_signo)
                        ^
./nat/amd64-linux-siginfo.c:399:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_pid = from->cpt_si_pid;
             ^
./nat/amd64-linux-siginfo.c:400:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_uid = from->cpt_si_uid;
             ^
./nat/amd64-linux-siginfo.c:401:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_status = from->cpt_si_status;
             ^
./nat/amd64-linux-siginfo.c:402:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_utime = from->cpt_si_utime;
             ^
./nat/amd64-linux-siginfo.c:403:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_stime = from->cpt_si_stime;
             ^
./nat/amd64-linux-siginfo.c:409:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_addr = (void *) (intptr_t) from->cpt_si_addr;
             ^
./nat/amd64-linux-siginfo.c:410:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_addr_lsb = (short) from->cpt_si_addr_lsb;
             ^
./nat/amd64-linux-siginfo.c:413:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_band = from->cpt_si_band;
             ^
./nat/amd64-linux-siginfo.c:414:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_fd = from->cpt_si_fd;
             ^
./nat/amd64-linux-siginfo.c:417:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_pid = from->cpt_si_pid;
             ^
./nat/amd64-linux-siginfo.c:418:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_uid = from->cpt_si_uid;
             ^
./nat/amd64-linux-siginfo.c:419:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_ptr = (void* ) (intptr_t) from->cpt_si_ptr;
             ^
./nat/amd64-linux-siginfo.c: In function âcompat_x32_siginfo_from_siginfoâ:
./nat/amd64-linux-siginfo.c:437:29: error: request for member âsi_signoâ in
something not a structure or union
   to->si_signo = from_ptrace.si_signo;
                             ^
./nat/amd64-linux-siginfo.c:438:29: error: request for member âsi_errnoâ in
something not a structure or union
   to->si_errno = from_ptrace.si_errno;
                             ^
./nat/amd64-linux-siginfo.c:439:28: error: request for member âsi_codeâ in
something not a structure or union
   to->si_code = from_ptrace.si_code;
                            ^
./nat/amd64-linux-siginfo.c:443:39: error: request for member â_sifieldsâ in
something not a structure or union
       to->cpt_si_timerid = from_ptrace.cpt_si_timerid;
                                       ^
./nat/amd64-linux-siginfo.c:444:39: error: request for member â_sifieldsâ in
something not a structure or union
       to->cpt_si_overrun = from_ptrace.cpt_si_overrun;
                                       ^
./nat/amd64-linux-siginfo.c:445:46: error: request for member â_sifieldsâ in
something not a structure or union
       to->cpt_si_ptr = (intptr_t) from_ptrace.cpt_si_ptr;
                                              ^
./nat/amd64-linux-siginfo.c:449:35: error: request for member â_sifieldsâ in
something not a structure or union
       to->cpt_si_pid = from_ptrace.cpt_si_pid;
                                   ^
./nat/amd64-linux-siginfo.c:450:35: error: request for member â_sifieldsâ in
something not a structure or union
       to->cpt_si_uid = from_ptrace.cpt_si_uid;
                                   ^
./nat/amd64-linux-siginfo.c:454:35: error: request for member â_sifieldsâ in
something not a structure or union
       to->cpt_si_pid = from_ptrace.cpt_si_pid;
                                   ^
./nat/amd64-linux-siginfo.c:455:35: error: request for member â_sifieldsâ in
something not a structure or union
       to->cpt_si_uid = from_ptrace.cpt_si_uid;
                                   ^
./nat/amd64-linux-siginfo.c:456:46: error: request for member â_sifieldsâ in
something not a structure or union
       to->cpt_si_ptr = (intptr_t) from_ptrace.cpt_si_ptr;
                                              ^
./nat/amd64-linux-siginfo.c:463:32: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_pid = from_ptrace.cpt_si_pid;
                                ^
./nat/amd64-linux-siginfo.c:464:32: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_uid = from_ptrace.cpt_si_uid;
                                ^
./nat/amd64-linux-siginfo.c:465:35: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_status = from_ptrace.cpt_si_status;
                                   ^
./nat/amd64-linux-siginfo.c:466:43: error: request for member â_sifieldsâ in
something not a structure or union
    memcpy (&to->cpt_si_utime, &from_ptrace.cpt_si_utime,
                                           ^
./nat/amd64-linux-siginfo.c:468:43: error: request for member â_sifieldsâ in
something not a structure or union
    memcpy (&to->cpt_si_stime, &from_ptrace.cpt_si_stime,
                                           ^
./nat/amd64-linux-siginfo.c:475:44: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_addr = (intptr_t) from_ptrace.cpt_si_addr;
                                            ^
./nat/amd64-linux-siginfo.c:478:33: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_band = from_ptrace.cpt_si_band;
                                 ^
./nat/amd64-linux-siginfo.c:479:31: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_fd = from_ptrace.cpt_si_fd;
                               ^
./nat/amd64-linux-siginfo.c:482:32: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_pid = from_ptrace.cpt_si_pid;
                                ^
./nat/amd64-linux-siginfo.c:483:32: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_uid = from_ptrace.cpt_si_uid;
                                ^
./nat/amd64-linux-siginfo.c:484:43: error: request for member â_sifieldsâ in
something not a structure or union
    to->cpt_si_ptr = (intptr_t) from_ptrace.cpt_si_ptr;
                                           ^
./nat/amd64-linux-siginfo.c: In function âsiginfo_from_compat_x32_siginfoâ:
./nat/amd64-linux-siginfo.c:501:12: error: request for member âsi_signoâ in
something not a structure or union
   to_ptrace.si_signo = from->si_signo;
            ^
./nat/amd64-linux-siginfo.c:502:12: error: request for member âsi_errnoâ in
something not a structure or union
   to_ptrace.si_errno = from->si_errno;
            ^
./nat/amd64-linux-siginfo.c:503:12: error: request for member âsi_codeâ in
something not a structure or union
   to_ptrace.si_code = from->si_code;
            ^
./nat/amd64-linux-siginfo.c:505:16: error: request for member âsi_codeâ in
something not a structure or union
   if (to_ptrace.si_code == SI_TIMER)
                ^
./nat/amd64-linux-siginfo.c:507:16: error: request for member â_sifieldsâ in
something not a structure or union
       to_ptrace.cpt_si_timerid = from->cpt_si_timerid;
                ^
./nat/amd64-linux-siginfo.c:508:16: error: request for member â_sifieldsâ in
something not a structure or union
       to_ptrace.cpt_si_overrun = from->cpt_si_overrun;
                ^
./nat/amd64-linux-siginfo.c:509:16: error: request for member â_sifieldsâ in
something not a structure or union
       to_ptrace.cpt_si_ptr = (void *) (intptr_t) from->cpt_si_ptr;
                ^
./nat/amd64-linux-siginfo.c:511:21: error: request for member âsi_codeâ in
something not a structure or union
   else if (to_ptrace.si_code == SI_USER)
                     ^
./nat/amd64-linux-siginfo.c:513:16: error: request for member â_sifieldsâ in
something not a structure or union
       to_ptrace.cpt_si_pid = from->cpt_si_pid;
                ^
./nat/amd64-linux-siginfo.c:514:16: error: request for member â_sifieldsâ in
something not a structure or union
       to_ptrace.cpt_si_uid = from->cpt_si_uid;
                ^
./nat/amd64-linux-siginfo.c:516:16: error: request for member âsi_codeâ in
something not a structure or union
   if (to_ptrace.si_code < 0)
                ^
./nat/amd64-linux-siginfo.c:518:16: error: request for member â_sifieldsâ in
something not a structure or union
       to_ptrace.cpt_si_pid = from->cpt_si_pid;
                ^
./nat/amd64-linux-siginfo.c:519:16: error: request for member â_sifieldsâ in
something not a structure or union
       to_ptrace.cpt_si_uid = from->cpt_si_uid;
                ^
./nat/amd64-linux-siginfo.c:520:16: error: request for member â_sifieldsâ in
something not a structure or union
       to_ptrace.cpt_si_ptr = (void *) (intptr_t) from->cpt_si_ptr;
                ^
./nat/amd64-linux-siginfo.c:524:24: error: request for member âsi_signoâ in
something not a structure or union
       switch (to_ptrace.si_signo)
                        ^
./nat/amd64-linux-siginfo.c:527:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_pid = from->cpt_si_pid;
             ^
./nat/amd64-linux-siginfo.c:528:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_uid = from->cpt_si_uid;
             ^
./nat/amd64-linux-siginfo.c:529:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_status = from->cpt_si_status;
             ^
./nat/amd64-linux-siginfo.c:530:22: error: request for member â_sifieldsâ in
something not a structure or union
    memcpy (&to_ptrace.cpt_si_utime, &from->cpt_si_utime,
                      ^
./nat/amd64-linux-siginfo.c:531:22: error: request for member â_sifieldsâ in
something not a structure or union
     sizeof (to_ptrace.cpt_si_utime));
                      ^
./nat/amd64-linux-siginfo.c:532:22: error: request for member â_sifieldsâ in
something not a structure or union
    memcpy (&to_ptrace.cpt_si_stime, &from->cpt_si_stime,
                      ^
./nat/amd64-linux-siginfo.c:533:22: error: request for member â_sifieldsâ in
something not a structure or union
     sizeof (to_ptrace.cpt_si_stime));
                      ^
./nat/amd64-linux-siginfo.c:539:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_addr = (void *) (intptr_t) from->cpt_si_addr;
             ^
./nat/amd64-linux-siginfo.c:542:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_band = from->cpt_si_band;
             ^
./nat/amd64-linux-siginfo.c:543:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_fd = from->cpt_si_fd;
             ^
./nat/amd64-linux-siginfo.c:546:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_pid = from->cpt_si_pid;
             ^
./nat/amd64-linux-siginfo.c:547:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_uid = from->cpt_si_uid;
             ^
./nat/amd64-linux-siginfo.c:548:13: error: request for member â_sifieldsâ in
something not a structure or union
    to_ptrace.cpt_si_ptr = (void* ) (intptr_t) from->cpt_si_ptr;
             ^
In file included from ./common/common-defs.h:71:0,
                 from ./nat/amd64-linux-siginfo.c:21:
./nat/amd64-linux-siginfo.c: At top level:
./common/gdb_assert.h:26:14: error: size of array
ânever_defined_just_used_for_checkingâ is negative
   extern int never_defined_just_used_for_checking[(expr) ? 1 : -1]
              ^
./nat/amd64-linux-siginfo.c:597:1: note: in expansion of macro
âgdb_static_assertâ
 gdb_static_assert (sizeof (ptrace_siginfo_t) == GDB_SI_SIZE);
 ^
Makefile:2370: recipe for target 'amd64-linux-siginfo.o' failed
make[2]: *** [amd64-linux-siginfo.o] Error 1
make[2]: Leaving directory '/gdb-7.11/gdb'
Makefile:9156: recipe for target 'all-gdb' failed
make[1]: *** [all-gdb] Error 2
make[1]: Leaving directory '/gdb-7.11'
Makefile:846: recipe for target 'all' failed
make: *** [all] Error 2

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]