Skip to content

ELF Loader Implementation #18

@vmlemon

Description

@vmlemon

In order to implement #7, and the JUEL vision, we need to have a robust implementation of ELF, as well as support for things like execv(), and fork(), in either Sigma0, a userland library, KickStart, or the root task, where everything can easily access it.

It would also be useful to support dynamic linking, ABI branding, switchable syscall tables, and advanced functionality exposed by the ELF specification, and executables.

Conveniently, inside /user/contrib/elf-loader, we have some kind of ELF implementation, which when I tried to compile under PPC64, resulted in:

common  include  Makefile  Makefile.in  platform
[root@fedora28 elf-loader]# make
===> Rebuilding ./Makefile
config.status: creating ./Makefile
config.status: creating config.h
config.status: config.h is unchanged
/bin/bash: clangobjdump: command not found
===> Making dependencies in .
clang-6.0: warning: -lssp: 'linker' input unused [-Wunused-command-line-argument]
clang-6.0: warning: argument unused during compilation: '-mno-red-zone' [-Wunused-command-line-argument]
make[1]: Entering directory '/root/Orion/user/serv/sigma0'
===> Rebuilding ./Makefile
config.status: creating ./Makefile
config.status: creating config.h
config.status: config.h is unchanged
===> Making dependencies in .
clang-6.0: warning: -lssp: 'linker' input unused [-Wunused-command-line-argument]
clang-6.0: warning: argument unused during compilation: '-mno-red-zone' [-Wunused-command-line-argument]
===> Rebuilding ./Makefile
config.status: creating ./Makefile
config.status: creating config.h
config.status: config.h is unchanged
make[2]: Entering directory '/root/Orion/user/lib/l4'
===> Rebuilding ./Makefile
config.status: creating ./Makefile
config.status: creating config.h
config.status: config.h is unchanged
===> debug.cc
clang -x c++ -I../../include -I../.. -I/usr/bin/../lib/gcc/x86_64-linux-gnu/8/include   -fno-stack-protector -nostdinc -g -O2 -m64 -mno-red-zone   -fno-stack-protector -lssp -O2 -g -Wall -Wshadow   -fno-stack-protector  -Wno-conversion -fno-exceptions -c debug.cc -o debug.o
clang-6.0: warning: -lssp: 'linker' input unused [-Wunused-command-line-argument]
clang-6.0: warning: argument unused during compilation: '-mno-red-zone' [-Wunused-command-line-argument]
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:35:
../../include/l4/types.h:379:27: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
    return (L4_Clock_t) { raw : l.raw + r };
                          ^~~~~
                          .raw = 
../../include/l4/types.h:384:27: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
    return (L4_Clock_t) { raw : l.raw + r };
                          ^~~~~
                          .raw = 
../../include/l4/types.h:389:27: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
    return (L4_Clock_t) { raw : l.raw + r.raw };
                          ^~~~~
                          .raw = 
../../include/l4/types.h:394:27: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
    return (L4_Clock_t) { raw : l.raw - r };
                          ^~~~~
                          .raw = 
../../include/l4/types.h:399:27: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
    return (L4_Clock_t) { raw : l.raw - r };
                          ^~~~~
                          .raw = 
../../include/l4/types.h:404:27: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
    return (L4_Clock_t) { raw : l.raw - r.raw };
                          ^~~~~
                          .raw = 
../../include/l4/types.h:410:27: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
    return (L4_Clock_t) { raw : c.raw + r };
                          ^~~~~
                          .raw = 
../../include/l4/types.h:415:27: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
    return (L4_Clock_t) { raw : c.raw - r };
                          ^~~~~
                          .raw = 
../../include/l4/types.h:521:13: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
            return L4_Never;
                   ^
../../include/l4/types.h:493:33: note: expanded from macro 'L4_Never'
#define L4_Never        ((L4_Time_t) { raw : 0UL })
                                       ^
../../include/l4/types.h:532:13: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
            return L4_Never;
                   ^
../../include/l4/types.h:493:33: note: expanded from macro 'L4_Never'
#define L4_Never        ((L4_Time_t) { raw : 0UL })
                                       ^
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
In file included from ../../include/l4/powerpc64/syscalls.h:36:
In file included from ../../include/l4/message.h:37:
../../include/l4/powerpc64/vregs.h:41:12: warning: variable 'utcb' is
      uninitialized when used here [-Wuninitialized]
    return utcb;
           ^~~~
