From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lf1-f65.google.com (mail-lf1-f65.google.com [209.85.167.65]) by mx.groups.io with SMTP id smtpd.web12.2637.1595981867915456492 for ; Tue, 28 Jul 2020 17:17:48 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linaro.org header.s=google header.b=Yvi+7VEl; spf=pass (domain: linaro.org, ip: 209.85.167.65, mailfrom: masahisa.kojima@linaro.org) Received: by mail-lf1-f65.google.com with SMTP id b30so11995870lfj.12 for ; Tue, 28 Jul 2020 17:17:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=9RLNs+C9g30RXMxrB/IvHCBuRaYA7ZROLPGrsrQhC9M=; b=Yvi+7VElrCruma9n519RMdLixYbuD69znN5fhfw6AHWXO2uUwUM2BxD5Q/zTB0Eqjx SrZW54PaCujC+zUYbuBsxuJ5WsKpEjCLy3gjwCTfwDTLMZAh/aKmaE/x1uD84v7udcga OXghsgvJuJnI2/DSMLKMe0Ait7ce/LAg4m7b/adRKPCfUpvN5nvJu+glH6jXX/TsCEIz 8eOVNRZsq8RFlbooLnZaS5SdKFgaJKOAsAZbBw7fyOqoqtU7O5GEFcHjNVgA6Hvb+E9V eW9vkZQwM+LMitL/wq9DqbQcyAxkgUJnKu+pOGhiay7EZLaOo/VFLiFFCMOzg8Tzz2R8 L4nQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=9RLNs+C9g30RXMxrB/IvHCBuRaYA7ZROLPGrsrQhC9M=; b=eK+xZuPzj/hVWsI6Ti4CkqA0uKsfmE1qcBHAPOpRrh2q7GIZwo7TxrkcICfzk5xZhe g0axRB6h1Es+yYddDONE0Hox9aUXOHQ7Z+8wyg+VZFt77keSM+scUqT5O4C4ZZel8sDL z1fqS7/dOC8sVCPAgHTay6Kv1s9mbEBQKraK0HmzfSFcWlvWtsPxFqFMeuMZPNVBcsWj UeeAlrjGEROrG0rRH6v4gByU2yTmcjm8IoV2dkHi15AXVKw0xcSJNaf5+xvnTmKvKuzo 8kllnUsLVxCJHcGYWlyp6PeV+yaJXFSdu8tAzRHPzmyZR1GtNznFv0w/nV66gdWw7z/4 vORA== X-Gm-Message-State: AOAM531Aa3KRo8Lm12UDwH3rQeWfxI45ggNk/e2bFOyfTQav2sJZwB58 EJ5icyvoVTsavieuGGLwDsw/sQmtSzu2AHoFfQ9AAQ== X-Google-Smtp-Source: ABdhPJxxMimtcT74gC07gMKm24bZXqUblKtcOGjgpcR/s1D4BD2YyYAD8HQCQw+qqihe/Gcnw8qlPbbIZV8+IJw7Yxc= X-Received: by 2002:a19:4094:: with SMTP id n142mr6264983lfa.166.1595981866071; Tue, 28 Jul 2020 17:17:46 -0700 (PDT) MIME-Version: 1.0 References: <20200701140604.5292-1-pierre.gondois@arm.com> <20200701140604.5292-5-pierre.gondois@arm.com> <20200727135825.GZ1337@vanye> <20200728111911.GE31778@vanye> In-Reply-To: <20200728111911.GE31778@vanye> From: "Masahisa Kojima" Date: Wed, 29 Jul 2020 09:17:34 +0900 Message-ID: Subject: Re: [edk2-devel] [PATCH v5 4/5] BaseTools: Compile AML bytecode arrays into .obj file To: Leif Lindholm Cc: Pierre Gondois , "devel@edk2.groups.io" , "Gao, Liming" , Sami Mujawar , Tomas Pilar , "Feng, Bob C" , Ard Biesheuvel Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Pierre, Leif, Thank you for your comment, I could replicate the issue. I will submit the patch to rename the Emmc.c. Regards, Masahisa On Tue, 28 Jul 2020 at 20:19, Leif Lindholm wrote: > > Yes, > > Do a git clean -fx in your edk2 directory, and delete your Build > directory completely. > > Regards, > > Leif > > On Tue, Jul 28, 2020 at 09:04:44 +0000, Pierre Gondois wrote: > > Hello Masahisa, > > > > Maybe you will have to delete/re-generate the build_rule.txt and > > tools_def.txt files that you have. This patch makes the build system > > generate a .amli file for each .asl file. If there is no Emmc.amli > > in your Build directory, this might be the reason. > > > > Regards, > > Pierre > > > > -----Original Message----- > > From: devel@edk2.groups.io On Behalf Of Masahis= a Kojima via groups.io > > Sent: Tuesday, July 28, 2020 2:38 AM > > To: Leif Lindholm > > Cc: devel@edk2.groups.io; Gao, Liming ; Pierre G= ondois ; Sami Mujawar ; Tomas= Pilar ; Feng, Bob C ; Ard Biesh= euvel > > Subject: Re: [edk2-devel] [PATCH v5 4/5] BaseTools: Compile AML byteco= de arrays into .obj file > > > > Hi Leif, > > > > > > Masahisa - since Ard is still on holiday, could you create a patch > > > > and send out for me to review? Either one of the files needs to be > > > > renamed, or we need to move the .asl files (Emmc.asl and Optee.asl= ) > > > > into a subdirectory. > > > > Probably I'm missing something, but my build for Developerbox platform= is successful, with the latest edk2/edk2-platforms as of today. > > > > My build option is: > > --- > > export TARGET=3DPlatform/Socionext/DeveloperBox/DeveloperBox.dsc > > export PROFILE=3DDEBUG > > export ARCH=3DAARCH64 > > export TOOL_CHAIN_TAG=3DGCC5 > > > > build -n $NUM_CPUS -a $ARCH -b $PROFILE -t $TOOL_CHAIN_TAG -p $TARGET = -D SECURE_BOOT_ENABLE=3DTRUE -D X64EMU_ENABLE=3DTRUE -D TPM2_ENABLE=3DTRUE > > --- > > > > GCC version is "gcc-linaro-6.4.1-2017.11-x86_64_aarch64-linux-gnu/bin/= aarch64-linux-gnu-". > > > > Some Output directory information: > > ~/src/uefi/Build/DeveloperBox$ find .|grep -i emmc ./DEBUG_GCC5/AARCH6= 4/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe/OUTPUT/Emmc.i= ii > > ./DEBUG_GCC5/AARCH64/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/P= latformDxe/OUTPUT/Emmc.obj.deps > > ./DEBUG_GCC5/AARCH64/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/P= latformDxe/OUTPUT/Emmc.iiii > > ./DEBUG_GCC5/AARCH64/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/P= latformDxe/OUTPUT/Emmc.obj > > ./DEBUG_GCC5/AARCH64/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/P= latformDxe/OUTPUT/Emmc.aml.deps > > ./DEBUG_GCC5/AARCH64/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/P= latformDxe/OUTPUT/Emmc.aml > > ./DEBUG_GCC5/AARCH64/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/P= latformDxe/OUTPUT/Emmc.i > > > > Regards, > > Masahisa > > > > On Tue, 28 Jul 2020 at 09:40, Gao, Liming wrote= : > > > > > > Pierre: > > > Thanks for your investigation. For now, the module will rename sou= rce file to avoid the file conflict. Can you submit one BZ for BaseTools to= enhance the logic for the autogen source file? This needs more discussion. > > > > > > Yes. I agree to place the generated source file into $(DEBUG_DIR).= You can make another patch for this change. > > > > > > Thanks > > > Liming > > > -----Original Message----- > > > From: devel@edk2.groups.io On Behalf Of > > > PierreGondois > > > Sent: 2020=E5=B9=B47=E6=9C=8828=E6=97=A5 1:10 > > > To: devel@edk2.groups.io; Gao, Liming ; Leif > > > Lindholm ; Masahisa Kojima > > > > > > Cc: Sami Mujawar ; Tomas Pilar > > > ; Feng, Bob C ; Ard > > > Biesheuvel > > > Subject: Re: [edk2-devel] [PATCH v5 4/5] BaseTools: Compile AML > > > bytecode arrays into .obj file > > > > > > Hello, > > > > > > Liming: > > > I didn't find anything preventing from having a .vfr and .c file wit= h the same name in the same scope. > > > > > > Everybody: > > > The .c files generated (from either .vfr or .asl) are generated in t= he Build/..../OUTPUT/ directory, with their original subdirectory stripped.= In the example below, the .c, .vfr and .asl files have been placed in subd= irectories in edk2/edk2-platforms. The recipes that have been generated are= : > > > $(OUTPUT_DIR)/Emmc.obj : $(OUTPUT_DIR)/AslDir/Emmc.c (from Emmc.asl) > > > $(OUTPUT_DIR)/Ip4Config2.obj : $(DEBUG_DIR)/VfrDir/Ip4Config2.c (fro= m > > > Ip4Config2.vfr) $(OUTPUT_DIR)/CDir/Emmc.obj : > > > $(WORKSPACE)/edk2-platforms/Silicon/Socionext/SynQuacer/Drivers/Plat= fo > > > rmDxe/CDir/Emmc.c (from Emmc.c) > > > > > > The only subdirectory that remains is the one from the .c files. Ind= eed, the build system might detects subdirectories from the .inf file locat= ion. As the .c file is generated in the OUTPUT directory where there is no = .inf file, it gets stripped. > > > This means that if a subdirectory is created, it is for the .c file,= but I don't think we should modify this. > > > > > > Adding a pre/postfix to the generated .c filename seems a better app= roach to me. It would require modifying build_rule.template, and choose whi= ch pre/postfix to add. > > > > > > Another point is that the .c file generated from the .c file is plac= ed in the $(DEBUG_DIR), when the one coming from the .asl file is placed in= $(OUTPUT_DIR). Maybe it should be modified to $(DEBUG_DIR) aswell. > > > > > > Regards, > > > Pierre > > > > > > -----Original Message----- > > > From: devel@edk2.groups.io On Behalf Of Limin= g > > > Gao via groups.io > > > Sent: Monday, July 27, 2020 3:21 PM > > > To: Leif Lindholm ; devel@edk2.groups.io; Pierre > > > Gondois ; Masahisa Kojima > > > > > > Cc: Sami Mujawar ; Tomas Pilar > > > ; Feng, Bob C ; Ard > > > Biesheuvel > > > Subject: Re: [edk2-devel] [PATCH v5 4/5] BaseTools: Compile AML > > > bytecode arrays into .obj file > > > > > > Leif: > > > VFR file has the similar case. VFR is converted to xxx.c, then com= pile it to obj file. > > > > > > Bob: > > > Has BaseTools such detection if VFR and C source file have the sam= e file name? > > > > > > Thanks > > > Liming > > > > -----Original Message----- > > > > From: Leif Lindholm > > > > Sent: Monday, July 27, 2020 9:58 PM > > > > To: devel@edk2.groups.io; pierre.gondois@arm.com; Masahisa Kojima > > > > > > > > Cc: sami.mujawar@arm.com; tomas.pilar@arm.com; Feng, Bob C > > > > ; Gao, Liming ; Ard > > > > Biesheuvel > > > > Subject: Re: [edk2-devel] [PATCH v5 4/5] BaseTools: Compile AML > > > > bytecode arrays into .obj file > > > > > > > > Hi Pierre, (+Masahisa) > > > > > > > > This commit (0a4aa20e8d44) made for an exciting start to my week. > > > > > > > > Socionext's Developerbox failed to build for me, with the > > > > spectacular error message: > > > > > > > > /usr/lib/gcc-cross/aarch64-linux-gnu/8/../../../../aarch64-linux-g= nu/bin/ld: > > > > DWARF error: could not find abbrev number 5912 > > > > /tmp/ccKt4gaM.ltrans0.ltrans.o: in function `RegisterDevices': > > > > :(.text.RegisterDevices+0xb0): undefined reference to > > > > `RegisterEmmc' > > > > > > > > GCC49 (without lto) and CLANG38 profiles give much the same result= , > > > > with slightly less esoteric messages. > > > > > > > > The reason for this turned out to be that edk2-platforms > > > > Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/ has both an > > > > Emmc.asl and an Emmc.c file, which after this patch both generate = an > > > > Emmc.obj in the same output directory. > > > > > > > > I think the correct course of action is to fix this in the SynQuac= er > > > > driver, but I am reporting it here so we get it logged in the list > > > > archives. > > > > > > > > It would of course be good if the build system could detect and wa= rn > > > > over cases like this, rather than silently overwriting existing > > > > object files. > > > > > > > > Masahisa - since Ard is still on holiday, could you create a patch > > > > and send out for me to review? Either one of the files needs to be > > > > renamed, or we need to move the .asl files (Emmc.asl and Optee.asl= ) > > > > into a subdirectory. > > > > > > > > Best Regards, > > > > > > > > Leif > > > > > > > > On Wed, Jul 01, 2020 at 15:06:03 +0100, PierreGondois wrote: > > > > > From: Pierre Gondois > > > > > > > > > > The AmlToHex script and Posix/WindowsLike wrappers convert an AM= L > > > > > file to a .hex file, containing a C array storing AML bytecode. > > > > > This ".hex" file can then be included in a C file, allowing to > > > > > access the AML bytecode from this C file. > > > > > > > > > > The EDK2 build system doesn't allow to a depict dependency order= s > > > > > between files of different languages. For instance, in a module > > > > > containing a ".c" file and a ".asl", the ".c" > > > > > file may or may not be built prior to the ".asl" file. > > > > > This prevents any inclusion of a generated ".hex" in a ".c" file > > > > > since this later ".hex" file may or may not have been created ye= t. > > > > > > > > > > This patch modifies the AmlToC script to generate a C file inste= ad > > > > > of a ".hex" file. > > > > > It also adds the generation of an intermediate ".amli" file when > > > > > compiling an ASL file, and adds a rule to convert this ".amli" t= o > > > > > a C file. > > > > > > > > > > This allows to generate a C file containing the AML bytecode fro= m > > > > > an ASL file. This C file will then be handled by the EDK2 build > > > > > system to generate an object file. > > > > > Thus, no file inclusion will be required anymore. The C file > > > > > requiring the AML bytecode as a C array, and the ASL file, will = be > > > > > compiled independently. The C array must be defined as an extern= al > > > > > symbol. The linker is resolving the reference to the C array sym= bol. > > > > > > > > > > To summarize, the flow goes as: > > > > > -1. ASL file is compiled to AML; > > > > > -2. AML file is copied to a ".amli" intermediate file; -3. EDK= 2 > > > > > build system applies the rule relevant to ".amli" > > > > > files. This is, calling the "AmlToC" script, generating > > > > > a C file from the ".amli" file; -4. EDK2 build system > > > > > applies the rule relevant to C files. > > > > > This is creating an object file. > > > > > -5. EDK2 build system links the object file containing the > > > > > AML bytecode with the object file requiring it. > > > > > > > > > > Signed-off-by: Pierre Gondois > > > > > Suggested-by: Tomas Pilar > > > > > --- > > > > > > > > > > The changes can be seen at: > > > > > https://github.com/PierreARM/edk2/commits/803_Compile_AML_byteco= de > > > > > _a > > > > > rray_into_OBJ_file_v5 > > > > > > > > > > Notes: > > > > > v1: > > > > > - Add a new rule to the build_rule.template file to > > > > > generate ".obj" files from .asl files, and modify > > > > > the AmlToC script accordingly. [Pierre] > > > > > v2: > > > > > - Restrict the rule to DXE_DRIVER. This allows to build > > > > > the OvmfPkg, which was not the case in v1. [Pierre] > > > > > v3: > > > > > - Changed "Signed-off-by" to "Suggested-by". [Bob] > > > > > v4: > > > > > - No modification. Re-sending the patch with base64 > > > > > encoding to conserve the right line endings. [Bob] > > > > > v5: > > > > > - No modification. [Pierre] > > > > > > > > > > BaseTools/Conf/build_rule.template | 15 +++- > > > > > BaseTools/Source/Python/AmlToC/AmlToC.py | 82 > > > > > ++++++++------------ > > > > > 2 files changed, 47 insertions(+), 50 deletions(-) > > > > > > > > > > diff --git a/BaseTools/Conf/build_rule.template > > > > > b/BaseTools/Conf/build_rule.template > > > > > index > > > > > 0822b681fcd9f61c6508e6f93ffc31fa70fd7059..c034869915914936e28f64= a6 > > > > > aa > > > > > dba08e0169da44 100755 > > > > > --- a/BaseTools/Conf/build_rule.template > > > > > +++ b/BaseTools/Conf/build_rule.template > > > > > @@ -419,6 +419,7 @@ > > > > > > > > > > > > > > > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml > > > > > + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.amli > > > > > > > > > > > > > > > $(MAKE_FILE) > > > > > @@ -428,14 +429,24 @@ > > > > > "$(ASLPP)" $(DEPS_FLAGS) $(ASLPP_FLAGS) $(INC) > > > > > /I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > > > > > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii > > > > > Trim --source-code -l -o $(OUTPUT_DIR)(+)${s_dir}(+)${s= _base}.iiii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii > > > > > "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DI= R)(+)${s_dir}(+)${s_base}.iiii > > > > > - -AmlToHex $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml > > > > > + $(CP) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml > > > > > + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.amli > > > > > > > > > > > > > > > Trim --asl-file --asl-deps -o $(OUTPUT_DIR)(+)${s_dir}(= +)${s_base}.i -i $(INC_LIST) ${src} > > > > > "$(ASLPP)" $(DEPS_FLAGS) $(ASLPP_FLAGS) $(INC) > > > > > -I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > > > > > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii > > > > > Trim --source-code -l -o $(OUTPUT_DIR)(+)${s_dir}(+)${s= _base}.iiii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii > > > > > "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DI= R)(+)${s_dir}(+)${s_base}.iiii > > > > > - -AmlToHex $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml > > > > > + $(CP) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml > > > > > + $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.amli > > > > > + > > > > > +[Acpi-Machine-Language-File-to-C.DXE_DRIVER] > > > > > + > > > > > + ?.amli > > > > > + > > > > > + > > > > > + ${s_path}(+)${s_base}.c > > > > > + > > > > > + > > > > > + -AmlToC ${src} > > > > > > > > > > [C-Code-File.AcpiTable] > > > > > > > > > > diff --git a/BaseTools/Source/Python/AmlToC/AmlToC.py > > > > > b/BaseTools/Source/Python/AmlToC/AmlToC.py > > > > > index > > > > > 643db2910e37acfdd80ac18d288c921320a79ce1..346de7159de702d860bbd8= 09 > > > > > dd > > > > > be8175f1493cfb 100644 > > > > > --- a/BaseTools/Source/Python/AmlToC/AmlToC.py > > > > > +++ b/BaseTools/Source/Python/AmlToC/AmlToC.py > > > > > @@ -1,9 +1,9 @@ > > > > > ## @file > > > > > # > > > > > -# Convert an AML file to a .hex file containing the AML bytecod= e > > > > > stored in a > > > > > +# Convert an AML file to a .c file containing the AML bytecode > > > > > +stored in a > > > > > # C array. > > > > > -# By default, "Tables\Dsdt.aml" will generate "Tables\Dsdt.hex"= . > > > > > -# "Tables\Dsdt.hex" will contain a C array named "dsdt_aml_code= " > > > > > that contains > > > > > +# By default, "Tables\Dsdt.aml" will generate "Tables\Dsdt.c". > > > > > +# "Tables\Dsdt.c" will contain a C array named "dsdt_aml_code" > > > > > +that contains > > > > > # the AML bytecode. > > > > > # > > > > > # Copyright (c) 2020, ARM Limited. All rights reserved.
@@ > > > > > -17,31 +17,26 @@ from Common.BuildToolError import * import sys > > > > > import os > > > > > > > > > > +__description__ =3D """ > > > > > +Convert an AML file to a .c file containing the AML bytecode > > > > > +stored in a C array. By default, Tables\Dsdt.aml will generate = Tables\Dsdt.c. > > > > > +Tables\Dsdt.c will contain a C array named "dsdt_aml_code" that > > > > > +contains the AML bytecode. > > > > > +""" > > > > > + > > > > > ## Parse the command line arguments. > > > > > # > > > > > # @retval A argparse.NameSpace instance, containing parsed valu= es. > > > > > # > > > > > def ParseArgs(): > > > > > # Initialize the parser. > > > > > - Parser =3D argparse.ArgumentParser( > > > > > - description=3D"Convert an AML file to a .hex file contain= ing the AML " + \ > > > > > - "bytecode stored in a C array. By default, " = + \ > > > > > - "\"Tables\\Dsdt.aml\" will generate" + \ > > > > > - "\"Tables\\Dsdt.hex\". \"Tables\\Dsdt.hex\" w= ill " + \ > > > > > - "contain a C array named \"dsdt_aml_code\" th= at " + \ > > > > > - "contains the AML bytecode." > > > > > - ) > > > > > + Parser =3D argparse.ArgumentParser(description=3D__descript= ion__) > > > > > > > > > > # Define the possible arguments. > > > > > - Parser.add_argument( > > > > > - dest=3D"InputFile", > > > > > - help=3D"Path to an input AML file to generate a .hex file= from." > > > > > - ) > > > > > - Parser.add_argument( > > > > > - "-o", "--out-dir", dest=3D"OutDir", > > > > > - help=3D"Output directory where the .hex file will be gene= rated. " + \ > > > > > - "Default is the input file's directory." > > > > > - ) > > > > > + Parser.add_argument(dest=3D"InputFile", > > > > > + help=3D"Path to an input AML file to ge= nerate a .c file from.") > > > > > + Parser.add_argument("-o", "--out-dir", dest=3D"OutDir", > > > > > + help=3D"Output directory where the .c f= ile > > > > > + will be generated. Default is the input file's directory.") > > > > > > > > > > # Parse the input arguments. > > > > > Args =3D Parser.parse_args() > > > > > @@ -55,9 +50,7 @@ def ParseArgs(): > > > > > with open(Args.InputFile, "rb") as fIn: > > > > > Signature =3D str(fIn.read(4)) > > > > > if ("DSDT" not in Signature) and ("SSDT" not in Sig= nature): > > > > > - EdkLogger.info("Invalid file type. " + \ > > > > > - "File does not have a valid " += \ > > > > > - "DSDT or SSDT signature: %s" % = Args.InputFile) > > > > > + EdkLogger.info("Invalid file type. File does no= t > > > > > + have a valid DSDT or SSDT signature: {}".format(Args.InputFile= )) > > > > > return None > > > > > > > > > > # Get the basename of the input file. > > > > > @@ -66,42 +59,39 @@ def ParseArgs(): > > > > > > > > > > # If no output directory is specified, output to the input = directory. > > > > > if not Args.OutDir: > > > > > - Args.OutputFile =3D os.path.join( > > > > > - os.path.dirname(Args.InputFile), > > > > > - BaseName + ".hex" > > > > > - ) > > > > > + Args.OutputFile =3D os.path.join(os.path.dirname(Args.I= nputFile), > > > > > + BaseName + ".c") > > > > > else: > > > > > if not os.path.exists(Args.OutDir): > > > > > os.mkdir(Args.OutDir) > > > > > - Args.OutputFile =3D os.path.join(Args.OutDir, BaseName = + ".hex") > > > > > + Args.OutputFile =3D os.path.join(Args.OutDir, BaseName = + > > > > > + ".c") > > > > > > > > > > Args.BaseName =3D BaseName > > > > > > > > > > return Args > > > > > > > > > > -## Convert an AML file to a .hex file containing the AML byteco= de > > > > > stored > > > > > +## Convert an AML file to a .c file containing the AML bytecode > > > > > +stored > > > > > # in a C array. > > > > > # > > > > > # @param InputFile Path to the input AML file. > > > > > -# @param OutputFile Path to the output .hex file to generat= e. > > > > > +# @param OutputFile Path to the output .c file to generate. > > > > > # @param BaseName Base name of the input file. > > > > > -# This is also the name of the generated = .hex file. > > > > > +# This is also the name of the generated = .c file. > > > > > # > > > > > -def AmlToHex(InputFile, OutputFile, BaseName): > > > > > +def AmlToC(InputFile, OutputFile, BaseName): > > > > > > > > > > - MacroName =3D "__{}_HEX__".format(BaseName.upper()) > > > > > ArrayName =3D BaseName.lower() + "_aml_code" > > > > > + FileHeader =3D\ > > > > > +""" > > > > > +// This file has been generated from: > > > > > +// -Python script: {} > > > > > +// -Input AML file: {} > > > > > + > > > > > +""" > > > > > > > > > > with open(InputFile, "rb") as fIn, open(OutputFile, "w") as= fOut: > > > > > # Write header. > > > > > - fOut.write("// This file has been generated from:\n" + = \ > > > > > - "// \tPython script: " + \ > > > > > - os.path.abspath(__file__) + "\n" + \ > > > > > - "// \tInput AML file: " + \ > > > > > - os.path.abspath(InputFile) + "\n\n" + \ > > > > > - "#ifndef {}\n".format(MacroName) + \ > > > > > - "#define {}\n\n".format(MacroName) > > > > > - ) > > > > > + fOut.write(FileHeader.format(os.path.abspath(InputFile)= , > > > > > + os.path.abspath(__file__))) > > > > > > > > > > # Write the array and its content. > > > > > fOut.write("unsigned char {}[] =3D {{\n > > > > > ".format(ArrayName)) @@ -115,15 +105,12 @@ def AmlToHex(InputFil= e, OutputFile, BaseName): > > > > > byte =3D fIn.read(1) > > > > > fOut.write("\n};\n") > > > > > > > > > > - # Write footer. > > > > > - fOut.write("#endif // {}\n".format(MacroName)) > > > > > - > > > > > ## Main method > > > > > # > > > > > # This method: > > > > > # 1- Initialize an EdkLogger instance. > > > > > # 2- Parses the input arguments. > > > > > -# 3- Converts an AML file to a .hex file containing the AML = bytecode stored > > > > > +# 3- Converts an AML file to a .c file containing the AML by= tecode stored > > > > > # in a C array. > > > > > # > > > > > # @retval 0 Success. > > > > > @@ -139,10 +126,9 @@ def Main(): > > > > > if not CommandArguments: > > > > > return 1 > > > > > > > > > > - # Convert an AML file to a .hex file containing the AML= bytecode stored > > > > > + # Convert an AML file to a .c file containing the AML > > > > > + bytecode stored > > > > > # in a C array. > > > > > - AmlToHex(CommandArguments.InputFile, CommandArguments.O= utputFile, > > > > > - CommandArguments.BaseName) > > > > > + AmlToC(CommandArguments.InputFile, > > > > > + CommandArguments.OutputFile, CommandArguments.BaseName) > > > > > except Exception as e: > > > > > print(e) > > > > > return 1 > > > > > -- > > > > > 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)' > > > > > > > > > > > > > > > > > > > > > > IMPORTANT NOTICE: The contents of this email and any attachments are= confidential and may also be privileged. If you are not the intended recip= ient, please notify the sender immediately and do not disclose the contents= to any other person, use it for any purpose, or store or copy the informat= ion in any medium. Thank you. > > > > > > > > > > > > >=20 > > > > IMPORTANT NOTICE: The contents of this email and any attachments are c= onfidential and may also be privileged. If you are not the intended recipie= nt, please notify the sender immediately and do not disclose the contents t= o any other person, use it for any purpose, or store or copy the informatio= n in any medium. Thank you.