From d61e55123666d1d0f403b44496b044a2d95fb122 Mon Sep 17 00:00:00 2001 From: mintty Date: Wed, 24 Jul 2019 23:06:41 +0200 Subject: [PATCH] backend patch v3, linking properly (#169), with dlopen for getpwuid (#156) --- makefile | 4 ++-- wslbridge-backend-static.patch | 43 +++++++++++++++++++++++----------- 2 files changed, 31 insertions(+), 16 deletions(-) diff --git a/makefile b/makefile index 3900d6d..512ab7b 100644 --- a/makefile +++ b/makefile @@ -8,7 +8,7 @@ # wsltty release -ver=3.0.2 +ver=3.0.2.2 # wsltty appx release - must have 4 parts! verx=3.0.2.2 @@ -121,7 +121,7 @@ wslbridge-package: wslbridge-source: wslbridge-$(wslbridge-commit).zip unzip -o wslbridge-$(wslbridge-commit).zip - #cd wslbridge-$(wslbridge-commit)/backend; patch -T -p1 < ../../wslbridge-backend-static.patch + cd wslbridge-$(wslbridge-commit)/backend; patch -T -p1 < ../../wslbridge-backend-static.patch tr -d '\015' < wslbridge-$(wslbridge-commit)/LICENSE.txt > LICENSE.wslbridge wslbridge-$(wslbridge-commit).zip: diff --git a/wslbridge-backend-static.patch b/wslbridge-backend-static.patch index 79a55ca..01e0145 100644 --- a/wslbridge-backend-static.patch +++ b/wslbridge-backend-static.patch @@ -1,26 +1,41 @@ -diff -rup orig/Makefile new/Makefile ---- orig/Makefile 2018-05-06 01:12:36.000000000 +0200 -+++ new/Makefile 2019-05-01 08:16:53.647051200 +0200 -@@ -5,7 +5,7 @@ all : ../out/wslbridge-backend - ../out/wslbridge-backend : wslbridge-backend.cc ../common/SocketIo.cc ../common/SocketIo.h ../VERSION.txt Makefile - mkdir -p ../out - $(CXX) -std=c++11 -fno-exceptions \ -- -static-libgcc -static-libstdc++ \ -+ -static -static-libgcc -static-libstdc++ \ +diff -rup old/Makefile new/Makefile +--- old/Makefile 2018-05-06 01:12:36.000000000 +0200 ++++ new/Makefile 2019-07-24 22:29:12.874257700 +0200 +@@ -8,7 +8,9 @@ all : ../out/wslbridge-backend + -static-libgcc -static-libstdc++ \ -D_GNU_SOURCE \ -DWSLBRIDGE_VERSION=$(shell cat ../VERSION.txt) \ - -Wall -O2 $< ../common/SocketIo.cc -o $@ -lutil -pthread -diff -rup orig/wslbridge-backend.cc new/wslbridge-backend.cc ---- orig/wslbridge-backend.cc 2018-05-06 01:12:36.000000000 +0200 -+++ new/wslbridge-backend.cc 2019-05-01 08:19:12.799688500 +0200 -@@ -494,6 +494,45 @@ static void frontendVersionCheck(const c +- -Wall -O2 $< ../common/SocketIo.cc -o $@ -lutil -pthread ++ -Wall -O2 $< ../common/SocketIo.cc -o $@ \ ++ -ldl -lutil -static -pthread \ ++ -Wl,--whole-archive -lpthread -Wl,--no-whole-archive + $(STRIP) $@ + + clean: +diff -rup old/wslbridge-backend.cc new/wslbridge-backend.cc +--- old/wslbridge-backend.cc 2018-05-06 01:12:36.000000000 +0200 ++++ new/wslbridge-backend.cc 2019-07-24 22:55:25.324307400 +0200 +@@ -494,6 +494,58 @@ static void frontendVersionCheck(const c } // namespace +#define getpwuid _getpwuid + ++#include ++typedef struct passwd * (*__getpwuid_t)(int uid); ++ +struct passwd * getpwuid(int uid) +{ ++ void * dl = dlopen(0, 0); ++printf("dlopen %p\n", dl); ++ if (dl) { ++ struct passwd * (*__getpwuid)(int uid) = ++ (__getpwuid_t)dlsym(dl, "getpwuid"); ++printf("dlsym %p\n", __getpwuid); ++ if (__getpwuid) ++ return __getpwuid(uid); ++ } ++ + FILE * pwd = fopen("/etc/passwd", "r"); + if (pwd) { + char pwbuf[222];