../../include/l4/powerpc64/vregs.h:39:29: note: initialize the variable 'utcb'
      to silence this warning
    register L4_Word_t *utcb asm("r13");
                            ^
                             = nullptr
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
In file included from ../../include/l4/powerpc64/syscalls.h:36:
../../include/l4/message.h:727:15: error: use of undeclared identifier
      '__L4_Lsb'; did you mean '__L4_Msb'?
    for (reg+=__L4_Lsb(mask); mask!=0; mask>>=__L4_Lsb(mask)+1,reg+=__L4...
              ^~~~~~~~
              __L4_Msb
../../include/l4/powerpc64/specials.h:37:15: note: '__L4_Msb' declared here
L4_INLINE int __L4_Msb( L4_Word_t w )
              ^
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
In file included from ../../include/l4/powerpc64/syscalls.h:36:
../../include/l4/message.h:727:47: error: use of undeclared identifier
      '__L4_Lsb'; did you mean '__L4_Msb'?
    for (reg+=__L4_Lsb(mask); mask!=0; mask>>=__L4_Lsb(mask)+1,reg+=__L4...
                                              ^~~~~~~~
                                              __L4_Msb
../../include/l4/powerpc64/specials.h:37:15: note: '__L4_Msb' declared here
L4_INLINE int __L4_Msb( L4_Word_t w )
              ^
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
In file included from ../../include/l4/powerpc64/syscalls.h:36:
../../include/l4/message.h:727:69: error: use of undeclared identifier
      '__L4_Lsb'; did you mean '__L4_Msb'?
    for (reg+=__L4_Lsb(mask); mask!=0; mask>>=__L4_Lsb(mask)+1,reg+=__L4_Lsb(mas...
                                                                    ^~~~~~~~
                                                                    __L4_Msb
../../include/l4/powerpc64/specials.h:37:15: note: '__L4_Msb' declared here
L4_INLINE int __L4_Msb( L4_Word_t w )
              ^
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
In file included from ../../include/l4/powerpc64/syscalls.h:36:
../../include/l4/message.h:746:20: error: use of undeclared identifier
      '__L4_Lsb'; did you mean '__L4_Msb'?
    for (fault_id+=__L4_Lsb(fault_id_mask_low); fault_id_mask_low != 0;  
                   ^~~~~~~~
                   __L4_Msb
../../include/l4/powerpc64/specials.h:37:15: note: '__L4_Msb' declared here
L4_INLINE int __L4_Msb( L4_Word_t w )
              ^
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
In file included from ../../include/l4/powerpc64/syscalls.h:36:
../../include/l4/message.h:747:23: error: use of undeclared identifier
      '__L4_Lsb'; did you mean '__L4_Msb'?
         fault_id_mask_low>>=__L4_Lsb(fault_id_mask_low)+1,fault_id+=__L...
                             ^~~~~~~~
                             __L4_Msb
../../include/l4/powerpc64/specials.h:37:15: note: '__L4_Msb' declared here
L4_INLINE int __L4_Msb( L4_Word_t w )
              ^
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
In file included from ../../include/l4/powerpc64/syscalls.h:36:
../../include/l4/message.h:747:63: error: use of undeclared identifier
      '__L4_Lsb'; did you mean '__L4_Msb'?
  ...fault_id_mask_low>>=__L4_Lsb(fault_id_mask_low)+1,fault_id+=__L4_Lsb(fau...
                                                                 ^~~~~~~~
                                                                 __L4_Msb
../../include/l4/powerpc64/specials.h:37:15: note: '__L4_Msb' declared here
L4_INLINE int __L4_Msb( L4_Word_t w )
              ^
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
In file included from ../../include/l4/powerpc64/syscalls.h:36:
../../include/l4/message.h:755:20: error: use of undeclared identifier
      '__L4_Lsb'; did you mean '__L4_Msb'?
    for (fault_id+=__L4_Lsb(fault_id_mask_high); fault_id_mask_high != 0;  
                   ^~~~~~~~
                   __L4_Msb
../../include/l4/powerpc64/specials.h:37:15: note: '__L4_Msb' declared here
L4_INLINE int __L4_Msb( L4_Word_t w )
              ^
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
In file included from ../../include/l4/powerpc64/syscalls.h:36:
../../include/l4/message.h:756:24: error: use of undeclared identifier
      '__L4_Lsb'; did you mean '__L4_Msb'?
         fault_id_mask_high>>=__L4_Lsb(fault_id_mask_high)+1,fault_id+=_...
                              ^~~~~~~~
                              __L4_Msb
../../include/l4/powerpc64/specials.h:37:15: note: '__L4_Msb' declared here
L4_INLINE int __L4_Msb( L4_Word_t w )
              ^
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
In file included from ../../include/l4/powerpc64/syscalls.h:36:
../../include/l4/message.h:756:65: error: use of undeclared identifier
      '__L4_Lsb'; did you mean '__L4_Msb'?
  ...fault_id_mask_high>>=__L4_Lsb(fault_id_mask_high)+1,fault_id+=__L4_Lsb(f...
                                                                   ^~~~~~~~
                                                                   __L4_Msb
../../include/l4/powerpc64/specials.h:37:15: note: '__L4_Msb' declared here
L4_INLINE int __L4_Msb( L4_Word_t w )
              ^
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
In file included from ../../include/l4/powerpc64/syscalls.h:36:
../../include/l4/message.h:808:15: error: use of undeclared identifier
      '__L4_Lsb'; did you mean '__L4_Msb'?
    for (reg+=__L4_Lsb(mask); mask!=0; mask>>=__L4_Lsb(mask)+1,reg+=__L4...
              ^~~~~~~~
              __L4_Msb
../../include/l4/powerpc64/specials.h:37:15: note: '__L4_Msb' declared here
L4_INLINE int __L4_Msb( L4_Word_t w )
              ^
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
In file included from ../../include/l4/powerpc64/syscalls.h:36:
../../include/l4/message.h:808:47: error: use of undeclared identifier
      '__L4_Lsb'; did you mean '__L4_Msb'?
    for (reg+=__L4_Lsb(mask); mask!=0; mask>>=__L4_Lsb(mask)+1,reg+=__L4...
                                              ^~~~~~~~
                                              __L4_Msb
../../include/l4/powerpc64/specials.h:37:15: note: '__L4_Msb' declared here
L4_INLINE int __L4_Msb( L4_Word_t w )
              ^
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
In file included from ../../include/l4/powerpc64/syscalls.h:36:
../../include/l4/message.h:808:69: error: use of undeclared identifier
      '__L4_Lsb'; did you mean '__L4_Msb'?
    for (reg+=__L4_Lsb(mask); mask!=0; mask>>=__L4_Lsb(mask)+1,reg+=__L4_Lsb(mas...
                                                                    ^~~~~~~~
                                                                    __L4_Msb
../../include/l4/powerpc64/specials.h:37:15: note: '__L4_Msb' declared here
L4_INLINE int __L4_Msb( L4_Word_t w )
              ^
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
In file included from ../../include/l4/powerpc64/syscalls.h:36:
../../include/l4/message.h:862:15: error: use of undeclared identifier
      '__L4_Lsb'; did you mean '__L4_Msb'?
    for (reg+=__L4_Lsb(mask); mask!=0; mask>>=__L4_Lsb(mask)+1,reg+=__L4...
              ^~~~~~~~
              __L4_Msb
../../include/l4/powerpc64/specials.h:37:15: note: '__L4_Msb' declared here
L4_INLINE int __L4_Msb( L4_Word_t w )
              ^
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
In file included from ../../include/l4/powerpc64/syscalls.h:36:
../../include/l4/message.h:862:47: error: use of undeclared identifier
      '__L4_Lsb'; did you mean '__L4_Msb'?
    for (reg+=__L4_Lsb(mask); mask!=0; mask>>=__L4_Lsb(mask)+1,reg+=__L4...
                                              ^~~~~~~~
                                              __L4_Msb
../../include/l4/powerpc64/specials.h:37:15: note: '__L4_Msb' declared here
L4_INLINE int __L4_Msb( L4_Word_t w )
              ^
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
In file included from ../../include/l4/powerpc64/syscalls.h:36:
../../include/l4/message.h:862:69: error: use of undeclared identifier
      '__L4_Lsb'; did you mean '__L4_Msb'?
    for (reg+=__L4_Lsb(mask); mask!=0; mask>>=__L4_Lsb(mask)+1,reg+=__L4_Lsb(mas...
                                                                    ^~~~~~~~
                                                                    __L4_Msb
../../include/l4/powerpc64/specials.h:37:15: note: '__L4_Msb' declared here
L4_INLINE int __L4_Msb( L4_Word_t w )
              ^
In file included from debug.cc:31:
In file included from ../../include/l4/kip.h:36:
../../include/l4/powerpc64/syscalls.h:125:29: warning: use of GNU old-style
      field designator extension [-Wgnu-designator]
    return (L4_ThreadId_t) {raw: r3};
                            ^~~~
                            .raw = 
../../include/l4/powerpc64/syscalls.h:320:27: warning: use of GNU old-style
      field designator extension [-Wgnu-designator]
    return (L4_MsgTag_t){ raw: mr0 };   /* mr0 */
                          ^~~~
                          .raw = 
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:260:49: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
        return L4_ExchangeRegisters (t, 0, 0, 0, 0, 0, L4_nilthread,
                                                       ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:285:49: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
        return L4_ExchangeRegisters (t, 0, 0, 0, 0, 0, L4_nilthread,
                                                       ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:304:59: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
    (void) L4_ExchangeRegisters (t, (1 << 9), 0, 0, 0, 0, L4_nilthread,
                                                          ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:316:64: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
    (void) L4_ExchangeRegisters (t, (1 << 6), 0, 0, 0, handle, L4_nilthread,
                                                               ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:338:59: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
    (void) L4_ExchangeRegisters (t, (1 << 9), 0, 0, 0, 0, L4_nilthread,
                                                          ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:372:63: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
    (void) L4_ExchangeRegisters (t, (1 << 8) + 6, 0, 0, 0, 0, L4_nilthread,
                                                              ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:383:6: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
                                 L4_nilthread,
                                 ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:396:6: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
                                 L4_nilthread,
                                 ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:422:6: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
                                 L4_nilthread, &state.raw, &dummy, &dummy,
                                 ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:438:6: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
                                 L4_nilthread, &state.raw, sp, ip, flags,
                                 ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:459:6: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
                                 L4_nilthread, &state.raw, &dummy, &dummy,
                                 ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:476:6: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
                                 L4_nilthread, &state.raw, sp, ip, flags,
                                 ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:499:6: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
                                 L4_nilthread, &state.raw, &dummy, &dummy,
                                 ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:517:6: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
                                 L4_nilthread, &state.raw, sp, ip, flags,
                                 ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:540:6: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
                                 L4_nilthread, &state.raw, &dummy, &dummy,
                                 ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:556:6: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
                                 L4_nilthread, &state.raw, sp, ip, flags,
                                 ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:582:9: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
                             L4_nilthread, HandlerThread, (void *) -1);
                             ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:588:9: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
                             L4_nilthread, InterruptThread, (void *) -1);
                             ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:595:76: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
  ...(dest, L4_EXREGS_CTRLXFER_CONF_FLAG, 0, 0 , 0, 0, L4_nilthread,
                                                       ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:604:76: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
  ...(dest, L4_EXREGS_CTRLXFER_READ_FLAG, 0, 0 , 0, 0, L4_nilthread,
                                                       ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
In file included from debug.cc:32:
In file included from ../../include/l4/tracebuffer.h:37:
../../include/l4/thread.h:613:77: warning: use of GNU old-style field designator
      extension [-Wgnu-designator]
  ...(dest, L4_EXREGS_CTRLXFER_WRITE_FLAG, 0, 0 , 0, 0, L4_nilthread,
                                                        ^
../../include/l4/types.h:299:46: note: expanded from macro 'L4_nilthread'
#define L4_nilthread      ((L4_ThreadId_t) { raw : 0UL})
                                             ^
34 warnings and 15 errors generated.
make[2]: *** [../../Mk/l4.build.mk:58: debug.o] Error 1
make[2]: Leaving directory '/root/Orion/user/lib/l4'
make[1]: *** [../../Mk/l4.prog.mk:57: ../../lib/l4/libl4.a] Error 2
make[1]: Leaving directory '/root/Orion/user/serv/sigma0'
make: *** [../../Mk/l4.prog.mk:57: ../../serv/sigma0/sigma0] Error 2
[root@fedora28 elf-loader]# 

I'd need to see what functionality it provides, the APIs exposed, and if it can be extended, without breaking it for the pre-boot environment, before we can try to exploit it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions