X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f X-Recipient: djgpp AT delorie DOT com X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=pehZUjUj3ZvPavt+eI6J/Rqbpjpyx9mE+nbW0CI4rkI=; b=cNVa2/xfcn1RXGZcW3fXTnv7CX/JvLF7ndKh6Db5CuE7B7g/yCMAaG5Kl3fnHvIYzq jt03botrBraHGVmiR3HBMZVkGDh8UmLc7eKdTta2M5ix430msPPCQODjGuS5r4dsxJP6 aVmBfpLD8ry9tVByRNWAbIY8k4UZziLIOG9Lct+BJZo8ELLeJfT77KCVeWlmZ8Z8eMep CUQ8rnjao9OHqUDH2mCcjoqr5saeTL/+3Ql5+lFhxXRysSyFvEwekw2QF14u+Oz3esvr qBn8MeUvVdP0Ehf6Exy2h1wFa6f7kd1kL7B86PGWQMzOIZU49WDrziSTaSJ1kopaII9+ ZjqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=pehZUjUj3ZvPavt+eI6J/Rqbpjpyx9mE+nbW0CI4rkI=; b=AlZ959B3PQlIG5Ww9eVjSl1j/43Z7udT3QZRC9rqVtj67+Drs4MsRXwqqpOBlzAYlt oNmszOf/OacVx1XffGxZORBAwl/cJ4wNz6IdoKOK4wScJ0TbcyEVf9o2wHv519ns/oem xlQ/exX0tB7GnWFZjGSN+YkmK64ULmrPax1+DEg89qyOHqD8CXmmgK1rDfFCHtthtfis PJGM9qRuwKzpMU8ddcRAwxV1pVSzvekH0EMUBZlK2wZcA3ARyxIKERQm1YkEDWYtXAUo +KdRHLs1YAiMrQdG4nlRJfEmyRHY0jU0GpVV893bARF/DyzYrJkt0z+qzgbN4oCekA86 lIZA== X-Gm-Message-State: AFqh2koPUxPv32DqzHVDlwZ2SwmBiSmm9vXX/VDj7N4y8hjzlCd1U8fK HfRsoW+hW1+WsdSTvZ950r+C0ccRyEhZtw== X-Google-Smtp-Source: AMrXdXvvxiNzSopJj9jYO0DwtRPNX6Tf6sFy/rErUpoQbzN245+WmSCkMybfqH1szf81mOcU2LMtiw== X-Received: by 2002:a05:6402:3786:b0:499:8849:5fac with SMTP id et6-20020a056402378600b0049988495facmr42580249edb.40.1674777023758; Thu, 26 Jan 2023 15:50:23 -0800 (PST) Message-ID: <3d9271ae-266d-ee7b-853b-984857ced1c8@gmail.com> Date: Fri, 27 Jan 2023 00:50:23 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: DXE3 with std::vector Content-Language: en-US To: djgpp AT delorie DOT com References: <63a56722-21d6-a368-6400-907f0cf9d01c AT gmail DOT com> <3b8f674c-bca3-c679-952e-f8ba5af196e7 AT gmail DOT com> <500850be-fd64-3f82-a1e1-929903084e9b AT gmail DOT com> From: "J.W. Jagersma (jwjagersma AT gmail DOT com) [via djgpp AT delorie DOT com]" In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Reply-To: djgpp AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk On 2023-01-26 23:42, Ozkan Sezer (sezeroz AT gmail DOT com) [via djgpp AT delorie DOT com] wrote: > On 1/26/23, J.W. Jagersma (jwjagersma AT gmail DOT com) [via > djgpp AT delorie DOT com] wrote: >> On 2023-01-23 05:00, Ozkan Sezer (sezeroz AT gmail DOT com) [via djgpp AT delorie DOT com] >> wrote: >>>>>> Just seems wrong to have to copy >>>>>> important libs like that? >>>>> That's a shortcoming of dxe3gen with gcc-provided libraries, >>>>> needs to be addressed but no one cared (or no one reported >>>>> the issue probably.) >>>> >>>> Any possibility of you being able to generate a patch or can we get >>>> it into documentation? >>> >>> The thing is, dxe3gen invokes ld, not gcc. gcc is a front-end to ld >>> and handles any such ugliness behind the scene and doing the same for >>> dxe3gen might be a real pain. >>> >>> If someone other than me can generate solution for this, or at least >>> some documentation, it'd be nice. >> >> Seems stubify does not delete/overwrite the input file if the file >> extension >> is something other than .exe, so calling stubify isn't so disastrous. >> >> I have a preliminary patch, attached, untested. >> > > So, you invoke gcc instead of ld, > > - removal of -X: O-OK, default anyway. > - removal of -S: Are you really sure? > - removal of -r: Don't think that it'd work. Those are in ld_args now (-Wl,-X,-S,-r,-T,dxe.ld), gcc splits it at the commas. > - removal of assembler for import lib > generation: Don't think that it'd work. The assembler is invoked via dxe_cc (gcc -c) instead. > Just tried the patched binary with a dxe build project, it fails > as expected: > ./dxe3gen -o sndpci.dxe -E _AU_ -U au.o ac97_def.o dpmi_c.o mdma.o > pcibios.o sc_cmi.o sc_e1371.o sc_ich.o sc_inthd.o sc_sbl24.o > sc_sbliv.o sc_sbxfi.o sc_via82.o tim.o udivdi3.o > dxe_tmp.o: linker output file has more than one section Getting multiple input sections sounds like some problem with the linker script. Do you have an open-source project for me to test on? I'll admit that I've never used DXE libraries before... I tried it with a basic hello-world that uses std::vector, and got a long list of unresolved references. But I get the same list with an unpatched dxe3gen. It does make a .dxe file with -U.