vmlemon / Orion

Next-generation, L4Ka::Pistachio-based operating system
7 stars 0 forks source link

Problems with the x86 port being bitrotten #3

Closed vmlemon closed 5 years ago

vmlemon commented 5 years ago

In predecessor projects (e.g. Enryo, and i9), we used older versions of the GCC toolchain/compilers, and GRUB, that made certain, fragile assumptions regarding data structure alignments, linkbase addresses, stack-smashing protection, and MultiBoot structures, that are gradually becoming false, as newer versions eclipse them.

For instance, upstream Pistachio have known about https://github.com/l4ka/pistachio/issues/13, for a long time, but sadly, no fix is forthcoming. :(

The x86 code also uses a lot of AT&T Assembly, that CLang/LLVM refuses to compile, and assemble, so we end up being locked-in to a single compiler, and version.

Even though GCC is Open Source, and portable, there's no guarantee that older versions will always be buildable, with newer ones; and, although we could ship a VM/Docker image, with an old OS, and toolchain, we're responsible for its security, providing hosting of such huge files, and maintaining GPL compliance. That would also limit us to a single CPU architecture, which is a pain, since we also want to run on POWER/PPC/Cell, and probably also ARM/SPARC/RISC-V, in the future.

Annoyingly, over time, a lot of resources have just disappeared from the Web (especially the NICTA, and OKL4 stuff, and the L4Ka site, at KIT has a lot of broken links, now), so it's becoming harder to figure out the care, and feeding of such old code, in order to make a smooth transition to modern alternatives, which makes it imperative on Orion, to maintain copies of them, for future reference.

vmlemon commented 5 years ago

Ideally, we'd upgrade the toolchain to something shiny, and modern, and fix everything, in a big bang, but given the age of the code, it might be best if we gradually work through generations of toolchain, to see how things break - although that would delay implementing more interesting stuff, and take a very long time.

