[Buildroot] [PATCH 4/7] portmap: add nommu support

Peter Korsgaard jacmet at uclibc.org
Tue Jan 11 10:29:45 UTC 2011


>>>>> "Mike" == Mike Frysinger <vapier at gentoo.org> writes:

Hi,

 Mike> Acked-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
 Mike> Signed-off-by: Mike Frysinger <vapier at gentoo.org>
 Mike> ---
 Mike>  ...0-0001-README-fix-typo-in-tcp-wrapper-doc.patch |   26 +++++
 Mike>  ...0002-NO_PIE-make-PIE-support-controllable.patch |   53 ++++++++++
 Mike>  ...K-control-usage-of-fork-for-nommu-systems.patch |  110 ++++++++++++++++++++
 Mike>  ...ERROR-control-overriding-of-perror-symbol.patch |   46 ++++++++
 Mike>  package/portmap/portmap.mk                         |    7 +-
 Mike>  5 files changed, 241 insertions(+), 1 deletions(-)
 Mike>  create mode 100644 package/portmap/portmap-6.0-0001-README-fix-typo-in-tcp-wrapper-doc.patch
 Mike>  create mode 100644 package/portmap/portmap-6.0-0002-NO_PIE-make-PIE-support-controllable.patch
 Mike>  create mode 100644 package/portmap/portmap-6.0-0003-NO_FORK-control-usage-of-fork-for-nommu-systems.patch
 Mike>  create mode 100644 package/portmap/portmap-6.0-0004-NO_PERROR-control-overriding-of-perror-symbol.patch

What's the upstream status of these patches?


 Mike> +++ b/package/portmap/portmap-6.0-0003-NO_FORK-control-usage-of-fork-for-nommu-systems.patch
 Mike> @@ -0,0 +1,110 @@
 Mike> +From b3afea5757af1a7356ba30d2e0a7d5909ca18121 Mon Sep 17 00:00:00 2001
 Mike> +From: Mike Frysinger <vapier at gentoo.org>
 Mike> +Date: Fri, 19 Nov 2010 23:48:20 -0500
 Mike> +Subject: [PATCH 3/4] NO_FORK: control usage of fork() for nommu systems
 Mike> +
 Mike> +nommu systems lack a fork() function, so add a NO_FORK flag to control
 Mike> +its usage.  We don't lose a ton of functionality in doing so, and on an
 Mike> +embedded system, this is OK.
 Mike> +
 Mike> +Signed-off-by: Mike Frysinger <vapier at gentoo.org>
 Mike> +---
 Mike> + Makefile     |    5 +++++
 Mike> + README       |    1 +
 Mike> + pmap_check.c |    6 ++++--
 Mike> + portmap.c    |    6 ++++++
 Mike> + 4 files changed, 16 insertions(+), 2 deletions(-)
 Mike> +
 Mike> +diff --git a/Makefile b/Makefile
 Mike> +index cfcfdbb..9df5574 100644
 Mike> +--- a/Makefile
 Mike> ++++ b/Makefile
 Mike> +@@ -27,6 +27,11 @@ MAN_SED += -e 's/USE_DNS/yes/'
 Mike> + endif
 Mike> + endif
 Mike> + 
 Mike> ++# For no-mmu systems, we have to disable the fork() functions.
 Mike> ++ifneq ($(NO_FORK),)
 Mike> ++CPPFLAGS += -DNO_FORK
 Mike> ++endif
 Mike> ++
 Mike> + # Comment out if your RPC library does not allocate privileged ports for
 Mike> + # requests from processes with root privilege, or the new portmap will
 Mike> + # always reject requests to register/unregister services on privileged
 Mike> +diff --git a/README b/README
 Mike> +index e0b561a..bda1707 100644
 Mike> +--- a/README
 Mike> ++++ b/README
 Mike> +@@ -18,6 +18,7 @@ There is no "./configure", just use "make".
 Mike> + 
 Mike> + Some make variable can be used to control compilation.
 Mike> + 
 Mike> ++ NO_FORK=	  if non-empty, don't use fork (good for nommu systems)
 Mike> +  NO_PIE=	  if non-empty, don't build portmap as a PIE
 Mike> +  NO_TCP_WRAPPER=  if non-empty, don't use tcp_wrappers
 Mike> +  USE_DNS=	  if set, tcp_wrappers can check peers based on hostname
 Mike> +diff --git a/pmap_check.c b/pmap_check.c
 Mike> +index 6b3e490..983414e 100644
 Mike> +--- a/pmap_check.c
 Mike> ++++ b/pmap_check.c
 Mike> +@@ -302,8 +302,10 @@ static void logit(int severity, struct sockaddr_in *addr,
 Mike> +      * getrpcbynumber() or syslog() does its thing.
 Mike> +      */
 Mike> + 
 Mike> +-    if (fork() == 0) {
 Mike> +-
 Mike> ++#ifndef NO_FORK
 Mike> ++    if (fork() == 0)
 Mike> ++#endif
 Mike> ++    {
 Mike> + 	/* Try to map program number to name. */
 Mike> + 
 Mike> + 	if (prognum == 0) {
 Mike> +diff --git a/portmap.c b/portmap.c
 Mike> +index 2a98881..94abc64 100644
 Mike> +--- a/portmap.c
 Mike> ++++ b/portmap.c
 Mike> +@@ -391,12 +391,14 @@ main(int argc, char **argv)
 Mike> + 	abort();
 Mike> + }
 Mike> + 
 Mike> ++#ifndef NO_PERROR
 Mike> + /* need to override perror calls in rpc library */
 Mike> + void perror(const char *what)

What is this NO_PERROR thing? That belongs in the next patch rather than
here, right?

 Mike> +++ b/package/portmap/portmap-6.0-0004-NO_PERROR-control-overriding-of-perror-symbol.patch
 Mike> @@ -0,0 +1,46 @@
 Mike> +From 8cea0778f0fb838a7bd764be08f15e1494e5a0b2 Mon Sep 17 00:00:00 2001
 Mike> +From: Mike Frysinger <vapier at gentoo.org>
 Mike> +Date: Fri, 19 Nov 2010 23:50:27 -0500
 Mike> +Subject: [PATCH 4/4] NO_PERROR: control overriding of perror() symbol
 Mike> +
 Mike> +Doing static builds of portmap might fail when the C library's perror()
 Mike> +function is pulled in and collides with portmap's definition.  So add a
 Mike> +flag to control the local override.

Why not simply rename it like the recent issue with getline -> get_line
in kconfig?

 Mike> diff --git a/package/portmap/portmap.mk b/package/portmap/portmap.mk
 Mike> index e83ff1d..4a5fe62 100644
 Mike> --- a/package/portmap/portmap.mk
 Mike> +++ b/package/portmap/portmap.mk
 Mike> @@ -9,8 +9,13 @@ PORTMAP_SOURCE = portmap-$(PORTMAP_VERSION).tgz
 Mike>  PORTMAP_SITE = http://neil.brown.name/portmap
 Mike>  PORTMAP_SBINS = portmap pmap_dump pmap_set
 
 Mike> +PORTMAP_FLAGS = NO_TCP_WRAPPER=1 NO_PIE=1 NO_PERROR=1

Why enforce no PIE?

 Mike> +ifeq ($(BR2_USE_MMU),)
 Mike> +PORTMAP_FLAGS += NO_FORK=1

Out of interest, what functionaly in portmapper do you miss with
NO_FORK?

-- 
Bye, Peter Korsgaard


More information about the buildroot mailing list