From 25eeac0518f90bfba94049c56fce50cca6074d3d Mon Sep 17 00:00:00 2001
From: Rui Ueyama <ruiu@google.com>
Date: Tue, 4 Feb 2014 07:56:52 -0800
Subject: [PATCH] Skip COMDAT sections when parsing COFF

Fixes https://code.google.com/p/chromium/issues/detail?id=339889
when building Clang-based ASan on Windows

Change-Id: Ib77d9593636f46827dbb77f087d407ec0f463fc7
---
 build/make/obj_int_extract.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/build/make/obj_int_extract.c b/build/make/obj_int_extract.c
index 8c169577cf..819ce9d587 100644
--- a/build/make/obj_int_extract.c
+++ b/build/make/obj_int_extract.c
@@ -666,7 +666,11 @@ int parse_coff(uint8_t *buf, size_t sz) {
     }
     strcpy(sectionlist[i], sectionname);
 
-    if (!strcmp(sectionname, ".rdata")) sectionrawdata_ptr = get_le32(ptr + 20);
+    // check if it's .rdata and is not a COMDAT section.
+    if (!strcmp(sectionname, ".rdata") &&
+        (get_le32(ptr + 36) & 0x1000) == 0) {
+      sectionrawdata_ptr = get_le32(ptr + 20);
+    }
 
     ptr += 40;
   }
-- 
GitLab