We can still take that approach, but one way to extract ourselves from having to maintain ancient Docker images, and VMs would be to implement the Linux ABI itself (see issue #7), to a point where we can just unpack DEBs/RPMs, and run the toolchain on Orion, without having to rebuild it, and implement perfect source/feature compatibility with everything, immediately.

Since the goal is to eventually become self-hosting, and make a usable system, this could also help with fleshing out a design for things like memory management, and file system APIs, by giving a baseline feature set to work towards.

vmlemon commented 5 years ago

The changes to port over the NICTA enhancements (in https://github.com/vmlemon/Orion/issues/9) break things, even more, it seems.

vmlemon commented 5 years ago

Presently, the master branch (which doesn't include all of the NICTA changes) gets fairly far, with the standard Ubuntu 8.3.0 compiler:

/home/tyson/Orion/kernel/src/glue/v4-x86/debug.cc: In member function ‘void cpu_kdb_t::do_enter_kdebug(x86_exceptionframe_t*, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/debug.cc:102:31: error: ‘get_kdebug_tcb’ was not declared in this scope
      if (get_current_tcb() == get_kdebug_tcb())
                               ^~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/debug.cc:102:31: note: suggested alternative: ‘get_kdb_tcb’
      if (get_current_tcb() == get_kdebug_tcb())
                               ^~~~~~~~~~~~~~
                               get_kdb_tcb
make[1]: *** [/home/tyson/Orion/kernel/Mk/Makeconf:208: src/glue/v4-x86/debug.o] Error 1
make[1]: Leaving directory '/home/tyson/Orion/kernel/ibd'
make: *** [Makefile:38: all] Error 2
vmlemon commented 5 years ago

Added some build logs, to the master branch, using the following x86 compilers:

tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ibd$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/8/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 8.3.0-6ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 8.3.0 (Ubuntu 8.3.0-6ubuntu1) 
tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ibd$ gcc-6 -v
Using built-in specs.
COLLECT_GCC=gcc-6
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 6.5.0-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-as=/usr/bin/x86_64-linux-gnu-as --with-ld=/usr/bin/x86_64-linux-gnu-ld --program-suffix=-6 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 6.5.0 20181026 (Ubuntu 6.5.0-2ubuntu1) 
vmlemon commented 5 years ago

The NICTA_Pistachio_Mainline_FCL branch is in horrible shape, right now:

tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ubd$ cat FreshLog.txt 
make[1]: Entering directory '/home/tyson/Orion/kernel/ubd'
===> Building dependencies
make[1]: *** No rule to make target 'arch/x86/debug.h', needed by 'src/glue/v4-x86/x32/init.o'. Stop.
make[1]: Leaving directory '/home/tyson/Orion/kernel/ubd'
make: *** [Makefile:38: all] Error 2
vmlemon commented 5 years ago

Presently, the master branch (which doesn't include all of the NICTA changes) gets fairly far, with the standard Ubuntu 8.3.0 compiler:

/home/tyson/Orion/kernel/src/glue/v4-x86/debug.cc: In member function ‘void cpu_kdb_t::do_enter_kdebug(x86_exceptionframe_t*, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/debug.cc:102:31: error: ‘get_kdebug_tcb’ was not declared in this scope
      if (get_current_tcb() == get_kdebug_tcb())
                               ^~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/debug.cc:102:31: note: suggested alternative: ‘get_kdb_tcb’
      if (get_current_tcb() == get_kdebug_tcb())
                               ^~~~~~~~~~~~~~
                               get_kdb_tcb
make[1]: *** [/home/tyson/Orion/kernel/Mk/Makeconf:208: src/glue/v4-x86/debug.o] Error 1
make[1]: Leaving directory '/home/tyson/Orion/kernel/ibd'
make: *** [Makefile:38: all] Error 2

With the preprocessor patch, in https://github.com/vmlemon/Orion/commit/1a1ab9b7d366ad22aeafbefdd9914484c66ca0a0, things get a little further, but it's not a reliable fix.

vmlemon commented 5 years ago

The NICTA_Pistachio_Mainline_FCL branch is in horrible shape, right now:

tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ubd$ cat FreshLog.txt 
make[1]: Entering directory '/home/tyson/Orion/kernel/ubd'
===> Building dependencies
make[1]: *** No rule to make target 'arch/x86/debug.h', needed by 'src/glue/v4-x86/x32/init.o'. Stop.
make[1]: Leaving directory '/home/tyson/Orion/kernel/ubd'
make: *** [Makefile:38: all] Error 2

If we move the debug.h, from include/arch/ia32, we get:

tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ubd$ make
make[1]: Entering directory '/home/tyson/Orion/kernel/ubd'
===> Building dependencies
===> Generating include/tcb_layout.h
In file included from /home/tyson/Orion/kernel/src/api/v4/space.h:37,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:42,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h:199:37: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT(cpu < CONFIG_SMP_MAX_CPUS);
                                     ^
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h:247:29: error: macro "ASSERT" requires 2 arguments, but only 1 given
  ASSERT (is_copy_area (addr));
                             ^
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h:292:36: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT (data.thread_count !=  0);
                                    ^
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h:309:37: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT(cpu < CONFIG_SMP_MAX_CPUS);
                                     ^
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/x32/ktcb.h:39,
                 from /home/tyson/Orion/kernel/src/glue/v4-x86/ktcb.h:16,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:50,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:64:29: error: macro "ASSERT" requires 2 arguments, but only 1 given
   ASSERT(quantum.is_period());
                             ^
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:103:34: error: macro "ASSERT" requires 2 arguments, but only 1 given
      ASSERT(timeslice.is_period());
                                  ^
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:104:17: error: macro "ASSERT" requires 2 arguments, but only 1 given
      ASSERT(this);
                 ^
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:20,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:53:48: error: macro "SYS_IPC" requires 3 arguments, but only 2 given
 SYS_IPC (threadid_t to_tid, threadid_t from_tid);
                                                ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:76:59: error: macro "SYS_THREAD_CONTROL" passed 7 arguments, but takes just 5
       threadid_t recv_redirector_tid, word_t utcb_location);
                                                           ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:90:40: error: macro "SYS_EXCHANGE_REGISTERS" requires 8 arguments, but only 7 given
    word_t uhandle, threadid_t pager_tid);
                                        ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:125:23: error: macro "SYS_SPACE_CONTROL" requires 5 arguments, but only 4 given
      fpage_t utcb_area);
                       ^
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:21,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:27:32: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT (n < COPY_AREA_COUNT);
                                ^
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:42:32: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT (n < COPY_AREA_COUNT);
                                ^
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:48:32: error: macro "ASSERT" requires 2 arguments, but only 1 given
  ASSERT (pdir_idx[n][i] != ~0UL);
                                ^
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:63:32: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT (n < COPY_AREA_COUNT);
                                ^
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:64:32: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT (p < COPY_AREA_PDIRS);
                                ^
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:113:33: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT (n <= COPY_AREA_COUNT);
                                 ^
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:22,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:58:39: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT(start + count <= IPC_NUM_MR);
                                       ^
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:59:21: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT(count > 0);
                     ^
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:58:25: error: macro "ASSERT" requires 2 arguments, but only 1 given
  ASSERT(this->pdir_cache);
                         ^
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:94:30: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT(index < IPC_NUM_MR);
                              ^
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:105:30: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT(index < IPC_NUM_MR);
                              ^
In file included from /home/tyson/Orion/kernel/src/api/v4/space.h:37,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:42,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h: In member function ‘x86_space_t::top_pdir_t* space_t::get_top_pdir(cpuid_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h:199:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT(cpu < CONFIG_SMP_MAX_CPUS);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h: In member function ‘word_t space_t::get_copy_limit(addr_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h:247:2: error: ‘ASSERT’ was not declared in this scope
  ASSERT (is_copy_area (addr));
  ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h: In member function ‘bool space_t::remove_tcb(tcb_t*, cpuid_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h:292:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT (data.thread_count !=  0);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h: In member function ‘pgent_t* space_t::pgent(word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h:309:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT(cpu < CONFIG_SMP_MAX_CPUS);
     ^~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/x32/ktcb.h:39,
                 from /home/tyson/Orion/kernel/src/glue/v4-x86/ktcb.h:16,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:50,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h: At global scope:
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:57:29: error: ‘time_t’ has not been declared
     void init_total_quantum(time_t quantum)
                             ^~~~~~
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:101:25: error: ‘time_t’ has not been declared
     void init_timeslice(time_t timeslice)
                         ^~~~~~
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h: In member function ‘void rr_sched_ktcb_t::init_total_quantum(int)’:
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:59:18: error: request for member ‘is_never’ in ‘quantum’, which is of non-class type ‘int’
      if (quantum.is_never())
                  ^~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:64:3: error: ‘ASSERT’ was not declared in this scope
   ASSERT(quantum.is_period());
   ^~~~~~
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:65:27: error: request for member ‘get_microseconds’ in ‘quantum’, which is of non-class type ‘int’
   total_quantum = quantum.get_microseconds();
                           ^~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h: In member function ‘void rr_sched_ktcb_t::init_timeslice(int)’:
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:103:6: error: ‘ASSERT’ was not declared in this scope
      ASSERT(timeslice.is_period());
      ^~~~~~
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:105:55: error: request for member ‘get_microseconds’ in ‘timeslice’, which is of non-class type ‘int’
      current_timeslice = timeslice_length = timeslice.get_microseconds();
                                                       ^~~~~~~~~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/ktcb.h:16,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:50,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/ktcb.h: At global scope:
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/ktcb.h:57:9: error: ‘bitmask_t’ is not a template
 typedef bitmask_t<u32_t> ctrlxfer_mask_t;
         ^~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:51,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:49:16: error: ‘IPC_NUM_BR’ was not declared in this scope
     word_t  br[IPC_NUM_BR];  /* -196 .. -64 */
                ^~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:59:5: error: ‘timeout_t’ does not name a type
     timeout_t  xfer_timeout;  /* -32  */
     ^~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:64:16: error: ‘IPC_NUM_MR’ was not declared in this scope
     word_t  mr[IPC_NUM_MR];  /* 0 .. 252 */
                ^~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:82:5: error: ‘timeout_t’ does not name a type
     timeout_t get_xfer_timeout();
     ^~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:89,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:51,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/generic-utcb.h:96:8: error: ‘timeout_t’ does not name a type
 INLINE timeout_t utcb_t::get_xfer_timeout()
        ^~~~~~~~~
In file included from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:53:13: error: conflicting declaration ‘typedef int prio_t’
 typedef int prio_t;
             ^~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/x32/ktcb.h:39,
                 from /home/tyson/Orion/kernel/src/glue/v4-x86/ktcb.h:16,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:50,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:28:14: note: previous declaration as ‘typedef u8_t prio_t’
 typedef u8_t prio_t;
              ^~~~~~
In file included from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘tcb_t* tcb_t::get_partner_tcb()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:425:31: error: ‘class space_t’ has no member named ‘get_tcb’; did you mean ‘add_tcb’?
     return this->get_space()->get_tcb(partner);
                               ^~~~~~~
                               add_tcb
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::clear_notify_bits()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:570:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits = 0;
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::add_notify_bits(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:578:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits |= bits;
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::sub_notify_bits(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:586:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits &= ~(bits);
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘word_t tcb_t::get_notify_bits()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:594:24: error: ‘class utcb_t’ has no member named ‘notify_bits’
     return get_utcb()->notify_bits;
                        ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘word_t tcb_t::get_notify_mask()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:602:24: error: ‘class utcb_t’ has no member named ‘notify_mask’; did you mean ‘word_size_mask’?
     return get_utcb()->notify_mask;
                        ^~~~~~~~~~~
                        word_size_mask
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::set_notify_mask(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:611:17: error: ‘class utcb_t’ has no member named ‘notify_mask’; did you mean ‘word_size_mask’?
     get_utcb()->notify_mask = mask;
                 ^~~~~~~~~~~
                 word_size_mask
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:20,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h: At global scope:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:53:1: error: ‘SYS_IPC’ does not name a type
 SYS_IPC (threadid_t to_tid, threadid_t from_tid);
 ^~~~~~~
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:73:1: error: ‘SYS_THREAD_CONTROL’ does not name a type
 SYS_THREAD_CONTROL (threadid_t dest_tid, threadid_t space_tid,
 ^~~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:88:1: error: ‘SYS_EXCHANGE_REGISTERS’ does not name a type
 SYS_EXCHANGE_REGISTERS (threadid_t dest_tid, word_t control,
 ^~~~~~~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:124:1: error: ‘SYS_SPACE_CONTROL’ does not name a type
 SYS_SPACE_CONTROL (threadid_t space_tid, word_t control, fpage_t kip_area,
 ^~~~~~~~~~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:21,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h: In member function ‘void* thread_resources_t::copy_area_address(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:27:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT (n < COPY_AREA_COUNT);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h: In member function ‘void* thread_resources_t::copy_area_real_address(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:42:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT (n < COPY_AREA_COUNT);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h: In member function ‘word_t thread_resources_t::copy_area_pdir_idx(word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:63:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT (n < COPY_AREA_COUNT);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h: In member function ‘void thread_resources_t::enable_copy_area(tcb_t*, void**, tcb_t*, void**)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:113:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT (n <= COPY_AREA_COUNT);
     ^~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:22,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h: In member function ‘void tcb_t::copy_mrs(tcb_t*, word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:58:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT(start + count <= IPC_NUM_MR);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:73:31: error: ‘class utcb_t’ has no member named ‘mr’
  "c"(count), "S"(&get_utcb()->mr[start]),
                               ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:74:25: error: ‘class utcb_t’ has no member named ‘mr’
  "D"(&dest->get_utcb()->mr[start]));
                         ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h: At global scope:
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:534:13: error: no declaration matches ‘void tcb_t::arch_init_root_server(space_t*, word_t, word_t)’
 INLINE void tcb_t::arch_init_root_server (space_t * space, word_t ip, word_t sp)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:534:13: note: no functions named ‘void tcb_t::arch_init_root_server(space_t*, word_t, word_t)’
In file included from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_cpu(cpuid_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:58:2: error: ‘ASSERT’ was not declared in this scope
  ASSERT(this->pdir_cache);
  ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:65:11: error: ‘class tcb_t’ has no member named ‘cpu’
     this->cpu = cpu;
           ^~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_utcb_location(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:5: error: ‘myself_local’ was not declared in this scope
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
     ^~~~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:5: note: suggested alternative: ‘myself_global’
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
     ^~~~~~~~~~~~
     myself_global
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:60: error: ‘class utcb_t’ has no member named ‘mr’
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
                                                            ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘word_t tcb_t::get_utcb_location()’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:12: error: ‘myself_local’ was not declared in this scope
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
            ^~~~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:12: note: suggested alternative: ‘myself_global’
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
            ^~~~~~~~~~~~
            myself_global
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:54: error: ‘class utcb_t’ has no member named ‘mr’
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
                                                      ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘word_t tcb_t::get_mr(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:94:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT(index < IPC_NUM_MR);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:95:24: error: ‘class utcb_t’ has no member named ‘mr’
     return get_utcb()->mr[index];
                        ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_mr(word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:105:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT(index < IPC_NUM_MR);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:106:17: error: ‘class utcb_t’ has no member named ‘mr’
     get_utcb()->mr[index] = value;
                 ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: At global scope:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:115:15: error: no declaration matches ‘word_t tcb_t::get_br(word_t)’
 INLINE word_t tcb_t::get_br(word_t index)
               ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:115:15: note: no functions named ‘word_t tcb_t::get_br(word_t)’
In file included from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:126:13: error: no declaration matches ‘void tcb_t::set_br(word_t, word_t)’
 INLINE void tcb_t::set_br(word_t index, word_t value)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:126:13: note: no functions named ‘void tcb_t::set_br(word_t, word_t)’
In file included from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:209:13: error: no declaration matches ‘void tcb_t::adjust_for_copy_area(tcb_t*, void**, void**)’
 INLINE void tcb_t::adjust_for_copy_area (tcb_t * dst,
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:209:13: note: no functions named ‘void tcb_t::adjust_for_copy_area(tcb_t*, void**, void**)’
In file included from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:219:13: error: no declaration matches ‘void tcb_t::release_copy_area()’
 INLINE void tcb_t::release_copy_area (void)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:219:13: note: no functions named ‘void tcb_t::release_copy_area()’
In file included from /home/tyson/Orion/kernel/ubd/_1568031479_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
/home/tyson/Orion/kernel/ubd/_1568031479_123.c: In function ‘void make_offsets()’:
/home/tyson/Orion/kernel/ubd/_1568031479_123.c:51:51: error: ‘class tcb_t’ has no member named ‘sched_state’; did you mean ‘saved_state’?
    O(OFS_TCB_SCHED_STATE_SCHEDULER,offsetof(tcb_t,sched_state.scheduler));
                                                   ^~~~~~~~~~~
/home/tyson/Orion/kernel/ubd/_1568031479_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ubd/_1568031479_123.c:51:36: note: in expansion of macro ‘offsetof’
    O(OFS_TCB_SCHED_STATE_SCHEDULER,offsetof(tcb_t,sched_state.scheduler));
                                    ^~~~~~~~
/home/tyson/Orion/kernel/ubd/_1568031479_123.c:54:34: error: ‘class utcb_t’ has no member named ‘br’
    O(OFS_UTCB_BR,offsetof(utcb_t,br));
                                  ^~
/home/tyson/Orion/kernel/ubd/_1568031479_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ubd/_1568031479_123.c:54:18: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_BR,offsetof(utcb_t,br));
                  ^~~~~~~~
/home/tyson/Orion/kernel/ubd/_1568031479_123.c:64:44: error: ‘class utcb_t’ has no member named ‘xfer_timeout’
    O(OFS_UTCB_XFER_TIMEOUT,offsetof(utcb_t,xfer_timeout));
                                            ^~~~~~~~~~~~
/home/tyson/Orion/kernel/ubd/_1568031479_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ubd/_1568031479_123.c:64:28: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_XFER_TIMEOUT,offsetof(utcb_t,xfer_timeout));
                            ^~~~~~~~
/home/tyson/Orion/kernel/ubd/_1568031479_123.c:69:34: error: ‘class utcb_t’ has no member named ‘mr’
    O(OFS_UTCB_MR,offsetof(utcb_t,mr));
                                  ^~
/home/tyson/Orion/kernel/ubd/_1568031479_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ubd/_1568031479_123.c:69:18: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_MR,offsetof(utcb_t,mr));
                  ^~~~~~~~
make[1]: *** No rule to make target '/home/tyson/Orion/kernel/ubd/include/tcb_layout.h', needed by 'tcb_layout.h'. Stop.
make[1]: Leaving directory '/home/tyson/Orion/kernel/ubd'
make: *** [Makefile:38: all] Error 2
tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ubd$ 
vmlemon commented 5 years ago

Moved over the remaining ia32 files, into their own directory, for comparison...

vmlemon commented 5 years ago

64-bit support is different, again:

tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ubd$ make
make[1]: Entering directory '/home/tyson/Orion/kernel/ubd'
===> Building dependencies
===> Generating include/tcb_layout.h
In file included from /home/tyson/Orion/kernel/src/api/v4/space.h:37,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:42,
                 from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h:199:37: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT(cpu < CONFIG_SMP_MAX_CPUS);
                                     ^
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h:247:29: error: macro "ASSERT" requires 2 arguments, but only 1 given
  ASSERT (is_copy_area (addr));
                             ^
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h:292:36: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT (data.thread_count !=  0);
                                    ^
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h:309:37: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT(cpu < CONFIG_SMP_MAX_CPUS);
                                     ^
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:20,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:53:48: error: macro "SYS_IPC" requires 3 arguments, but only 2 given
 SYS_IPC (threadid_t to_tid, threadid_t from_tid);
                                                ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:76:59: error: macro "SYS_THREAD_CONTROL" passed 7 arguments, but takes just 5
       threadid_t recv_redirector_tid, word_t utcb_location);
                                                           ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:90:40: error: macro "SYS_EXCHANGE_REGISTERS" requires 8 arguments, but only 7 given
    word_t uhandle, threadid_t pager_tid);
                                        ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:125:23: error: macro "SYS_SPACE_CONTROL" requires 5 arguments, but only 4 given
      fpage_t utcb_area);
                       ^
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:21,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:27:32: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT (n < COPY_AREA_COUNT);
                                ^
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:42:32: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT (n < COPY_AREA_COUNT);
                                ^
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:48:32: error: macro "ASSERT" requires 2 arguments, but only 1 given
  ASSERT (pdir_idx[n][i] != ~0UL);
                                ^
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:63:32: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT (n < COPY_AREA_COUNT);
                                ^
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:64:32: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT (p < COPY_AREA_PDIRS);
                                ^
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:113:33: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT (n <= COPY_AREA_COUNT);
                                 ^
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:22,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:52:39: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT(start + count <= IPC_NUM_MR);
                                       ^
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:53:21: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT(count > 0);
                     ^
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:58:25: error: macro "ASSERT" requires 2 arguments, but only 1 given
  ASSERT(this->pdir_cache);
                         ^
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:94:30: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT(index < IPC_NUM_MR);
                              ^
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:105:30: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT(index < IPC_NUM_MR);
                              ^
In file included from /home/tyson/Orion/kernel/src/api/v4/space.h:37,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:42,
                 from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h: In member function ‘x86_space_t::top_pdir_t* space_t::get_top_pdir(cpuid_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h:199:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT(cpu < CONFIG_SMP_MAX_CPUS);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h: In member function ‘word_t space_t::get_copy_limit(addr_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h:247:2: error: ‘ASSERT’ was not declared in this scope
  ASSERT (is_copy_area (addr));
  ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h: In member function ‘bool space_t::remove_tcb(tcb_t*, cpuid_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h:292:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT (data.thread_count !=  0);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h: In member function ‘pgent_t* space_t::pgent(word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/space.h:309:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT(cpu < CONFIG_SMP_MAX_CPUS);
     ^~~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:51,
                 from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h: At global scope:
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:49:16: error: ‘IPC_NUM_BR’ was not declared in this scope
     word_t  br[IPC_NUM_BR];  /* -196 .. -64 */
                ^~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:59:5: error: ‘timeout_t’ does not name a type
     timeout_t  xfer_timeout;  /* -32  */
     ^~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:64:16: error: ‘IPC_NUM_MR’ was not declared in this scope
     word_t  mr[IPC_NUM_MR];  /* 0 .. 252 */
                ^~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:82:5: error: ‘timeout_t’ does not name a type
     timeout_t get_xfer_timeout();
     ^~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:89,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:51,
                 from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/generic-utcb.h:96:8: error: ‘timeout_t’ does not name a type
 INLINE timeout_t utcb_t::get_xfer_timeout()
        ^~~~~~~~~
In file included from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘tcb_t* tcb_t::get_partner_tcb()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:425:31: error: ‘class space_t’ has no member named ‘get_tcb’; did you mean ‘add_tcb’?
     return this->get_space()->get_tcb(partner);
                               ^~~~~~~
                               add_tcb
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::clear_notify_bits()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:570:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits = 0;
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::add_notify_bits(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:578:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits |= bits;
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::sub_notify_bits(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:586:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits &= ~(bits);
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘word_t tcb_t::get_notify_bits()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:594:24: error: ‘class utcb_t’ has no member named ‘notify_bits’
     return get_utcb()->notify_bits;
                        ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘word_t tcb_t::get_notify_mask()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:602:24: error: ‘class utcb_t’ has no member named ‘notify_mask’; did you mean ‘word_size_mask’?
     return get_utcb()->notify_mask;
                        ^~~~~~~~~~~
                        word_size_mask
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::set_notify_mask(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:611:17: error: ‘class utcb_t’ has no member named ‘notify_mask’; did you mean ‘word_size_mask’?
     get_utcb()->notify_mask = mask;
                 ^~~~~~~~~~~
                 word_size_mask
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:20,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h: At global scope:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:53:1: error: ‘SYS_IPC’ does not name a type
 SYS_IPC (threadid_t to_tid, threadid_t from_tid);
 ^~~~~~~
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:73:1: error: ‘SYS_THREAD_CONTROL’ does not name a type
 SYS_THREAD_CONTROL (threadid_t dest_tid, threadid_t space_tid,
 ^~~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:88:1: error: ‘SYS_EXCHANGE_REGISTERS’ does not name a type
 SYS_EXCHANGE_REGISTERS (threadid_t dest_tid, word_t control,
 ^~~~~~~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:124:1: error: ‘SYS_SPACE_CONTROL’ does not name a type
 SYS_SPACE_CONTROL (threadid_t space_tid, word_t control, fpage_t kip_area,
 ^~~~~~~~~~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:21,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h: In member function ‘void* thread_resources_t::copy_area_address(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:27:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT (n < COPY_AREA_COUNT);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h: In member function ‘void* thread_resources_t::copy_area_real_address(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:42:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT (n < COPY_AREA_COUNT);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h: In member function ‘word_t thread_resources_t::copy_area_pdir_idx(word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:63:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT (n < COPY_AREA_COUNT);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h: In member function ‘void thread_resources_t::enable_copy_area(tcb_t*, void**, tcb_t*, void**)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/resource_functions.h:113:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT (n <= COPY_AREA_COUNT);
     ^~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:22,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h: In member function ‘void tcb_t::copy_mrs(tcb_t*, word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:52:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT(start + count <= IPC_NUM_MR);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:64:31: error: ‘class utcb_t’ has no member named ‘mr’
  "c"(count), "S"(&get_utcb()->mr[start]),
                               ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:65:25: error: ‘class utcb_t’ has no member named ‘mr’
  "D"(&dest->get_utcb()->mr[start]));
                         ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h: At global scope:
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:364:13: error: no declaration matches ‘void tcb_t::arch_init_root_server(space_t*, word_t, word_t)’
 INLINE void tcb_t::arch_init_root_server (space_t * space, word_t ip, word_t sp)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:364:13: note: no functions named ‘void tcb_t::arch_init_root_server(space_t*, word_t, word_t)’
In file included from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_cpu(cpuid_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:58:2: error: ‘ASSERT’ was not declared in this scope
  ASSERT(this->pdir_cache);
  ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:65:11: error: ‘class tcb_t’ has no member named ‘cpu’
     this->cpu = cpu;
           ^~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_utcb_location(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:5: error: ‘myself_local’ was not declared in this scope
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
     ^~~~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:5: note: suggested alternative: ‘myself_global’
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
     ^~~~~~~~~~~~
     myself_global
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:60: error: ‘class utcb_t’ has no member named ‘mr’
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
                                                            ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘word_t tcb_t::get_utcb_location()’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:12: error: ‘myself_local’ was not declared in this scope
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
            ^~~~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:12: note: suggested alternative: ‘myself_global’
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
            ^~~~~~~~~~~~
            myself_global
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:54: error: ‘class utcb_t’ has no member named ‘mr’
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
                                                      ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘word_t tcb_t::get_mr(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:94:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT(index < IPC_NUM_MR);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:95:24: error: ‘class utcb_t’ has no member named ‘mr’
     return get_utcb()->mr[index];
                        ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_mr(word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:105:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT(index < IPC_NUM_MR);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:106:17: error: ‘class utcb_t’ has no member named ‘mr’
     get_utcb()->mr[index] = value;
                 ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: At global scope:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:115:15: error: no declaration matches ‘word_t tcb_t::get_br(word_t)’
 INLINE word_t tcb_t::get_br(word_t index)
               ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:115:15: note: no functions named ‘word_t tcb_t::get_br(word_t)’
In file included from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:126:13: error: no declaration matches ‘void tcb_t::set_br(word_t, word_t)’
 INLINE void tcb_t::set_br(word_t index, word_t value)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:126:13: note: no functions named ‘void tcb_t::set_br(word_t, word_t)’
In file included from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:209:13: error: no declaration matches ‘void tcb_t::adjust_for_copy_area(tcb_t*, void**, void**)’
 INLINE void tcb_t::adjust_for_copy_area (tcb_t * dst,
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:209:13: note: no functions named ‘void tcb_t::adjust_for_copy_area(tcb_t*, void**, void**)’
In file included from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:219:13: error: no declaration matches ‘void tcb_t::release_copy_area()’
 INLINE void tcb_t::release_copy_area (void)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:219:13: note: no functions named ‘void tcb_t::release_copy_area()’
In file included from /home/tyson/Orion/kernel/ubd/_1568032413_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
/home/tyson/Orion/kernel/ubd/_1568032413_123.c: In function ‘void make_offsets()’:
/home/tyson/Orion/kernel/ubd/_1568032413_123.c:51:51: error: ‘class tcb_t’ has no member named ‘sched_state’; did you mean ‘saved_state’?
    O(OFS_TCB_SCHED_STATE_SCHEDULER,offsetof(tcb_t,sched_state.scheduler));
                                                   ^~~~~~~~~~~
/home/tyson/Orion/kernel/ubd/_1568032413_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ubd/_1568032413_123.c:51:36: note: in expansion of macro ‘offsetof’
    O(OFS_TCB_SCHED_STATE_SCHEDULER,offsetof(tcb_t,sched_state.scheduler));
                                    ^~~~~~~~
/home/tyson/Orion/kernel/ubd/_1568032413_123.c:54:34: error: ‘class utcb_t’ has no member named ‘br’
    O(OFS_UTCB_BR,offsetof(utcb_t,br));
                                  ^~
/home/tyson/Orion/kernel/ubd/_1568032413_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ubd/_1568032413_123.c:54:18: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_BR,offsetof(utcb_t,br));
                  ^~~~~~~~
/home/tyson/Orion/kernel/ubd/_1568032413_123.c:64:44: error: ‘class utcb_t’ has no member named ‘xfer_timeout’
    O(OFS_UTCB_XFER_TIMEOUT,offsetof(utcb_t,xfer_timeout));
                                            ^~~~~~~~~~~~
/home/tyson/Orion/kernel/ubd/_1568032413_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ubd/_1568032413_123.c:64:28: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_XFER_TIMEOUT,offsetof(utcb_t,xfer_timeout));
                            ^~~~~~~~
/home/tyson/Orion/kernel/ubd/_1568032413_123.c:69:34: error: ‘class utcb_t’ has no member named ‘mr’
    O(OFS_UTCB_MR,offsetof(utcb_t,mr));
                                  ^~
/home/tyson/Orion/kernel/ubd/_1568032413_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ubd/_1568032413_123.c:69:18: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_MR,offsetof(utcb_t,mr));
                  ^~~~~~~~
===> src/arch/x86/x64/init32.cc
cd src/arch/x86/x64/ &&  gcc  -nostdinc -I/home/tyson/Orion/kernel/ubd/include -I/home/tyson/Orion/kernel/src -I/home/tyson/Orion/kernel/src/generic -I/usr/lib/gcc/x86_64-linux-gnu/8/include/ -Ux64 -Ux86 -Up4 -Upc99 -Uv4 -Urr -D__SUBARCH__=x64 -D__ARCH__=x86 -D__CPU__=p4 -D__PLATFORM__=pc99 -D__API__=v4 -D__SCHED__=rr -imacros /home/tyson/Orion/kernel/ubd/config/config.h -imacros /home/tyson/Orion/kernel/src/generic/macros.h -include /home/tyson/Orion/kernel/src/generic/config.h  -include /home/tyson/Orion/kernel/src/generic/types.h -DX64_32BIT_CODE   -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2  -m32   -mno-red-zone -fno-pie  -fno-stack-protector -lssp  -mno-mmx -mno-sse -mno-sse2 -mno-sse3    -Wconversion -x c++ -c /home/tyson/Orion/kernel/src/arch/x86/x64/init32.cc -o init32.o
In file included from /home/tyson/Orion/kernel/src/arch/x86/x64/init32.cc:40:
/home/tyson/Orion/kernel/src/arch/x86/mmu.h: In static member function ‘static void x86_mmu_t::enable_long_mode()’:
/home/tyson/Orion/kernel/src/arch/x86/mmu.h:170:28: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘word_t’ {aka ‘unsigned int’} may change value [-Wconversion]
     word_t efer = x86_rdmsr(X86_MSR_EFER);
                   ~~~~~~~~~^~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/arch/x86/mmu.h: In static member function ‘static bool x86_mmu_t::long_mode_active()’:
/home/tyson/Orion/kernel/src/arch/x86/mmu.h:182:28: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘word_t’ {aka ‘unsigned int’} may change value [-Wconversion]
     word_t efer = x86_rdmsr(X86_MSR_EFER);
                   ~~~~~~~~~^~~~~~~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/arch/x86/segdesc.h:20,
                 from /home/tyson/Orion/kernel/src/arch/x86/x64/init32.cc:41:
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h: In member function ‘void x86_segdesc_t::set_seg(u64_t, x86_segdesc_t::segtype_e, int, x86_segdesc_t::mode_e, x86_segdesc_t::msr_e)’:
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:80:17: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:4’ may change value [-Wconversion]
      x.d.type = type;
                 ^~~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:81:17: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
      x.d.l    = mode;
                 ^~~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:82:17: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:2’ may change value [-Wconversion]
      x.d.dpl  = dpl;
                 ^~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h: In member function ‘void x86_segdesc_t::set_seg(u32_t, x86_segdesc_t::segtype_e, int, x86_segdesc_t::mode_e)’:
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:99:36: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char’ may change value [-Wconversion]
      x.d.base_high  = (base >> 24) & 0xFF;
                       ~~~~~~~~~~~~~^~~~~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:101:17: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:4’ may change value [-Wconversion]
      x.d.type = type;
                 ^~~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:102:17: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
      x.d.l    = mode;
                 ^~~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:103:16: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:2’ may change value [-Wconversion]
      x.d.dpl = dpl;
                ^~~
cd src/arch/x86/x64/ && objcopy -g -O elf64-x86-64  init32.o init32.o
===> src/arch/x86/x64/cpu.cc
cd src/arch/x86/x64/ &&  gcc  -nostdinc -I/home/tyson/Orion/kernel/ubd/include -I/home/tyson/Orion/kernel/src -I/home/tyson/Orion/kernel/src/generic -I/usr/lib/gcc/x86_64-linux-gnu/8/include/ -Ux64 -Ux86 -Up4 -Upc99 -Uv4 -Urr -D__SUBARCH__=x64 -D__ARCH__=x86 -D__CPU__=p4 -D__PLATFORM__=pc99 -D__API__=v4 -D__SCHED__=rr -imacros /home/tyson/Orion/kernel/ubd/config/config.h -imacros /home/tyson/Orion/kernel/src/generic/macros.h -include /home/tyson/Orion/kernel/src/generic/config.h  -include /home/tyson/Orion/kernel/src/generic/types.h -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2 -m64 -mcmodel=kernel -mno-red-zone -fno-pie  -fno-stack-protector -lssp  -mno-mmx -mno-sse -mno-sse2 -mno-sse3    -Wconversion  -c /home/tyson/Orion/kernel/src/arch/x86/x64/cpu.cc
/home/tyson/Orion/kernel/src/arch/x86/x64/cpu.cc: In constructor ‘x86_x64_cpu_features_t::x86_x64_cpu_features_t()’:
/home/tyson/Orion/kernel/src/arch/x86/x64/cpu.cc:66:25: warning: conversion from ‘u32_t’ {aka ‘unsigned int’} to ‘u8_t’ {aka ‘unsigned char’} may change value [-Wconversion]
  apic_id = ((ebx >> 24) & 0xFF);
            ~~~~~~~~~~~~~^~~~~~~
make[1]: *** No rule to make target '/home/tyson/Orion/kernel/ubd/include/tcb_layout.h', needed by 'tcb_layout.h'. Stop.
make[1]: Leaving directory '/home/tyson/Orion/kernel/ubd'
make: *** [Makefile:38: all] Error 2
tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ubd$ 
vmlemon commented 5 years ago

Current status is - much of the userland builds OK for x86-64, at the moment, but building the kernel on the latest master bails for x86-32, with:

tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ubd$ make
make[1]: Entering directory '/home/tyson/Orion/kernel/ubd'
===> Building dependencies
===> Generating include/tcb_layout.h
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/x32/ktcb.h:39,
                 from /home/tyson/Orion/kernel/src/glue/v4-x86/ktcb.h:16,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:50,
                 from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:64:29: error: macro "ASSERT" requires 2 arguments, but only 1 given
   ASSERT(quantum.is_period());
                             ^
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:103:34: error: macro "ASSERT" requires 2 arguments, but only 1 given
      ASSERT(timeslice.is_period());
                                  ^
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:104:17: error: macro "ASSERT" requires 2 arguments, but only 1 given
      ASSERT(this);
                 ^
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:20,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:53:48: error: macro "SYS_IPC" requires 3 arguments, but only 2 given
 SYS_IPC (threadid_t to_tid, threadid_t from_tid);
                                                ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:76:59: error: macro "SYS_THREAD_CONTROL" passed 7 arguments, but takes just 5
       threadid_t recv_redirector_tid, word_t utcb_location);
                                                           ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:90:40: error: macro "SYS_EXCHANGE_REGISTERS" requires 8 arguments, but only 7 given
    word_t uhandle, threadid_t pager_tid);
                                        ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:125:23: error: macro "SYS_SPACE_CONTROL" requires 5 arguments, but only 4 given
      fpage_t utcb_area);
                       ^
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:22,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:58:39: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT(start + count <= IPC_NUM_MR);
                                       ^
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:59:21: error: macro "ASSERT" requires 2 arguments, but only 1 given
     ASSERT(count > 0);
                     ^
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/x32/ktcb.h:39,
                 from /home/tyson/Orion/kernel/src/glue/v4-x86/ktcb.h:16,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:50,
                 from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:57:29: error: ‘time_t’ has not been declared
     void init_total_quantum(time_t quantum)
                             ^~~~~~
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:101:25: error: ‘time_t’ has not been declared
     void init_timeslice(time_t timeslice)
                         ^~~~~~
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h: In member function ‘void rr_sched_ktcb_t::init_total_quantum(int)’:
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:59:18: error: request for member ‘is_never’ in ‘quantum’, which is of non-class type ‘int’
      if (quantum.is_never())
                  ^~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:64:3: error: ‘ASSERT’ was not declared in this scope
   ASSERT(quantum.is_period());
   ^~~~~~
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:65:27: error: request for member ‘get_microseconds’ in ‘quantum’, which is of non-class type ‘int’
   total_quantum = quantum.get_microseconds();
                           ^~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h: In member function ‘void rr_sched_ktcb_t::init_timeslice(int)’:
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:103:6: error: ‘ASSERT’ was not declared in this scope
      ASSERT(timeslice.is_period());
      ^~~~~~
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:105:55: error: request for member ‘get_microseconds’ in ‘timeslice’, which is of non-class type ‘int’
      current_timeslice = timeslice_length = timeslice.get_microseconds();
                                                       ^~~~~~~~~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/ktcb.h:16,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:50,
                 from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/ktcb.h: At global scope:
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/ktcb.h:57:9: error: ‘bitmask_t’ is not a template
 typedef bitmask_t<u32_t> ctrlxfer_mask_t;
         ^~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:51,
                 from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:49:16: error: ‘IPC_NUM_BR’ was not declared in this scope
     word_t  br[IPC_NUM_BR];  /* -196 .. -64 */
                ^~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:59:5: error: ‘timeout_t’ does not name a type
     timeout_t  xfer_timeout;  /* -32  */
     ^~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:64:16: error: ‘IPC_NUM_MR’ was not declared in this scope
     word_t  mr[IPC_NUM_MR];  /* 0 .. 252 */
                ^~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:82:5: error: ‘timeout_t’ does not name a type
     timeout_t get_xfer_timeout();
     ^~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:89,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:51,
                 from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/generic-utcb.h:96:8: error: ‘timeout_t’ does not name a type
 INLINE timeout_t utcb_t::get_xfer_timeout()
        ^~~~~~~~~
In file included from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:53:13: error: conflicting declaration ‘typedef int prio_t’
 typedef int prio_t;
             ^~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/x32/ktcb.h:39,
                 from /home/tyson/Orion/kernel/src/glue/v4-x86/ktcb.h:16,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:50,
                 from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:28:14: note: previous declaration as ‘typedef u8_t prio_t’
 typedef u8_t prio_t;
              ^~~~~~
In file included from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘tcb_t* tcb_t::get_partner_tcb()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:425:31: error: ‘class space_t’ has no member named ‘get_tcb’; did you mean ‘add_tcb’?
     return this->get_space()->get_tcb(partner);
                               ^~~~~~~
                               add_tcb
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::clear_notify_bits()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:570:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits = 0;
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::add_notify_bits(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:578:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits |= bits;
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::sub_notify_bits(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:586:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits &= ~(bits);
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘word_t tcb_t::get_notify_bits()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:594:24: error: ‘class utcb_t’ has no member named ‘notify_bits’
     return get_utcb()->notify_bits;
                        ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘word_t tcb_t::get_notify_mask()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:602:24: error: ‘class utcb_t’ has no member named ‘notify_mask’; did you mean ‘word_size_mask’?
     return get_utcb()->notify_mask;
                        ^~~~~~~~~~~
                        word_size_mask
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::set_notify_mask(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:611:17: error: ‘class utcb_t’ has no member named ‘notify_mask’; did you mean ‘word_size_mask’?
     get_utcb()->notify_mask = mask;
                 ^~~~~~~~~~~
                 word_size_mask
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:20,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h: At global scope:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:53:1: error: ‘SYS_IPC’ does not name a type
 SYS_IPC (threadid_t to_tid, threadid_t from_tid);
 ^~~~~~~
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:73:1: error: ‘SYS_THREAD_CONTROL’ does not name a type
 SYS_THREAD_CONTROL (threadid_t dest_tid, threadid_t space_tid,
 ^~~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:88:1: error: ‘SYS_EXCHANGE_REGISTERS’ does not name a type
 SYS_EXCHANGE_REGISTERS (threadid_t dest_tid, word_t control,
 ^~~~~~~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:124:1: error: ‘SYS_SPACE_CONTROL’ does not name a type
 SYS_SPACE_CONTROL (threadid_t space_tid, word_t control, fpage_t kip_area,
 ^~~~~~~~~~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:22,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h: In member function ‘void tcb_t::copy_mrs(tcb_t*, word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:58:5: error: ‘ASSERT’ was not declared in this scope
     ASSERT(start + count <= IPC_NUM_MR);
     ^~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:73:31: error: ‘class utcb_t’ has no member named ‘mr’
  "c"(count), "S"(&get_utcb()->mr[start]),
                               ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:74:25: error: ‘class utcb_t’ has no member named ‘mr’
  "D"(&dest->get_utcb()->mr[start]));
                         ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h: At global scope:
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:534:13: error: no declaration matches ‘void tcb_t::arch_init_root_server(space_t*, word_t, word_t)’
 INLINE void tcb_t::arch_init_root_server (space_t * space, word_t ip, word_t sp)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:534:13: note: no functions named ‘void tcb_t::arch_init_root_server(space_t*, word_t, word_t)’
In file included from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_cpu(cpuid_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:65:11: error: ‘class tcb_t’ has no member named ‘cpu’
     this->cpu = cpu;
           ^~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_utcb_location(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:5: error: ‘myself_local’ was not declared in this scope
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
     ^~~~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:5: note: suggested alternative: ‘myself_global’
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
     ^~~~~~~~~~~~
     myself_global
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:60: error: ‘class utcb_t’ has no member named ‘mr’
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
                                                            ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘word_t tcb_t::get_utcb_location()’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:12: error: ‘myself_local’ was not declared in this scope
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
            ^~~~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:12: note: suggested alternative: ‘myself_global’
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
            ^~~~~~~~~~~~
            myself_global
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:54: error: ‘class utcb_t’ has no member named ‘mr’
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
                                                      ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘word_t tcb_t::get_mr(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:95:24: error: ‘class utcb_t’ has no member named ‘mr’
     return get_utcb()->mr[index];
                        ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_mr(word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:106:17: error: ‘class utcb_t’ has no member named ‘mr’
     get_utcb()->mr[index] = value;
                 ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: At global scope:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:115:15: error: no declaration matches ‘word_t tcb_t::get_br(word_t)’
 INLINE word_t tcb_t::get_br(word_t index)
               ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:115:15: note: no functions named ‘word_t tcb_t::get_br(word_t)’
In file included from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:126:13: error: no declaration matches ‘void tcb_t::set_br(word_t, word_t)’
 INLINE void tcb_t::set_br(word_t index, word_t value)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:126:13: note: no functions named ‘void tcb_t::set_br(word_t, word_t)’
In file included from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:209:13: error: no declaration matches ‘void tcb_t::adjust_for_copy_area(tcb_t*, void**, void**)’
 INLINE void tcb_t::adjust_for_copy_area (tcb_t * dst,
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:209:13: note: no functions named ‘void tcb_t::adjust_for_copy_area(tcb_t*, void**, void**)’
In file included from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:219:13: error: no declaration matches ‘void tcb_t::release_copy_area()’
 INLINE void tcb_t::release_copy_area (void)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:219:13: note: no functions named ‘void tcb_t::release_copy_area()’
In file included from /home/tyson/Orion/kernel/ubd/_1568056610_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
/home/tyson/Orion/kernel/ubd/_1568056610_123.c: In function ‘void make_offsets()’:
/home/tyson/Orion/kernel/ubd/_1568056610_123.c:51:51: error: ‘class tcb_t’ has no member named ‘sched_state’; did you mean ‘saved_state’?
    O(OFS_TCB_SCHED_STATE_SCHEDULER,offsetof(tcb_t,sched_state.scheduler));
                                                   ^~~~~~~~~~~
/home/tyson/Orion/kernel/ubd/_1568056610_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ubd/_1568056610_123.c:51:36: note: in expansion of macro ‘offsetof’
    O(OFS_TCB_SCHED_STATE_SCHEDULER,offsetof(tcb_t,sched_state.scheduler));
                                    ^~~~~~~~
/home/tyson/Orion/kernel/ubd/_1568056610_123.c:54:34: error: ‘class utcb_t’ has no member named ‘br’
    O(OFS_UTCB_BR,offsetof(utcb_t,br));
                                  ^~
/home/tyson/Orion/kernel/ubd/_1568056610_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ubd/_1568056610_123.c:54:18: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_BR,offsetof(utcb_t,br));
                  ^~~~~~~~
/home/tyson/Orion/kernel/ubd/_1568056610_123.c:64:44: error: ‘class utcb_t’ has no member named ‘xfer_timeout’
    O(OFS_UTCB_XFER_TIMEOUT,offsetof(utcb_t,xfer_timeout));
                                            ^~~~~~~~~~~~
/home/tyson/Orion/kernel/ubd/_1568056610_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ubd/_1568056610_123.c:64:28: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_XFER_TIMEOUT,offsetof(utcb_t,xfer_timeout));
                            ^~~~~~~~
/home/tyson/Orion/kernel/ubd/_1568056610_123.c:69:34: error: ‘class utcb_t’ has no member named ‘mr’
    O(OFS_UTCB_MR,offsetof(utcb_t,mr));
                                  ^~
/home/tyson/Orion/kernel/ubd/_1568056610_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ubd/_1568056610_123.c:69:18: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_MR,offsetof(utcb_t,mr));
                  ^~~~~~~~
make[1]: *** No rule to make target '/home/tyson/Orion/kernel/ubd/include/tcb_layout.h', needed by 'tcb_layout.h'. Stop.
make[1]: Leaving directory '/home/tyson/Orion/kernel/ubd'
make: *** [Makefile:38: all] Error 2
tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ubd$ 
vmlemon commented 5 years ago

The 32-bit port currently does this:

make[1]: Entering directory '/home/tyson/Orion/kernel/ibd'
===> Building dependencies
===> Generating include/tcb_layout.h
In file included from <command-line>:
/home/tyson/Orion/kernel/src/generic/macros.h:55:33: fatal error: arch/x86/traceids.h: No such file or directory
 #define INC_ARCH(x)             <arch/__ARCH__/x>
                                 ^
compilation terminated.
make[1]: *** No rule to make target '/home/tyson/Orion/kernel/ibd/include/tcb_layout.h', needed by 'tcb_layout.h'. Stop.
make[1]: Leaving directory '/home/tyson/Orion/kernel/ibd'
make: *** [Makefile:38: all] Error 2

Seems like a regression.

vmlemon commented 5 years ago

64-bit one:

tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ibd$ make
make[1]: Entering directory '/home/tyson/Orion/kernel/ibd'
===> Building dependencies
===> Generating include/tcb_layout.h
In file included from <command-line>:
/home/tyson/Orion/kernel/src/generic/macros.h:55:33: fatal error: arch/x86/traceids.h: No such file or directory
 #define INC_ARCH(x)             <arch/__ARCH__/x>
                                 ^
compilation terminated.
make[1]: *** No rule to make target '/home/tyson/Orion/kernel/ibd/include/tcb_layout.h', needed by 'tcb_layout.h'. Stop.
make[1]: Leaving directory '/home/tyson/Orion/kernel/ibd'
make: *** [Makefile:38: all] Error 2
tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ibd$ make menuconfig
make[1]: Entering directory '/home/tyson/Orion/kernel/ibd'
make[2]: Entering directory '/home/tyson/Orion/kernel/ibd/config'
Rewriting Makeconf.local ...
make[2]: Leaving directory '/home/tyson/Orion/kernel/ibd/config'
make[1]: Leaving directory '/home/tyson/Orion/kernel/ibd'
tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ibd$ make
make[1]: Entering directory '/home/tyson/Orion/kernel/ibd'
===> Generating include/tcb_layout.h
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:20,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ibd/_1568079795_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:53:48: error: macro "SYS_IPC" requires 3 arguments, but only 2 given
 SYS_IPC (threadid_t to_tid, threadid_t from_tid);
                                                ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:76:59: error: macro "SYS_THREAD_CONTROL" passed 7 arguments, but takes just 5
       threadid_t recv_redirector_tid, word_t utcb_location);
                                                           ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:90:40: error: macro "SYS_EXCHANGE_REGISTERS" requires 8 arguments, but only 7 given
    word_t uhandle, threadid_t pager_tid);
                                        ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:125:23: error: macro "SYS_SPACE_CONTROL" requires 5 arguments, but only 4 given
      fpage_t utcb_area);
                       ^
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:51,
                 from /home/tyson/Orion/kernel/ibd/_1568079795_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:49:16: error: ‘IPC_NUM_BR’ was not declared in this scope
     word_t  br[IPC_NUM_BR];  /* -196 .. -64 */
                ^~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:59:5: error: ‘timeout_t’ does not name a type
     timeout_t  xfer_timeout;  /* -32  */
     ^~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:64:16: error: ‘IPC_NUM_MR’ was not declared in this scope
     word_t  mr[IPC_NUM_MR];  /* 0 .. 252 */
                ^~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:82:5: error: ‘timeout_t’ does not name a type
     timeout_t get_xfer_timeout();
     ^~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:89,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:51,
                 from /home/tyson/Orion/kernel/ibd/_1568079795_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/generic-utcb.h:96:8: error: ‘timeout_t’ does not name a type
 INLINE timeout_t utcb_t::get_xfer_timeout()
        ^~~~~~~~~
In file included from /home/tyson/Orion/kernel/ibd/_1568079795_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘tcb_t* tcb_t::get_partner_tcb()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:425:31: error: ‘class space_t’ has no member named ‘get_tcb’; did you mean ‘add_tcb’?
     return this->get_space()->get_tcb(partner);
                               ^~~~~~~
                               add_tcb
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::clear_notify_bits()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:570:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits = 0;
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::add_notify_bits(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:578:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits |= bits;
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::sub_notify_bits(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:586:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits &= ~(bits);
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘word_t tcb_t::get_notify_bits()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:594:24: error: ‘class utcb_t’ has no member named ‘notify_bits’
     return get_utcb()->notify_bits;
                        ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘word_t tcb_t::get_notify_mask()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:602:24: error: ‘class utcb_t’ has no member named ‘notify_mask’; did you mean ‘word_size_mask’?
     return get_utcb()->notify_mask;
                        ^~~~~~~~~~~
                        word_size_mask
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::set_notify_mask(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:611:17: error: ‘class utcb_t’ has no member named ‘notify_mask’; did you mean ‘word_size_mask’?
     get_utcb()->notify_mask = mask;
                 ^~~~~~~~~~~
                 word_size_mask
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:20,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ibd/_1568079795_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h: At global scope:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:53:1: error: ‘SYS_IPC’ does not name a type
 SYS_IPC (threadid_t to_tid, threadid_t from_tid);
 ^~~~~~~
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:73:1: error: ‘SYS_THREAD_CONTROL’ does not name a type
 SYS_THREAD_CONTROL (threadid_t dest_tid, threadid_t space_tid,
 ^~~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:88:1: error: ‘SYS_EXCHANGE_REGISTERS’ does not name a type
 SYS_EXCHANGE_REGISTERS (threadid_t dest_tid, word_t control,
 ^~~~~~~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:124:1: error: ‘SYS_SPACE_CONTROL’ does not name a type
 SYS_SPACE_CONTROL (threadid_t space_tid, word_t control, fpage_t kip_area,
 ^~~~~~~~~~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:22,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ibd/_1568079795_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h: In member function ‘void tcb_t::copy_mrs(tcb_t*, word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:64:31: error: ‘class utcb_t’ has no member named ‘mr’
  "c"(count), "S"(&get_utcb()->mr[start]),
                               ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:65:25: error: ‘class utcb_t’ has no member named ‘mr’
  "D"(&dest->get_utcb()->mr[start]));
                         ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h: At global scope:
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:364:13: error: no declaration matches ‘void tcb_t::arch_init_root_server(space_t*, word_t, word_t)’
 INLINE void tcb_t::arch_init_root_server (space_t * space, word_t ip, word_t sp)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:364:13: note: no functions named ‘void tcb_t::arch_init_root_server(space_t*, word_t, word_t)’
In file included from /home/tyson/Orion/kernel/ibd/_1568079795_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ibd/_1568079795_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_cpu(cpuid_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:65:11: error: ‘class tcb_t’ has no member named ‘cpu’
     this->cpu = cpu;
           ^~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_utcb_location(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:5: error: ‘myself_local’ was not declared in this scope
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
     ^~~~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:5: note: suggested alternative: ‘myself_global’
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
     ^~~~~~~~~~~~
     myself_global
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:60: error: ‘class utcb_t’ has no member named ‘mr’
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
                                                            ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘word_t tcb_t::get_utcb_location()’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:12: error: ‘myself_local’ was not declared in this scope
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
            ^~~~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:12: note: suggested alternative: ‘myself_global’
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
            ^~~~~~~~~~~~
            myself_global
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:54: error: ‘class utcb_t’ has no member named ‘mr’
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
                                                      ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘word_t tcb_t::get_mr(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:95:24: error: ‘class utcb_t’ has no member named ‘mr’
     return get_utcb()->mr[index];
                        ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_mr(word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:106:17: error: ‘class utcb_t’ has no member named ‘mr’
     get_utcb()->mr[index] = value;
                 ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: At global scope:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:115:15: error: no declaration matches ‘word_t tcb_t::get_br(word_t)’
 INLINE word_t tcb_t::get_br(word_t index)
               ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:115:15: note: no functions named ‘word_t tcb_t::get_br(word_t)’
In file included from /home/tyson/Orion/kernel/ibd/_1568079795_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ibd/_1568079795_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:126:13: error: no declaration matches ‘void tcb_t::set_br(word_t, word_t)’
 INLINE void tcb_t::set_br(word_t index, word_t value)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:126:13: note: no functions named ‘void tcb_t::set_br(word_t, word_t)’
In file included from /home/tyson/Orion/kernel/ibd/_1568079795_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ibd/_1568079795_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:209:13: error: no declaration matches ‘void tcb_t::adjust_for_copy_area(tcb_t*, void**, void**)’
 INLINE void tcb_t::adjust_for_copy_area (tcb_t * dst,
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:209:13: note: no functions named ‘void tcb_t::adjust_for_copy_area(tcb_t*, void**, void**)’
In file included from /home/tyson/Orion/kernel/ibd/_1568079795_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ibd/_1568079795_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:219:13: error: no declaration matches ‘void tcb_t::release_copy_area()’
 INLINE void tcb_t::release_copy_area (void)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:219:13: note: no functions named ‘void tcb_t::release_copy_area()’
In file included from /home/tyson/Orion/kernel/ibd/_1568079795_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/ibd/_1568079795_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘bool tcb_t::is_local_cpu()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:739:13: error: ‘get_current_cpu’ was not declared in this scope
     return (get_current_cpu() == get_cpu());
             ^~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h:739:13: note: suggested alternative: ‘get_current_tcb’
     return (get_current_cpu() == get_cpu());
             ^~~~~~~~~~~~~~~
             get_current_tcb
/home/tyson/Orion/kernel/ibd/_1568079795_123.c: In function ‘void make_offsets()’:
/home/tyson/Orion/kernel/ibd/_1568079795_123.c:51:51: error: ‘class tcb_t’ has no member named ‘sched_state’; did you mean ‘saved_state’?
    O(OFS_TCB_SCHED_STATE_SCHEDULER,offsetof(tcb_t,sched_state.scheduler));
                                                   ^~~~~~~~~~~
/home/tyson/Orion/kernel/ibd/_1568079795_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ibd/_1568079795_123.c:51:36: note: in expansion of macro ‘offsetof’
    O(OFS_TCB_SCHED_STATE_SCHEDULER,offsetof(tcb_t,sched_state.scheduler));
                                    ^~~~~~~~
/home/tyson/Orion/kernel/ibd/_1568079795_123.c:54:34: error: ‘class utcb_t’ has no member named ‘br’
    O(OFS_UTCB_BR,offsetof(utcb_t,br));
                                  ^~
/home/tyson/Orion/kernel/ibd/_1568079795_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ibd/_1568079795_123.c:54:18: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_BR,offsetof(utcb_t,br));
                  ^~~~~~~~
/home/tyson/Orion/kernel/ibd/_1568079795_123.c:64:44: error: ‘class utcb_t’ has no member named ‘xfer_timeout’
    O(OFS_UTCB_XFER_TIMEOUT,offsetof(utcb_t,xfer_timeout));
                                            ^~~~~~~~~~~~
/home/tyson/Orion/kernel/ibd/_1568079795_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ibd/_1568079795_123.c:64:28: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_XFER_TIMEOUT,offsetof(utcb_t,xfer_timeout));
                            ^~~~~~~~
/home/tyson/Orion/kernel/ibd/_1568079795_123.c:69:34: error: ‘class utcb_t’ has no member named ‘mr’
    O(OFS_UTCB_MR,offsetof(utcb_t,mr));
                                  ^~
/home/tyson/Orion/kernel/ibd/_1568079795_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ibd/_1568079795_123.c:69:18: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_MR,offsetof(utcb_t,mr));
                  ^~~~~~~~
===> src/arch/x86/x64/init32.cc
cd src/arch/x86/x64/ &&  gcc  -nostdinc -I/home/tyson/Orion/kernel/ibd/include -I/home/tyson/Orion/kernel/src -I/home/tyson/Orion/kernel/src/generic -I/usr/lib/gcc/x86_64-linux-gnu/8/include/ -Ux64 -Ux86 -Up4 -Upc99 -Uv4 -Urr -D__SUBARCH__=x64 -D__ARCH__=x86 -D__CPU__=p4 -D__PLATFORM__=pc99 -D__API__=v4 -D__SCHED__=rr -imacros /home/tyson/Orion/kernel/ibd/config/config.h -imacros /home/tyson/Orion/kernel/src/generic/macros.h -include /home/tyson/Orion/kernel/src/generic/config.h  -include /home/tyson/Orion/kernel/src/generic/types.h -DX64_32BIT_CODE   -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2  -m32   -mno-red-zone -fno-pie  -fno-stack-protector -lssp  -mno-mmx -mno-sse -mno-sse2 -mno-sse3    -Wconversion -x c++ -c /home/tyson/Orion/kernel/src/arch/x86/x64/init32.cc -o init32.o
In file included from /home/tyson/Orion/kernel/src/arch/x86/x64/init32.cc:40:
/home/tyson/Orion/kernel/src/arch/x86/mmu.h: In static member function ‘static void x86_mmu_t::enable_long_mode()’:
/home/tyson/Orion/kernel/src/arch/x86/mmu.h:170:28: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘word_t’ {aka ‘unsigned int’} may change value [-Wconversion]
     word_t efer = x86_rdmsr(X86_MSR_EFER);
                   ~~~~~~~~~^~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/arch/x86/mmu.h: In static member function ‘static bool x86_mmu_t::long_mode_active()’:
/home/tyson/Orion/kernel/src/arch/x86/mmu.h:182:28: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘word_t’ {aka ‘unsigned int’} may change value [-Wconversion]
     word_t efer = x86_rdmsr(X86_MSR_EFER);
                   ~~~~~~~~~^~~~~~~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/arch/x86/segdesc.h:20,
                 from /home/tyson/Orion/kernel/src/arch/x86/x64/init32.cc:41:
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h: In member function ‘void x86_segdesc_t::set_seg(u64_t, x86_segdesc_t::segtype_e, int, x86_segdesc_t::mode_e, x86_segdesc_t::msr_e)’:
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:80:17: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:4’ may change value [-Wconversion]
      x.d.type = type;
                 ^~~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:81:17: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
      x.d.l    = mode;
                 ^~~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:82:17: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:2’ may change value [-Wconversion]
      x.d.dpl  = dpl;
                 ^~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h: In member function ‘void x86_segdesc_t::set_seg(u32_t, x86_segdesc_t::segtype_e, int, x86_segdesc_t::mode_e)’:
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:99:36: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char’ may change value [-Wconversion]
      x.d.base_high  = (base >> 24) & 0xFF;
                       ~~~~~~~~~~~~~^~~~~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:101:17: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:4’ may change value [-Wconversion]
      x.d.type = type;
                 ^~~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:102:17: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
      x.d.l    = mode;
                 ^~~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:103:16: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:2’ may change value [-Wconversion]
      x.d.dpl = dpl;
                ^~~
cd src/arch/x86/x64/ && objcopy -g -O elf64-x86-64  init32.o init32.o
===> src/arch/x86/x64/cpu.cc
cd src/arch/x86/x64/ &&  gcc  -nostdinc -I/home/tyson/Orion/kernel/ibd/include -I/home/tyson/Orion/kernel/src -I/home/tyson/Orion/kernel/src/generic -I/usr/lib/gcc/x86_64-linux-gnu/8/include/ -Ux64 -Ux86 -Up4 -Upc99 -Uv4 -Urr -D__SUBARCH__=x64 -D__ARCH__=x86 -D__CPU__=p4 -D__PLATFORM__=pc99 -D__API__=v4 -D__SCHED__=rr -imacros /home/tyson/Orion/kernel/ibd/config/config.h -imacros /home/tyson/Orion/kernel/src/generic/macros.h -include /home/tyson/Orion/kernel/src/generic/config.h  -include /home/tyson/Orion/kernel/src/generic/types.h -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2 -m64 -mcmodel=kernel -mno-red-zone -fno-pie  -fno-stack-protector -lssp  -mno-mmx -mno-sse -mno-sse2 -mno-sse3    -Wconversion  -c /home/tyson/Orion/kernel/src/arch/x86/x64/cpu.cc
/home/tyson/Orion/kernel/src/arch/x86/x64/cpu.cc: In constructor ‘x86_x64_cpu_features_t::x86_x64_cpu_features_t()’:
/home/tyson/Orion/kernel/src/arch/x86/x64/cpu.cc:66:25: warning: conversion from ‘u32_t’ {aka ‘unsigned int’} to ‘u8_t’ {aka ‘unsigned char’} may change value [-Wconversion]
  apic_id = ((ebx >> 24) & 0xFF);
            ~~~~~~~~~~~~~^~~~~~~
===> src/glue/v4-x86/x64/space.cc
cd src/glue/v4-x86/x64/ &&  gcc  -nostdinc -I/home/tyson/Orion/kernel/ibd/include -I/home/tyson/Orion/kernel/src -I/home/tyson/Orion/kernel/src/generic -I/usr/lib/gcc/x86_64-linux-gnu/8/include/ -Ux64 -Ux86 -Up4 -Upc99 -Uv4 -Urr -D__SUBARCH__=x64 -D__ARCH__=x86 -D__CPU__=p4 -D__PLATFORM__=pc99 -D__API__=v4 -D__SCHED__=rr -imacros /home/tyson/Orion/kernel/ibd/config/config.h -imacros /home/tyson/Orion/kernel/src/generic/macros.h -include /home/tyson/Orion/kernel/src/generic/config.h  -include /home/tyson/Orion/kernel/src/generic/types.h -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2 -m64 -mcmodel=kernel -mno-red-zone -fno-pie  -fno-stack-protector -lssp  -mno-mmx -mno-sse -mno-sse2 -mno-sse3    -Wconversion  -c /home/tyson/Orion/kernel/src/glue/v4-x86/x64/space.cc
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:20,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/src/glue/v4-x86/x64/space.cc:38:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:53:48: error: macro "SYS_IPC" requires 3 arguments, but only 2 given
 SYS_IPC (threadid_t to_tid, threadid_t from_tid);
                                                ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:76:59: error: macro "SYS_THREAD_CONTROL" passed 7 arguments, but takes just 5
       threadid_t recv_redirector_tid, word_t utcb_location);
                                                           ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:90:40: error: macro "SYS_EXCHANGE_REGISTERS" requires 8 arguments, but only 7 given
    word_t uhandle, threadid_t pager_tid);
                                        ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:125:23: error: macro "SYS_SPACE_CONTROL" requires 5 arguments, but only 4 given
      fpage_t utcb_area);
                       ^
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:22,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/src/glue/v4-x86/x64/space.cc:38:
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:81:10: fatal error: tcb_layout.h: No such file or directory
 #include <tcb_layout.h>
          ^~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [/home/tyson/Orion/kernel/Mk/Makeconf:208: src/glue/v4-x86/x64/space.o] Error 1
make[1]: Leaving directory '/home/tyson/Orion/kernel/ibd'
make: *** [Makefile:38: all] Error 2
tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ibd$ 
vmlemon commented 5 years ago

Unsure if it's a happy accident, or a glitch, but with GCC-6, on x86-64, I could seemingly build most of userland:

tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/user$ make
make[1]: Entering directory '/home/tyson/Orion/user/lib'
make[2]: Entering directory '/home/tyson/Orion/user/lib/l4'
===> Making dependencies in .
===> debug.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c debug.cc -o debug.o
===> amd64.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c amd64.cc -o amd64.o
===> Linking ./libl4.a
ar cru libl4.a  debug.o amd64.o  
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib libl4.a
cp libl4.a ../../lib/libl4.a
make[2]: Leaving directory '/home/tyson/Orion/user/lib/l4'
make[2]: Entering directory '/home/tyson/Orion/user/lib/io'
===> Making dependencies in .
===> get_hex.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c get_hex.cc -o get_hex.o
===> print.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c print.cc -o print.o
print.cc: In function ‘int __l4_vsnprintf(char*, L4_Size_t, const char*, __va_list_tag*)’:
print.cc:111:25: warning: variable ‘uval2’ set but not used [-Wunused-but-set-variable]
     unsigned long uval, uval2;
                         ^~~~~
In file included from print.cc:35:0:
lib.h: At global scope:
lib.h:112:1: warning: ‘char* strchr(const char*, int)’ defined but not used [-Wunused-function]
 strchr(const char *p, int ch)
 ^~~~~~
lib.h:93:1: warning: ‘char* strstr(const char*, const char*)’ defined but not used [-Wunused-function]
 strstr(const char *s, const char *find)
 ^~~~~~
lib.h:67:1: warning: ‘int strcmp(const char*, const char*)’ defined but not used [-Wunused-function]
 strcmp(const char *s1, const char *s2)
 ^~~~~~
lib.h:44:13: warning: ‘void strcpy(char*, const char*)’ defined but not used [-Wunused-function]
 static void strcpy( char *dst, const char *src )
             ^~~~~~
===> amd64.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c amd64.cc -o amd64.o
===> Linking ./libio.a
ar cru libio.a  get_hex.o print.o amd64.o  
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib libio.a
cp libio.a ../../lib/libio.a
make[2]: Leaving directory '/home/tyson/Orion/user/lib/io'
make[1]: Leaving directory '/home/tyson/Orion/user/lib'
make[1]: Entering directory '/home/tyson/Orion/user/serv'
make[2]: Entering directory '/home/tyson/Orion/user/serv/sigma0'
===> Making dependencies in .
===> crt0-amd64.S
gcc-6 -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -c crt0-amd64.S -o crt0-amd64.o
===> sigma0_io.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c sigma0_io.cc -o sigma0_io.o
===> sigma0.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c sigma0.cc -o sigma0.o
===> sigma0_mem.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c sigma0_mem.cc -o sigma0_mem.o
===> region.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c region.cc -o region.o
===> Linking ./sigma0
ld -e_start -N -L../../lib -L/usr/lib/gcc/x86_64-linux-gnu/6 -nostdlib  -melf_x86_64  -Ttext=00f00000 crt0-amd64.o sigma0_io.o sigma0.o sigma0_mem.o region.o    -ll4 -lio -lgcc -o sigma0
make[2]: Leaving directory '/home/tyson/Orion/user/serv/sigma0'
make[1]: Leaving directory '/home/tyson/Orion/user/serv'
make[1]: Entering directory '/home/tyson/Orion/user/apps'
make[2]: Entering directory '/home/tyson/Orion/user/apps/bench'
make[3]: Entering directory '/home/tyson/Orion/user/apps/bench/pingpong'
===> Making dependencies in .
===> crt0-amd64.S
gcc-6 -I../../../include -I../../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -c crt0-amd64.S -o crt0-amd64.o
===> pingpong.cc
gcc-6 -x c++ -I../../../include -I../../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c pingpong.cc -o pingpong.o
pingpong.cc: In function ‘void ping_thread()’:
pingpong.cc:218:19: warning: variable ‘pong_ltid’ set but not used [-Wunused-but-set-variable]
     L4_ThreadId_t pong_ltid = L4_LocalId (pong_tid);
                   ^~~~~~~~~
pingpong.cc: In function ‘int main()’:
pingpong.cc:416:21: warning: variable ‘q’ set but not used [-Wunused-but-set-variable]
  volatile L4_Word_t q;
                     ^
pingpong.cc:452:54: warning: variable ‘result’ set but not used [-Wunused-but-set-variable]
  L4_Word_t sched_control = 0, old_sched_control = 0, result = 0;
                                                      ^~~~~~
In file included from ../../../include/l4/kip.h:36:0,
                 from pingpong.cc:34:
../../../include/l4/amd64/syscalls.h: In function ‘L4_Clock_t L4_SystemClock()’:
../../../include/l4/amd64/syscalls.h:197:19: warning: ‘ret.L4_Clock_t::raw’ is used uninitialized in this function [-Wuninitialized]
  [dest]  "0" (ret.raw)  /* %1 RAX */
               ~~~~^~~
../../../include/l4/amd64/syscalls.h: In function ‘void ping_thread()’:
../../../include/l4/amd64/syscalls.h:201:3: warning: ‘ret.L4_Clock_t::raw’ is used uninitialized in this function [-Wuninitialized]
  );
   ^
../../../include/l4/amd64/syscalls.h:187:16: note: ‘ret.L4_Clock_t::raw’ was declared here
     L4_Clock_t ret;
                ^~~
../../../include/l4/amd64/syscalls.h:201:3: warning: ‘ret.L4_Clock_t::raw’ is used uninitialized in this function [-Wuninitialized]
  );
   ^
../../../include/l4/amd64/syscalls.h:187:16: note: ‘ret.L4_Clock_t::raw’ was declared here
     L4_Clock_t ret;
                ^~~
gcc-6 -I../../../include -I../../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include    -m32 -fno-exceptions  -fno-stack-protector -lssp  -fno-stack-protector -lssp -x c++ -c pingpong-amd64-32.cc -o pingpong-amd64-32.o
objcopy -g -O elf64-x86-64 pingpong-amd64-32.o pingpong-amd64-32.o
===> Linking ./pingpong
ld -e_start -N -L../../../lib -L/usr/lib/gcc/x86_64-linux-gnu/6 -nostdlib  -melf_x86_64  -Ttext=01000000  -fno-stack-protector -lssp crt0-amd64.o pingpong.o pingpong-amd64-32.o    -ll4 -lio -lgcc -o pingpong
ld: -f may not be used without -shared
make[3]: *** [../../../Mk/l4.prog.mk:54: pingpong] Error 1
make[3]: Leaving directory '/home/tyson/Orion/user/apps/bench/pingpong'
make[2]: *** [../../Mk/l4.subdir.mk:41: subdirs-all] Error 2
make[2]: Leaving directory '/home/tyson/Orion/user/apps/bench'
make[1]: *** [../Mk/l4.subdir.mk:41: subdirs-all] Error 2
make[1]: Leaving directory '/home/tyson/Orion/user/apps'
make: *** [Mk/l4.subdir.mk:41: subdirs-all] Error 2
tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/user$ git add ~/Orion/
tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/user$ git commit -am "Rebuild userland"
[master 282f28a] Rebuild userland
 1 file changed, 10 insertions(+), 10 deletions(-)
 rewrite user/lib/l4/.depend (78%)
tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/user$ 
vmlemon commented 5 years ago

With liblinux, but no malloc:

tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/user$ make
make[1]: Entering directory '/home/tyson/Orion/user/lib'
make[2]: Entering directory '/home/tyson/Orion/user/lib/l4'
===> Making dependencies in .
===> debug.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c debug.cc -o debug.o
===> amd64.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c amd64.cc -o amd64.o
===> Linking ./libl4.a
ar cru libl4.a  debug.o amd64.o  
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib libl4.a
cp libl4.a ../../lib/libl4.a
make[2]: Leaving directory '/home/tyson/Orion/user/lib/l4'
make[2]: Entering directory '/home/tyson/Orion/user/lib/io'
===> Making dependencies in .
===> get_hex.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c get_hex.cc -o get_hex.o
===> print.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c print.cc -o print.o
print.cc: In function ‘int __l4_vsnprintf(char*, L4_Size_t, const char*, __va_list_tag*)’:
print.cc:111:25: warning: variable ‘uval2’ set but not used [-Wunused-but-set-variable]
     unsigned long uval, uval2;
                         ^~~~~
In file included from print.cc:35:0:
lib.h: At global scope:
lib.h:112:1: warning: ‘char* strchr(const char*, int)’ defined but not used [-Wunused-function]
 strchr(const char *p, int ch)
 ^~~~~~
lib.h:93:1: warning: ‘char* strstr(const char*, const char*)’ defined but not used [-Wunused-function]
 strstr(const char *s, const char *find)
 ^~~~~~
lib.h:67:1: warning: ‘int strcmp(const char*, const char*)’ defined but not used [-Wunused-function]
 strcmp(const char *s1, const char *s2)
 ^~~~~~
lib.h:44:13: warning: ‘void strcpy(char*, const char*)’ defined but not used [-Wunused-function]
 static void strcpy( char *dst, const char *src )
             ^~~~~~
===> amd64.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c amd64.cc -o amd64.o
===> Linking ./libio.a
ar cru libio.a  get_hex.o print.o amd64.o  
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib libio.a
cp libio.a ../../lib/libio.a
make[2]: Leaving directory '/home/tyson/Orion/user/lib/io'
make[2]: Entering directory '/home/tyson/Orion/user/lib/linux'
===> Linking ./liblinux.a
ar cru liblinux.a    
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib liblinux.a
cp liblinux.a ../../lib/liblinux.a
make[2]: Leaving directory '/home/tyson/Orion/user/lib/linux'
make[1]: Leaving directory '/home/tyson/Orion/user/lib'
make[1]: Entering directory '/home/tyson/Orion/user/serv'
make[2]: Entering directory '/home/tyson/Orion/user/serv/sigma0'
===> Making dependencies in .
===> crt0-amd64.S
gcc-6 -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -c crt0-amd64.S -o crt0-amd64.o
===> sigma0_io.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c sigma0_io.cc -o sigma0_io.o
===> sigma0.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c sigma0.cc -o sigma0.o
===> sigma0_mem.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c sigma0_mem.cc -o sigma0_mem.o
===> region.cc
gcc-6 -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c region.cc -o region.o
===> Linking ./sigma0
ld -e_start -N -L../../lib -L/usr/lib/gcc/x86_64-linux-gnu/6 -nostdlib  -melf_x86_64  -Ttext=00f00000 crt0-amd64.o sigma0_io.o sigma0.o sigma0_mem.o region.o    -ll4 -lio -lgcc -o sigma0
make[2]: Leaving directory '/home/tyson/Orion/user/serv/sigma0'
make[1]: Leaving directory '/home/tyson/Orion/user/serv'
make[1]: Entering directory '/home/tyson/Orion/user/apps'
make[2]: Entering directory '/home/tyson/Orion/user/apps/bench'
make[3]: Entering directory '/home/tyson/Orion/user/apps/bench/pingpong'
===> Making dependencies in .
===> crt0-amd64.S
gcc-6 -I../../../include -I../../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -c crt0-amd64.S -o crt0-amd64.o
===> pingpong.cc
gcc-6 -x c++ -I../../../include -I../../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c pingpong.cc -o pingpong.o
pingpong.cc: In function ‘void ping_thread()’:
pingpong.cc:218:19: warning: variable ‘pong_ltid’ set but not used [-Wunused-but-set-variable]
     L4_ThreadId_t pong_ltid = L4_LocalId (pong_tid);
                   ^~~~~~~~~
pingpong.cc: In function ‘int main()’:
pingpong.cc:416:21: warning: variable ‘q’ set but not used [-Wunused-but-set-variable]
  volatile L4_Word_t q;
                     ^
pingpong.cc:452:54: warning: variable ‘result’ set but not used [-Wunused-but-set-variable]
  L4_Word_t sched_control = 0, old_sched_control = 0, result = 0;
                                                      ^~~~~~
In file included from ../../../include/l4/kip.h:36:0,
                 from pingpong.cc:34:
../../../include/l4/amd64/syscalls.h: In function ‘L4_Clock_t L4_SystemClock()’:
../../../include/l4/amd64/syscalls.h:197:19: warning: ‘ret.L4_Clock_t::raw’ is used uninitialized in this function [-Wuninitialized]
  [dest]  "0" (ret.raw)  /* %1 RAX */
               ~~~~^~~
../../../include/l4/amd64/syscalls.h: In function ‘void ping_thread()’:
../../../include/l4/amd64/syscalls.h:201:3: warning: ‘ret.L4_Clock_t::raw’ is used uninitialized in this function [-Wuninitialized]
  );
   ^
../../../include/l4/amd64/syscalls.h:187:16: note: ‘ret.L4_Clock_t::raw’ was declared here
     L4_Clock_t ret;
                ^~~
../../../include/l4/amd64/syscalls.h:201:3: warning: ‘ret.L4_Clock_t::raw’ is used uninitialized in this function [-Wuninitialized]
  );
   ^
../../../include/l4/amd64/syscalls.h:187:16: note: ‘ret.L4_Clock_t::raw’ was declared here
     L4_Clock_t ret;
                ^~~
gcc-6 -I../../../include -I../../.. -I/usr/lib/gcc/x86_64-linux-gnu/6/include    -m32 -fno-exceptions  -fno-stack-protector -lssp  -fno-stack-protector -lssp -x c++ -c pingpong-amd64-32.cc -o pingpong-amd64-32.o
objcopy -g -O elf64-x86-64 pingpong-amd64-32.o pingpong-amd64-32.o
===> Linking ./pingpong
ld -e_start -N -L../../../lib -L/usr/lib/gcc/x86_64-linux-gnu/6 -nostdlib  -melf_x86_64  -Ttext=01000000  -fno-stack-protector -lssp crt0-amd64.o pingpong.o pingpong-amd64-32.o    -ll4 -lio -lgcc -o pingpong
ld: -f may not be used without -shared
make[3]: *** [../../../Mk/l4.prog.mk:54: pingpong] Error 1
make[3]: Leaving directory '/home/tyson/Orion/user/apps/bench/pingpong'
make[2]: *** [../../Mk/l4.subdir.mk:41: subdirs-all] Error 2
make[2]: Leaving directory '/home/tyson/Orion/user/apps/bench'
make[1]: *** [../Mk/l4.subdir.mk:41: subdirs-all] Error 2
make[1]: Leaving directory '/home/tyson/Orion/user/apps'
make: *** [Mk/l4.subdir.mk:41: subdirs-all] Error 2
tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/user$ 
vmlemon commented 5 years ago

As a side-effect of other work, quite a lot of the x86-64 stuff seems to build, at the moment, and as part of #22, I moved over some of the NICTA x86 stuff, for later examination.

vmlemon commented 5 years ago

Some problem, right now, with the x86-32 build:

tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ubd$ make
make[1]: Entering directory '/home/tyson/Orion/kernel/ubd'
===> Building dependencies
===> Generating include/tcb_layout.h
In file included from <command-line>:
/home/tyson/Orion/kernel/src/generic/macros.h:55:33: fatal error: arch/x86/traceids.h: No such file or directory
 #define INC_ARCH(x)             <arch/__ARCH__/x>
                                 ^
compilation terminated.
make[1]: *** No rule to make target '/home/tyson/Orion/kernel/ubd/include/tcb_layout.h', needed by 'tcb_layout.h'. Stop.
make[1]: Leaving directory '/home/tyson/Orion/kernel/ubd'
make: *** [Makefile:38: all] Error 2
vmlemon commented 5 years ago

After moving the NICTA version of traceids.h, we get to:

tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ubd$ cat B1e 
/home/tyson/Orion/kernel/src/arch/x86/pgent.h:87:19: error: macro "ASSERT" requires 2 arguments, but only 1 given
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:64:29: error: macro "ASSERT" requires 2 arguments, but only 1 given
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:103:34: error: macro "ASSERT" requires 2 arguments, but only 1 given
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:104:17: error: macro "ASSERT" requires 2 arguments, but only 1 given
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:76:59: error: macro "SYS_THREAD_CONTROL" passed 7 arguments, but takes just 5
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:90:40: error: macro "SYS_EXCHANGE_REGISTERS" requires 8 arguments, but only 7 given
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:125:23: error: macro "SYS_SPACE_CONTROL" requires 5 arguments, but only 4 given
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:58:39: error: macro "ASSERT" requires 2 arguments, but only 1 given
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:59:21: error: macro "ASSERT" requires 2 arguments, but only 1 given
/home/tyson/Orion/kernel/src/arch/x86/pgent.h:87:6: error: ‘ASSERT’ was not declared in this scope
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:64:3: error: ‘ASSERT’ was not declared in this scope
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:103:6: error: ‘ASSERT’ was not declared in this scope
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/ktcb.h:57:9: error: ‘bitmask_t’ is not a template
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:49:16: error: ‘IPC_NUM_BR’ was not declared in this scope
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:64:16: error: ‘IPC_NUM_MR’ was not declared in this scope
/home/tyson/Orion/kernel/src/api/v4/tcb.h:53:13: error: conflicting declaration ‘typedef int prio_t’
/home/tyson/Orion/kernel/src/api/v4/tcb.h:425:31: error: ‘class space_t’ has no member named ‘get_tcb’; did you mean ‘add_tcb’?
/home/tyson/Orion/kernel/src/api/v4/tcb.h:570:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
/home/tyson/Orion/kernel/src/api/v4/tcb.h:578:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
/home/tyson/Orion/kernel/src/api/v4/tcb.h:586:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
/home/tyson/Orion/kernel/src/api/v4/tcb.h:594:24: error: ‘class utcb_t’ has no member named ‘notify_bits’
/home/tyson/Orion/kernel/src/api/v4/tcb.h:602:24: error: ‘class utcb_t’ has no member named ‘notify_mask’; did you mean ‘word_size_mask’?
/home/tyson/Orion/kernel/src/api/v4/tcb.h:611:17: error: ‘class utcb_t’ has no member named ‘notify_mask’; did you mean ‘word_size_mask’?
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:73:1: error: ‘SYS_THREAD_CONTROL’ does not name a type
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:88:1: error: ‘SYS_EXCHANGE_REGISTERS’ does not name a type
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:124:1: error: ‘SYS_SPACE_CONTROL’ does not name a type
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:58:5: error: ‘ASSERT’ was not declared in this scope
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:73:31: error: ‘class utcb_t’ has no member named ‘mr’
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:74:25: error: ‘class utcb_t’ has no member named ‘mr’
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:534:13: error: no declaration matches ‘void tcb_t::arch_init_root_server(space_t*, word_t, word_t)’
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:5: error: ‘myself_local’ was not declared in this scope
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:60: error: ‘class utcb_t’ has no member named ‘mr’
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:12: error: ‘myself_local’ was not declared in this scope
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:54: error: ‘class utcb_t’ has no member named ‘mr’
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:95:24: error: ‘class utcb_t’ has no member named ‘mr’
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:106:17: error: ‘class utcb_t’ has no member named ‘mr’
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:115:15: error: no declaration matches ‘word_t tcb_t::get_br(word_t)’
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:126:13: error: no declaration matches ‘void tcb_t::set_br(word_t, word_t)’
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:209:13: error: no declaration matches ‘void tcb_t::adjust_for_copy_area(tcb_t*, void**, void**)’
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:219:13: error: no declaration matches ‘void tcb_t::release_copy_area()’
/home/tyson/Orion/kernel/src/api/v4/tcb.h:739:13: error: ‘get_current_cpu’ was not declared in this scope
/home/tyson/Orion/kernel/ubd/_1569794966_123.c:55:51: error: ‘class tcb_t’ has no member named ‘sched_state’; did you mean ‘saved_state’?
/home/tyson/Orion/kernel/ubd/_1569794966_123.c:58:34: error: ‘class utcb_t’ has no member named ‘br’
/home/tyson/Orion/kernel/ubd/_1569794966_123.c:73:34: error: ‘class utcb_t’ has no member named ‘mr’
vmlemon commented 5 years ago

State of x86-64 build:

tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ubd$ cat B2e 
/home/tyson/Orion/kernel/src/arch/x86/pgent.h:87:19: error: macro "ASSERT" requires 2 arguments, but only 1 given
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:64:29: error: macro "ASSERT" requires 2 arguments, but only 1 given
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:103:34: error: macro "ASSERT" requires 2 arguments, but only 1 given
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:104:17: error: macro "ASSERT" requires 2 arguments, but only 1 given
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:76:59: error: macro "SYS_THREAD_CONTROL" passed 7 arguments, but takes just 5
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:90:40: error: macro "SYS_EXCHANGE_REGISTERS" requires 8 arguments, but only 7 given
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:125:23: error: macro "SYS_SPACE_CONTROL" requires 5 arguments, but only 4 given
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:58:39: error: macro "ASSERT" requires 2 arguments, but only 1 given
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:59:21: error: macro "ASSERT" requires 2 arguments, but only 1 given
/home/tyson/Orion/kernel/src/arch/x86/pgent.h:87:6: error: ‘ASSERT’ was not declared in this scope
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:64:3: error: ‘ASSERT’ was not declared in this scope
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:103:6: error: ‘ASSERT’ was not declared in this scope
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/ktcb.h:57:9: error: ‘bitmask_t’ is not a template
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:49:16: error: ‘IPC_NUM_BR’ was not declared in this scope
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:64:16: error: ‘IPC_NUM_MR’ was not declared in this scope
/home/tyson/Orion/kernel/src/api/v4/tcb.h:53:13: error: conflicting declaration ‘typedef int prio_t’
/home/tyson/Orion/kernel/src/api/v4/tcb.h:425:31: error: ‘class space_t’ has no member named ‘get_tcb’; did you mean ‘add_tcb’?
/home/tyson/Orion/kernel/src/api/v4/tcb.h:570:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
/home/tyson/Orion/kernel/src/api/v4/tcb.h:578:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
/home/tyson/Orion/kernel/src/api/v4/tcb.h:586:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
/home/tyson/Orion/kernel/src/api/v4/tcb.h:594:24: error: ‘class utcb_t’ has no member named ‘notify_bits’
/home/tyson/Orion/kernel/src/api/v4/tcb.h:602:24: error: ‘class utcb_t’ has no member named ‘notify_mask’; did you mean ‘word_size_mask’?
/home/tyson/Orion/kernel/src/api/v4/tcb.h:611:17: error: ‘class utcb_t’ has no member named ‘notify_mask’; did you mean ‘word_size_mask’?
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:73:1: error: ‘SYS_THREAD_CONTROL’ does not name a type
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:88:1: error: ‘SYS_EXCHANGE_REGISTERS’ does not name a type
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:124:1: error: ‘SYS_SPACE_CONTROL’ does not name a type
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:58:5: error: ‘ASSERT’ was not declared in this scope
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:73:31: error: ‘class utcb_t’ has no member named ‘mr’
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:74:25: error: ‘class utcb_t’ has no member named ‘mr’
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:534:13: error: no declaration matches ‘void tcb_t::arch_init_root_server(space_t*, word_t, word_t)’
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:5: error: ‘myself_local’ was not declared in this scope
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:60: error: ‘class utcb_t’ has no member named ‘mr’
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:12: error: ‘myself_local’ was not declared in this scope
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:54: error: ‘class utcb_t’ has no member named ‘mr’
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:95:24: error: ‘class utcb_t’ has no member named ‘mr’
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:106:17: error: ‘class utcb_t’ has no member named ‘mr’
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:115:15: error: no declaration matches ‘word_t tcb_t::get_br(word_t)’
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:126:13: error: no declaration matches ‘void tcb_t::set_br(word_t, word_t)’
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:209:13: error: no declaration matches ‘void tcb_t::adjust_for_copy_area(tcb_t*, void**, void**)’
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:219:13: error: no declaration matches ‘void tcb_t::release_copy_area()’
/home/tyson/Orion/kernel/src/api/v4/tcb.h:739:13: error: ‘get_current_cpu’ was not declared in this scope
/home/tyson/Orion/kernel/ubd/_1569794966_123.c:55:51: error: ‘class tcb_t’ has no member named ‘sched_state’; did you mean ‘saved_state’?
/home/tyson/Orion/kernel/ubd/_1569794966_123.c:58:34: error: ‘class utcb_t’ has no member named ‘br’
/home/tyson/Orion/kernel/ubd/_1569794966_123.c:73:34: error: ‘class utcb_t’ has no member named ‘mr’
tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ubd$ 
vmlemon commented 5 years ago

With a little force, I was able to build the userland, for x86-64, mostly.

vmlemon commented 5 years ago
tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/user/apps/system$ make 
===> Making dependencies in .
===> crt0-amd64.S
gcc -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/8/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -c crt0-amd64.S -o crt0-amd64.o
===> syslaunch.cc
gcc -x c++ -I../../include -I../.. -I/usr/lib/gcc/x86_64-linux-gnu/8/include   -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wconversion -fno-exceptions -c syslaunch.cc -o syslaunch.o
In file included from syslaunch.h:7,
                 from syslaunch.cc:1:
../../include/l4io.h:46:6: warning: declaration of ‘void putc(int)’ conflicts with built-in declaration ‘int putc(int, void*)’ [-Wbuiltin-declaration-mismatch]
 void putc(int c);
      ^~~~
syslaunch.cc: In function ‘int main()’:
syslaunch.cc:98:12: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘L4_Word64_t’ {aka ‘long unsigned int’} [-Wformat=]
     printf("The clock says: %d\n", L4_SystemClock().raw);
            ^~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~~~~~
In file included from ../../include/l4/kip.h:36,
                 from ../../include/l4/sigma0.h:36,
                 from syslaunch.h:8,
                 from syslaunch.cc:1:
../../include/l4/amd64/syscalls.h: In function ‘L4_Clock_t L4_SystemClock()’:
../../include/l4/amd64/syscalls.h:197:19: warning: ‘ret.L4_Clock_t::raw’ is used uninitialized in this function [-Wuninitialized]
  [dest]  "0" (ret.raw)  /* %1 RAX */
               ~~~~^~~
../../include/l4/amd64/syscalls.h: In function ‘int main()’:
../../include/l4/amd64/syscalls.h:201:3: warning: ‘ret.L4_Clock_t::raw’ is used uninitialized in this function [-Wuninitialized]
  );
   ^
../../include/l4/amd64/syscalls.h:187:16: note: ‘ret.L4_Clock_t::raw’ was declared here
     L4_Clock_t ret;
                ^~~
===> Linking ./syslaunch
ld -e_start -N -L../../lib -L/usr/lib/gcc/x86_64-linux-gnu/8 -nostdlib  -melf_x86_64  -Ttext=01000000 crt0-amd64.o syslaunch.o    -ll4 -lio  -llinux  -lgcc -o syslaunch
tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/user/apps/system$ 
vmlemon commented 5 years ago

Fixed the ASSERT API calls, so now we get to :

tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ib2$ make
make[1]: Entering directory '/home/tyson/Orion/kernel/ib2'
===> Building dependencies
===> Generating include/tcb_layout.h
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:20,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:76:59: error: macro "SYS_THREAD_CONTROL" passed 7 arguments, but takes just 5
       threadid_t recv_redirector_tid, word_t utcb_location);
                                                           ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:90:40: error: macro "SYS_EXCHANGE_REGISTERS" requires 8 arguments, but only 7 given
    word_t uhandle, threadid_t pager_tid);
                                        ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:125:23: error: macro "SYS_SPACE_CONTROL" requires 5 arguments, but only 4 given
      fpage_t utcb_area);
                       ^
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/ktcb.h:16,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:50,
                 from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/ktcb.h:57:9: error: ‘bitmask_t’ is not a template
 typedef bitmask_t<u32_t> ctrlxfer_mask_t;
         ^~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:51,
                 from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:49:16: error: ‘IPC_NUM_BR’ was not declared in this scope
     word_t  br[IPC_NUM_BR];  /* -196 .. -64 */
                ^~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:64:16: error: ‘IPC_NUM_MR’ was not declared in this scope
     word_t  mr[IPC_NUM_MR];  /* 0 .. 252 */
                ^~~~~~~~~~
In file included from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:53:13: error: conflicting declaration ‘typedef int prio_t’
 typedef int prio_t;
             ^~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/x32/ktcb.h:39,
                 from /home/tyson/Orion/kernel/src/glue/v4-x86/ktcb.h:16,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:50,
                 from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/sched-rr/ktcb.h:28:14: note: previous declaration as ‘typedef u8_t prio_t’
 typedef u8_t prio_t;
              ^~~~~~
In file included from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘tcb_t* tcb_t::get_partner_tcb()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:425:31: error: ‘class space_t’ has no member named ‘get_tcb’; did you mean ‘add_tcb’?
     return this->get_space()->get_tcb(partner);
                               ^~~~~~~
                               add_tcb
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::clear_notify_bits()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:570:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits = 0;
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::add_notify_bits(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:578:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits |= bits;
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::sub_notify_bits(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:586:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits &= ~(bits);
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘word_t tcb_t::get_notify_bits()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:594:24: error: ‘class utcb_t’ has no member named ‘notify_bits’
     return get_utcb()->notify_bits;
                        ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘word_t tcb_t::get_notify_mask()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:602:24: error: ‘class utcb_t’ has no member named ‘notify_mask’; did you mean ‘word_size_mask’?
     return get_utcb()->notify_mask;
                        ^~~~~~~~~~~
                        word_size_mask
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::set_notify_mask(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:611:17: error: ‘class utcb_t’ has no member named ‘notify_mask’; did you mean ‘word_size_mask’?
     get_utcb()->notify_mask = mask;
                 ^~~~~~~~~~~
                 word_size_mask
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:20,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h: At global scope:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:73:1: error: ‘SYS_THREAD_CONTROL’ does not name a type
 SYS_THREAD_CONTROL (threadid_t dest_tid, threadid_t space_tid,
 ^~~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:88:1: error: ‘SYS_EXCHANGE_REGISTERS’ does not name a type
 SYS_EXCHANGE_REGISTERS (threadid_t dest_tid, word_t control,
 ^~~~~~~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:124:1: error: ‘SYS_SPACE_CONTROL’ does not name a type
 SYS_SPACE_CONTROL (threadid_t space_tid, word_t control, fpage_t kip_area,
 ^~~~~~~~~~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:22,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h: In member function ‘void tcb_t::copy_mrs(tcb_t*, word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:73:31: error: ‘class utcb_t’ has no member named ‘mr’
  "c"(count), "S"(&get_utcb()->mr[start]),
                               ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:74:25: error: ‘class utcb_t’ has no member named ‘mr’
  "D"(&dest->get_utcb()->mr[start]));
                         ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h: At global scope:
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:534:13: error: no declaration matches ‘void tcb_t::arch_init_root_server(space_t*, word_t, word_t)’
 INLINE void tcb_t::arch_init_root_server (space_t * space, word_t ip, word_t sp)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/x32/tcb.h:534:13: note: no functions named ‘void tcb_t::arch_init_root_server(space_t*, word_t, word_t)’
In file included from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_cpu(cpuid_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:65:11: error: ‘class tcb_t’ has no member named ‘cpu’
     this->cpu = cpu;
           ^~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_utcb_location(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:5: error: ‘myself_local’ was not declared in this scope
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
     ^~~~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:5: note: suggested alternative: ‘myself_global’
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
     ^~~~~~~~~~~~
     myself_global
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:60: error: ‘class utcb_t’ has no member named ‘mr’
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
                                                            ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘word_t tcb_t::get_utcb_location()’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:12: error: ‘myself_local’ was not declared in this scope
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
            ^~~~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:12: note: suggested alternative: ‘myself_global’
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
            ^~~~~~~~~~~~
            myself_global
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:54: error: ‘class utcb_t’ has no member named ‘mr’
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
                                                      ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘word_t tcb_t::get_mr(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:95:24: error: ‘class utcb_t’ has no member named ‘mr’
     return get_utcb()->mr[index];
                        ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_mr(word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:106:17: error: ‘class utcb_t’ has no member named ‘mr’
     get_utcb()->mr[index] = value;
                 ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: At global scope:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:115:15: error: no declaration matches ‘word_t tcb_t::get_br(word_t)’
 INLINE word_t tcb_t::get_br(word_t index)
               ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:115:15: note: no functions named ‘word_t tcb_t::get_br(word_t)’
In file included from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:126:13: error: no declaration matches ‘void tcb_t::set_br(word_t, word_t)’
 INLINE void tcb_t::set_br(word_t index, word_t value)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:126:13: note: no functions named ‘void tcb_t::set_br(word_t, word_t)’
In file included from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:209:13: error: no declaration matches ‘void tcb_t::adjust_for_copy_area(tcb_t*, void**, void**)’
 INLINE void tcb_t::adjust_for_copy_area (tcb_t * dst,
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:209:13: note: no functions named ‘void tcb_t::adjust_for_copy_area(tcb_t*, void**, void**)’
In file included from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:219:13: error: no declaration matches ‘void tcb_t::release_copy_area()’
 INLINE void tcb_t::release_copy_area (void)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:219:13: note: no functions named ‘void tcb_t::release_copy_area()’
In file included from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/ib2/_1570613166_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘bool tcb_t::is_local_cpu()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:739:13: error: ‘get_current_cpu’ was not declared in this scope
     return (get_current_cpu() == get_cpu());
             ^~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h:739:13: note: suggested alternative: ‘get_current_tcb’
     return (get_current_cpu() == get_cpu());
             ^~~~~~~~~~~~~~~
             get_current_tcb
/home/tyson/Orion/kernel/ib2/_1570613166_123.c: In function ‘void make_offsets()’:
/home/tyson/Orion/kernel/ib2/_1570613166_123.c:51:51: error: ‘class tcb_t’ has no member named ‘sched_state’; did you mean ‘saved_state’?
    O(OFS_TCB_SCHED_STATE_SCHEDULER,offsetof(tcb_t,sched_state.scheduler));
                                                   ^~~~~~~~~~~
/home/tyson/Orion/kernel/ib2/_1570613166_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ib2/_1570613166_123.c:51:36: note: in expansion of macro ‘offsetof’
    O(OFS_TCB_SCHED_STATE_SCHEDULER,offsetof(tcb_t,sched_state.scheduler));
                                    ^~~~~~~~
/home/tyson/Orion/kernel/ib2/_1570613166_123.c:54:34: error: ‘class utcb_t’ has no member named ‘br’
    O(OFS_UTCB_BR,offsetof(utcb_t,br));
                                  ^~
/home/tyson/Orion/kernel/ib2/_1570613166_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ib2/_1570613166_123.c:54:18: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_BR,offsetof(utcb_t,br));
                  ^~~~~~~~
/home/tyson/Orion/kernel/ib2/_1570613166_123.c:69:34: error: ‘class utcb_t’ has no member named ‘mr’
    O(OFS_UTCB_MR,offsetof(utcb_t,mr));
                                  ^~
/home/tyson/Orion/kernel/ib2/_1570613166_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ib2/_1570613166_123.c:69:18: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_MR,offsetof(utcb_t,mr));
                  ^~~~~~~~
make[1]: *** No rule to make target '/home/tyson/Orion/kernel/ib2/include/tcb_layout.h', needed by 'tcb_layout.h'. Stop.
make[1]: Leaving directory '/home/tyson/Orion/kernel/ib2'
make: *** [Makefile:38: all] Error 2
vmlemon commented 5 years ago

Since enabling support for building on FreeBSD/x86-64, and fixing more ASSERTs, we get:

3297,3335c3297,3387
< ===> src/arch/x86/x64/init32.cc
< cd src/arch/x86/x64/ &&  gcc  -nostdinc -I/root/Orion/kernel/fbuild/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/local/lib/gcc9/gcc/x86_64-portbld-freebsd12.0/9.2.0/include/ -Ux64 -Ux86 -Up4 -Upc99 -Uv4 -Urr -D__SUBARCH__=x64 -D__ARCH__=x86 -D__CPU__=p4 -D__PLATFORM__=pc99 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/fbuild/config/config.h -imacros /root/Orion/kernel/src/generic/macros.h -include /root/Orion/kernel/src/generic/config.h  -include /root/Orion/kernel/src/generic/types.h -DX64_32BIT_CODE   -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2  -m32   -mno-red-zone -fno-pie  -fno-stack-protector -lssp  -mno-mmx -mno-sse -mno-sse2 -mno-sse3    -Wconversion -x c++ -c /root/Orion/kernel/src/arch/x86/x64/init32.cc -o init32.o
< In file included from /root/Orion/kernel/src/arch/x86/x64/init32.cc:41:
< /root/Orion/kernel/src/arch/x86/mmu.h: In static member function 'static void x86_mmu_t::enable_long_mode()':
< /root/Orion/kernel/src/arch/x86/mmu.h:170:28: warning: conversion from 'u64_t' {aka 'long long unsigned int'} to 'word_t' {aka 'unsigned int'} may change value [-Wconversion]
<   170 |     word_t efer = x86_rdmsr(X86_MSR_EFER);
<       |                   ~~~~~~~~~^~~~~~~~~~~~~~
< /root/Orion/kernel/src/arch/x86/mmu.h: In static member function 'static bool x86_mmu_t::long_mode_active()':
< /root/Orion/kernel/src/arch/x86/mmu.h:182:28: warning: conversion from 'u64_t' {aka 'long long unsigned int'} to 'word_t' {aka 'unsigned int'} may change value [-Wconversion]
<   182 |     word_t efer = x86_rdmsr(X86_MSR_EFER);
<       |                   ~~~~~~~~~^~~~~~~~~~~~~~
< In file included from /root/Orion/kernel/src/arch/x86/segdesc.h:20,
<                  from /root/Orion/kernel/src/arch/x86/x64/init32.cc:42:
< /root/Orion/kernel/src/arch/x86/x64/segdesc.h: In member function 'void x86_segdesc_t::set_seg(u64_t, x86_segdesc_t::segtype_e, int, x86_segdesc_t::mode_e, x86_segdesc_t::msr_e)':
< /root/Orion/kernel/src/arch/x86/x64/segdesc.h:80:17: warning: conversion from 'u64_t' {aka 'long long unsigned int'} to 'unsigned char:4' may change value [-Wconversion]
<    80 |      x.d.type = type;
<       |                 ^~~~
< /root/Orion/kernel/src/arch/x86/x64/segdesc.h:81:17: warning: conversion from 'u64_t' {aka 'long long unsigned int'} to 'unsigned char:1' may change value [-Wconversion]
<    81 |      x.d.l    = mode;
<       |                 ^~~~
< /root/Orion/kernel/src/arch/x86/x64/segdesc.h:82:17: warning: conversion from 'u64_t' {aka 'long long unsigned int'} to 'unsigned char:2' may change value [-Wconversion]
<    82 |      x.d.dpl  = dpl;
<       |                 ^~~
< /root/Orion/kernel/src/arch/x86/x64/segdesc.h: In member function 'void x86_segdesc_t::set_seg(u32_t, x86_segdesc_t::segtype_e, int, x86_segdesc_t::mode_e)':
< /root/Orion/kernel/src/arch/x86/x64/segdesc.h:99:36: warning: conversion from 'u64_t' {aka 'long long unsigned int'} to 'unsigned char' may change value [-Wconversion]
<    99 |      x.d.base_high  = (base >> 24) & 0xFF;
<       |                       ~~~~~~~~~~~~~^~~~~~
< /root/Orion/kernel/src/arch/x86/x64/segdesc.h:101:17: warning: conversion from 'u64_t' {aka 'long long unsigned int'} to 'unsigned char:4' may change value [-Wconversion]
<   101 |      x.d.type = type;
<       |                 ^~~~
< /root/Orion/kernel/src/arch/x86/x64/segdesc.h:102:17: warning: conversion from 'u64_t' {aka 'long long unsigned int'} to 'unsigned char:1' may change value [-Wconversion]
<   102 |      x.d.l    = mode;
<       |                 ^~~~
< /root/Orion/kernel/src/arch/x86/x64/segdesc.h:103:16: warning: conversion from 'u64_t' {aka 'long long unsigned int'} to 'unsigned char:2' may change value [-Wconversion]
<   103 |      x.d.dpl = dpl;
<       |                ^~~
< cd src/arch/x86/x64/ && objcopy -g -O elf64-x86-64  init32.o init32.o
< objcopy: gelf_get##REL failed: Invalid argument
< gmake[1]: *** [/root/Orion/kernel/src/arch/x86/x64/Makeconf:43: src/arch/x86/x64/init32.o] Error 1
---
> ===> src/arch/x86/x64/cpu.cc
> cd src/arch/x86/x64/ &&  gcc  -nostdinc -I/root/Orion/kernel/fbuild/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/local/lib/gcc9/gcc/x86_64-portbld-freebsd12.0/9.2.0/include/ -Ux64 -Ux86 -Up4 -Upc99 -Uv4 -Urr -D__SUBARCH__=x64 -D__ARCH__=x86 -D__CPU__=p4 -D__PLATFORM__=pc99 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/fbuild/config/config.h -imacros /root/Orion/kernel/src/generic/macros.h -include /root/Orion/kernel/src/generic/config.h  -include /root/Orion/kernel/src/generic/types.h -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2 -m64 -mcmodel=kernel -mno-red-zone -fno-pie  -fno-stack-protector -lssp  -mno-mmx -mno-sse -mno-sse2 -mno-sse3    -Wconversion  -c /root/Orion/kernel/src/arch/x86/x64/cpu.cc
> /root/Orion/kernel/src/arch/x86/x64/cpu.cc: In constructor 'x86_x64_cpu_features_t::x86_x64_cpu_features_t()':
> /root/Orion/kernel/src/arch/x86/x64/cpu.cc:66:25: warning: conversion from 'u32_t' {aka 'unsigned int'} to 'u8_t' {aka 'unsigned char'} may change value [-Wconversion]
>    66 |  apic_id = ((ebx >> 24) & 0xFF);
>       |            ~~~~~~~~~~~~~^~~~~~~
> ===> src/glue/v4-x86/x64/space.cc
> cd src/glue/v4-x86/x64/ &&  gcc  -nostdinc -I/root/Orion/kernel/fbuild/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/local/lib/gcc9/gcc/x86_64-portbld-freebsd12.0/9.2.0/include/ -Ux64 -Ux86 -Up4 -Upc99 -Uv4 -Urr -D__SUBARCH__=x64 -D__ARCH__=x86 -D__CPU__=p4 -D__PLATFORM__=pc99 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/fbuild/config/config.h -imacros /root/Orion/kernel/src/generic/macros.h -include /root/Orion/kernel/src/generic/config.h  -include /root/Orion/kernel/src/generic/types.h -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2 -m64 -mcmodel=kernel -mno-red-zone -fno-pie  -fno-stack-protector -lssp  -mno-mmx -mno-sse -mno-sse2 -mno-sse3    -Wconversion  -c /root/Orion/kernel/src/glue/v4-x86/x64/space.cc
> In file included from /root/Orion/kernel/src/glue/v4-x86/tcb.h:21,
>                  from /root/Orion/kernel/src/api/v4/tcb.h:707,
>                  from /root/Orion/kernel/src/glue/v4-x86/x64/space.cc:39:
> /root/Orion/kernel/src/api/v4/syscalls.h:76:59: error: macro "SYS_THREAD_CONTROL" passed 7 arguments, but takes just 5
>    76 |       threadid_t recv_redirector_tid, word_t utcb_location);
>       |                                                           ^
> In file included from /root/Orion/kernel/src/glue/v4-x86/syscalls.h:16,
>                  from /root/Orion/kernel/src/api/v4/syscalls.h:43,
>                  from /root/Orion/kernel/src/glue/v4-x86/tcb.h:21,
>                  from /root/Orion/kernel/src/api/v4/tcb.h:707,
>                  from /root/Orion/kernel/src/glue/v4-x86/x64/space.cc:39:
> /root/Orion/kernel/src/glue/v4-x86/x64/syscalls.h:78: note: macro "SYS_THREAD_CONTROL" defined here
>    78 | #define SYS_THREAD_CONTROL(dest, space, scheduler, pager, utcb_location) \
>       | 
> In file included from /root/Orion/kernel/src/glue/v4-x86/tcb.h:21,
>                  from /root/Orion/kernel/src/api/v4/tcb.h:707,
>                  from /root/Orion/kernel/src/glue/v4-x86/x64/space.cc:39:
> /root/Orion/kernel/src/api/v4/syscalls.h:90:40: error: macro "SYS_EXCHANGE_REGISTERS" requires 8 arguments, but only 7 given
>    90 |    word_t uhandle, threadid_t pager_tid);
>       |                                        ^
> In file included from /root/Orion/kernel/src/glue/v4-x86/syscalls.h:16,
>                  from /root/Orion/kernel/src/api/v4/syscalls.h:43,
>                  from /root/Orion/kernel/src/glue/v4-x86/tcb.h:21,
>                  from /root/Orion/kernel/src/api/v4/tcb.h:707,
>                  from /root/Orion/kernel/src/glue/v4-x86/x64/space.cc:39:
> /root/Orion/kernel/src/glue/v4-x86/x64/syscalls.h:131: note: macro "SYS_EXCHANGE_REGISTERS" defined here
>   131 | #define SYS_EXCHANGE_REGISTERS(dest, control, usp, uip,          \
>       | 
> In file included from /root/Orion/kernel/src/glue/v4-x86/tcb.h:21,
>                  from /root/Orion/kernel/src/api/v4/tcb.h:707,
>                  from /root/Orion/kernel/src/glue/v4-x86/x64/space.cc:39:
> /root/Orion/kernel/src/api/v4/syscalls.h:125:23: error: macro "SYS_SPACE_CONTROL" requires 5 arguments, but only 4 given
>   125 |      fpage_t utcb_area);
>       |                       ^
> In file included from /root/Orion/kernel/src/glue/v4-x86/syscalls.h:16,
>                  from /root/Orion/kernel/src/api/v4/syscalls.h:43,
>                  from /root/Orion/kernel/src/glue/v4-x86/tcb.h:21,
>                  from /root/Orion/kernel/src/api/v4/tcb.h:707,
>                  from /root/Orion/kernel/src/glue/v4-x86/x64/space.cc:39:
> /root/Orion/kernel/src/glue/v4-x86/x64/syscalls.h:94: note: macro "SYS_SPACE_CONTROL" defined here
>    94 | #define SYS_SPACE_CONTROL(space, control, kip_area, utcb_area, \
>       | 
> In file included from /root/Orion/kernel/src/glue/v4-x86/x64/tcb.h:40,
>                  from /root/Orion/kernel/src/glue/v4-x86/tcb.h:22,
>                  from /root/Orion/kernel/src/api/v4/tcb.h:707,
>                  from /root/Orion/kernel/src/glue/v4-x86/x64/space.cc:39:
> /root/Orion/kernel/src/glue/v4-x86/x64/x32comp/tcb.h:74:25: error: macro "ASSERT" requires 2 arguments, but only 1 given
>    74 |  ASSERT(this->pdir_cache);
>       |                         ^
> In file included from /root/Orion/kernel/src/glue/v4-x86/x64/space.cc:33:
> /root/Orion/kernel/src/debug.h:89: note: macro "ASSERT" defined here
>    89 | # define ASSERT(level, x)      \
>       | 
> In file included from /root/Orion/kernel/src/glue/v4-x86/x64/tcb.h:40,
>                  from /root/Orion/kernel/src/glue/v4-x86/tcb.h:22,
>                  from /root/Orion/kernel/src/api/v4/tcb.h:707,
>                  from /root/Orion/kernel/src/glue/v4-x86/x64/space.cc:39:
> /root/Orion/kernel/src/glue/v4-x86/x64/x32comp/tcb.h:155:39: error: macro "ASSERT" requires 2 arguments, but only 1 given
>   155 |     ASSERT(start + count <= IPC_NUM_MR);
>       |                                       ^
> In file included from /root/Orion/kernel/src/glue/v4-x86/x64/space.cc:33:
> /root/Orion/kernel/src/debug.h:89: note: macro "ASSERT" defined here
>    89 | # define ASSERT(level, x)      \
>       | 
> In file included from /root/Orion/kernel/src/glue/v4-x86/x64/tcb.h:40,
>                  from /root/Orion/kernel/src/glue/v4-x86/tcb.h:22,
>                  from /root/Orion/kernel/src/api/v4/tcb.h:707,
>                  from /root/Orion/kernel/src/glue/v4-x86/x64/space.cc:39:
> /root/Orion/kernel/src/glue/v4-x86/x64/x32comp/tcb.h:156:21: error: macro "ASSERT" requires 2 arguments, but only 1 given
>   156 |     ASSERT(count > 0);
>       |                     ^
> In file included from /root/Orion/kernel/src/glue/v4-x86/x64/space.cc:33:
> /root/Orion/kernel/src/debug.h:89: note: macro "ASSERT" defined here
>    89 | # define ASSERT(level, x)      \
>       | 
> In file included from /root/Orion/kernel/src/glue/v4-x86/tcb.h:22,
>                  from /root/Orion/kernel/src/api/v4/tcb.h:707,
>                  from /root/Orion/kernel/src/glue/v4-x86/x64/space.cc:39:
> /root/Orion/kernel/src/glue/v4-x86/x64/tcb.h:81:10: fatal error: tcb_layout.h: No such file or directory
>    81 | #include <tcb_layout.h>
>       |          ^~~~~~~~~~~~~~
> compilation terminated.
> gmake[1]: *** [/root/Orion/kernel/Mk/Makeconf:208: src/glue/v4-x86/x64/space.o] Error 1
vmlemon commented 5 years ago

On Linux:

yson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ibd$ make
make[1]: Entering directory '/home/tyson/Orion/kernel/ibd'
===> Generating include/tcb_layout.h
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:20,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ibd/_1571001308_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:76:59: error: macro "SYS_THREAD_CONTROL" passed 7 arguments, but takes just 5
       threadid_t recv_redirector_tid, word_t utcb_location);
                                                           ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:90:40: error: macro "SYS_EXCHANGE_REGISTERS" requires 8 arguments, but only 7 given
    word_t uhandle, threadid_t pager_tid);
                                        ^
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:125:23: error: macro "SYS_SPACE_CONTROL" requires 5 arguments, but only 4 given
      fpage_t utcb_area);
                       ^
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:51,
                 from /home/tyson/Orion/kernel/ibd/_1571001308_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:49:16: error: ‘IPC_NUM_BR’ was not declared in this scope
     word_t  br[IPC_NUM_BR];  /* -196 .. -64 */
                ^~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:64:16: error: ‘IPC_NUM_MR’ was not declared in this scope
     word_t  mr[IPC_NUM_MR];  /* 0 .. 252 */
                ^~~~~~~~~~
In file included from /home/tyson/Orion/kernel/ibd/_1571001308_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘tcb_t* tcb_t::get_partner_tcb()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:425:31: error: ‘class space_t’ has no member named ‘get_tcb’; did you mean ‘add_tcb’?
     return this->get_space()->get_tcb(partner);
                               ^~~~~~~
                               add_tcb
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::clear_notify_bits()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:570:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits = 0;
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::add_notify_bits(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:578:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits |= bits;
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::sub_notify_bits(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:586:14: error: ‘class utcb_t’ has no member named ‘notify_bits’
  get_utcb()->notify_bits &= ~(bits);
              ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘word_t tcb_t::get_notify_bits()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:594:24: error: ‘class utcb_t’ has no member named ‘notify_bits’
     return get_utcb()->notify_bits;
                        ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘word_t tcb_t::get_notify_mask()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:602:24: error: ‘class utcb_t’ has no member named ‘notify_mask’; did you mean ‘word_size_mask’?
     return get_utcb()->notify_mask;
                        ^~~~~~~~~~~
                        word_size_mask
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::set_notify_mask(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:611:17: error: ‘class utcb_t’ has no member named ‘notify_mask’; did you mean ‘word_size_mask’?
     get_utcb()->notify_mask = mask;
                 ^~~~~~~~~~~
                 word_size_mask
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:20,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ibd/_1571001308_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h: At global scope:
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:73:1: error: ‘SYS_THREAD_CONTROL’ does not name a type
 SYS_THREAD_CONTROL (threadid_t dest_tid, threadid_t space_tid,
 ^~~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:88:1: error: ‘SYS_EXCHANGE_REGISTERS’ does not name a type
 SYS_EXCHANGE_REGISTERS (threadid_t dest_tid, word_t control,
 ^~~~~~~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/syscalls.h:124:1: error: ‘SYS_SPACE_CONTROL’ does not name a type
 SYS_SPACE_CONTROL (threadid_t space_tid, word_t control, fpage_t kip_area,
 ^~~~~~~~~~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:22,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ibd/_1571001308_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h: In member function ‘void tcb_t::copy_mrs(tcb_t*, word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:64:31: error: ‘class utcb_t’ has no member named ‘mr’
  "c"(count), "S"(&get_utcb()->mr[start]),
                               ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:65:25: error: ‘class utcb_t’ has no member named ‘mr’
  "D"(&dest->get_utcb()->mr[start]));
                         ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h: At global scope:
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:364:13: error: no declaration matches ‘void tcb_t::arch_init_root_server(space_t*, word_t, word_t)’
 INLINE void tcb_t::arch_init_root_server (space_t * space, word_t ip, word_t sp)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:364:13: note: no functions named ‘void tcb_t::arch_init_root_server(space_t*, word_t, word_t)’
In file included from /home/tyson/Orion/kernel/ibd/_1571001308_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ibd/_1571001308_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_cpu(cpuid_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:65:11: error: ‘class tcb_t’ has no member named ‘cpu’
     this->cpu = cpu;
           ^~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_utcb_location(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:5: error: ‘myself_local’ was not declared in this scope
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
     ^~~~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:5: note: suggested alternative: ‘myself_global’
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
     ^~~~~~~~~~~~
     myself_global
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:60: error: ‘class utcb_t’ has no member named ‘mr’
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
                                                            ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘word_t tcb_t::get_utcb_location()’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:12: error: ‘myself_local’ was not declared in this scope
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
            ^~~~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:12: note: suggested alternative: ‘myself_global’
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
            ^~~~~~~~~~~~
            myself_global
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:54: error: ‘class utcb_t’ has no member named ‘mr’
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
                                                      ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘word_t tcb_t::get_mr(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:95:24: error: ‘class utcb_t’ has no member named ‘mr’
     return get_utcb()->mr[index];
                        ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_mr(word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:106:17: error: ‘class utcb_t’ has no member named ‘mr’
     get_utcb()->mr[index] = value;
                 ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: At global scope:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:115:15: error: no declaration matches ‘word_t tcb_t::get_br(word_t)’
 INLINE word_t tcb_t::get_br(word_t index)
               ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:115:15: note: no functions named ‘word_t tcb_t::get_br(word_t)’
In file included from /home/tyson/Orion/kernel/ibd/_1571001308_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ibd/_1571001308_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:126:13: error: no declaration matches ‘void tcb_t::set_br(word_t, word_t)’
 INLINE void tcb_t::set_br(word_t index, word_t value)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:126:13: note: no functions named ‘void tcb_t::set_br(word_t, word_t)’
In file included from /home/tyson/Orion/kernel/ibd/_1571001308_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ibd/_1571001308_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:209:13: error: no declaration matches ‘void tcb_t::adjust_for_copy_area(tcb_t*, void**, void**)’
 INLINE void tcb_t::adjust_for_copy_area (tcb_t * dst,
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:209:13: note: no functions named ‘void tcb_t::adjust_for_copy_area(tcb_t*, void**, void**)’
In file included from /home/tyson/Orion/kernel/ibd/_1571001308_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:707,
                 from /home/tyson/Orion/kernel/ibd/_1571001308_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:219:13: error: no declaration matches ‘void tcb_t::release_copy_area()’
 INLINE void tcb_t::release_copy_area (void)
             ^~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:219:13: note: no functions named ‘void tcb_t::release_copy_area()’
In file included from /home/tyson/Orion/kernel/ibd/_1571001308_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /home/tyson/Orion/kernel/ibd/_1571001308_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘bool tcb_t::is_local_cpu()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:739:13: error: ‘get_current_cpu’ was not declared in this scope
     return (get_current_cpu() == get_cpu());
             ^~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h:739:13: note: suggested alternative: ‘get_current_tcb’
     return (get_current_cpu() == get_cpu());
             ^~~~~~~~~~~~~~~
             get_current_tcb
/home/tyson/Orion/kernel/ibd/_1571001308_123.c: In function ‘void make_offsets()’:
/home/tyson/Orion/kernel/ibd/_1571001308_123.c:49:51: error: ‘class tcb_t’ has no member named ‘sched_state’; did you mean ‘saved_state’?
    O(OFS_TCB_SCHED_STATE_SCHEDULER,offsetof(tcb_t,sched_state.scheduler));
                                                   ^~~~~~~~~~~
/home/tyson/Orion/kernel/ibd/_1571001308_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ibd/_1571001308_123.c:49:36: note: in expansion of macro ‘offsetof’
    O(OFS_TCB_SCHED_STATE_SCHEDULER,offsetof(tcb_t,sched_state.scheduler));
                                    ^~~~~~~~
/home/tyson/Orion/kernel/ibd/_1571001308_123.c:52:34: error: ‘class utcb_t’ has no member named ‘br’
    O(OFS_UTCB_BR,offsetof(utcb_t,br));
                                  ^~
/home/tyson/Orion/kernel/ibd/_1571001308_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ibd/_1571001308_123.c:52:18: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_BR,offsetof(utcb_t,br));
                  ^~~~~~~~
/home/tyson/Orion/kernel/ibd/_1571001308_123.c:67:34: error: ‘class utcb_t’ has no member named ‘mr’
    O(OFS_UTCB_MR,offsetof(utcb_t,mr));
                                  ^~
/home/tyson/Orion/kernel/ibd/_1571001308_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/ibd/_1571001308_123.c:67:18: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_MR,offsetof(utcb_t,mr));
                  ^~~~~~~~
make[1]: *** No rule to make target '/home/tyson/Orion/kernel/ibd/include/tcb_layout.h', needed by 'tcb_layout.h'. Stop.
make[1]: Leaving directory '/home/tyson/Orion/kernel/ibd'
make: *** [Makefile:38: all] Error 2
tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/ibd$ 
vmlemon commented 5 years ago

Quietly, on a fork (https://github.com/nullpo-head/pistachio) of the https://github.com/l4ka/pistachio repository, there were some changes, towards getting a working x86-64 kernel building/booting, under Linux, so I've ported them across to Orion, and Enryo, although they're mostly-untested, as of writing.

They mostly change the Makefiles, KickStart ELF loader, KIP headers, fix some definitions, and define some new data structures, and tweak things for GCC 7/Ubuntu 18.04, but are fairly non-evasive, and don't seem to break things any more, than they already are.

vmlemon commented 5 years ago

The API of SYS_THREAD_CONTROL changed, from taking different numbers of arguments, depending on platform. We need to investigate this, since things break...

vmlemon commented 5 years ago

Not actively-maintained as a project, but I merged all of the stray forks that I could find, into https://github.com/vmlemon/pistachio, and it seems to successfully-build an x86-64 kernel (curiously, the EFI option also lights up, somehow), so it might be worth seeing the headers, and some other files, to get things working, here.

vmlemon commented 5 years ago

As an experiment, I looked into transplanting some of the Enryo headers, to Orion, on the vmlemon-patch-1 branch, which gets things to:

tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/tbd$ make
make[1]: Entering directory '/home/tyson/Orion/kernel/tbd'
===> Building dependencies
===> Generating include/tcb_layout.h
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:61,
                 from /home/tyson/Orion/kernel/tbd/_1571129822_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:49:16: error: ‘IPC_NUM_BR’ was not declared in this scope
     word_t  br[IPC_NUM_BR];  /* -196 .. -64 */
                ^~~~~~~~~~
/home/tyson/Orion/kernel/src/glue/v4-x86/utcb.h:64:16: error: ‘IPC_NUM_MR’ was not declared in this scope
     word_t  mr[IPC_NUM_MR];  /* 0 .. 252 */
                ^~~~~~~~~~
In file included from /home/tyson/Orion/kernel/tbd/_1571129822_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:268:14: error: ‘IPC_NUM_SAVED_MRS’ was not declared in this scope
   word_t  mr[IPC_NUM_SAVED_MRS];
              ^~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h:274:20: error: ‘IPC_NESTING_LEVEL’ was not declared in this scope
      } saved_state[IPC_NESTING_LEVEL];
                    ^~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h:347:5: error: ‘bitmask_t’ is not a template
     bitmask_t<word_t> flags;
     ^~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::init_saved_state()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:507:25: error: ‘IPC_NESTING_LEVEL’ was not declared in this scope
     for (int l = 0; l < IPC_NESTING_LEVEL; l++)
                         ^~~~~~~~~~~~~~~~~
In file included from <command-line>:
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘threadid_t tcb_t::get_saved_partner(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:516:28: error: ‘IPC_NESTING_LEVEL’ was not declared in this scope
     ASSERT(NORMAL, level < IPC_NESTING_LEVEL);
                            ^~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/generic/macros.h:104:44: note: in definition of macro ‘EXPECT_FALSE’
 #define EXPECT_FALSE(x)  __builtin_expect((x), false)
                                            ^
/home/tyson/Orion/kernel/src/api/v4/tcb.h:516:5: note: in expansion of macro ‘ASSERT’
     ASSERT(NORMAL, level < IPC_NESTING_LEVEL);
     ^~~~~~
In file included from /home/tyson/Orion/kernel/tbd/_1571129822_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:517:17: error: ‘union tcb_t::misc_tcb_t’ has no member named ‘saved_state’
     return misc.saved_state[level].partner;
                 ^~~~~~~~~~~
In file included from <command-line>:
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::set_saved_partner(threadid_t, word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:522:28: error: ‘IPC_NESTING_LEVEL’ was not declared in this scope
     ASSERT(NORMAL, level < IPC_NESTING_LEVEL);
                            ^~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/generic/macros.h:104:44: note: in definition of macro ‘EXPECT_FALSE’
 #define EXPECT_FALSE(x)  __builtin_expect((x), false)
                                            ^
/home/tyson/Orion/kernel/src/api/v4/tcb.h:522:5: note: in expansion of macro ‘ASSERT’
     ASSERT(NORMAL, level < IPC_NESTING_LEVEL);
     ^~~~~~
In file included from /home/tyson/Orion/kernel/tbd/_1571129822_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:523:10: error: ‘union tcb_t::misc_tcb_t’ has no member named ‘saved_state’
     misc.saved_state[level].partner = t;
          ^~~~~~~~~~~
In file included from <command-line>:
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘thread_state_t tcb_t::get_saved_state(word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:528:28: error: ‘IPC_NESTING_LEVEL’ was not declared in this scope
     ASSERT(NORMAL, level < IPC_NESTING_LEVEL);
                            ^~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/generic/macros.h:104:44: note: in definition of macro ‘EXPECT_FALSE’
 #define EXPECT_FALSE(x)  __builtin_expect((x), false)
                                            ^
/home/tyson/Orion/kernel/src/api/v4/tcb.h:528:5: note: in expansion of macro ‘ASSERT’
     ASSERT(NORMAL, level < IPC_NESTING_LEVEL);
     ^~~~~~
In file included from /home/tyson/Orion/kernel/tbd/_1571129822_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:529:34: error: ‘union tcb_t::misc_tcb_t’ has no member named ‘saved_state’
     return (thread_state_t) misc.saved_state[level].state;
                                  ^~~~~~~~~~~
In file included from <command-line>:
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::set_saved_state(thread_state_t, word_t)’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:534:28: error: ‘IPC_NESTING_LEVEL’ was not declared in this scope
     ASSERT(NORMAL, level < IPC_NESTING_LEVEL);
                            ^~~~~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/generic/macros.h:104:44: note: in definition of macro ‘EXPECT_FALSE’
 #define EXPECT_FALSE(x)  __builtin_expect((x), false)
                                            ^
/home/tyson/Orion/kernel/src/api/v4/tcb.h:534:5: note: in expansion of macro ‘ASSERT’
     ASSERT(NORMAL, level < IPC_NESTING_LEVEL);
     ^~~~~~
In file included from /home/tyson/Orion/kernel/tbd/_1571129822_123.c:2:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:535:10: error: ‘union tcb_t::misc_tcb_t’ has no member named ‘saved_state’
     misc.saved_state[level].state = s;
          ^~~~~~~~~~~
/home/tyson/Orion/kernel/src/api/v4/tcb.h: In member function ‘msg_tag_t tcb_t::get_tag()’:
/home/tyson/Orion/kernel/src/api/v4/tcb.h:673:27: error: conversion from ‘word_t’ {aka ‘long unsigned int’} to non-scalar type ‘msg_tag_t’ requested
     msg_tag_t tag = get_mr(0);
                     ~~~~~~^~~
In file included from /home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:22,
                 from /home/tyson/Orion/kernel/src/api/v4/tcb.h:780,
                 from /home/tyson/Orion/kernel/tbd/_1571129822_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h: In member function ‘void tcb_t::copy_mrs(tcb_t*, word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:64:31: error: ‘class utcb_t’ has no member named ‘mr’
  "c"(count), "S"(&get_utcb()->mr[start]),
                               ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/x64/tcb.h:65:25: error: ‘class utcb_t’ has no member named ‘mr’
  "D"(&dest->get_utcb()->mr[start]));
                         ^~
In file included from /home/tyson/Orion/kernel/src/api/v4/tcb.h:780,
                 from /home/tyson/Orion/kernel/tbd/_1571129822_123.c:2:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_utcb_location(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:78:60: error: ‘class utcb_t’ has no member named ‘mr’
     myself_local.set_raw (utcb_location + ((word_t)&dummy->mr[0]));
                                                            ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘word_t tcb_t::get_utcb_location()’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:84:54: error: ‘class utcb_t’ has no member named ‘mr’
     return myself_local.get_raw() - ((word_t)&dummy->mr[0]);
                                                      ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘word_t tcb_t::get_mr(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:95:24: error: ‘class utcb_t’ has no member named ‘mr’
     return get_utcb()->mr[index];
                        ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_mr(word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:106:17: error: ‘class utcb_t’ has no member named ‘mr’
     get_utcb()->mr[index] = value;
                 ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘word_t tcb_t::get_br(word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:117:24: error: ‘class utcb_t’ has no member named ‘br’
     return get_utcb()->br[32U-index];
                        ^~
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h: In member function ‘void tcb_t::set_br(word_t, word_t)’:
/home/tyson/Orion/kernel/src/glue/v4-x86/tcb.h:128:17: error: ‘class utcb_t’ has no member named ‘br’
     get_utcb()->br[32U-index] = value;
                 ^~
/home/tyson/Orion/kernel/tbd/_1571129822_123.c: In function ‘void make_offsets()’:
/home/tyson/Orion/kernel/tbd/_1571129822_123.c:47:34: error: ‘class utcb_t’ has no member named ‘br’
    O(OFS_UTCB_BR,offsetof(utcb_t,br));
                                  ^~
/home/tyson/Orion/kernel/tbd/_1571129822_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/tbd/_1571129822_123.c:47:18: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_BR,offsetof(utcb_t,br));
                  ^~~~~~~~
/home/tyson/Orion/kernel/tbd/_1571129822_123.c:62:34: error: ‘class utcb_t’ has no member named ‘mr’
    O(OFS_UTCB_MR,offsetof(utcb_t,mr));
                                  ^~
/home/tyson/Orion/kernel/tbd/_1571129822_123.c:12:84: note: in definition of macro ‘O’
 #define O(sym,value) __asm__ __volatile__ ("\n#define " MKSTR(sym) " %0 " : : "i" (value));
                                                                                    ^~~~~
/home/tyson/Orion/kernel/tbd/_1571129822_123.c:62:18: note: in expansion of macro ‘offsetof’
    O(OFS_UTCB_MR,offsetof(utcb_t,mr));
                  ^~~~~~~~
===> src/arch/x86/x64/init32.cc
cd src/arch/x86/x64/ &&  gcc  -nostdinc -I/home/tyson/Orion/kernel/tbd/include -I/home/tyson/Orion/kernel/src -I/home/tyson/Orion/kernel/src/generic -I/usr/lib/gcc/x86_64-linux-gnu/8/include/ -Ux64 -Ux86 -Up4 -Upc99 -Uv4 -Urr -D__SUBARCH__=x64 -D__ARCH__=x86 -D__CPU__=p4 -D__PLATFORM__=pc99 -D__API__=v4 -D__SCHED__=rr -imacros /home/tyson/Orion/kernel/tbd/config/config.h -imacros /home/tyson/Orion/kernel/src/generic/macros.h -include /home/tyson/Orion/kernel/src/generic/config.h  -include /home/tyson/Orion/kernel/src/generic/types.h -DX64_32BIT_CODE   -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2  -m32   -mno-red-zone  -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -fno-pie -no-pie -Wno-narrowing -fno-stack-protector    -Wconversion -x c++ -c /home/tyson/Orion/kernel/src/arch/x86/x64/init32.cc -o init32.o
In file included from /home/tyson/Orion/kernel/src/arch/x86/x64/init32.cc:40:
/home/tyson/Orion/kernel/src/arch/x86/mmu.h: In static member function ‘static void x86_mmu_t::enable_long_mode()’:
/home/tyson/Orion/kernel/src/arch/x86/mmu.h:170:28: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘word_t’ {aka ‘unsigned int’} may change value [-Wconversion]
     word_t efer = x86_rdmsr(X86_MSR_EFER);
                   ~~~~~~~~~^~~~~~~~~~~~~~
/home/tyson/Orion/kernel/src/arch/x86/mmu.h: In static member function ‘static bool x86_mmu_t::long_mode_active()’:
/home/tyson/Orion/kernel/src/arch/x86/mmu.h:182:28: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘word_t’ {aka ‘unsigned int’} may change value [-Wconversion]
     word_t efer = x86_rdmsr(X86_MSR_EFER);
                   ~~~~~~~~~^~~~~~~~~~~~~~
In file included from /home/tyson/Orion/kernel/src/arch/x86/segdesc.h:20,
                 from /home/tyson/Orion/kernel/src/arch/x86/x64/init32.cc:41:
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h: In member function ‘void x86_segdesc_t::set_seg(u64_t, x86_segdesc_t::segtype_e, int, x86_segdesc_t::mode_e, x86_segdesc_t::msr_e)’:
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:80:17: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:4’ may change value [-Wconversion]
      x.d.type = type;
                 ^~~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:81:17: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
      x.d.l    = mode;
                 ^~~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:82:17: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:2’ may change value [-Wconversion]
      x.d.dpl  = dpl;
                 ^~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h: In member function ‘void x86_segdesc_t::set_seg(u32_t, x86_segdesc_t::segtype_e, int, x86_segdesc_t::mode_e)’:
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:99:36: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char’ may change value [-Wconversion]
      x.d.base_high  = (base >> 24) & 0xFF;
                       ~~~~~~~~~~~~~^~~~~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:101:17: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:4’ may change value [-Wconversion]
      x.d.type = type;
                 ^~~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:102:17: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
      x.d.l    = mode;
                 ^~~~
/home/tyson/Orion/kernel/src/arch/x86/x64/segdesc.h:103:16: warning: conversion from ‘u64_t’ {aka ‘long long unsigned int’} to ‘unsigned char:2’ may change value [-Wconversion]
      x.d.dpl = dpl;
                ^~~
cd src/arch/x86/x64/ && objcopy -g -O elf64-x86-64  init32.o init32.o
===> src/arch/x86/x64/cpu.cc
cd src/arch/x86/x64/ &&  gcc  -nostdinc -I/home/tyson/Orion/kernel/tbd/include -I/home/tyson/Orion/kernel/src -I/home/tyson/Orion/kernel/src/generic -I/usr/lib/gcc/x86_64-linux-gnu/8/include/ -Ux64 -Ux86 -Up4 -Upc99 -Uv4 -Urr -D__SUBARCH__=x64 -D__ARCH__=x86 -D__CPU__=p4 -D__PLATFORM__=pc99 -D__API__=v4 -D__SCHED__=rr -imacros /home/tyson/Orion/kernel/tbd/config/config.h -imacros /home/tyson/Orion/kernel/src/generic/macros.h -include /home/tyson/Orion/kernel/src/generic/config.h  -include /home/tyson/Orion/kernel/src/generic/types.h -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2 -m64 -mcmodel=kernel -mno-red-zone  -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -fno-pie -no-pie -Wno-narrowing -fno-stack-protector    -Wconversion  -c /home/tyson/Orion/kernel/src/arch/x86/x64/cpu.cc
/home/tyson/Orion/kernel/src/arch/x86/x64/cpu.cc: In constructor ‘x86_x64_cpu_features_t::x86_x64_cpu_features_t()’:
/home/tyson/Orion/kernel/src/arch/x86/x64/cpu.cc:66:25: warning: conversion from ‘u32_t’ {aka ‘unsigned int’} to ‘u8_t’ {aka ‘unsigned char’} may change value [-Wconversion]
  apic_id = ((ebx >> 24) & 0xFF);
            ~~~~~~~~~~~~~^~~~~~~
make[1]: *** No rule to make target '/home/tyson/Orion/kernel/tbd/include/tcb_layout.h', needed by 'tcb_layout.h'. Stop.
make[1]: Leaving directory '/home/tyson/Orion/kernel/tbd'
make: *** [Makefile:38: all] Error 2
vmlemon commented 5 years ago

Out of curiosity, I tried to build that codebase, on POWER8/Fedora, and it bails out, with https://github.com/vmlemon/pistachio/issues/5.

Seems that we've got a lot of work ahead, to make things whole...

vmlemon commented 5 years ago

As an experiment, I'm working on backporting some of the Orion fixes (without pulling in the NICTA stuff, wholesale), and various community patches, as well as the Orion userland, to Enryo, to create an interim Orion/E product, in the old repository, at https://github.com/vmlemon/pistachio.

vmlemon commented 5 years ago

The status of Orion/E, is that the kernel, and userland all build, for x86-64, but not for POWER. Still trying to diagnose why, but it appears that even without the NICTA enhancements, a lot was always broken, in what we inherited, from upstream Pistachio.

vmlemon commented 5 years ago

Pulled in the branches from the other repository, to play with, later.

vmlemon commented 5 years ago

Merged the master, and enryo-pistachio-master branches, down into a new Orion-E_0_MCL branch.

We'll work backwards, and see what NICTA changes are useful, for improving the architecture support, without dragnetting everything in, like before...

vmlemon commented 5 years ago

Everything is now in master, so one codebase can be used to build either the Enryo, or Orion kernel, or userland.

In time, I'll start looking at migrating the NICTA enhancements, and platform ports, appropriately. We also still need to fix the POWER port, but having fixed-up x68 gives us a baseline to work from, and it provides the most complete genealogy of Pistachio-based projects, publicly-available, so far.

As mentioned, both the x86 Orion userland, and Enryo kernel build, without issues, on Ubuntu, and the kernel starts building, on FreeBSD, with some objdump issues.