Browse Source

Move Nixpkgs patching to overlay

llvm-10
Emery Hemingway 2 years ago
parent
commit
14fc773ac9
  1. 19
      LICENSES/MIT.txt
  2. 27
      flake.lock
  3. 59
      flake.nix
  4. 83
      overlay/binutils/support-genode.patch
  5. 32
      overlay/cmake/Genode.cmake
  6. 39
      overlay/default.nix
  7. 63
      overlay/headers/default.nix
  8. 24
      overlay/libc/MB_CUR_MAX.patch
  9. 23
      overlay/libc/_CurrentRuneLocale.patch
  10. 63
      overlay/libc/cdefs_no_hidden.patch
  11. 111
      overlay/libc/default.nix
  12. 43
      overlay/libc/gdtoa.patch
  13. 7
      overlay/libc/genode-prg.pc.in
  14. 662
      overlay/libc/ld.symbols
  15. 298
      overlay/libc/libc-builder.sh
  16. 8
      overlay/libc/libc.pc.in
  17. 1057
      overlay/libc/libc.symbols
  18. 18
      overlay/libc/linker.ld
  19. 20
      overlay/libc/log2.patch
  20. 44
      overlay/libc/mktime.patch
  21. 12
      overlay/libc/printfcommon.patch
  22. 32
      overlay/libc/rcmd.patch
  23. 125
      overlay/libc/res_init_c.patch
  24. 15
      overlay/libc/runetype.patch
  25. 11
      overlay/libc/semaphore.patch
  26. 23
      overlay/libc/thread_local.patch
  27. 52
      overlay/libc/types.patch
  28. 4
      overlay/libc/vfs.pc.in
  29. 5
      overlay/libc/vfs.symbols
  30. 31
      overlay/libc/vfwprintf_c_warn.patch
  31. 35
      overlay/libc/xlocale.patch
  32. 59
      overlay/libc/xlocale_private.patch
  33. 12
      overlay/libc/xprintf_float.patch
  34. 23
      overlay/llvm-8/bintools.nix
  35. 41
      overlay/llvm-8/clang/clang-xpc.patch
  36. 53
      overlay/llvm-8/clang/compiler-rt-baremetal.patch
  37. 131
      overlay/llvm-8/clang/default.nix
  38. 300
      overlay/llvm-8/clang/genode.patch
  39. 30
      overlay/llvm-8/clang/purity.patch
  40. 157
      overlay/llvm-8/clang/static-pie.patch
  41. 372
      overlay/llvm-8/clang/unwindlib.patch
  42. 33
      overlay/llvm-8/compiler-rt-codesign.patch
  43. 13
      overlay/llvm-8/compiler-rt-genode.patch
  44. 75
      overlay/llvm-8/compiler-rt.nix
  45. 13
      overlay/llvm-8/compiler-rt.patch
  46. 595
      overlay/llvm-8/crtbegin-and-end.patch
  47. 201
      overlay/llvm-8/default.nix
  48. 498
      overlay/llvm-8/genode.patch
  49. 70
      overlay/llvm-8/libc++/default.nix
  50. 74
      overlay/llvm-8/libc++/genode.patch
  51. 75
      overlay/llvm-8/libc++/role.bash
  52. 6
      overlay/llvm-8/libc++/setup-hook.sh
  53. 83
      overlay/llvm-8/libc++abi.nix
  54. 12
      overlay/llvm-8/libcxxabi-no-threads.patch
  55. 16
      overlay/llvm-8/libcxxabi-wasm.patch
  56. 29
      overlay/llvm-8/libunwind-genode.patch
  57. 41
      overlay/llvm-8/libunwind.nix
  58. 37
      overlay/llvm-8/lld.nix
  59. 65
      overlay/llvm-8/lldb.nix
  60. 157
      overlay/llvm-8/llvm-genode.patch
  61. 26
      overlay/llvm-8/llvm-outputs.patch
  62. 179
      overlay/llvm-8/llvm.nix
  63. 30
      overlay/llvm-8/openmp.nix
  64. 412
      overlay/llvm-8/sanitizers-nongnu.patch
  65. 2
      packages/default.nix

19
LICENSES/MIT.txt

@ -0,0 +1,19 @@
MIT License Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice (including the next
paragraph) shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

27
flake.lock

@ -36,36 +36,20 @@
"type": "indirect"
}
},
"nixpkgsUpstream": {
"info": {
"lastModified": 1584695415,
"narHash": "sha256-qIofBjFM7MZLyKrUq3rCauF8GpAsqKfIzzVX2hDA0a4="
},
"locked": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a08d4f605bca62c282ce9955d5ddf7d824e89809",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"info": {
"lastModified": 1583160598,
"narHash": "sha256-jiBSr7JK/xy7pIXFVhjdxpWy0pudDDRDW5XjzmDXPjA="
"lastModified": 1585044620,
"narHash": "sha256-719eq/d2G5RM5sKJjbQw2MHHCw0E9EOwQturM3jeXqA="
},
"locked": {
"owner": "ehmry",
"repo": "nixpkgs",
"rev": "37cf068dcf79503fa6f399dcb44bc15c5d2f33f0",
"rev": "563dcf1c8b3a034edc948eed03a4a176647f8ae2",
"type": "github"
},
"original": {
"owner": "ehmry",
"ref": "tier7",
"repo": "nixpkgs",
"type": "github"
}
@ -73,8 +57,7 @@
"root": {
"inputs": {
"genode-depot": "genode-depot",
"nixpkgs": "nixpkgs_2",
"nixpkgsUpstream": "nixpkgsUpstream"
"nixpkgs": "nixpkgs_2"
}
}
},

59
flake.nix

@ -7,11 +7,15 @@
inputs = {
genode-depot.uri = "git+https://git.sr.ht/~ehmry/genode-depot";
nixpkgs.uri = "github:ehmry/nixpkgs";
nixpkgsUpstream.uri = "github:NixOS/nixpkgs";
nixpkgs = {
type = "github";
owner = "ehmry";
repo = "nixpkgs";
ref = "tier7";
};
};
outputs = { self, genode-depot, nixpkgs, nixpkgsUpstream }:
outputs = { self, genode-depot, nixpkgs }:
let
localSystems = [ "x86_64-linux" ];
crossSystems = [ "x86_64-genode" ];
@ -42,13 +46,17 @@
nixpkgsFor = forAllSystems ({ system, localSystem, crossSystem }:
if localSystem == crossSystem then
import nixpkgsUpstream {
import nixpkgs {
inherit system;
overlays = [ self.overlay ];
}
else
import nixpkgs {
inherit localSystem crossSystem;
inherit localSystem;
crossSystem = {
system = crossSystem;
useLLVM = true;
};
config.allowUnsupportedSystem = true;
overlays = [ self.overlay ];
});
@ -75,7 +83,7 @@
inherit system;
legacyPackages = self.legacyPackages.${system};
apps = self.apps.${system};
localPackages = nixpkgsUpstream.legacyPackages.${localSystem};
localPackages = nixpkgs.legacyPackages.${localSystem};
depot = genode-depot.packages.${system};
});
@ -102,7 +110,8 @@
runScript = "bash";
extraBuildCommands = let
toolchain = pkgs.fetchzip {
url = "file://${packages.x86_64-linux-x86_64-genode.genodeSources.toolchain.src}";
url =
"file://${packages.x86_64-linux-x86_64-genode.genodeSources.toolchain.src}";
hash = "sha256-26rPvLUPEJm40zLSqTquwuFTJ1idTB0T4VXgaHRN+4o=";
};
in "ln -s ${toolchain}/local usr/local";
@ -113,21 +122,25 @@
shellHook = "exec genode-env";
});
apps = forAllCrossSystems ({ system, localSystem, crossSystem }:
import ./apps {
self = self.apps.${system};
nixpkgs = self.legacyPackages.${system};
nixpkgsLocal = nixpkgsFor.${localSystem};
packages = self.packages.${system};
});
checks = forAllCrossSystems ({ system, localSystem, crossSystem }:
import ./tests {
inherit system localSystem crossSystem;
inherit self nixpkgs genode-depot;
apps = self.apps.${system};
lib = self.lib.${system};
genodepkgs = self.packages.${system};
});
apps = let
apps' = forAllCrossSystems ({ system, localSystem, crossSystem }:
import ./apps {
self = self.apps.${system};
nixpkgs = self.legacyPackages.${system};
nixpkgsLocal = nixpkgsFor.${localSystem};
packages = self.packages.${system};
});
in apps' // { x86_64-linux = apps'.x86_64-linux-x86_64-genode; };
checks = let
checks' = forAllCrossSystems ({ system, localSystem, crossSystem }:
import ./tests {
inherit system localSystem crossSystem;
inherit self nixpkgs genode-depot;
apps = self.apps.${system};
lib = self.lib.${system};
genodepkgs = self.packages.${system};
});
in checks' // { x86_64-linux = checks'.x86_64-linux-x86_64-genode; };
};
}

83
overlay/binutils/support-genode.patch

