From: "Zhu, Yonghong" <yonghong.zhu@intel.com>
To: Leif Lindholm <leif.lindholm@linaro.org>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
"Feng, YunhuaX" <yunhuax.feng@intel.com>,
"Gao, Liming" <liming.gao@intel.com>,
"Zhu, Yonghong" <yonghong.zhu@intel.com>
Subject: Re: [Patch 3/4 V3] BaseTools: Update Gensec to set PROCESSING_REQUIRED value
Date: Tue, 5 Dec 2017 13:56:53 +0000 [thread overview]
Message-ID: <B9726D6DCCFB8B4CA276A9169B02216D51F44F06@SHSMSX103.ccr.corp.intel.com> (raw)
In-Reply-To: <20171205115302.2fbjq7572iqztsgi@bivouac.eciton.net>
Hi Leif,
Thanks. I just sent out the patch to fix this bug. Could you help to try it?
Best Regards,
Zhu Yonghong
-----Original Message-----
From: Leif Lindholm [mailto:leif.lindholm@linaro.org]
Sent: Tuesday, December 05, 2017 7:53 PM
To: Zhu, Yonghong <yonghong.zhu@intel.com>
Cc: edk2-devel@lists.01.org; Feng, YunhuaX <yunhuax.feng@intel.com>; Gao, Liming <liming.gao@intel.com>
Subject: Re: [edk2] [Patch 3/4 V3] BaseTools: Update Gensec to set PROCESSING_REQUIRED value
This patch has broken BaseTools build with GCC on master:
make -C GenSec
make[2]: Entering directory '/work/git/edk2/BaseTools/Source/C/GenSec'
gcc -c -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-deprecated-declarations -Wno-unused-result -nostdlib -c -g -I .. -I ../Include/Common -I ../Include/ -I ../Include/IndustryStandard -I ../Common/ -I .. -I . -I ../Include/X64/ -O2 GenSec.c -o GenSec.o In file included from ../Include/Common/UefiBaseTypes.h:19:0,
from GenSec.c:20:
GenSec.c: In function ‘main’:
../Include/Common/BaseTypes.h:178:38: error: overflow in implicit constant conversion [-Werror=overflow]
#define ENCODE_ERROR(a) (MAX_BIT | (a))
^
../Include/Common/BaseTypes.h:204:38: note: in expansion of macro ‘ENCODE_ERROR’
#define RETURN_ABORTED ENCODE_ERROR (21)
^~~~~~~~~~~~
../Include/Common/UefiBaseTypes.h:119:35: note: in expansion of macro ‘RETURN_ABORTED’
#define EFI_ABORTED RETURN_ABORTED
^~~~~~~~~~~~~~
GenSec.c:1329:16: note: in expansion of macro ‘EFI_ABORTED’
return EFI_ABORTED;
^~~~~~~~~~~
../Include/Common/BaseTypes.h:178:38: error: overflow in implicit constant conversion [-Werror=overflow]
#define ENCODE_ERROR(a) (MAX_BIT | (a))
^
../Include/Common/BaseTypes.h:204:38: note: in expansion of macro ‘ENCODE_ERROR’
#define RETURN_ABORTED ENCODE_ERROR (21)
^~~~~~~~~~~~
../Include/Common/UefiBaseTypes.h:119:35: note: in expansion of macro ‘RETURN_ABORTED’
#define EFI_ABORTED RETURN_ABORTED
^~~~~~~~~~~~~~
GenSec.c:1343:16: note: in expansion of macro ‘EFI_ABORTED’
return EFI_ABORTED;
^~~~~~~~~~~
GenSec.c:1354:21: error: pointer targets in passing argument 1 of ‘strcasecmp’ differ in signedness [-Werror=pointer-sign]
if (stricmp(DummyFileBuffer, InFileBuffer + (InFileSize - DummyFileSize)) == 0){
^~~~~~~~~~~~~~~
In file included from GenSec.c:17:0:
/usr/include/string.h:529:12: note: expected ‘const char *’ but argument is of type ‘UINT8 * {aka unsigned char *}’
extern int strcasecmp (const char *__s1, const char *__s2)
^~~~~~~~~~
GenSec.c:1354:38: error: pointer targets in passing argument 2 of ‘strcasecmp’ differ in signedness [-Werror=pointer-sign]
if (stricmp(DummyFileBuffer, InFileBuffer + (InFileSize - DummyFileSize)) == 0){
^~~~~~~~~~~~ In file included from GenSec.c:17:0:
/usr/include/string.h:529:12: note: expected ‘const char *’ but argument is of type ‘UINT8 * {aka unsigned char *}’
extern int strcasecmp (const char *__s1, const char *__s2)
^~~~~~~~~~
cc1: all warnings being treated as errors
../Makefiles/footer.makefile:27: recipe for target 'GenSec.o' failed
make[2]: *** [GenSec.o] Error 1
make[2]: Leaving directory '/work/git/edk2/BaseTools/Source/C/GenSec'
GNUmakefile:84: recipe for target 'GenSec' failed
make[1]: *** [GenSec] Error 2
make[1]: Leaving directory '/work/git/edk2/BaseTools/Source/C'
GNUmakefile:25: recipe for target 'Source/C' failed
make: *** [Source/C] Error 2
make: Leaving directory '/work/git/edk2/BaseTools'
On Wed, Nov 29, 2017 at 10:02:05PM +0800, Yonghong Zhu wrote:
> This patch add new option --dummy file, and we compare the dummpy file
> with input file to decide whether we need to set PROCESSING_REQUIRED
> value.
>
> Cc: Liming Gao <liming.gao@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Yunhua Feng <yunhuax.feng@intel.com>
> ---
> BaseTools/Source/C/GenSec/GenSec.c | 74
> ++++++++++++++++++++++++++++++++++++++
> 1 file changed, 74 insertions(+)
>
> diff --git a/BaseTools/Source/C/GenSec/GenSec.c
> b/BaseTools/Source/C/GenSec/GenSec.c
> index d9cdc1f..904926c 100644
> --- a/BaseTools/Source/C/GenSec/GenSec.c
> +++ b/BaseTools/Source/C/GenSec/GenSec.c
> @@ -185,10 +185,13 @@ Returns:
> used in Ver section.\n");
> fprintf (stdout, " --sectionalign SectionAlign\n\
> SectionAlign points to section alignment, which support\n\
> the alignment scope 1~16M. It is specified in same\n\
> order that the section file is input.\n");
> + fprintf (stdout, " --dummy dummyfile\n\
> + compare dummpyfile with input_file to decide whether\n\
> + need to set PROCESSING_REQUIRED
> + attribute.\n");
> fprintf (stdout, " -v, --verbose Turn on verbose output with informational messages.\n");
> fprintf (stdout, " -q, --quiet Disable all messages except key message and fatal error\n");
> fprintf (stdout, " -d, --debug level Enable debug messages, at input debug level.\n");
> fprintf (stdout, " --version Show program's version number and exit.\n");
> fprintf (stdout, " -h, --help Show this help message and exit.\n");
> @@ -1026,10 +1029,17 @@ Returns:
> EFI_STATUS Status;
> UINT64 LogLevel;
> UINT32 *InputFileAlign;
> UINT32 InputFileAlignNum;
> EFI_COMMON_SECTION_HEADER *SectionHeader;
> + CHAR8 *DummyFileName;
> + FILE *DummyFile;
> + UINTN DummyFileSize;
> + UINT8 *DummyFileBuffer;
> + FILE *InFile;
> + UINT8 *InFileBuffer;
> + UINTN InFileSize;
>
> InputFileAlign = NULL;
> InputFileAlignNum = 0;
> InputFileName = NULL;
> OutputFileName = NULL;
> @@ -1047,10 +1057,17 @@ Returns:
> Status = STATUS_SUCCESS;
> LogLevel = 0;
> SectGuidHeaderLength = 0;
> VersionSect = NULL;
> UiSect = NULL;
> + DummyFileSize = 0;
> + DummyFileName = NULL;
> + DummyFile = NULL;
> + DummyFileBuffer = NULL;
> + InFile = NULL;
> + InFileSize = 0;
> + InFileBuffer = NULL;
>
> SetUtilityName (UTILITY_NAME);
>
> if (argc == 1) {
> Error (NULL, 0, 1001, "Missing options", "No options input"); @@
> -1117,10 +1134,20 @@ Returns:
> }
> argc -= 2;
> argv += 2;
> continue;
> }
> + if (stricmp (argv[0], "--dummy") == 0) {
> + DummyFileName = argv[1];
> + if (DummyFileName == NULL) {
> + Error (NULL, 0, 1003, "Invalid option value", "Dummy file can't be NULL");
> + goto Finish;
> + }
> + argc -= 2;
> + argv += 2;
> + continue;
> + }
>
> if ((stricmp (argv[0], "-r") == 0) || (stricmp (argv[0], "--attributes") == 0)) {
> if (argv[1] == NULL) {
> Error (NULL, 0, 1003, "Invalid option value", "Guid section attributes can't be NULL");
> goto Finish;
> @@ -1290,10 +1317,57 @@ Returns:
> goto Finish;
> }
>
> VerboseMsg ("%s tool start.", UTILITY_NAME);
>
> + if (DummyFileName != NULL) {
> + //
> + // Open file and read contents
> + //
> + DummyFile = fopen (LongFilePath (DummyFileName), "rb");
> + if (DummyFile == NULL) {
> + Error (NULL, 0, 0001, "Error opening file", DummyFileName);
> + return EFI_ABORTED;
> + }
> +
> + fseek (DummyFile, 0, SEEK_END);
> + DummyFileSize = ftell (DummyFile);
> + fseek (DummyFile, 0, SEEK_SET);
> + DummyFileBuffer = (UINT8 *) malloc (DummyFileSize);
> + fread(DummyFileBuffer, 1, DummyFileSize, DummyFile);
> + fclose(DummyFile);
> + DebugMsg (NULL, 0, 9, "Dummy files", "the dummy file name is %s
> + and the size is %u bytes", DummyFileName, (unsigned) DummyFileSize);
> +
> + InFile = fopen(LongFilePath(InputFileName[0]), "rb");
> + if (InFile == NULL) {
> + Error (NULL, 0, 0001, "Error opening file", InputFileName[0]);
> + return EFI_ABORTED;
> + }
> +
> + fseek (InFile, 0, SEEK_END);
> + InFileSize = ftell (InFile);
> + fseek (InFile, 0, SEEK_SET);
> + InFileBuffer = (UINT8 *) malloc (InFileSize);
> + fread(InFileBuffer, 1, InFileSize, InFile);
> + fclose(InFile);
> + DebugMsg (NULL, 0, 9, "Input files", "the input file name is %s and the size is %u bytes", InputFileName[0], (unsigned) InFileSize);
> + if (InFileSize > DummyFileSize){
> + if (stricmp(DummyFileBuffer, InFileBuffer + (InFileSize - DummyFileSize)) == 0){
> + SectGuidHeaderLength = InFileSize - DummyFileSize;
> + }
> + }
> + if (SectGuidHeaderLength == 0) {
> + SectGuidAttribute |= EFI_GUIDED_SECTION_PROCESSING_REQUIRED;
> + }
> + if (DummyFileBuffer != NULL) {
> + free (DummyFileBuffer);
> + }
> + if (InFileBuffer != NULL) {
> + free (InFileBuffer);
> + }
> + }
> +
> //
> // Parse all command line parameters to get the corresponding section type.
> //
> VerboseMsg ("Section type is %s", SectionName);
> if (SectionName == NULL) {
> --
> 2.6.1.windows.1
>
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
next prev parent reply other threads:[~2017-12-05 13:52 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-29 14:02 [Patch 0/4 V3] BaseTools: Enable multiple thread to generate FFS file Yonghong Zhu
2017-11-29 14:02 ` [Patch 1/4 V3] BaseTools: GenFfs support to get alignment value from SectionFile Yonghong Zhu
2017-11-29 14:02 ` [Patch 2/4 V3] BaseTools: Update Trim to generate VfrBinOffset Binary Yonghong Zhu
2017-11-29 14:02 ` [Patch 3/4 V3] BaseTools: Update Gensec to set PROCESSING_REQUIRED value Yonghong Zhu
2017-12-05 11:53 ` Leif Lindholm
2017-12-05 13:56 ` Zhu, Yonghong [this message]
2017-11-29 14:02 ` [Patch 4/4 V3] BaseTools: Update Makefile to support FFS file generation Yonghong Zhu
2017-12-06 18:23 ` Leif Lindholm
2017-12-07 0:59 ` Zhu, Yonghong
2017-12-07 9:59 ` Zhu, Yonghong
2017-12-01 6:13 ` [Patch 0/4 V3] BaseTools: Enable multiple thread to generate FFS file Gao, Liming
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=B9726D6DCCFB8B4CA276A9169B02216D51F44F06@SHSMSX103.ccr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox