From 8ca63d4a6e5281ba0d7fa591bc52b4a495a54ee9 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Thu, 14 Sep 2017 14:00:36 -0500 Subject: [PATCH] libc: reintegrate libc_resolv library Remove getaddrinfo and freeaddrinfo from the Libc::Plugin and get rid of the extra libc_resolv library. Remove getaddrinfo/freeaddrinfo symbol hiding patch for FreeBSD sources. Remove libc_resolv from Makefiles and run scenarios. Fix #2273 --- repos/dde_linux/lib/mk/libc_lxip.mk | 2 +- repos/dde_linux/run/lxip_http_srv.run | 2 +- repos/dde_linux/run/lxip_udp_echo.run | 1 - repos/dde_linux/run/vfs_lxip.run | 2 +- repos/dde_linux/src/lib/libc_lxip/plugin.cc | 1 - repos/libports/include/libc-plugin/plugin.h | 8 -- .../include/libc-plugin/plugin_registry.h | 4 - repos/libports/lib/mk/libc.mk | 5 +- repos/libports/lib/mk/libc_lwip.mk | 2 +- repos/libports/lib/mk/libc_resolv.mk | 9 -- repos/libports/lib/symbols/libc | 63 ++++------ repos/libports/ports/libc.hash | 2 +- repos/libports/ports/libc.port | 2 +- repos/libports/run/netty.inc | 1 - repos/libports/run/nic_dump.run | 2 +- repos/libports/run/nic_router.run | 2 +- repos/libports/run/nim_netty.run | 2 +- repos/libports/src/lib/libc/addrinfo.cc | 57 --------- .../src/lib/libc/patches/getaddrinfo_c.patch | 19 --- repos/libports/src/lib/libc/plugin.cc | 16 --- .../libports/src/lib/libc/plugin_registry.cc | 10 -- repos/libports/src/lib/libc_lwip/plugin.cc | 86 ++++---------- repos/libports/src/lib/libc_resolv/README | 6 - repos/libports/src/lib/libc_resolv/plugin.cc | 108 ------------------ repos/libports/src/test/libc_resolv/main.cc | 11 -- repos/libports/src/test/libc_resolv/target.mk | 3 - repos/libports/src/test/netty/tcp/target.mk | 2 +- repos/libports/src/test/netty/udp/target.mk | 2 +- .../src/test/nim_echo_server/target.mk | 2 +- repos/ports/run/netperf_lxip.inc | 2 +- repos/ports/run/noux_net_netcat.run | 2 +- repos/ports/src/app/netperf/target.inc | 2 +- repos/ports/src/noux-pkg/lynx/target.mk | 2 +- repos/ports/src/noux-pkg/netcat/target.mk | 2 - repos/ports/src/noux-pkg/openssh/target.mk | 2 +- 35 files changed, 63 insertions(+), 381 deletions(-) delete mode 100644 repos/libports/lib/mk/libc_resolv.mk delete mode 100644 repos/libports/src/lib/libc/addrinfo.cc delete mode 100644 repos/libports/src/lib/libc/patches/getaddrinfo_c.patch delete mode 100644 repos/libports/src/lib/libc_resolv/README delete mode 100644 repos/libports/src/lib/libc_resolv/plugin.cc delete mode 100644 repos/libports/src/test/libc_resolv/main.cc delete mode 100644 repos/libports/src/test/libc_resolv/target.mk diff --git a/repos/dde_linux/lib/mk/libc_lxip.mk b/repos/dde_linux/lib/mk/libc_lxip.mk index 513a795e1..3367f3878 100644 --- a/repos/dde_linux/lib/mk/libc_lxip.mk +++ b/repos/dde_linux/lib/mk/libc_lxip.mk @@ -2,4 +2,4 @@ SRC_CC = plugin.cc vpath %.cc $(REP_DIR)/src/lib/libc_lxip -LIBS += lxip libc libc_resolv +LIBS += lxip libc diff --git a/repos/dde_linux/run/lxip_http_srv.run b/repos/dde_linux/run/lxip_http_srv.run index d21524f93..f2fb166c5 100644 --- a/repos/dde_linux/run/lxip_http_srv.run +++ b/repos/dde_linux/run/lxip_http_srv.run @@ -100,7 +100,7 @@ install_config $config # generic modules set boot_modules { core ld.lib.so init timer posix.lib.so - libc.lib.so libm.lib.so lxip.lib.so test-lxip_http_srv libc_resolv.lib.so + libc.lib.so libm.lib.so lxip.lib.so test-lxip_http_srv } # platform-specific modules diff --git a/repos/dde_linux/run/lxip_udp_echo.run b/repos/dde_linux/run/lxip_udp_echo.run index 06e500134..9dcb73285 100644 --- a/repos/dde_linux/run/lxip_udp_echo.run +++ b/repos/dde_linux/run/lxip_udp_echo.run @@ -100,7 +100,6 @@ install_config $config set boot_modules { core ld.lib.so init timer libc.lib.so libm.lib.so lxip.lib.so test-lxip_udp_echo - libc_resolv.lib.so } # platform-specific modules diff --git a/repos/dde_linux/run/vfs_lxip.run b/repos/dde_linux/run/vfs_lxip.run index 22c25e624..a15057e0c 100644 --- a/repos/dde_linux/run/vfs_lxip.run +++ b/repos/dde_linux/run/vfs_lxip.run @@ -89,7 +89,7 @@ install_config $config append boot_modules { core init timer } [nic_drv_binary] { - ld.lib.so libc.lib.so libc_lock_pipe.lib.so posix.lib.so + ld.lib.so libc.lib.so libc_pipe.lib.so posix.lib.so libm.lib.so vfs_lxip.lib.so lxip.lib.so tcp_terminal diff --git a/repos/dde_linux/src/lib/libc_lxip/plugin.cc b/repos/dde_linux/src/lib/libc_lxip/plugin.cc index e9899b7a0..7ade74fbc 100644 --- a/repos/dde_linux/src/lib/libc_lxip/plugin.cc +++ b/repos/dde_linux/src/lib/libc_lxip/plugin.cc @@ -368,7 +368,6 @@ int Plugin::fcntl(Libc::File_descriptor *sockfdo, int cmd, long val) } -/* XXX freeaddrinfo / getaddrinfo from libc_resolv.conf */ int Plugin::getpeername(Libc::File_descriptor *sockfdo, struct sockaddr *addr, socklen_t *addrlen) diff --git a/repos/libports/include/libc-plugin/plugin.h b/repos/libports/include/libc-plugin/plugin.h index b65da0fdd..da218293b 100644 --- a/repos/libports/include/libc-plugin/plugin.h +++ b/repos/libports/include/libc-plugin/plugin.h @@ -53,10 +53,6 @@ namespace Libc { virtual bool supports_execve(char const *filename, char *const argv[], char *const envp[]); virtual bool supports_mkdir(const char *path, mode_t mode); - virtual bool supports_freeaddrinfo(struct ::addrinfo *res); - virtual bool supports_getaddrinfo(const char *node, const char *service, - const struct ::addrinfo *hints, - struct ::addrinfo **res); virtual bool supports_open(const char *pathname, int flags); virtual bool supports_pipe(); virtual bool supports_readlink(const char *path, char *buf, ::size_t bufsiz); @@ -95,13 +91,9 @@ namespace Libc { char *const envp[]); virtual int fstatfs(File_descriptor *, struct statfs *buf); virtual int fcntl(File_descriptor *, int cmd, long arg); - virtual void freeaddrinfo(struct ::addrinfo *res); virtual int fstat(File_descriptor *, struct stat *buf); virtual int fsync(File_descriptor *); virtual int ftruncate(File_descriptor *, ::off_t length); - virtual int getaddrinfo(const char *node, const char *service, - const struct ::addrinfo *hints, - struct ::addrinfo **res); virtual ssize_t getdirentries(File_descriptor *, char *buf, ::size_t nbytes, ::off_t *basep); virtual int getpeername(File_descriptor *, diff --git a/repos/libports/include/libc-plugin/plugin_registry.h b/repos/libports/include/libc-plugin/plugin_registry.h index b8c904c5a..e9302f633 100644 --- a/repos/libports/include/libc-plugin/plugin_registry.h +++ b/repos/libports/include/libc-plugin/plugin_registry.h @@ -32,10 +32,6 @@ struct Libc::Plugin_registry : List Plugin *get_plugin_for_access(char const *pathname, int amode); Plugin *get_plugin_for_execve(char const *filename, char *const argv[], char *const envp[]); - Plugin *get_plugin_for_freeaddrinfo(struct addrinfo *res); - Plugin *get_plugin_for_getaddrinfo(const char *node, const char *service, - const struct addrinfo *hints, - struct addrinfo **res); Plugin *get_plugin_for_mkdir(const char *path, mode_t mode); Plugin *get_plugin_for_open(const char *pathname, int flags); Plugin *get_plugin_for_pipe(); diff --git a/repos/libports/lib/mk/libc.mk b/repos/libports/lib/mk/libc.mk index b06f95b15..9fb6e14d8 100644 --- a/repos/libports/lib/mk/libc.mk +++ b/repos/libports/lib/mk/libc.mk @@ -2,7 +2,8 @@ # C Library including string, locale # LIBS = libc-string libc-locale libc-stdlib libc-stdio libc-gen libc-gdtoa \ - libc-inet libc-stdtime libc-regex libc-compat libc-setjmp libc-mem + libc-inet libc-stdtime libc-regex libc-compat libc-setjmp libc-mem \ + libc-resolv libc-isc libc-nameser libc-net libc-rpc \ LIBS += base vfs @@ -15,7 +16,7 @@ SRC_CC = atexit.cc dummies.cc rlimit.cc sysctl.cc \ plugin.cc plugin_registry.cc select.cc exit.cc environ.cc nanosleep.cc \ pread_pwrite.cc readv_writev.cc poll.cc \ libc_pdbg.cc vfs_plugin.cc rtc.cc dynamic_linker.cc signal.cc \ - socket_operations.cc task.cc addrinfo.cc socket_fs_plugin.cc + socket_operations.cc task.cc socket_fs_plugin.cc CC_OPT_sysctl += -Wno-write-strings diff --git a/repos/libports/lib/mk/libc_lwip.mk b/repos/libports/lib/mk/libc_lwip.mk index 5dc2c9a04..d6e9e2069 100644 --- a/repos/libports/lib/mk/libc_lwip.mk +++ b/repos/libports/lib/mk/libc_lwip.mk @@ -2,4 +2,4 @@ SRC_CC = init.cc plugin.cc vpath %.cc $(REP_DIR)/src/lib/libc_lwip -LIBS += lwip libc libc-resolv libc-isc libc-nameser libc-net libc-rpc +LIBS += lwip libc diff --git a/repos/libports/lib/mk/libc_resolv.mk b/repos/libports/lib/mk/libc_resolv.mk deleted file mode 100644 index 4985dba6a..000000000 --- a/repos/libports/lib/mk/libc_resolv.mk +++ /dev/null @@ -1,9 +0,0 @@ -LIBS = libc libc-resolv libc-isc libc-nameser libc-net libc-rpc - -SRC_CC = plugin.cc - -vpath %.cc $(REP_DIR)/src/lib/libc_resolv - -include $(REP_DIR)/lib/mk/libc-common.inc - -SHARED_LIB = yes diff --git a/repos/libports/lib/symbols/libc b/repos/libports/lib/symbols/libc index e9fa1f5a9..ea9bec26e 100644 --- a/repos/libports/lib/symbols/libc +++ b/repos/libports/lib/symbols/libc @@ -2,10 +2,14 @@ ___runetype T ___tolower T ___toupper T __assert T +__dn_expand T +__dn_expand T __error T __flt_rounds T __fpclassifyd T __fpclassifyf T +__h_errno T +__h_errno_set T __inet_addr T __inet_aton T __inet_nsap_ntoa T @@ -14,6 +18,9 @@ __inet_ntop T __inet_pton T __isthreaded B 4 __mb_cur_max D 8 +__res_init T +__res_query T +__res_state T __srget T __stderrp D 8 __stdinp D 8 @@ -21,6 +28,8 @@ __stdoutp D 8 __swbuf T __xuname T _exit T +_getlong T +_getshort T a64l T abort T abs T @@ -248,6 +257,8 @@ getgrnam T getgrnam_r T getgrouplist T getgroups W +gethostbyaddr T +gethostbyaddr_r T gethostbyname W gethostid T gethostname T @@ -271,6 +282,8 @@ getpid W getppid W getpriority W getprogname W +getprotobyname T +getprotobyname_r T getpwent W getpwnam W getpwuid W @@ -279,6 +292,8 @@ getrlimit W getrusage W gets T getservbyname W +getservbyport T +getservbyport_r T getsid W getsockname T getsockopt T @@ -304,6 +319,10 @@ heapsort T hsearch T imaxabs T imaxdiv T +in6addr_any R 16 +in6addr_linklocal_allnodes R 16 +in6addr_loopback R 16 +in6addr_nodelocal_allnodes R 16 index T inet_addr W inet_aton W @@ -741,8 +760,8 @@ swscanf T symlink T sync W sys_errlist D 752 -sys_nerr R -sys_nsig R +sys_nerr R 4 +sys_nsig R 4 sys_siglist D 256 sys_signame D 256 sysconf T @@ -901,42 +920,6 @@ __isinff T __isinfl T -# -# Symbols needed by libc-resolv -# -__inet_nsap_addr T -_accept T -_bind T -_close T -_connect T -_fcntl T -_fstat T -_getpeername T -_getsockname T -_getsockopt T -_listen T -_nanosleep W -_pthread_getspecific W -_pthread_key_create W -_pthread_main_np W -_pthread_mutex_trylock W -_pthread_mutex_unlock W -_pthread_once W -_pthread_rwlock_rdlock W -_pthread_rwlock_unlock W -_pthread_rwlock_wrlock W -_pthread_setspecific W -_read T -_recvfrom T -_select W -_sendto T -_setsockopt T -_sigprocmask W -_socket T -_write T -_writev T - - # # Public interface between Genode-component code and the libc runtime # @@ -960,10 +943,8 @@ _ZN4Libc25File_descriptor_allocator5allocEPNS_6PluginEPNS_14Plugin_contextEi T _ZN4Libc25file_descriptor_allocatorEv T _ZN4Libc6Plugin10getsockoptEPNS_15File_descriptorEiiPvPj T _ZN4Libc6Plugin10setsockoptEPNS_15File_descriptorEiiPKvj T -_ZN4Libc6Plugin11getaddrinfoEPKcS2_PK8addrinfoPPS3_ T _ZN4Libc6Plugin11getpeernameEPNS_15File_descriptorEP8sockaddrPj T _ZN4Libc6Plugin11getsocknameEPNS_15File_descriptorEP8sockaddrPj T -_ZN4Libc6Plugin12freeaddrinfoEP8addrinfo T _ZN4Libc6Plugin13getdirentriesEPNS_15File_descriptorEPcmPx T _ZN4Libc6Plugin13getdirentriesEPNS_15File_descriptorEPcmPl T _ZN4Libc6Plugin13supports_mmapEv T @@ -981,8 +962,6 @@ _ZN4Libc6Plugin15supports_unlinkEPKc T _ZN4Libc6Plugin16supports_symlinkEPKcS2_ T _ZN4Libc6Plugin17supports_readlinkEPKcPcj T _ZN4Libc6Plugin17supports_readlinkEPKcPcm T -_ZN4Libc6Plugin20supports_getaddrinfoEPKcS2_PK8addrinfoPPS3_ T -_ZN4Libc6Plugin21supports_freeaddrinfoEP8addrinfo T _ZN4Libc6Plugin3dupEPNS_15File_descriptorE T _ZN4Libc6Plugin4bindEPNS_15File_descriptorEPK8sockaddrj T _ZN4Libc6Plugin4dup2EPNS_15File_descriptorES2_ T diff --git a/repos/libports/ports/libc.hash b/repos/libports/ports/libc.hash index 5b9e83e52..6a9506a5b 100644 --- a/repos/libports/ports/libc.hash +++ b/repos/libports/ports/libc.hash @@ -1 +1 @@ -cefebffc6e8f129acb24de192373731461abe2f6 +5871e71bb99dab10faab21931750c30e8a02d980 diff --git a/repos/libports/ports/libc.port b/repos/libports/ports/libc.port index 6c2cbb095..f4c71a4c7 100644 --- a/repos/libports/ports/libc.port +++ b/repos/libports/ports/libc.port @@ -43,7 +43,7 @@ $(foreach svn_export,$(svn_exports),\ $(foreach svn_export,$(svn_exports),\ $(eval REV($(svn_export)) := HEAD)) -PATCHES := src/lib/libc/patches/*.patch +PATCHES := $(sort $(wildcard $(REP_DIR)/src/lib/libc/patches/*.patch)) # diff --git a/repos/libports/run/netty.inc b/repos/libports/run/netty.inc index b08214a21..35ec3654b 100644 --- a/repos/libports/run/netty.inc +++ b/repos/libports/run/netty.inc @@ -60,7 +60,6 @@ append config { append boot_modules { core init timer } [nic_drv_binary] { ram_fs vfs ld.lib.so libc.lib.so libm.lib.so posix.lib.so - libc_resolv.lib.so stdcxx.lib.so libc_pipe.lib.so vfs_lxip.lib.so lxip.lib.so } diff --git a/repos/libports/run/nic_dump.run b/repos/libports/run/nic_dump.run index 58caba5b6..1f4af1030 100644 --- a/repos/libports/run/nic_dump.run +++ b/repos/libports/run/nic_dump.run @@ -253,7 +253,7 @@ install_config $config build_boot_image " core init timer nic_router nic_bridge ld.lib.so libc.lib.so libm.lib.so - posix.lib.so libc_resolv.lib.so lwip.lib.so lxip.lib.so test-http_clnt + posix.lib.so lwip.lib.so lxip.lib.so test-http_clnt test-lwip_httpsrv_static nic_dump test-lxip_udp_echo test-lxip_udp_client [nic_drv_binary] [gpio_drv] [platform_drv_boot_modules]" diff --git a/repos/libports/run/nic_router.run b/repos/libports/run/nic_router.run index 270f54e04..ef24eb445 100644 --- a/repos/libports/run/nic_router.run +++ b/repos/libports/run/nic_router.run @@ -276,7 +276,7 @@ install_config $config build_boot_image " core init timer nic_router nic_bridge ld.lib.so libc.lib.so libm.lib.so - libc_resolv.lib.so lwip.lib.so lxip.lib.so posix.lib.so test-http_clnt + lwip.lib.so lxip.lib.so posix.lib.so test-http_clnt test-lwip_httpsrv_static test-lxip_udp_echo test-lxip_udp_client [nic_drv_binary] [gpio_drv] [platform_drv_boot_modules]" diff --git a/repos/libports/run/nim_netty.run b/repos/libports/run/nim_netty.run index ede949e9d..632d04b12 100644 --- a/repos/libports/run/nim_netty.run +++ b/repos/libports/run/nim_netty.run @@ -68,7 +68,7 @@ install_config $config set boot_modules { core init timer linux_nic_drv ram_fs vfs ld.lib.so libc.lib.so libm.lib.so - libc_resolv.lib.so stdcxx.lib.so libc_pipe.lib.so + stdcxx.lib.so vfs_lxip.lib.so lxip.lib.so test-nim_echo_server } diff --git a/repos/libports/src/lib/libc/addrinfo.cc b/repos/libports/src/lib/libc/addrinfo.cc deleted file mode 100644 index f4ef5f4b5..000000000 --- a/repos/libports/src/lib/libc/addrinfo.cc +++ /dev/null @@ -1,57 +0,0 @@ -/* - * \brief libc addrinfo plugin wrappers - * \author Christian Helmuth - * \date 2017-02-08 - * - * Note, these functions are implemented by the libc_resolv library currently - * and can be removed when the library is merged into libc.lib.so. - */ - -/* - * Copyright (C) 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. - */ - -/* Genode includes */ -#include - -/* libc includes */ -#include - - -using namespace Libc; - - -extern "C" void freeaddrinfo(struct addrinfo *res) -{ - Plugin *plugin; - - plugin = plugin_registry()->get_plugin_for_freeaddrinfo(res); - - if (!plugin) { - Genode::error("no plugin found for freeaddrinfo()"); - return; - } - - plugin->freeaddrinfo(res); -} - - -extern "C" int getaddrinfo(const char *node, const char *service, - const struct addrinfo *hints, - struct addrinfo **res) -{ - Plugin *plugin; - - plugin = plugin_registry()->get_plugin_for_getaddrinfo(node, service, hints, res); - - if (!plugin) { - Genode::error("no plugin found for getaddrinfo()"); - return -1; - } - - return plugin->getaddrinfo(node, service, hints, res); -} - diff --git a/repos/libports/src/lib/libc/patches/getaddrinfo_c.patch b/repos/libports/src/lib/libc/patches/getaddrinfo_c.patch deleted file mode 100644 index 608653419..000000000 --- a/repos/libports/src/lib/libc/patches/getaddrinfo_c.patch +++ /dev/null @@ -1,19 +0,0 @@ -+++ src/lib/libc/lib/libc/net/getaddrinfo.c -@@ -329,7 +329,7 @@ do { \ - ((x) == (y) || (/*CONSTCOND*/(w) && ((x) == ANY || (y) == ANY))) - - void --freeaddrinfo(struct addrinfo *ai) -+libc_freeaddrinfo(struct addrinfo *ai) - { - struct addrinfo *next; - -@@ -362,7 +362,7 @@ str2number(const char *p, int *portp) - } - - int --getaddrinfo(const char *hostname, const char *servname, -+libc_getaddrinfo(const char *hostname, const char *servname, - const struct addrinfo *hints, struct addrinfo **res) - { - struct addrinfo sentinel; diff --git a/repos/libports/src/lib/libc/plugin.cc b/repos/libports/src/lib/libc/plugin.cc index 258abaf55..5f89f91f9 100644 --- a/repos/libports/src/lib/libc/plugin.cc +++ b/repos/libports/src/lib/libc/plugin.cc @@ -55,20 +55,6 @@ bool Plugin::supports_execve(char const *filename, char *const argv[], } -bool Plugin::supports_freeaddrinfo(struct ::addrinfo *) -{ - return false; -} - - -bool Plugin::supports_getaddrinfo(const char *, const char *, - const struct ::addrinfo *, - struct ::addrinfo **) -{ - return false; -} - - bool Plugin::supports_mkdir(const char *, mode_t) { return false; @@ -197,8 +183,6 @@ DUMMY(ssize_t, -1, write, (File_descriptor *, const void *, ::size_t)); */ DUMMY(int, -1, access, (char const *, int)); DUMMY(int, -1, execve, (char const *, char *const[], char *const[])); -DUMMY(void, , freeaddrinfo, (struct ::addrinfo *)); -DUMMY(int, -1, getaddrinfo, (const char *, const char *, const struct ::addrinfo *, struct ::addrinfo **)); DUMMY(int, -1, mkdir, (const char*, mode_t)); DUMMY(void *, (void *)(-1), mmap, (void *addr, ::size_t length, int prot, int flags, File_descriptor *, ::off_t offset)); diff --git a/repos/libports/src/lib/libc/plugin_registry.cc b/repos/libports/src/lib/libc/plugin_registry.cc index 9ff9e7d74..a041fe4b3 100644 --- a/repos/libports/src/lib/libc/plugin_registry.cc +++ b/repos/libports/src/lib/libc/plugin_registry.cc @@ -45,16 +45,6 @@ Plugin *Plugin_registry::get_plugin_for_execve(char const *filename, char *const GET_PLUGIN_FOR(execve, filename, argv, envp) } -Plugin *Plugin_registry::get_plugin_for_freeaddrinfo(struct addrinfo *res) { - GET_PLUGIN_FOR(freeaddrinfo, res) } - - -Plugin *Plugin_registry::get_plugin_for_getaddrinfo(const char *node, const char *service, - const struct addrinfo *hints, - struct addrinfo **res) { - GET_PLUGIN_FOR(getaddrinfo, node, service, hints, res) } - - Plugin *Plugin_registry::get_plugin_for_mkdir(const char *path, mode_t mode) { GET_PLUGIN_FOR(mkdir, path, mode) } diff --git a/repos/libports/src/lib/libc_lwip/plugin.cc b/repos/libports/src/lib/libc_lwip/plugin.cc index 28dcb47a1..5046982be 100644 --- a/repos/libports/src/lib/libc_lwip/plugin.cc +++ b/repos/libports/src/lib/libc_lwip/plugin.cc @@ -162,60 +162,52 @@ struct Plugin : Libc::Plugin */ Plugin(); - bool supports_freeaddrinfo(struct ::addrinfo *res); - bool supports_getaddrinfo(const char *node, const char *service, - const struct ::addrinfo *hints, - struct ::addrinfo **res); bool supports_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, - struct timeval *timeout); - bool supports_socket(int domain, int type, int protocol); + struct timeval *timeout) override; + bool supports_socket(int domain, int type, int protocol) override; Libc::File_descriptor *accept(Libc::File_descriptor *sockfdo, struct sockaddr *addr, - socklen_t *addrlen); + socklen_t *addrlen) override; int bind(Libc::File_descriptor *sockfdo, const struct sockaddr *addr, - socklen_t addrlen); - int close(Libc::File_descriptor *fdo); + socklen_t addrlen) override; + int close(Libc::File_descriptor *fdo) override; int connect(Libc::File_descriptor *sockfdo, const struct sockaddr *addr, - socklen_t addrlen); - int fcntl(Libc::File_descriptor *sockfdo, int cmd, long val); - void freeaddrinfo(struct ::addrinfo *res); - int getaddrinfo(const char *node, const char *service, - const struct ::addrinfo *hints, - struct ::addrinfo **res); + socklen_t addrlen) override; + int fcntl(Libc::File_descriptor *sockfdo, int cmd, long val) override; int getpeername(Libc::File_descriptor *sockfdo, struct sockaddr *addr, - socklen_t *addrlen); + socklen_t *addrlen) override; int getsockname(Libc::File_descriptor *sockfdo, struct sockaddr *addr, - socklen_t *addrlen); + socklen_t *addrlen) override; int getsockopt(Libc::File_descriptor *sockfdo, int level, int optname, void *optval, - socklen_t *optlen); - int ioctl(Libc::File_descriptor *sockfdo, int request, char *argp); - int listen(Libc::File_descriptor *sockfdo, int backlog); - ssize_t read(Libc::File_descriptor *fdo, void *buf, ::size_t count); - int shutdown(Libc::File_descriptor *fdo, int); + socklen_t *optlen) override; + int ioctl(Libc::File_descriptor *sockfdo, int request, char *argp) override; + int listen(Libc::File_descriptor *sockfdo, int backlog) override; + ssize_t read(Libc::File_descriptor *fdo, void *buf, ::size_t count) override; + int shutdown(Libc::File_descriptor *fdo, int) override; int select(int nfds, fd_set *readfds, fd_set *writefds, - fd_set *exceptfds, struct timeval *timeout); - ssize_t send(Libc::File_descriptor *, const void *buf, ::size_t len, int flags); + fd_set *exceptfds, struct timeval *timeout) override; + ssize_t send(Libc::File_descriptor *, const void *buf, ::size_t len, int flags) override; ssize_t sendto(Libc::File_descriptor *, const void *buf, ::size_t len, int flags, const struct sockaddr *dest_addr, - socklen_t addrlen); - ssize_t recv(Libc::File_descriptor *, void *buf, ::size_t len, int flags); + socklen_t addrlen) override; + ssize_t recv(Libc::File_descriptor *, void *buf, ::size_t len, int flags) override; ssize_t recvfrom(Libc::File_descriptor *, void *buf, ::size_t len, int flags, - struct sockaddr *src_addr, socklen_t *addrlen); + struct sockaddr *src_addr, socklen_t *addrlen) override; int setsockopt(Libc::File_descriptor *sockfdo, int level, int optname, const void *optval, - socklen_t optlen); - Libc::File_descriptor *socket(int domain, int type, int protocol); - ssize_t write(Libc::File_descriptor *fdo, const void *buf, ::size_t count); + socklen_t optlen) override; + Libc::File_descriptor *socket(int domain, int type, int protocol) override; + ssize_t write(Libc::File_descriptor *fdo, const void *buf, ::size_t count) override; }; @@ -227,20 +219,6 @@ Plugin::Plugin() } -bool Plugin::supports_freeaddrinfo(struct ::addrinfo *) -{ - return true; -} - - -bool Plugin::supports_getaddrinfo(const char *, const char *, - const struct ::addrinfo *, - struct ::addrinfo **) -{ - return true; -} - - bool Plugin::supports_select(int nfds, fd_set *readfds, fd_set *writefds, @@ -346,26 +324,6 @@ int Plugin::fcntl(Libc::File_descriptor *sockfdo, int cmd, long val) } -extern "C" void libc_freeaddrinfo(struct ::addrinfo *); - -void Plugin::freeaddrinfo(struct ::addrinfo *res) -{ - return ::libc_freeaddrinfo(res); -} - - -extern "C" int libc_getaddrinfo(const char *, const char *, - const struct ::addrinfo *, - struct ::addrinfo **); - -int Plugin::getaddrinfo(const char *node, const char *service, - const struct ::addrinfo *hints, - struct ::addrinfo **res) -{ - return ::libc_getaddrinfo(node, service, hints, res); -} - - int Plugin::getpeername(Libc::File_descriptor *sockfdo, struct sockaddr *addr, socklen_t *addrlen) diff --git a/repos/libports/src/lib/libc_resolv/README b/repos/libports/src/lib/libc_resolv/README deleted file mode 100644 index 4fb5aa51d..000000000 --- a/repos/libports/src/lib/libc_resolv/README +++ /dev/null @@ -1,6 +0,0 @@ -This libc plugin uses libc's own resolv facilities to do DNS resolving -etc. pp. It is much more advanced than the functions which lwip has to -offer. - -Its current use is for noux-pkgs only. ``Native'' Genode programs should -use getaddrinfo() provided by lwip for now. diff --git a/repos/libports/src/lib/libc_resolv/plugin.cc b/repos/libports/src/lib/libc_resolv/plugin.cc deleted file mode 100644 index 89702dcc5..000000000 --- a/repos/libports/src/lib/libc_resolv/plugin.cc +++ /dev/null @@ -1,108 +0,0 @@ -/* - * \brief Libc resolv - * \author Josef Soentgen - * \date 2012-07-19 - */ - -/* - * Copyright (C) 2012-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. - */ - -/* Genode includes */ -#include -#include - -/* libc plugin includes */ -#include -#include - -/* libc includes */ -#include -#include -#include - - -extern "C" void libc_freeaddrinfo(struct ::addrinfo *); -extern "C" int libc_getaddrinfo(const char *, const char *, - const struct ::addrinfo *, - struct ::addrinfo **); - -/************ - ** Plugin ** - ************/ - -namespace { - - struct Plugin_context : Libc::Plugin_context { }; - - static inline Plugin_context *context(Libc::File_descriptor *fd) - { - return static_cast(fd->context); - } - - class Plugin : public Libc::Plugin - { - private: - - Plugin_context _context; - - public: - - /** - * Constructor - */ - Plugin() { } - - bool supports_freeaddrinfo(struct ::addrinfo *res) - { - return true; - } - bool supports_getaddrinfo(const char *node, const char *service, - const struct ::addrinfo *hints, - struct ::addrinfo **res) - { - return true; - } - - int getaddrinfo(const char *node, const char *service, - const struct ::addrinfo *hints, - struct ::addrinfo **res) - { - return ::libc_getaddrinfo(node, service, hints, res); - } - - void freeaddrinfo(struct ::addrinfo *res) - { - return ::libc_freeaddrinfo(res); - } - - ::ssize_t getdirentries(Libc::File_descriptor *fd, char *buf, ::size_t nbytes, - ::off_t *basep) - { - Genode::error(__FILE__, ":", __LINE__, " ", __func__, "not implemented"); - return 0UL; - } - - void *mmap(void *addr, ::size_t length, int prot, int flags, - Libc::File_descriptor *, ::off_t offset) - { - Genode::error(__FILE__, ":", __LINE__, " ", __func__, "not implemented"); - return nullptr; - } - - int msync(void *addr, ::size_t len, int flags) - { - Genode::error(__FILE__, ":", __LINE__, " ", __func__, "not implemented"); - return 0; - } - }; - -} /* unnamed namespace */ - -void __attribute__((constructor)) init_libc_resolv(void) -{ - static Plugin libc_resolv; -} diff --git a/repos/libports/src/test/libc_resolv/main.cc b/repos/libports/src/test/libc_resolv/main.cc deleted file mode 100644 index 8f1a2e3f8..000000000 --- a/repos/libports/src/test/libc_resolv/main.cc +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright (C) 2012-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. - */ - -int main(int argc, char **argv) -{ - return 0; -} diff --git a/repos/libports/src/test/libc_resolv/target.mk b/repos/libports/src/test/libc_resolv/target.mk deleted file mode 100644 index 963a8c993..000000000 --- a/repos/libports/src/test/libc_resolv/target.mk +++ /dev/null @@ -1,3 +0,0 @@ -TARGET = test-libc_resolv -SRC_CC = main.cc -LIBS = posix libc_resolv diff --git a/repos/libports/src/test/netty/tcp/target.mk b/repos/libports/src/test/netty/tcp/target.mk index c90784e9e..933e20743 100644 --- a/repos/libports/src/test/netty/tcp/target.mk +++ b/repos/libports/src/test/netty/tcp/target.mk @@ -1,6 +1,6 @@ TARGET = test-netty_tcp SRC_CC = main.cc netty.cc -LIBS = libc libc_resolv +LIBS = libc INC_DIR += $(PRG_DIR)/.. diff --git a/repos/libports/src/test/netty/udp/target.mk b/repos/libports/src/test/netty/udp/target.mk index aa4c29c5e..8b992346b 100644 --- a/repos/libports/src/test/netty/udp/target.mk +++ b/repos/libports/src/test/netty/udp/target.mk @@ -1,6 +1,6 @@ TARGET = test-netty_udp SRC_CC = main.cc netty.cc -LIBS = libc libc_resolv +LIBS = libc INC_DIR += $(PRG_DIR)/.. diff --git a/repos/libports/src/test/nim_echo_server/target.mk b/repos/libports/src/test/nim_echo_server/target.mk index 99fd281e3..335fdc842 100644 --- a/repos/libports/src/test/nim_echo_server/target.mk +++ b/repos/libports/src/test/nim_echo_server/target.mk @@ -1,5 +1,5 @@ TARGET = test-nim_echo_server -LIBS = libc libc_resolv +LIBS = libc SRC_NIM = main.nim # Enable extra system assertions diff --git a/repos/ports/run/netperf_lxip.inc b/repos/ports/run/netperf_lxip.inc index a140ec831..56634f795 100644 --- a/repos/ports/run/netperf_lxip.inc +++ b/repos/ports/run/netperf_lxip.inc @@ -1,4 +1,4 @@ set netperf_target app/netperf/lxip set netperf_app netserver_lxip -set netperf_stack { lxip.lib.so libc_resolv.lib.so } +set netperf_stack { lxip.lib.so } set ip_match_string "ipaddr=(\[0-9\]+\.\[0-9\]+\.\[0-9\]+\.\[0-9\]+).*\n" diff --git a/repos/ports/run/noux_net_netcat.run b/repos/ports/run/noux_net_netcat.run index 536cb9dc0..bac3d4211 100644 --- a/repos/ports/run/noux_net_netcat.run +++ b/repos/ports/run/noux_net_netcat.run @@ -172,7 +172,7 @@ install_config $config set boot_modules { core init timer tcp_terminal nic_bridge ld.lib.so noux_net libc.lib.so libm.lib.so libc_pipe.lib.so pthread.lib.so - libc_resolv.lib.so libc_noux.lib.so lwip.lib.so netcat.tar posix.lib.so + libc_noux.lib.so lwip.lib.so netcat.tar posix.lib.so } # platform-specific modules diff --git a/repos/ports/src/app/netperf/target.inc b/repos/ports/src/app/netperf/target.inc index 45be49193..c53b4e560 100644 --- a/repos/ports/src/app/netperf/target.inc +++ b/repos/ports/src/app/netperf/target.inc @@ -1,7 +1,7 @@ NETPERF_DIR := $(call select_from_ports,netperf)/src/app/netperf -LIBS += posix libc-resolv libc-net libc-nameser libc-isc +LIBS += posix SRC_C = netserver.c netlib.c netsh.c nettest_bsd.c dscp.c # omni test diff --git a/repos/ports/src/noux-pkg/lynx/target.mk b/repos/ports/src/noux-pkg/lynx/target.mk index 00dde7022..f6257d146 100644 --- a/repos/ports/src/noux-pkg/lynx/target.mk +++ b/repos/ports/src/noux-pkg/lynx/target.mk @@ -17,7 +17,7 @@ CFLAGS += -DUSE_OPENSSL_INCL # CFLAGS += -D__BSD_VISIBLE -LIBS += ncurses zlib libssl libcrypto libc_resolv +LIBS += ncurses zlib libssl libcrypto # # Make the zlib linking test succeed diff --git a/repos/ports/src/noux-pkg/netcat/target.mk b/repos/ports/src/noux-pkg/netcat/target.mk index 66c4b4119..aec241cf2 100644 --- a/repos/ports/src/noux-pkg/netcat/target.mk +++ b/repos/ports/src/noux-pkg/netcat/target.mk @@ -1,5 +1,3 @@ TARGET = netcat -LIBS = libc_resolv - include $(call select_from_repositories,mk/noux.mk) diff --git a/repos/ports/src/noux-pkg/openssh/target.mk b/repos/ports/src/noux-pkg/openssh/target.mk index 50d76bd30..b259094ae 100644 --- a/repos/ports/src/noux-pkg/openssh/target.mk +++ b/repos/ports/src/noux-pkg/openssh/target.mk @@ -24,7 +24,7 @@ CONFIGURE_ARGS += --disable-ip6 \ INSTALL_TARGET = install -LIBS += libcrypto libssl zlib libc_resolv +LIBS += libcrypto libssl zlib built.tag: Makefile Makefile_patch