@ -0,0 +1,83 @@
diff --git a/bfd/config.bfd b/bfd/config.bfd
index 6391f35684..f2ab802fb5 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -554,7 +554,7 @@ case "${targ}" in
targ_selvecs=hppa_elf32_vec
;;
- i[3-7]86-*-elf* | i[3-7]86-*-rtems*)
+ i[3-7]86-*-elf* | i[3-7]86-*-rtems* | i[3-7]86-*-genode*)
targ_defvec=i386_elf32_vec
targ_selvecs="iamcu_elf32_vec i386_coff_vec"
;;
@@ -662,7 +662,7 @@ case "${targ}" in
targ_selvecs="i386_elf32_vec iamcu_elf32_vec l1om_elf64_vec k1om_elf64_vec"
want64=true
;;
- x86_64-*-elf* | x86_64-*-rtems* | x86_64-*-fuchsia)
+ x86_64-*-elf* | x86_64-*-rtems* | x86_64-*-fuchsia | x86_64-*-genode*)
targ_defvec=x86_64_elf64_vec
targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec l1om_elf64_vec k1om_elf64_vec"
case "${targ}" in
diff --git a/config.sub b/config.sub
index c95acc681d..388c305636 100755
--- a/config.sub
+++ b/config.sub
@@ -1376,7 +1376,7 @@ case $os in
| powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
| skyos* | haiku* | rdos* | toppers* | drops* | es* \
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
- | midnightbsd*)
+ | midnightbsd* | genode*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
qnx*)
diff --git a/gas/configure.tgt b/gas/configure.tgt
index 3d0415c1aa..7cd96b6be4 100644
--- a/gas/configure.tgt
+++ b/gas/configure.tgt
@@ -139,7 +139,8 @@ case ${generic_target} in
arm-*-phoenix*) fmt=elf ;;
arm-*-elf) fmt=elf ;;
- arm-*-eabi* | arm-*-rtems*) fmt=elf em=armeabi ;;
+ arm-*-eabi* | arm-*-rtems* | arm-*-genode*)
+ fmt=elf em=armeabi ;;
arm-*-symbianelf*) fmt=elf em=symbian ;;
arm-*-kaos*) fmt=elf ;;
arm-*-conix*) fmt=elf ;;
@@ -213,6 +214,7 @@ case ${generic_target} in
i386-*-elfiamcu) fmt=elf arch=iamcu ;;
i386-*-elf*) fmt=elf ;;
i386-*-fuchsia*) fmt=elf ;;
+ i386-*-genode*) fmt=elf ;;
i386-*-kaos*) fmt=elf ;;
i386-*-bsd*) fmt=aout em=386bsd ;;
i386-*-nacl*) fmt=elf em=nacl
diff --git a/ld/configure.tgt b/ld/configure.tgt
index fad8b2e5c8..04f7fa0e70 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
@@ -115,7 +115,7 @@ arm-*-nto*) targ_emul=armnto ;;
arm-*-phoenix*) targ_emul=armelf ;;
armeb-*-elf | armeb-*-eabi*)
targ_emul=armelfb ;;
-arm-*-elf | arm*-*-eabi* | arm-*-rtems*)
+arm-*-elf | arm*-*-eabi* | arm-*-rtems* | arm-*-genode*)
targ_emul=armelf ;;
arm*-*-symbianelf*) targ_emul=armsymbian;;
arm-*-kaos*) targ_emul=armelf ;;
@@ -302,10 +302,10 @@ x86_64-*-netbsd*) targ_emul=elf_x86_64
esac ;;
i[3-7]86-*-elfiamcu) targ_emul=elf_iamcu
targ_extra_emuls=elf_i386 ;;
-i[3-7]86-*-elf* | i[3-7]86-*-rtems*)
+i[3-7]86-*-elf* | i[3-7]86-*-rtems* | i[3-7]86-*-genode*)
targ_emul=elf_i386
targ_extra_emuls=elf_iamcu ;;
-x86_64-*-elf* | x86_64-*-rtems* | x86_64-*-fuchsia*)
+x86_64-*-elf* | x86_64-*-rtems* | x86_64-*-fuchsia* | x86_64-*-genode*)
targ_emul=elf_x86_64
targ_extra_emuls="elf_i386 elf_iamcu elf32_x86_64 elf_l1om elf_k1om"
targ_extra_libpath="elf_i386 elf_iamcu elf32_x86_64 elf_l1om elf_k1om"

32
overlay/cmake/Genode.cmake

@ -0,0 +1,32 @@
set(GENODE 1)
set(CMAKE_DL_LIBS "")
set(CMAKE_C_COMPILE_OPTIONS_PIC "-fPIC")
set(CMAKE_C_COMPILE_OPTIONS_PIE "-fPIE")
set(_CMAKE_C_PIE_MAY_BE_SUPPORTED_BY_LINKER YES)
set(CMAKE_C_LINK_OPTIONS_PIE ${CMAKE_C_COMPILE_OPTIONS_PIE} "-pie")
set(CMAKE_C_LINK_OPTIONS_NO_PIE "-no-pie")
set(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC")
set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared")
set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":")
set(CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG "-Wl,-rpath-link,")
set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,")
set(CMAKE_EXE_EXPORTS_C_FLAG "-Wl,--export-dynamic")
# Disable the stack protector until a later stage of LLVM migration
set(CMAKE_C_FLAGS "-fno-stack-protector")
set(CMAKE_CXX_FLAGS "-fno-stack-protector")
# Shared libraries with no builtin soname may not be linked safely by
# specifying the file path.
set(CMAKE_PLATFORM_USES_PATH_WHEN_NO_SONAME 1)
# Initialize C link type selection flags. These flags are used when
# building a shared library, shared module, or executable that links
# to other libraries to select whether to use the static or shared
# versions of the libraries.
foreach(type SHARED_LIBRARY SHARED_MODULE EXE)
set(CMAKE_${type}_LINK_STATIC_C_FLAGS "-Wl,-Bstatic")
set(CMAKE_${type}_LINK_DYNAMIC_C_FLAGS "-Wl,-Bdynamic")
endforeach()

39
overlay/default.nix

@ -1,3 +1,40 @@
final: prev: {
final: prev:
with prev; {
binutils-unwrapped = prev.binutils-unwrapped.overrideAttrs (attrs: {
patches = attrs.patches ++ lib.optional targetPlatform.isGenode
[ ./binutils/support-genode.patch ];
});
cmake = prev.cmake.overrideAttrs (attrs: {
postInstall = with stdenv;
if targetPlatform.isGenode then ''
local MODULE="$out/share/cmake-${
lib.versions.majorMinor attrs.version
}/Modules/Platform/Genode.cmake"
if [ -e "$MODULE" ]; then
echo "Upstream provides $MODULE!"
exit 1
fi
cp ${./cmake/Genode.cmake} $MODULE
'' else
null;
});
genodeHeaders = callPackage ./headers { };
genodeLibcCross = callPackage ./libc { stdenv = crossLibcStdenv; };
libcCrossChooser = name:
if stdenv.targetPlatform.isGenode then
targetPackages.genodeLibcCross or genodeLibcCross
else
prev.libcCrossChooser name;
llvmPackages_8 = callPackage ./llvm-8 ({
inherit (stdenvAdapters) overrideCC;
buildLlvmTools = buildPackages.llvmPackages_8.tools;
targetLlvmLibraries = targetPackages.llvmPackages_8.libraries;
});
}

63
overlay/headers/default.nix

