From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mout02.posteo.de (mout02.posteo.de [185.67.36.66]) by mx.groups.io with SMTP id smtpd.web09.3321.1649832890280342707 for ; Tue, 12 Apr 2022 23:54:51 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@posteo.de header.s=2017 header.b=csRArmTu; spf=pass (domain: posteo.de, ip: 185.67.36.66, mailfrom: mhaeuser@posteo.de) Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 5B3C924010C for ; Wed, 13 Apr 2022 08:54:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.de; s=2017; t=1649832888; bh=Br75NdB08WrXY5iYDUcH5FLlcO7hLgicYTm37/14hNc=; h=Subject:From:Cc:Date:To:From; b=csRArmTuMtPo06Nze4/rCKIGGMv07HaneTMPp9VsH33jBjgdKR8ct/sT6QPQsE5I4 L09eOvngxIURAuoyIst5zgduXIxiJ+jaE2DRQ568ES/metRF740bnfqRjxa6/nkz+S kGDLVxcvlVJMK4ySTwAgJB3HH3p4dAMJUjsAuTPdNXrxAn0D5nX0w5toqiC/x6AQRb MGcpymRv33CvGoO+ELRK0JcZ0h5ehPw5/VEGlv6cD84PwHDOIxUAjaBIc4bMiGHgaB VzkSJ2DDepKYoeUIt19zQodxN9OBIOQIpWRJABiA1D+XAuXsdfdv3gVtc4BHeJAXhx FNMQ5f1w1DRuw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4KdYHV5Mkwz9rxR; Wed, 13 Apr 2022 08:54:46 +0200 (CEST) Mime-Version: 1.0 (1.0) Subject: Re: [edk2-discuss] GSoC Proposal From: =?UTF-8?B?TWFydmluIEjDpHVzZXI=?= In-Reply-To: Cc: nathaniel.l.desimone@intel.com, devel@edk2.groups.io, steven.shi@intel.com Date: Wed, 13 Apr 2022 06:54:46 +0000 Message-Id: References: To: discuss@edk2.groups.io, adachristine18@gmail.com Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable CC Nate (GSoC admin) CC Steven (task mentor) CC edk2-devel (you picked the logically correct list, but it=E2=80=99s pret= ty dead and barely anyone reads it) Hey Ada, Out of mere curiosity, why did you pick this item? :) Hey Steven, I feel like there is more to your proposal than is given on the task page. = Why is it =E2=80=9CELF first=E2=80=9D, is it something useful for UefiPaylo= adPkg or Linux somehow? As for supporting it in the EDK II core, I personally feel like this is muc= h too late. The entire ecosystem is centred around protocols (and the servi= ces tables) already. =E2=80=9CLoading only when necessary=E2=80=9D doesn=E2= =80=99t sound very important to me personally, as the firmware image is alr= eady supposed to be fairly minimal. I=E2=80=99d rather like to see the intr= oduction of =E2=80=9Clazy protocols=E2=80=9D (which do not require any new = fundamental concepts), e.g., for network and HID stuff like mice and touch,= which go through the driver connection procedure only when a protocol func= tion is called for the first time. A big issue with this of course are non-= function pointers in the protocol structure. This will not only require a dynamic linker in the firmware to maybe double= the size of the already disgusting and vastly unmaintained PE loader, it w= ill also require further format conversion from ELF and Mach-O, both of whi= ch already are buggy (the former much more so than the latter). This is a t= remendous effort in my opinion and introducing partial support will cause m= ore awkward toolchain limitations. Can you please outline why this (in my opinion, big) tradeoff is worth it? = Just curious. :) Best regards, Marvin > On 13. Apr 2022, at 03:05, Ada Christine wrote= : > =EF=BB=BFHello, edk2 developers! >=20 > I've registered as a contributor candidate for GSoC 2022 and am intereste= d in working on one of the items from the Tasks list here https://github.co= m/tianocore/tianocore.github.io/wiki/Tasks. Specifically, adding dynamic li= nking support caught my attention as this is something i've been investigat= ing and learning more about in one of my own personal projects. As a little= background, my personal project is an experiment in OS development and I u= se a very small subset of the boot services to get started and loaded. It c= an be found here: https://github.com/adachristine/sophia. Recently I've sta= rted investigating (and begun to implement) using ELF's dynamic facilities = to dynamically load kernel modules. I know PE is slightly different to ELF,= but the principles seem similar enough. >=20 > I've had a few glances at the EDKII source code in the past and have a ge= neral idea of how it all fits together. What I have in mind to implement th= is would be the following: > - create a dynamic linker as a module package to be compiled into the mai= n application > (alternatively, implement dynamic linking as a runtime service driver?) > - adjust the build system to enable building as DLLs and dynamic linking = of module packages to the main application > (module packages could be per-application and optionally site packages i= n a subdirectory of the ESP?) >=20 > I know the details of how this would all fit together are a little more i= nvolved, but this is just the rough first idea that came to my mind. Happy = to hear feedback, and if my idea seems feasible I can get to work on a more= in-depth plan to put this together. >=20 > Thanks! >=20 > - Ada >=20 >=20 >=20