public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Ni, Ray" <ray.ni@intel.com>
To: devel@edk2.groups.io
Cc: Liming Gao <liming.gao@intel.com>, Feng Bob C <bob.c.feng@intel.com>
Subject: [PATCH 2/6] BaseTools GenFw: Support CLANG8ELF with conversion ELF to PE/COFF image
Date: Wed,  2 Jun 2021 15:45:50 +0800	[thread overview]
Message-ID: <20210602074554.244-3-ray.ni@intel.com> (raw)
In-Reply-To: <20210602074554.244-1-ray.ni@intel.com>

From: Liming Gao <liming.gao@intel.com>

CLANG8ELF tool chain generated ELF image with the different attributes
in section. Update GenFw to handle them.
1. .text section with writable attribute (support)
2. .reloc section has the symbol for *ABS* (skip)

Signed-off-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Feng Bob C <bob.c.feng@intel.com>

# Conflicts:
#	BaseTools/Source/C/GenFw/Elf64Convert.c
---
 BaseTools/Source/C/GenFw/Elf32Convert.c | 12 +++---------
 BaseTools/Source/C/GenFw/Elf64Convert.c |  5 +++--
 2 files changed, 6 insertions(+), 11 deletions(-)

diff --git a/BaseTools/Source/C/GenFw/Elf32Convert.c b/BaseTools/Source/C/GenFw/Elf32Convert.c
index 2485b2cb7a..7c8a065678 100644
--- a/BaseTools/Source/C/GenFw/Elf32Convert.c
+++ b/BaseTools/Source/C/GenFw/Elf32Convert.c
@@ -238,7 +238,7 @@ IsTextShdr (
   Elf_Shdr *Shdr
   )
 {
-  return (BOOLEAN) ((Shdr->sh_flags & (SHF_WRITE | SHF_ALLOC)) == SHF_ALLOC);
+  return (BOOLEAN) ((Shdr->sh_flags & (SHF_EXECINSTR | SHF_ALLOC)) == (SHF_EXECINSTR | SHF_ALLOC));
 }
 
 STATIC
@@ -261,7 +261,7 @@ IsDataShdr (
   if (IsHiiRsrcShdr(Shdr)) {
     return FALSE;
   }
-  return (BOOLEAN) (Shdr->sh_flags & (SHF_WRITE | SHF_ALLOC)) == (SHF_ALLOC | SHF_WRITE);
+  return (BOOLEAN) (Shdr->sh_flags & (SHF_EXECINSTR | SHF_WRITE | SHF_ALLOC)) == (SHF_ALLOC | SHF_WRITE);
 }
 
 STATIC
@@ -749,13 +749,7 @@ WriteSections32 (
           if (SymName == NULL) {
             SymName = (const UINT8 *)"<unknown>";
           }
-
-          Error (NULL, 0, 3000, "Invalid",
-                 "%s: Bad definition for symbol '%s'@%#x or unsupported symbol type.  "
-                 "For example, absolute and undefined symbols are not supported.",
-                 mInImageName, SymName, Sym->st_value);
-
-          exit(EXIT_FAILURE);
+          continue;
         }
         SymShdr = GetShdrByIndex(Sym->st_shndx);
 
diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c b/BaseTools/Source/C/GenFw/Elf64Convert.c
index d097db8632..8fe672e984 100644
--- a/BaseTools/Source/C/GenFw/Elf64Convert.c
+++ b/BaseTools/Source/C/GenFw/Elf64Convert.c
@@ -246,7 +246,7 @@ IsTextShdr (
   Elf_Shdr *Shdr
   )
 {
-  return (BOOLEAN) ((Shdr->sh_flags & (SHF_WRITE | SHF_ALLOC)) == SHF_ALLOC);
+  return (BOOLEAN) ((Shdr->sh_flags & (SHF_EXECINSTR | SHF_ALLOC)) == (SHF_EXECINSTR | SHF_ALLOC));
 }
 
 STATIC
@@ -269,7 +269,7 @@ IsDataShdr (
   if (IsHiiRsrcShdr(Shdr)) {
     return FALSE;
   }
-  return (BOOLEAN) (Shdr->sh_flags & (SHF_WRITE | SHF_ALLOC)) == (SHF_ALLOC | SHF_WRITE);
+  return (BOOLEAN) (Shdr->sh_flags & (SHF_EXECINSTR | SHF_WRITE | SHF_ALLOC)) == (SHF_ALLOC | SHF_WRITE);
 }
 
 STATIC
@@ -1060,6 +1060,7 @@ WriteSections64 (
 
             exit(EXIT_FAILURE);
           }
+          continue;
         }
         SymShdr = GetShdrByIndex(Sym->st_shndx);
 
-- 
2.31.1.windows.1


  parent reply	other threads:[~2021-06-02  7:46 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-02  7:45 [PATCH 0/6] Add CLANGDWARF toolchain for universal payload needs Ni, Ray
2021-06-02  7:45 ` [PATCH 1/6] BaseTools: Add ClangBase.lds for CLANG8 tool chain with max-page-size Ni, Ray
2021-06-02  7:45 ` Ni, Ray [this message]
2021-06-02  7:45 ` [PATCH 3/6] BaseTools: Update build_rule to skip CLANG resource section generation Ni, Ray
2021-06-02  7:45 ` [PATCH 4/6] BaseTools: Add new CLANG8ELF tool chain for new LLVM/CLANG8 Ni, Ray
2021-06-02  7:45 ` [PATCH 5/6] BaseTools: Update ClangBase.lds to keep dynamic section Ni, Ray
2021-06-02  7:45 ` [PATCH 6/6] BaseTools: Change CLANG8ELF to CLANGDWARF Ni, Ray
2021-06-03  1:17 ` 回复: [edk2-devel] [PATCH 0/6] Add CLANGDWARF toolchain for universal payload needs gaoliming
2021-06-03  6:08   ` Ni, Ray
2021-06-03  6:09     ` Ni, Ray

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=20210602074554.244-3-ray.ni@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