@ -0,0 +1,63 @@
# SPDX-FileCopyrightText: Emery Hemingway
#
# SPDX-License-Identifier: LicenseRef-Hippocratic-1.1
{ stdenvNoCC, lib, fetchurl }:
let
stdenv = stdenvNoCC;
version = "20.02";
platform = stdenv.targetPlatform;
in stdenv.mkDerivation {
pname = platform.system + "-headers";
inherit version;
src = fetchurl {
url = "https://github.com/genodelabs/genode/archive/${version}.tar.gz";
hash = "sha256-ZY9ND6vDA9u127TAv87uOjPuLzRzBPyp5PzD6iM7uNI=";
};
specs = with platform; []
++ lib.optional is32bit "32bit"
++ lib.optional is64bit "64bit"
++ lib.optional isAarch32 "arm"
++ lib.optional isAarch64 "arm_64"
++ lib.optional isRiscV "riscv"
++ lib.optional isx86 "x86"
++ lib.optional isx86_32 "x86_32"
++ lib.optional isx86_64 "x86_64";
builder = builtins.toFile "builder.sh" ''
source $stdenv/setup
tar fx $src \
--strip-components=2 \
genode-$version/repos/base \
genode-$version/repos/demo/include \
genode-$version/repos/gems/include \
genode-$version/repos/libports/include \
genode-$version/repos/os/include \
genode-$version/repos/ports/include \
includeDir=$out/include
mkdir -p $includeDir
for DIR in */include; do
for SPEC in $specs; do
if [ -d $DIR/spec/$SPEC ]; then
cp -r $DIR/spec/$SPEC/* $includeDir/
rm -r $DIR/spec/$SPEC
fi
done
rm -rf $DIR/spec
cp -r $DIR/* $includeDir
done
mkdir $out/ld
cp \
base/src/ld/genode_dyn.dl \
base/src/ld/genode_dyn.ld \
base/src/ld/genode_rel.ld \
$out/ld
'';
}

24
overlay/libc/MB_CUR_MAX.patch

@ -0,0 +1,24 @@
--- src/lib/libc/include/stdlib.h.orig 2019-04-18 13:26:58.781188866 +0200
+++ src/lib/libc/include/stdlib.h 2019-04-18 13:27:46.100594001 +0200
@@ -81,7 +81,8 @@
#endif
extern int __mb_cur_max;
extern int ___mb_cur_max(void);
-#define MB_CUR_MAX ((size_t)___mb_cur_max())
+/* ASCII only */
+#define MB_CUR_MAX 1
_Noreturn void abort(void);
int abs(int) __pure2;
--- src/lib/libc/include/xlocale/_stdlib.h.orig 2019-04-18 13:28:52.691756865 +0200
+++ src/lib/libc/include/xlocale/_stdlib.h 2019-04-18 13:29:13.079500565 +0200
@@ -57,5 +57,6 @@
int wctomb_l(char *, wchar_t, locale_t);
int ___mb_cur_max_l(locale_t);
-#define MB_CUR_MAX_L(x) ((size_t)___mb_cur_max_l(x))
+/* ASCII only */
+#define MB_CUR_MAX_L(x) 1

23
overlay/libc/_CurrentRuneLocale.patch

@ -0,0 +1,23 @@
--- src/lib/libc/include/runetype.h.orig 2019-04-16 11:51:27.954530199 +0200
+++ src/lib/libc/include/runetype.h 2019-04-16 11:51:53.346901123 +0200
@@ -88,19 +88,7 @@
__BEGIN_DECLS
extern const _RuneLocale _DefaultRuneLocale;
extern const _RuneLocale *_CurrentRuneLocale;
-#if defined(__NO_TLS) || defined(__RUNETYPE_INTERNAL)
-extern const _RuneLocale *__getCurrentRuneLocale(void);
-#else
-extern _Thread_local const _RuneLocale *_ThreadRuneLocale;
-static __inline const _RuneLocale *__getCurrentRuneLocale(void)
-{
-
- if (_ThreadRuneLocale)
- return _ThreadRuneLocale;
- return _CurrentRuneLocale;
-}
-#endif /* __NO_TLS || __RUNETYPE_INTERNAL */
-#define _CurrentRuneLocale (__getCurrentRuneLocale())
+#define _CurrentRuneLocale (&_DefaultRuneLocale)
__END_DECLS
#endif /* !_RUNETYPE_H_ */

63
overlay/libc/cdefs_no_hidden.patch

@ -0,0 +1,63 @@
Prevent the use of the hidden attribute for symbols. In particular,
the attribute must not be applied to '__libc'-prefixed symbols to allow
overwriting the dummies defined in dummies.cc by other non-weak
implementations such as those in 'libc_noux.lib.so'.
This attribute is applied inconsistently in
libc/lib/libc/include/libc_private.h anyway.
Also, force i386 to call __libc_sigprocmask via PLT to prevent
R_386_PC32 relocations, which had to change the text segment. Other
architectures do this automatically.
--- src/lib/libc/sys/sys/cdefs.h
+++ src/lib/libc/sys/sys/cdefs.h
@@ -447,7 +447,7 @@
#if __GNUC_PREREQ__(4, 0)
#define __null_sentinel __attribute__((__sentinel__))
#define __exported __attribute__((__visibility__("default")))
-#define __hidden __attribute__((__visibility__("hidden")))
+#define __hidden
#else
#define __null_sentinel
#define __exported
--- src/lib/libc/lib/libc/i386/gen/setjmp.S
+++ src/lib/libc/lib/libc/i386/gen/setjmp.S
@@ -54,7 +54,7 @@
pushl %eax /* (sigset_t*)oset */
pushl $0 /* (sigset_t*)set */
pushl $1 /* SIG_BLOCK */
- call __libc_sigprocmask
+ call __i386_libc_sigprocmask
addl $12,%esp
movl 4(%esp),%ecx
movl 0(%esp),%edx
@@ -76,7 +76,7 @@
leal 28(%edx), %eax
pushl %eax /* (sigset_t*)set */
pushl $3 /* SIG_SETMASK */
- call __libc_sigprocmask
+ call __i386_libc_sigprocmask
addl $12,%esp
movl 4(%esp),%edx
movl 8(%esp),%eax
--- src/lib/libc/lib/libc/i386/gen/sigsetjmp.S
+++ src/lib/libc/lib/libc/i386/gen/sigsetjmp.S
@@ -63,7 +63,7 @@
pushl %eax /* (sigset_t*)oset */
pushl $0 /* (sigset_t*)set */
pushl $1 /* SIG_BLOCK */
- call __libc_sigprocmask
+ call __i386_libc_sigprocmask
addl $12,%esp
movl 4(%esp),%ecx
2: movl 0(%esp),%edx
@@ -87,7 +87,7 @@
leal 28(%edx), %eax
pushl %eax /* (sigset_t*)set */
pushl $3 /* SIG_SETMASK */
- call __libc_sigprocmask
+ call __i386_libc_sigprocmask
addl $12,%esp
movl 4(%esp),%edx
2: movl 8(%esp),%eax

111
overlay/libc/default.nix

@ -0,0 +1,111 @@
# SPDX-FileCopyrightText: Emery Hemingway
#
# SPDX-License-Identifier: LicenseRef-Hippocratic-1.1
{ stdenv, fetchgit, fetchurl, genodeHeaders, bison, flex, glibc, writeText }:
let
archInfo = with stdenv.hostPlatform;
if isAarch32 then {
inherit isArm isAarch32;
} else if isAarch64 then {
inherit isArm isAarch64;
} else if isx86_32 then {
inherit isx86 isx86_32;
} else if isx86_64 then {
inherit isx86 isx86_64;
} else
{ };
in stdenv.mkDerivation (archInfo // {
pname = "libgenode";
version = "19.11";
inherit genodeHeaders;
depsBuildBuild = [
bison
flex
glibc # provides rpcgen
];
src = fetchurl {
url =
"http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/12.0-RELEASE/src.txz";
sha256 = "0da393ac2174168a71c1c527d1453e07372295187d05c288250800cb152a889b";
};
unpackPhase = "tar xf $src $tarFlags";
tarFlags = [
"--strip-components=2"
"usr/src/contrib/gdtoa"
"usr/src/contrib/libc-vis"
"usr/src/contrib/tzcode/stdtime"
"usr/src/include"
"usr/src/lib/libc"
"usr/src/lib/msun"
"usr/src/sys/amd64"
"usr/src/sys/arm"
"usr/src/sys/arm64"
"usr/src/sys/bsm"
"usr/src/sys/crypto/chacha20"
"usr/src/sys/i386"
"usr/src/sys/libkern"
"usr/src/sys/net"
"usr/src/sys/netinet"
"usr/src/sys/netinet6"
"usr/src/sys/riscv"
"usr/src/sys/rpc"
"usr/src/sys/sys"
"usr/src/sys/vm"
"usr/src/sys/x86"
];
patches = [
./cdefs_no_hidden.patch
./_CurrentRuneLocale.patch
./gdtoa.patch
./log2.patch
./MB_CUR_MAX.patch
./mktime.patch
./printfcommon.patch
./rcmd.patch
./res_init_c.patch
./runetype.patch
./semaphore.patch
./thread_local.patch
./types.patch
./vfwprintf_c_warn.patch
./xlocale.patch
./xlocale_private.patch
./xprintf_float.patch
];
patchFlags = "-p0 --strip 3";
genodeRelLd = "${genodeHeaders}/ld/genode_rel.ld";
genodePrgPcIn = ./genode-prg.pc.in;
libcSymbols = ./libc.symbols;
ldSymbols = ./ld.symbols;
linkerLd = ./linker.ld;
vfsSymbols = ./vfs.symbols;
builder = writeText "builder.sh" ''
source $stdenv/setup
export includedir=$out/include
export pkgconfigdir=$out/lib/pkgconfig
export lddir=${genodeHeaders}/ld
mkdir -p $pkgconfigdir $out/lib
source ${./libc-builder.sh}
substituteAll ${./libc.pc.in} $pkgconfigdir/libc.pc
substituteAll ${./vfs.pc.in} $pkgconfigdir/vfs.pc
substituteAll ${./genode-prg.pc.in} $pkgconfigdir/genode-prg.pc
ln -s $out/lib/libc.lib.so $out/lib/libc.so
'';
})

43
overlay/libc/gdtoa.patch

@ -0,0 +1,43 @@
--- src/lib/libc/contrib/gdtoa/gdtoaimp.h.orig 2019-04-16 11:11:02.420833030 +0200
+++ src/lib/libc/contrib/gdtoa/gdtoaimp.h 2019-04-16 11:11:17.704278981 +0200
@@ -506,40 +506,6 @@
#define Bcopy(x,y) memcpy(&x->sign,&y->sign,y->wds*sizeof(ULong) + 2*sizeof(int))
#endif /* NO_STRING_H */
-/*
- * Paranoia: Protect exported symbols, including ones in files we don't
- * compile right now. The standard strtof and strtod survive.
- */
-#define dtoa __dtoa
-#define gdtoa __gdtoa
-#define freedtoa __freedtoa
-#define strtodg __strtodg
-#define g_ddfmt __g_ddfmt
-#define g_dfmt __g_dfmt
-#define g_ffmt __g_ffmt
-#define g_Qfmt __g_Qfmt
-#define g_xfmt __g_xfmt
-#define g_xLfmt __g_xLfmt
-#define strtoId __strtoId
-#define strtoIdd __strtoIdd
-#define strtoIf __strtoIf
-#define strtoIQ __strtoIQ
-#define strtoIx __strtoIx
-#define strtoIxL __strtoIxL
-#define strtord_l __strtord_l
-#define strtordd __strtordd
-#define strtorf __strtorf
-#define strtorQ_l __strtorQ_l
-#define strtorx_l __strtorx_l
-#define strtorxL __strtorxL
-#define strtodI __strtodI
-#define strtopd __strtopd
-#define strtopdd __strtopdd
-#define strtopf __strtopf
-#define strtopQ __strtopQ
-#define strtopx __strtopx
-#define strtopxL __strtopxL
-
/* Protect gdtoa-internal symbols */
#define Balloc __Balloc_D2A
#define Bfree __Bfree_D2A

7
overlay/libc/genode-prg.pc.in

@ -0,0 +1,7 @@
lddir=@lddir@
Name: genode-prg
Description: Flags for dynamically-linked Genode programs
URL: https://genode.org/
Version: @version@
Libs: -gc-sections -z max-page-size=0x1000 --dynamic-list=${lddir}/genode_dyn.dl -nostdlib -Ttext=0x01000000 --dynamic-linker=ld.lib.so --eh-frame-hdr -rpath-link=. -T${lddir}/genode_dyn.ld -l:ld.lib.so

662
overlay/libc/ld.symbols

@ -0,0 +1,662 @@
#
# \brief Genode application binary interface (ABI)
# \author Norman Feske
# \date 2016-12-20
#
# This file contains the binary application interface (ABI) provided by
# Genode's dynamic linker. Each line contains the name of a symbol followed
# by its type (according to the encoding used by binutil's 'nm' tool). Data
# symbols are furher annotated by the size of their corresponding data object.
# The latter is only needed on ARM.
#
# On the ARM architecture, copy relocations are created for read-only data
# objects that are present in shared libraries. For each data object, the
# linker preserves a slot in the program's BSS according to the object size.
# At runtime, the dynamic linker copies the data from the shared library's
# read-only segment to these slots. The copy relocations for a given binary
# can be inspected via 'objdump -R'. The size of data symbols as present in a
# shared library (like 'ld-hw.lib.a') can be inspected via 'nm --format posix'.
# The data-object sizes as annotated here must always be at least as big as the
# corresponding data objects present in the dynamic linker.
#
# The original version of this file is based on the output of the
# 'tool/abi_symbols' tool with 'ld-<platform>.lib.so' used as argument.
# However, this tool was solely used as a starting point for the - now
# manually maintained - file.
#
# Note that not all symbols present in this list are provided by each variant
# of the dynamic linker. I.e., there are a few symbols that are specific for a
# particular kernel or the C++ ABI of a specific architecture.
#
# Please keep the file sorted via 'LC_COLLATE=C sort'.
#
#
# Copyright (C) 2016-2019 Genode Labs GmbH
#
# This file is part of the Genode OS framework, which is distributed
# under the terms of the GNU Affero General Public License version 3.
#
_Unwind_Complete T
_Unwind_DeleteException T
_Unwind_Resume T
_Z11genode_exiti T
_Z13genode_atexitPFvvE T
_Z16main_thread_utcbv T
_Z21genode___cxa_finalizePv T
_Z22__ldso_raise_exceptionv T
_ZN5Timer10Connection16schedule_timeoutEN6Genode12MicrosecondsERNS1_11Time_source15Timeout_handlerE T
_ZN5Timer10Connection18_schedule_one_shotERN6Genode7TimeoutENS1_12MicrosecondsE T
_ZN5Timer10Connection18_schedule_periodicERN6Genode7TimeoutENS1_12MicrosecondsE T
_ZN5Timer10Connection8_discardERN6Genode7TimeoutE T
_ZN5Timer10Connection9curr_timeEv T
_ZN5Timer10ConnectionC1ERN6Genode3EnvEPKc T
_ZN5Timer10ConnectionC2ERN6Genode3EnvEPKc T
_ZN5Timer10ConnectionC1ERN6Genode3EnvERNS1_10EntrypointEPKc T
_ZN5Timer10ConnectionC2ERN6Genode3EnvERNS1_10EntrypointEPKc T
_ZN6Genode10Entrypoint16_dispatch_signalERNS_6SignalE T
_ZN6Genode10Entrypoint16schedule_suspendEPFvvES2_ T
_ZN6Genode10Entrypoint22Signal_proxy_component6signalEv T
_ZN6Genode10Entrypoint25_process_incoming_signalsEv T
_ZN6Genode10Entrypoint32_wait_and_dispatch_one_io_signalEb T
_ZN6Genode10Entrypoint6manageERNS_22Signal_dispatcher_baseE T
_ZN6Genode10Entrypoint8dissolveERNS_22Signal_dispatcher_baseE T
_ZN6Genode10EntrypointC1ERNS_3EnvE T
_ZN6Genode10EntrypointC1ERNS_3EnvEmPKcNS_8Affinity8LocationE T
_ZN6Genode10EntrypointC2ERNS_3EnvEmPKcNS_8Affinity8LocationE T
_ZN6Genode10EntrypointD1Ev T
_ZN6Genode10EntrypointD2Ev T
_ZN6Genode10Ipc_serverC1Ev T
_ZN6Genode10Ipc_serverC2Ev T
_ZN6Genode10Ipc_serverD1Ev T
_ZN6Genode10Ipc_serverD2Ev T
_ZN6Genode10Vm_sessionD0Ev T
_ZN6Genode10Vm_sessionD2Ev T
_ZN6Genode11Sliced_heap4freeEPvm T
_ZN6Genode11Sliced_heap5allocEmPPv T
_ZN6Genode11Sliced_heapC1ERNS_13Ram_allocatorERNS_10Region_mapE T
_ZN6Genode11Sliced_heapC2ERNS_13Ram_allocatorERNS_10Region_mapE T
_ZN6Genode11Sliced_heapD0Ev T
_ZN6Genode11Sliced_heapD1Ev T
_ZN6Genode11Sliced_heapD2Ev T
_ZN6Genode12Address_infoC1Em T
_ZN6Genode12Address_infoC2Em T
_ZN6Genode12Trace_output12trace_outputEv T
_ZN6Genode12Trace_output8_acquireEv T
_ZN6Genode12Trace_output8_releaseEv T
_ZN6Genode13Avl_node_base15_rotate_subtreeEPS0_bRNS0_6PolicyE T
_ZN6Genode13Avl_node_base18_rebalance_subtreeEPS0_RNS0_6PolicyE T
_ZN6Genode13Avl_node_base6_adoptEPS0_bRNS0_6PolicyE T
_ZN6Genode13Avl_node_base6insertEPS0_RNS0_6PolicyE T
_ZN6Genode13Avl_node_base6removeERNS0_6PolicyE T
_ZN6Genode13Avl_node_baseC1Ev T
_ZN6Genode13Avl_node_baseC2Ev T
_ZN6Genode13Registry_base7ElementC1ERS0_Pv T
_ZN6Genode13Registry_base7ElementC2ERS0_Pv T
_ZN6Genode13Registry_base7ElementD1Ev T
_ZN6Genode13Registry_base7ElementD2Ev T
_ZN6Genode13Registry_base7_insertERNS0_7ElementE T
_ZN6Genode13Registry_base7_removeERNS0_7ElementE T
_ZN6Genode13Registry_base9_for_eachERNS0_15Untyped_functorE T
_ZN6Genode13Session_state7destroyEv T
_ZN6Genode13Session_stateC1ERNS_7ServiceERNS_8Id_spaceINS_6Parent6ClientEEENS6_2IdERKNS_13Session_labelERKNS_6StringILm256EEERKNS_8AffinityE T
_ZN6Genode13Session_stateC2ERNS_7ServiceERNS_8Id_spaceINS_6Parent6ClientEEENS6_2IdERKNS_13Session_labelERKNS_6StringILm256EEERKNS_8AffinityE T
_ZN6Genode13Shared_objectC1ERNS_3EnvERNS_9AllocatorEPKcNS0_4BindENS0_4KeepE T
_ZN6Genode13Shared_objectC2ERNS_3EnvERNS_9AllocatorEPKcNS0_4BindENS0_4KeepE T
_ZN6Genode13Shared_objectD1Ev T
_ZN6Genode13Shared_objectD2Ev T
_ZN6Genode13sleep_foreverEv T
_ZN6Genode14Capability_map6insertEmm T
_ZN6Genode14Dynamic_linker23_for_each_loaded_objectERNS_3EnvERKNS0_11For_each_fnE T
_ZN6Genode14Dynamic_linker4keepERNS_3EnvEPKc T
_ZN6Genode14Dynamic_linker8_respawnERNS_3EnvEPKcS4_ T
_ZN6Genode14Rpc_entrypoint13_free_rpc_capERNS_10Pd_sessionENS_17Native_capabilityE T
_ZN6Genode14Rpc_entrypoint14_alloc_rpc_capERNS_10Pd_sessionENS_17Native_capabilityEm T
_ZN6Genode14Rpc_entrypoint17_activation_entryEv T
_ZN6Genode14Rpc_entrypoint17reply_signal_infoENS_17Native_capabilityEmm T
_ZN6Genode14Rpc_entrypoint22_block_until_cap_validEv T
_ZN6Genode14Rpc_entrypoint5entryEv T
_ZN6Genode14Rpc_entrypoint7_manageEPNS_15Rpc_object_baseE T
_ZN6Genode14Rpc_entrypoint8activateEv T
_ZN6Genode14Rpc_entrypoint9_dissolveEPNS_15Rpc_object_baseE T
_ZN6Genode14Rpc_entrypointC1EPNS_10Pd_sessionEmPKcbNS_8Affinity8LocationE T
_ZN6Genode14Rpc_entrypointC2EPNS_10Pd_sessionEmPKcbNS_8Affinity8LocationE T
_ZN6Genode14Rpc_entrypointD0Ev T
_ZN6Genode14Rpc_entrypointD1Ev T
_ZN6Genode14Rpc_entrypointD2Ev T
_ZN6Genode14Signal_contextD0Ev T
_ZN6Genode14Signal_contextD1Ev T
_ZN6Genode14Signal_contextD2Ev T
_ZN6Genode14cache_coherentEmm T
_ZN6Genode14env_deprecatedEv T
_ZN6Genode14ipc_reply_waitERKNS_17Native_capabilityENS_18Rpc_exception_codeERNS_11Msgbuf_baseES5_ T
_ZN6Genode15Alarm_scheduler12_setup_alarmERNS_5AlarmEmm T
_ZN6Genode15Alarm_scheduler13next_deadlineEPm T
_ZN6Genode15Alarm_scheduler17schedule_absoluteEPNS_5AlarmEy T
_ZN6Genode15Alarm_scheduler18_get_pending_alarmEv T
_ZN6Genode15Alarm_scheduler23_unsynchronized_dequeueEPNS_5AlarmE T
_ZN6Genode15Alarm_scheduler23_unsynchronized_enqueueEPNS_5AlarmE T
_ZN6Genode15Alarm_scheduler6handleEy T
_ZN6Genode15Alarm_scheduler7discardEPNS_5AlarmE T
_ZN6Genode15Alarm_scheduler8scheduleEPNS_5AlarmEm T
_ZN6Genode15Alarm_schedulerD1Ev T
_ZN6Genode15Alarm_schedulerD2Ev T
_ZN6Genode15Cancelable_lock4lockEv T
_ZN6Genode15Cancelable_lock6unlockEv T
_ZN6Genode15Cancelable_lock9Applicant7wake_upEv T
_ZN6Genode15Cancelable_lockC1ENS0_5StateE T
_ZN6Genode15Cancelable_lockC2ENS0_5StateE T
_ZN6Genode15Connection_baseC1Ev T
_ZN6Genode15Connection_baseC2Ev T
_ZN6Genode15Signal_receiver12local_submitENS_6Signal4DataE T
_ZN6Genode15Signal_receiver14pending_signalEv T
_ZN6Genode15Signal_receiver15wait_for_signalEv T
_ZN6Genode15Signal_receiver16block_for_signalEv T
_ZN6Genode15Signal_receiver6manageEPNS_14Signal_contextE T
_ZN6Genode15Signal_receiver8dissolveEPNS_14Signal_contextE T
_ZN6Genode15Signal_receiverC1Ev T
_ZN6Genode15Signal_receiverC2Ev T
_ZN6Genode15Signal_receiverD1Ev T
_ZN6Genode15Signal_receiverD2Ev T
_ZN6Genode16raw_write_stringEPKc T
_ZN6Genode17Native_capability4_decEv T
_ZN6Genode17Native_capability4_incEv T
_ZN6Genode17Native_capabilityC1Ev T
_ZN6Genode17Native_capabilityC2Ev T
_ZN6Genode17Region_map_client13fault_handlerENS_10CapabilityINS_14Signal_contextEEE T
_ZN6Genode17Region_map_client5stateEv T
_ZN6Genode17Region_map_client6attachENS_10CapabilityINS_9DataspaceEEEmlbNS_10Region_map10Local_addrEbb T
_ZN6Genode17Region_map_client6detachENS_10Region_map10Local_addrE T
_ZN6Genode17Region_map_client9dataspaceEv T
_ZN6Genode17Region_map_clientC1ENS_10CapabilityINS_10Region_mapEEE T
_ZN6Genode17Region_map_clientC2ENS_10CapabilityINS_10Region_mapEEE T
_ZN6Genode17Rm_session_client6createEm T
_ZN6Genode17Rm_session_client7destroyENS_10CapabilityINS_10Region_mapEEE T
_ZN6Genode17Rm_session_clientC1ENS_10CapabilityINS_10Rm_sessionEEE T
_ZN6Genode17Rm_session_clientC2ENS_10CapabilityINS_10Rm_sessionEEE T
_ZN6Genode17Vm_session_client11create_vcpuERNS_9AllocatorERNS_3EnvERNS_15Vm_handler_baseE T
_ZN6Genode17Vm_session_client3runENS_10Vm_session7Vcpu_idE T
_ZN6Genode17Vm_session_client5pauseENS_10Vm_session7Vcpu_idE T
_ZN6Genode17Vm_session_client9cpu_stateENS_10Vm_session7Vcpu_idE T
_ZN6Genode18Allocator_avl_base10_add_blockEPNS0_5BlockEmmb T
_ZN6Genode18Allocator_avl_base10alloc_addrEmm T
_ZN6Genode18Allocator_avl_base12remove_rangeEmm T
_ZN6Genode18Allocator_avl_base13alloc_alignedEmPPvimm T
_ZN6Genode18Allocator_avl_base14_destroy_blockEPNS0_5BlockE T
_ZN6Genode18Allocator_avl_base14any_block_addrEPm T
_ZN6Genode18Allocator_avl_base15_cut_from_blockEPNS0_5BlockEmmS2_S2_ T
_ZN6Genode18Allocator_avl_base20_find_any_used_blockEPNS0_5BlockE T
_ZN6Genode18Allocator_avl_base21_alloc_block_metadataEv T
_ZN6Genode18Allocator_avl_base26_alloc_two_blocks_metadataEPPNS0_5BlockES3_ T
_ZN6Genode18Allocator_avl_base30_revert_allocations_and_rangesEv T
_ZN6Genode18Allocator_avl_base4freeEPv T
_ZN6Genode18Allocator_avl_base5Block13find_best_fitEmjmm T
_ZN6Genode18Allocator_avl_base5Block15find_by_addressEmmb T
_ZN6Genode18Allocator_avl_base5Block16avail_in_subtreeEv T
_ZN6Genode18Allocator_avl_base5Block9recomputeEv T
_ZN6Genode18Allocator_avl_base9add_rangeEmm T
_ZN6Genode18Signal_transmitter6submitEj T
_ZN6Genode18Signal_transmitter7contextENS_10CapabilityINS_14Signal_contextEEE T
_ZN6Genode18Signal_transmitter7contextEv T
_ZN6Genode18Signal_transmitterC1ENS_10CapabilityINS_14Signal_contextEEE T
_ZN6Genode18Signal_transmitterC2ENS_10CapabilityINS_14Signal_contextEEE T
_ZN6Genode18server_socket_pairEv T
_ZN6Genode20env_session_id_spaceEv T
_ZN6Genode23Alarm_timeout_scheduler14handle_timeoutENS_8DurationE T
_ZN6Genode23Alarm_timeout_scheduler18_schedule_one_shotERNS_7TimeoutENS_12MicrosecondsE T
_ZN6Genode23Alarm_timeout_scheduler18_schedule_periodicERNS_7TimeoutENS_12MicrosecondsE T
_ZN6Genode23Alarm_timeout_scheduler7_enableEv T
_ZN6Genode23Alarm_timeout_schedulerC1ERNS_11Time_sourceENS_12MicrosecondsE T
_ZN6Genode23Alarm_timeout_schedulerC2ERNS_11Time_sourceENS_12MicrosecondsE T
_ZN6Genode23Alarm_timeout_schedulerD0Ev T
_ZN6Genode23Alarm_timeout_schedulerD1Ev T
_ZN6Genode23Alarm_timeout_schedulerD2Ev T
_ZN6Genode25env_stack_area_region_mapE B 8
_ZN6Genode28env_stack_area_ram_allocatorE B 8
_ZN6Genode3Log3logEv T
_ZN6Genode3Log8_acquireENS0_4TypeE T
_ZN6Genode3Log8_releaseEv T
_ZN6Genode3Raw7_outputEv T
_ZN6Genode3Raw8_acquireEv T
_ZN6Genode3Raw8_releaseEv T
_ZN6Genode4Heap11quota_limitEm T
_ZN6Genode4Heap4freeEPvm T
_ZN6Genode4Heap5allocEmPPv T
_ZN6Genode4HeapC1EPNS_13Ram_allocatorEPNS_10Region_mapEmPvm T
_ZN6Genode4HeapC2EPNS_13Ram_allocatorEPNS_10Region_mapEmPvm T
_ZN6Genode4HeapD0Ev T
_ZN6Genode4HeapD1Ev T
_ZN6Genode4HeapD2Ev T
_ZN6Genode4Slab13any_used_elemEv T
_ZN6Genode4Slab5Block11_slab_entryEi T
_ZN6Genode4Slab5Block14any_used_entryEv T
_ZN6Genode4Slab5Block5allocEv T
_ZN6Genode4Slab5Block9inc_availERNS0_5EntryE T
_ZN6Genode4Slab5_freeEPv T
_ZN6Genode4Slab5allocEmPPv T
_ZN6Genode4Slab9insert_sbEPv T
_ZN6Genode4SlabC1EmmPvPNS_9AllocatorE T
_ZN6Genode4SlabC2EmmPvPNS_9AllocatorE T
_ZN6Genode4SlabD0Ev T
_ZN6Genode4SlabD1Ev T
_ZN6Genode4SlabD2Ev T
_ZN6Genode5AlarmD0Ev T
_ZN6Genode5AlarmD1Ev T
_ZN6Genode5AlarmD2Ev T
_ZN6Genode5Child10yield_sighENS_10CapabilityINS_14Signal_contextEEE T
_ZN6Genode5Child11session_capENS_8Id_spaceINS_6Parent6ClientEE2IdE T
_ZN6Genode5Child12session_sighENS_10CapabilityINS_14Signal_contextEEE T
_ZN6Genode5Child13session_readyERNS_13Session_stateE T
_ZN6Genode5Child13yield_requestEv T
_ZN6Genode5Child14session_closedERNS_13Session_stateE T
_ZN6Genode5Child14yield_responseEv T
_ZN6Genode5Child16resource_requestERKNS_6StringILm160EEE T
_ZN6Genode5Child16session_responseENS_8Id_spaceINS_6Parent6ServerEE2IdENS2_16Session_responseE T
_ZN6Genode5Child18close_all_sessionsEv T
_ZN6Genode5Child19deliver_session_capENS_8Id_spaceINS_6Parent6ServerEE2IdENS_10CapabilityINS_7SessionEEE T
_ZN6Genode5Child19resource_avail_sighENS_10CapabilityINS_14Signal_contextEEE T
_ZN6Genode5Child21initiate_env_sessionsEv T
_ZN6Genode5Child23initiate_env_pd_sessionEv T
_ZN6Genode5Child4exitEi T
_ZN6Genode5Child5closeENS_8Id_spaceINS_6Parent6ClientEE2IdE T
_ZN6Genode5Child5yieldERKNS_6StringILm160EEE T
_ZN6Genode5Child7sessionENS_8Id_spaceINS_6Parent6ClientEE2IdERKNS_13Rpc_in_bufferILm64EEERKNS6_ILm160EEERKNS_8AffinityE T
_ZN6Genode5Child7upgradeENS_8Id_spaceINS_6Parent6ClientEE2IdERKNS_13Rpc_in_bufferILm160EEE T
_ZN6Genode5Child8announceERKNS_13Rpc_in_bufferILm64EEE T
_ZN6Genode5Child9heartbeatEv T
_ZN6Genode5ChildC1ERNS_10Region_mapERNS_14Rpc_entrypointERNS_12Child_policyE T
_ZN6Genode5ChildC2ERNS_10Region_mapERNS_14Rpc_entrypointERNS_12Child_policyE T
_ZN6Genode5ChildD0Ev T
_ZN6Genode5ChildD1Ev T
_ZN6Genode5ChildD2Ev T
_ZN6Genode5Stack4sizeEm T
_ZN6Genode5Trace6Logger17_evaluate_controlEv T
_ZN6Genode5Trace6Logger3logEPKcm T
_ZN6Genode5Trace6LoggerC1Ev T
_ZN6Genode5Trace6LoggerC2Ev T
_ZN6Genode5printERNS_6OutputEPKc T
_ZN6Genode5printERNS_6OutputEPKv T
_ZN6Genode5printERNS_6OutputEd T
_ZN6Genode5printERNS_6OutputEf T
_ZN6Genode5printERNS_6OutputEl T
_ZN6Genode5printERNS_6OutputEm T
_ZN6Genode5printERNS_6OutputEx T
_ZN6Genode5printERNS_6OutputEy T
_ZN6Genode6Output10out_stringEPKcm T
_ZN6Genode6Parent8announceERKNS_13Rpc_in_bufferILm64EEENS_10CapabilityINS_4RootEEE T
_ZN6Genode6Signal19_dec_ref_and_unlockEv T
_ZN6Genode6Signal8_inc_refEv T
_ZN6Genode6SignalC1ENS0_4DataE T
_ZN6Genode6SignalC1ERKS0_ T
_ZN6Genode6SignalC2ENS0_4DataE T
_ZN6Genode6SignalC2ERKS0_ T
_ZN6Genode6SignalD1Ev T
_ZN6Genode6SignalD2Ev T
_ZN6Genode6SignalaSERKS0_ T
_ZN6Genode6Thread10stack_sizeEm T
_ZN6Genode6Thread13native_threadEv T
_ZN6Genode6Thread15cancel_blockingEv T
_ZN6Genode6Thread18stack_virtual_sizeEv T
_ZN6Genode6Thread20free_secondary_stackEPv T
_ZN6Genode6Thread21alloc_secondary_stackEPKcm T
_ZN6Genode6Thread23stack_area_virtual_baseEv T
_ZN6Genode6Thread23stack_area_virtual_sizeEv T
_ZN6Genode6Thread4joinEv T
_ZN6Genode6Thread4nameEPcm T
_ZN6Genode6Thread4utcbEv T
_ZN6Genode6Thread5startEv T
_ZN6Genode6Thread6myselfEv T
_ZN6Genode6Thread7_loggerEv T
_ZN6Genode6Thread7mystackEv T
_ZN6Genode6ThreadC1ERNS_3EnvERKNS_6StringILm32EEEm T
_ZN6Genode6ThreadC1ERNS_3EnvERKNS_6StringILm32EEEmNS_8Affinity8LocationENS_11Cpu_session6WeightERS9_ T
_ZN6Genode6ThreadC1EmPKcmNS0_4TypeENS_8Affinity8LocationE T
_ZN6Genode6ThreadC1EmPKcmNS0_4TypeEPNS_11Cpu_sessionENS_8Affinity8LocationE T
_ZN6Genode6ThreadC2ERNS_3EnvERKNS_6StringILm32EEEm T
_ZN6Genode6ThreadC2ERNS_3EnvERKNS_6StringILm32EEEmNS_8Affinity8LocationENS_11Cpu_session6WeightERS9_ T
_ZN6Genode6ThreadC2EmPKcmNS0_4TypeENS_8Affinity8LocationE T
_ZN6Genode6ThreadC2EmPKcmNS0_4TypeEPNS_11Cpu_sessionENS_8Affinity8LocationE T
_ZN6Genode6ThreadD0Ev T
_ZN6Genode6ThreadD1Ev T
_ZN6Genode6ThreadD2Ev T
_ZN6Genode7Console11_out_stringEPKc T
_ZN6Genode7Console6printfEPKcz T
_ZN6Genode7Console7vprintfEPKcP13__va_list_tag T
_ZN6Genode7Console7vprintfEPKcPc T
_ZN6Genode7Console7vprintfEPKcPv T
_ZN6Genode7Console7vprintfEPKcSt9__va_list T
_ZN6Genode7Timeout17schedule_one_shotENS_12MicrosecondsERNS0_7HandlerE T
_ZN6Genode7Timeout17schedule_periodicENS_12MicrosecondsERNS0_7HandlerE T
_ZN6Genode7Timeout5AlarmD0Ev T
_ZN6Genode7Timeout5AlarmD1Ev T
_ZN6Genode7Timeout5AlarmD2Ev T
_ZN6Genode7Timeout7discardEv T
_ZN6Genode7cap_mapEv T
_ZN6Genode8Duration3addENS_12MicrosecondsE T
_ZN6Genode8Duration3addENS_12MillisecondsE T
_ZN6Genode8ipc_callENS_17Native_capabilityERNS_11Msgbuf_baseES2_m T
_ZN6Genode9ipc_replyENS_17Native_capabilityENS_18Rpc_exception_codeERNS_11Msgbuf_baseE T
_ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj T
_ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE T
_ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE T
_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_ T
_ZNK6Genode11Sliced_heap8overheadEm T
_ZNK6Genode13Session_state24generate_session_requestERNS_13Xml_generatorE T
_ZNK6Genode13Session_state25generate_client_side_infoERNS_13Xml_generatorENS0_6DetailE T
_ZNK6Genode13Session_state25generate_server_side_infoERNS_13Xml_generatorENS0_6DetailE T
_ZNK6Genode13Session_state5printERNS_6OutputE T
_ZNK6Genode13Shared_object7_lookupEPKc T
_ZNK6Genode13Shared_object8link_mapEv T
_ZNK6Genode14Rpc_entrypoint9is_myselfEv T
_ZNK6Genode17Native_capability10local_nameEv T
_ZNK6Genode17Native_capability3rawEv T
_ZNK6Genode17Native_capability5printERNS_6OutputE T
_ZNK6Genode17Native_capability5validEv T
_ZNK6Genode18Allocator_avl_base10valid_addrEm T
_ZNK6Genode18Allocator_avl_base5availEv T
_ZNK6Genode18Allocator_avl_base7size_atEPKv T
_ZNK6Genode3Hex5printERNS_6OutputE T
_ZNK6Genode4Slab8consumedEv T
_ZNK6Genode5Child15main_thread_capEv T
_ZNK6Genode5Child18skipped_heartbeatsEv T
_ZNK6Genode5Child21notify_resource_availEv T
_ZNK6Genode6Thread10stack_baseEv T
_ZNK6Genode6Thread4nameEv T
_ZNK6Genode6Thread9stack_topEv T
_ZNK6Genode8Duration17trunc_to_plain_msEv T
_ZNK6Genode8Duration17trunc_to_plain_usEv T
_ZNK6Genode8Duration9less_thanERKS0_ T
_ZNKSt13bad_exception4whatEv T
_ZNKSt9exception4whatEv T
_ZNSt13bad_exceptionD0Ev T
_ZNSt13bad_exceptionD1Ev T
_ZNSt13bad_exceptionD2Ev T
_ZNSt9exceptionD0Ev T
_ZNSt9exceptionD1Ev T
_ZNSt9exceptionD2Ev T
_ZSt18uncaught_exceptionv T
_ZSt19uncaught_exceptionsv T
_ZSt9terminatev T
_ZTIDd D 16
_ZTIDe D 16
_ZTIDf D 16
_ZTIDi D 16
_ZTIDn D 16
_ZTIDs D 16
_ZTIN10__cxxabiv115__forced_unwindE D 16
_ZTIN10__cxxabiv116__enum_type_infoE D 24
_ZTIN10__cxxabiv117__class_type_infoE D 24
_ZTIN10__cxxabiv117__pbase_type_infoE D 24
_ZTIN10__cxxabiv119__foreign_exceptionE D 16
_ZTIN10__cxxabiv119__pointer_type_infoE D 24
_ZTIN10__cxxabiv120__function_type_infoE D 24
_ZTIN10__cxxabiv120__si_class_type_infoE D 24
_ZTIN10__cxxabiv121__vmi_class_type_infoE D 24
_ZTIN10__cxxabiv123__fundamental_type_infoE D 24
_ZTIN5Timer10ConnectionE D 88
_ZTIN6Genode10Vm_sessionE D 24
_ZTIN6Genode11Sliced_heapE D 24
_ZTIN6Genode14Rpc_entrypointE D 56
_ZTIN6Genode14Signal_contextE D 56
_ZTIN6Genode17Region_map_clientE D 24
_ZTIN6Genode17Rm_session_clientE D 24
_ZTIN6Genode18Allocator_avl_baseE D 24
_ZTIN6Genode23Alarm_timeout_schedulerE D 72
_ZTIN6Genode4HeapE D 24
_ZTIN6Genode4SlabE D 24
_ZTIN6Genode5AlarmE D 16
_ZTIN6Genode5Child14Initial_threadE D 24
_ZTIN6Genode5ChildE D 72
_ZTIN6Genode6OutputE D 24
_ZTIN6Genode6ThreadE D 16
_ZTIN6Genode7ConsoleE D 16
_ZTIN6Genode7Timeout5AlarmE D 16
_ZTIPDd D 32
_ZTIPDe D 32
_ZTIPDf D 32
_ZTIPDi D 32
_ZTIPDn D 32
_ZTIPDs D 32
_ZTIPKDd D 32
_ZTIPKDe D 32
_ZTIPKDf D 32
_ZTIPKDi D 32
_ZTIPKDn D 32
_ZTIPKDs D 32
_ZTIPKa D 32
_ZTIPKb D 32
_ZTIPKc D 32
_ZTIPKd D 32
_ZTIPKe D 32
_ZTIPKf D 32
_ZTIPKh D 32
_ZTIPKi D 32
_ZTIPKj D 32
_ZTIPKl D 32
_ZTIPKm D 32
_ZTIPKs D 32
_ZTIPKt D 32
_ZTIPKx D 32
_ZTIPKy D 32
_ZTIPVKa D 32
_ZTIPVKb D 32
_ZTIPVKc D 32
_ZTIPVKd D 32
_ZTIPVKe D 32
_ZTIPVKf D 32
_ZTIPVKh D 32
_ZTIPVKi D 32
_ZTIPVKj D 32
_ZTIPVKl D 32
_ZTIPVKm D 32
_ZTIPVKs D 32
_ZTIPVKt D 32
_ZTIPVKx D 32
_ZTIPVKy D 32
_ZTIPVa D 32
_ZTIPVb D 32
_ZTIPVc D 32
_ZTIPVd D 32
_ZTIPVe D 32
_ZTIPVf D 32
_ZTIPVh D 32
_ZTIPVi D 32
_ZTIPVj D 32
_ZTIPVl D 32
_ZTIPVm D 32
_ZTIPVs D 32
_ZTIPVt D 32
_ZTIPVx D 32
_ZTIPVy D 32
_ZTIPa D 32
_ZTIPb D 32
_ZTIPc D 32
_ZTIPd D 32
_ZTIPe D 32
_ZTIPf D 32
_ZTIPh D 32
_ZTIPi D 32
_ZTIPj D 32
_ZTIPl D 32
_ZTIPm D 32
_ZTIPs D 32
_ZTIPt D 32
_ZTIPx D 32
_ZTIPy D 32
_ZTISt10bad_typeid D 24
_ZTISt13bad_exception D 24
_ZTISt16bad_array_length D 24
_ZTISt20bad_array_new_length D 24
_ZTISt8bad_cast D 24
_ZTISt9bad_alloc D 24
_ZTISt9exception D 16
_ZTISt9type_info D 16
_ZTIa D 32
_ZTIb D 32
_ZTIc D 32
_ZTId D 32
_ZTIe D 32
_ZTIf D 32
_ZTIh D 32
_ZTIi D 32
_ZTIj D 32
_ZTIl D 32
_ZTIm D 32
_ZTIs D 32
_ZTIt D 32
_ZTIx D 32
_ZTIy D 32
_ZTSN10__cxxabiv115__forced_unwindE R 32
_ZTSN10__cxxabiv116__enum_type_infoE R 33
_ZTSN10__cxxabiv117__class_type_infoE R 34
_ZTSN10__cxxabiv117__pbase_type_infoE R 34
_ZTSN10__cxxabiv119__foreign_exceptionE R 36
_ZTSN10__cxxabiv119__pointer_type_infoE R 36
_ZTSN10__cxxabiv120__function_type_infoE R 37
_ZTSN10__cxxabiv120__si_class_type_infoE R 37
_ZTSN10__cxxabiv121__vmi_class_type_infoE R 38
_ZTSN10__cxxabiv123__fundamental_type_infoE R 40
_ZTSN5Timer10ConnectionE R 21
_ZTSN6Genode11Sliced_heapE R 23
_ZTSN6Genode14Rpc_entrypointE R 26
_ZTSN6Genode14Signal_contextE R 26
_ZTSN6Genode17Region_map_clientE R 29
_ZTSN6Genode17Rm_session_clientE R 29
_ZTSN6Genode18Allocator_avl_baseE R 30
_ZTSN6Genode23Alarm_timeout_schedulerE R 35
_ZTSN6Genode4HeapE R 15
_ZTSN6Genode4SlabE R 15
_ZTSN6Genode5AlarmE R 16
_ZTSN6Genode5Child14Initial_threadE R 32
_ZTSN6Genode5ChildE R 16
_ZTSN6Genode6OutputE R 17
_ZTSN6Genode6ThreadE R 17
_ZTSN6Genode7ConsoleE R 18
_ZTSN6Genode7Timeout5AlarmE R 24
_ZTSSt10bad_typeid R 15
_ZTSSt13bad_exception R 18
_ZTSSt16bad_array_length R 21
_ZTSSt20bad_array_new_length R 25
_ZTSSt8bad_cast R 12
_ZTSSt9bad_alloc R 13
_ZTSSt9exception R 13
_ZTSSt9type_info R 13
_ZTVN10__cxxabiv115__forced_unwindE D 40
_ZTVN10__cxxabiv116__enum_type_infoE D 64
_ZTVN10__cxxabiv117__class_type_infoE D 88
_ZTVN10__cxxabiv117__pbase_type_infoE D 72
_ZTVN10__cxxabiv119__foreign_exceptionE D 40
_ZTVN10__cxxabiv119__pointer_type_infoE D 72
_ZTVN10__cxxabiv120__function_type_infoE D 64
_ZTVN10__cxxabiv120__si_class_type_infoE D 88
_ZTVN10__cxxabiv121__vmi_class_type_infoE D 88
_ZTVN10__cxxabiv123__fundamental_type_infoE D 64
_ZTVN5Timer10ConnectionE D 320
_ZTVN6Genode10Vm_sessionE D 56
_ZTVN6Genode11Sliced_heapE D 72
_ZTVN6Genode14Rpc_entrypointE D 80
_ZTVN6Genode14Signal_contextE D 32
_ZTVN6Genode17Region_map_clientE D 72
_ZTVN6Genode17Rm_session_clientE D 48
_ZTVN6Genode18Allocator_avl_baseE D 128
_ZTVN6Genode23Alarm_timeout_schedulerE D 112
_ZTVN6Genode4HeapE D 72
_ZTVN6Genode4SlabE D 72
_ZTVN6Genode5AlarmE D 40
_ZTVN6Genode5Child14Initial_threadE D 48
_ZTVN6Genode5ChildE D 440
_ZTVN6Genode6OutputE D 48
_ZTVN6Genode6ThreadE D 48
_ZTVN6Genode7ConsoleE D 48
_ZTVN6Genode7Timeout5AlarmE D 32
_ZTVSt10bad_typeid D 40
_ZTVSt13bad_exception D 40
_ZTVSt16bad_array_length D 40
_ZTVSt20bad_array_new_length D 40
_ZTVSt8bad_cast D 40
_ZTVSt9bad_alloc D 40
_ZTVSt9exception D 40
_ZTVSt9type_info D 64
_ZThn236_N5Timer10Connection16schedule_timeoutEN6Genode12MicrosecondsERNS1_11Time_source15Timeout_handlerE T
_ZThn236_N5Timer10Connection9curr_timeEv T
_ZThn240_N5Timer10Connection18_schedule_one_shotERN6Genode7TimeoutENS1_12MicrosecondsE T
_ZThn240_N5Timer10Connection18_schedule_periodicERN6Genode7TimeoutENS1_12MicrosecondsE T
_ZThn240_N5Timer10Connection8_discardERN6Genode7TimeoutE T
_ZThn240_N5Timer10Connection9curr_timeEv T
_ZThn288_N5Timer10Connection16schedule_timeoutEN6Genode12MicrosecondsERNS1_11Time_source15Timeout_handlerE T
_ZThn288_N5Timer10Connection9curr_timeEv T
_ZThn296_N5Timer10Connection18_schedule_one_shotERN6Genode7TimeoutENS1_12MicrosecondsE T
_ZThn296_N5Timer10Connection18_schedule_periodicERN6Genode7TimeoutENS1_12MicrosecondsE T
_ZThn296_N5Timer10Connection8_discardERN6Genode7TimeoutE T
_ZThn296_N5Timer10Connection9curr_timeEv T
_ZThn4_N6Genode23Alarm_timeout_scheduler14handle_timeoutENS_8DurationE T
_ZThn8_N6Genode23Alarm_timeout_scheduler14handle_timeoutENS_8DurationE T
_ZThn8_N6Genode23Alarm_timeout_schedulerD0Ev T
_ZThn8_N6Genode23Alarm_timeout_schedulerD1Ev T
_ZdlPv W
_ZdlPvPN6Genode11DeallocatorE T
_ZdlPvPN6Genode9AllocatorE W
_ZdlPvRN6Genode11DeallocatorE T
_ZdlPvRN6Genode9AllocatorE W
_ZdlPvm W
_ZnajPN6Genode9AllocatorE T
_ZnajRN6Genode9AllocatorE T
_ZnamPN6Genode9AllocatorE T
_ZnamRN6Genode9AllocatorE T
_ZnwjPN6Genode9AllocatorE T
_ZnwjRN6Genode9AllocatorE T
_ZnwmPN6Genode9AllocatorE T
_ZnwmRN6Genode9AllocatorE T
__aeabi_atexit T
__aeabi_unwind_cpp_pr0 T
__aeabi_unwind_cpp_pr1 T
__cxa_allocate_dependent_exception T
__cxa_allocate_exception T
__cxa_atexit T
__cxa_bad_cast T
__cxa_bad_typeid T
__cxa_begin_catch T
__cxa_begin_cleanup T
__cxa_call_terminate T
__cxa_call_unexpected T
__cxa_current_exception_type T
__cxa_demangle T
__cxa_end_catch T
__cxa_end_cleanup T
__cxa_finalize T
__cxa_free_dependent_exception T
__cxa_free_exception T
__cxa_get_exception_ptr T
__cxa_get_globals T
__cxa_get_globals_fast T
__cxa_guard_abort T
__cxa_guard_acquire T
__cxa_guard_release T
__cxa_pure_virtual T
__cxa_rethrow T
__cxa_throw T
__cxa_throw_bad_array_length T
__cxa_throw_bad_array_new_length T
__cxa_type_match T
__dynamic_cast T
__emutls_get_address T
__gxx_personality_v0 T
__stack_chk_fail W
__stack_chk_guard B 8
dl_iterate_phdr T
dl_unwind_find_exidx T
genode_argc D 4
genode_argv D 8
genode_envp B 8
longjmp W
lx_environ B 8
memcmp W
memcpy W
memmove W
memset W
setjmp W
stdout_reconnect T
strcmp W
strlen W
wait_for_continue T

298
overlay/libc/libc-builder.sh

@ -0,0 +1,298 @@
compileStub() {
sed \
-e "s/^\(\w\+\) D \(\w\+\)\$/.data; .global \1; .type \1,%object; .size \1,\2; \1: .skip 1/" \
-e "s/^\(\w\+\) V/.data; .weak \1; .type \1,%object; \1: .skip 1/" \
-e "s/^\(\w\+\) T/.text; .global \1; .type \1,%function; \1:/" \
-e "s/^\(\w\+\) R \(\w\+\)\$/.section .rodata; .global \1; .type \1,%object; .size \1,\2; \1:/" \
-e "s/^\(\w\+\) W/.text; .weak \1; .type \1,%function; \1:/" \
-e "s/^\(\w\+\) B \(\w\+\)\$/.bss; .global \1; .type \1,%object; .size \1,\2; \1:/" \
-e "s/^\(\w\+\) U/.text; .global \1; movq \1@GOTPCREL(%rip), %rax/" \
$1 > symbols.s
$CC -x assembler -c symbols.s -o tmp.o
$LD -o $2 \
-shared \
-T$genodeRelLd \
tmp.o
rm tmp.o symbols.s
}
compileLd() {
sed \
-e "s/^\(\w\+\) D \(\w\+\)\$/.data; .global \1; .type \1,%object; .size \1,\2; \1: .skip 1/" \
-e "s/^\(\w\+\) V/.data; .weak \1; .type \1,%object; \1: .skip 1/" \
-e "s/^\(\w\+\) T/.text; .global \1; .type \1,%function; \1:/" \
-e "s/^\(\w\+\) R \(\w\+\)\$/.section .rodata; .global \1; .type \1,%object; .size \1,\2; \1:/" \
-e "s/^\(\w\+\) W/.text; .weak \1; .type \1,%function; \1:/" \
-e "s/^\(\w\+\) B \(\w\+\)\$/.bss; .global \1; .type \1,%object; .size \1,\2; \1:/" \
-e "s/^\(\w\+\) U/.text; .global \1; movq \1@GOTPCREL(%rip), %rax/" \
< $ldSymbols \
> ld.symbols.s
$CXX ${cxxFlags} -c ld.symbols.s -o ld.symbols.o
$LD -o $1 \
-shared \
--eh-frame-hdr \
-z max-page-size=0x1000 \
-T$linkerLd \
-T$genodeRelLd \
ld.symbols.o
}
# Add a prefix to the following arguments
#
addPrefix() {
local prefix=$1
local files=""
for (( i = 2; i <= $#; i++)); do
files="$files $prefix${!i}"
done
echo -n $files
}
#
# Copy into dest the following arguments,
# rooted at $includedir
#
copyIncludes() {
local to=$1; shift
local from=$1; shift
mkdir -p $to
for i in $*; do
cp $from/$i $to/
done
}
#
# CPU-architecture-specific headers
#
# The 'common_include_*_content' functions take the CPU architecture as first
# argument.
#
common_include_libc_arch_content() {
local content
for i in stdarg.h float.h
do content="$content sys/$1/include/$i"; done
for i in arith.h _fpmath.h SYS.h gd_qnan.h
do content="$content lib/libc/$2/$i"; done
echo -n $content
}
common_include_libc_arch_machine_content() {
for i in \
_types.h endian.h _limits.h signal.h trap.h _stdint.h \
sysarch.h ieeefp.h frame.h vm.h \
cpufunc.h vmparam.h atomic.h elf.h exec.h reloc.h pmap.h \
ucontext.h setjmp.h asm.h param.h _inttypes.h _align.h float.h
do echo sys/$1/include/$i; done
}
rpcgen_() {
rpcgen -C -h -DWANT_NFS3 $1 -o $2
}
installPhase() {
mkdir -p $includedir/machine
#
# CPU-architecture-specific headers
#
#
# x86-specific headers
#
if [ -n "${isx86:-}" ]; then
cp lib/msun/x86/fenv.h $includedir
cp -r sys/x86/include $includedir/x86
fi
#
# i386-specific headers
#
if [ -n "${isx86_32:-}" ]; then
cp \
$(common_include_libc_arch_content i386 i386) \
$includedir
cp \
$(common_include_libc_arch_machine_content i386) \
sys/i386/include/specialreg.h \
sys/i386/include/npx.h \
$includedir/machine
fi
#
# AMD64-specific headers
#
if [ -n "${isx86_64:-}" ]; then
cp \
$(common_include_libc_arch_content amd64 amd64) \
$includedir
cp \
$(common_include_libc_arch_machine_content amd64) \
sys/amd64/include/specialreg.h \
sys/amd64/include/fpu.h \
$includedir/machine
fi
#
# ARM-specific headers
#
if [ -n "${isAarch32:-}" ]; then
cp \
$(common_include_libc_arch_content arm arm) \
lib/msun/arm/fenv.h \
$includedir
cp \
$(common_include_libc_arch_machine_content arm) \
$includedir/machine
copyIncludes $includedir/machine sys/arm/include \
armreg.h atomic-v6.h ieee.h sysreg.h
fi
#
# ARM64-specific headers
#
if [ -n "${isAarch32:-}" ]; then
cp \
$(common_include_libc_arch_content arm64 aarch64) \
lib/msun/aarch64/fenv.h \
$includedir
cp \
$(common_include_libc_arch_machine_content arm64) \
$includedir/machine
copyIncludes $includedir/machine sys/arm64/include/ \
armreg.h
fi
##############################################################
flex -P_nsyy -t lib/libc/net/nslexer.l \
| sed -e '/YY_BUF_SIZE/s/16384/1024/' \
> lib/libc/net/nslexer.c
bison -d -p_nsyy lib/libc/net/nsparser.y \
--defines=lib/libc/net/nsparser.h \
--output=lib/libc/net/nsparser.c
local generated_files="include/rpc/rpcb_prot.h"
for h in \
bootparam_prot.h nfs_prot.h nlm_prot.h rstat.h ypupdate_prot.h \
crypt.h nis_cache.h pmap_prot.h rwall.h yp.h \
key_prot.h nis_callback.h rex.h sm_inter.h ypxfrd.h \
klm_prot.h nis_object.h rnusers.h spray.h \
mount.h nis.h rquota.h yppasswd.h
do generated_files="$generated_files include/rpcsvc/$h"; done
for file in $generated_files; do
rpcgen -C -h -DWANT_NFS3 ${file%h}x -o $file
done
#
# Generic headers
#
copyIncludes $includedir include \
strings.h limits.h string.h ctype.h _ctype.h \
stdlib.h stdio.h signal.h unistd.h wchar.h time.h sysexits.h \
resolv.h wctype.h locale.h langinfo.h regex.h paths.h ieeefp.h \
inttypes.h fstab.h netdb.h ar.h memory.h res_update.h \
netconfig.h ifaddrs.h pthread.h err.h getopt.h search.h \
varargs.h stddef.h stdbool.h assert.h monetary.h printf.h \
libgen.h dirent.h dlfcn.h link.h fmtmsg.h fnmatch.h fts.h ftw.h \
db.h grp.h nsswitch.h pthread_np.h pwd.h ttyent.h \
stringlist.h glob.h a.out.h elf-hints.h nlist.h spawn.h \
readpassphrase.h setjmp.h elf.h ulimit.h utime.h wordexp.h \
complex.h semaphore.h uchar.h iconv.h termios.h \
xlocale.h runetype.h \
copyIncludes $includedir sys/sys \
syslog.h fcntl.h stdint.h sched.h ktrace.h _semaphore.h ucontext.h errno.h
cp lib/msun/src/math.h $includedir
cp contrib/libc-vis/vis.h $includedir
copyIncludes $includedir/rpc include/rpc \
rpc.h xdr.h auth.h clnt_stat.h clnt.h clnt_soc.h rpc_msg.h \
auth_unix.h auth_des.h svc.h svc_soc.h svc_auth.h pmap_clnt.h \
pmap_prot.h rpcb_clnt.h rpcent.h des_crypt.h des.h nettype.h \
rpcsec_gss.h raw.h rpc_com.h
cp sys/rpc/rpcb_prot.h $includedir/rpc
copyIncludes $includedir/rpcsvc include/rpcsvc \
yp_prot.h ypclnt.h nis_tags.h nislib.h
rpcgen_ include/rpcsvc/nis.x $includedir/rpcsvc/nis.h
rpcgen_ include/rpcsvc/crypt.x $includedir/rpcsvc/crypt.h
mkdir $includedir/gssapi
cp include/gssapi/gssapi.h $includedir/gssapi
copyIncludes $includedir/arpa include/arpa \
inet.h ftp.h nameser.h nameser_compat.h telnet.h tftp.h
copyIncludes $includedir/vm sys/vm vm_param.h vm.h pmap.h
copyIncludes $includedir/net sys/net \
if.h if_dl.h if_tun.h if_types.h radix.h route.h
copyIncludes $includedir/netinet sys/netinet \
in.h in_systm.h ip.h tcp.h
mkdir -p $includedir/netinet6
cp sys/netinet6/in6.h $includedir/netinet6
mkdir -p $includedir/bsm
cp sys/bsm/audit.h $includedir/bsm
copyIncludes $includedir/sys sys/sys \
_types.h limits.h cdefs.h _null.h types.h _pthreadtypes.h \
syslimits.h select.h _sigset.h _timeval.h timespec.h \
_timespec.h stat.h signal.h unistd.h time.h param.h stdint.h \
event.h eventhandler.h disk.h errno.h poll.h queue.h mman.h \
stddef.h sysctl.h uio.h _iovec.h ktrace.h ioctl.h ttycom.h \
ioccom.h filio.h sockio.h wait.h file.h fcntl.h resource.h \
disklabel.h link_elf.h endian.h mount.h ucred.h dirent.h \
cpuset.h socket.h un.h ttydefaults.h imgact_aout.h elf32.h \
elf64.h elf_generic.h elf_common.h nlist_aout.h ipc.h sem.h \
exec.h _lock.h _mutex.h statvfs.h ucontext.h syslog.h times.h \
utsname.h elf.h mtio.h _stdint.h atomic_common.h _ucontext.h \
_cpuset.h _bitset.h bitset.h _stdarg.h _uio.h auxv.h random.h \
_sockaddr_storage.h termios.h _termios.h _umtx.h kerneldump.h \
conf.h disk_zone.h counter.h time.h \
mkdir $includedir/sys/rpc
cp sys/rpc/types.h $includedir/sys/rpc
cp -r include/xlocale $includedir/
ln -s sys/poll.h $includedir/poll.h
rm -r include # Don't need this anymore
cp -r $genodeHeaders/include/* $includedir/
compileStub $libcSymbols $out/lib/libc.lib.so
compileStub $vfsSymbols $out/lib/vfs.lib.so
compileLd $out/lib/ld.lib.so
}
genericBuild

8
overlay/libc/libc.pc.in

@ -0,0 +1,8 @@
Name: libc
Description: Genode C runtime library
URL: https://genode.org/
Version: @version@
Requires: genode-libports
Requires.private: vfs
Cflags: -D__FreeBSD__=12 -D__GENODE__ -fno-builtin-sin -fno-builtin-cos -fno-builtin-sinf -fno-builtin-cosf -I@includedir@
Libs: -l:libc.lib.so

1057
overlay/libc/libc.symbols

File diff suppressed because it is too large

18
overlay/libc/linker.ld

@ -0,0 +1,18 @@
/*
* \brief LDSO specific linkage settings
* \author Sebastian Sumpf <Sebastian.Sumpf@genode-labs.com>
* \date 2011-04-27
*/
/*
* Copyright (C) 2011-2017 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
SECTIONS
{
/* set ldso memory location */
. = 0x30000;
}

20
overlay/libc/log2.patch

@ -0,0 +1,20 @@
- add 'log2()' and 'log2f()' declarations
- this patch is only needed for FreeBSD libc versions < 9
+++ src/lib/libc/lib/msun/src/math.h
@@ -204,6 +204,7 @@
double ldexp(double, int);
double log(double);
double log10(double);
+double log2(double);
double modf(double, double *); /* fundamentally !__pure2 */
double pow(double, double);
@@ -317,6 +318,7 @@
int ilogbf(float) __pure2;
float ldexpf(float, int);
float log10f(float);
+float log2f(float);
float log1pf(float);
float logf(float);
float modff(float, float *); /* fundamentally !__pure2 */

44
overlay/libc/mktime.patch

@ -0,0 +1,44 @@
diff --git a/src/lib/libc/contrib/tzcode/stdtime/localtime.c b/src/lib/libc/contrib/tzcode/stdtime/localtime.c
index 3c66924..05c01ae 100644
--- src/lib/libc/contrib/tzcode/stdtime/localtime.c
+++ src/lib/libc/contrib/tzcode/stdtime/localtime.c
@@ -1935,6 +1935,10 @@ time2sub(struct tm *const tmp,
lo *= 2;
hi = -(lo + 1);
}
+
+ lo = TIME_T_MIN;
+ hi = TIME_T_MAX;
+
for ( ; ; ) {
t = lo / 2 + hi / 2;