Commit f7e02993 authored by Igor Eremeev's avatar Igor Eremeev Committed by Commit Bot

[Supersize] Fix incorrect normalization of thin archive paths.

Strings in |MapFileParser| may contain concated thin archive paths like
"path/to/lib.a(../../path/to/object.o)". Normpath treats it as a path
and resolves second .. by removing the "lib.a(.." part. It breaks thin
archives processing, resulting in exceptions up the stack in |archive|
on calls to "rindex('(')".

Solution: thin archive paths do already get their paths normalized
later in |ar.CreateThinObjectPath|. So just skip them at this point.

R=huangs@chromium.org,agrieve@chromium.org

Change-Id: I83bffca44eba2a56c0ffdbfc8c83cd2785fb8b56
Reviewed-on: https://chromium-review.googlesource.com/1140298Reviewed-by: default avataragrieve <agrieve@chromium.org>
Reviewed-by: default avatarSamuel Huang <huangs@chromium.org>
Commit-Queue: agrieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#575631}
parent 45e6b9e2
......@@ -459,8 +459,11 @@ class MapFileParser(object):
inner_parser = MapFileParserGold()
else:
raise Exception('.map file is from a unsupported linker.')
section_sizes, syms = inner_parser.Parse(lines)
for sym in syms:
if sym.object_path: # Don't want '' to become '.'.
if sym.object_path and not sym.object_path.endswith(')'):
# Don't want '' to become '.'.
# Thin archives' paths will get fixed in |ar.CreateThinObjectPath|.
sym.object_path = os.path.normpath(sym.object_path)
return (section_sizes, syms)
......@@ -29,7 +29,7 @@ Section .bss: has 40.3% of 524520 bytes accounted for from 6 symbols. 775936 byt
.data@2de70a0(size_without_padding=4,padding=0,full_name=base::android::g_renderer_histogram_code,object_path=third_party/WebKit.a/sub/ContiguousContainer.o,source_path=,flags={anon},num_aliases=1,component=)
.data@2de70a4(size_without_padding=4,padding=0,full_name=base::android::g_library_version_number,object_path=third_party/WebKit.a/sub/ContiguousContainer.o,source_path=,flags={anon,rel.loc},num_aliases=1,component=)
.data@2dffd88(size_without_padding=0,padding=101600,full_name=** symbol gap 0 (end of section),object_path=,source_path=,flags={},num_aliases=1,component=)
.data.rel.ro@2cd8500(size_without_padding=56,padding=0,full_name=ChromeMainDelegateAndroid [vtable],object_path=third_party/WebKit.a/sub/PaintChunker.o,source_path=,flags={},num_aliases=1,component=)
.data.rel.ro@2cd8500(size_without_padding=56,padding=0,full_name=ChromeMainDelegateAndroid [vtable],object_path=third_party/WebKit.a/./../third_party/sub/PaintChunker.o,source_path=,flags={},num_aliases=1,component=)
.data.rel.ro@2cd8538(size_without_padding=24,padding=0,full_name=mojo::MessageReceiver [vtable],object_path=base/base/page_allocator.o,source_path=,flags={},num_aliases=1,component=)
.data.rel.ro@2cd8550(size_without_padding=12,padding=0,full_name=kMethodsAnimationFrameTimeHistogram,object_path=base/base/page_allocator.o,source_path=,flags={},num_aliases=1,component=)
.data.rel.ro@2ddc608(size_without_padding=0,padding=1065132,full_name=** symbol gap 0 (end of section),object_path=,source_path=,flags={},num_aliases=1,component=)
......@@ -45,8 +45,8 @@ Section .bss: has 40.3% of 524520 bytes accounted for from 6 symbols. 775936 byt
.rodata@284e364(size_without_padding=8,padding=0,full_name=,object_path=base/base/page_allocator.o,source_path=,flags={},num_aliases=1,component=)
.rodata@284e370(size_without_padding=40,padding=4,full_name=Name,object_path=base/base/page_allocator.o,source_path=,flags={},num_aliases=1,component=)
.rodata@284e398(size_without_padding=32,padding=0,full_name=chrome::mojom::FilePatcher::Name_,object_path=third_party/WebKit.a/sub/ContiguousContainer.o,source_path=,flags={},num_aliases=1,component=)
.rodata@28f3450(size_without_padding=48,padding=675992,full_name=kAnimationFrameTimeHistogramClassPath,object_path=third_party/WebKit.a/sub/PaintChunker.o,source_path=,flags={anon},num_aliases=1,component=)
.rodata@28f3480(size_without_padding=4,padding=0,full_name=blink::CSSValueKeywordsHash::findValueImpl(char const*, unsigned int)::value_word_list,object_path=third_party/WebKit.a/sub/PaintChunker.o,source_path=,flags={anon},num_aliases=1,component=)
.rodata@28f3450(size_without_padding=48,padding=675992,full_name=kAnimationFrameTimeHistogramClassPath,object_path=third_party/WebKit.a/./../third_party/sub/PaintChunker.o,source_path=,flags={anon},num_aliases=1,component=)
.rodata@28f3480(size_without_padding=4,padding=0,full_name=blink::CSSValueKeywordsHash::findValueImpl(char const*, unsigned int)::value_word_list,object_path=third_party/WebKit.a/./../third_party/sub/PaintChunker.o,source_path=,flags={anon},num_aliases=1,component=)
.rodata@2c158e4(size_without_padding=0,padding=3286112,full_name=** symbol gap 1 (end of section),object_path=,source_path=,flags={},num_aliases=1,component=)
.text@28d900(size_without_padding=16,padding=0,full_name=_GLOBAL__sub_I_page_allocator.cc,object_path=base/base/page_allocator.o,source_path=,flags={startup},num_aliases=1,component=)
.text@28d910(size_without_padding=56,padding=0,full_name=_GLOBAL__sub_I_bbr_sender.cc,object_path=base/base/page_allocator.o,source_path=,flags={startup},num_aliases=1,component=)
......@@ -57,8 +57,8 @@ Section .bss: has 40.3% of 524520 bytes accounted for from 6 symbols. 775936 byt
.text@28f000(size_without_padding=448,padding=0,full_name=ucnv_extMatchFromU(int const*, int, unsigned short const*, int, unsigned short const*, int, unsigned int*, signed char, signed char),object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=,flags={},num_aliases=1,component=)
.text@28f1c8(size_without_padding=20,padding=8,full_name=_GLOBAL__sub_I_SkDeviceProfile.cpp,object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=,flags={startup},num_aliases=1,component=)
.text@28f1e0(size_without_padding=69120,padding=4,full_name=foo_bar,object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=,flags={unlikely},num_aliases=1,component=)
.text@2a0000(size_without_padding=16,padding=32,full_name=blink::ContiguousContainerBase::shrinkToFit(),object_path=third_party/WebKit.a/sub/PaintChunker.o,source_path=,flags={},num_aliases=1,component=)
.text@2a0010(size_without_padding=12,padding=0,full_name=blink::ContiguousContainerBase::shrinkToFit(),object_path=third_party/WebKit.a/sub/PaintChunker.o,source_path=,flags={clone,hot},num_aliases=1,component=)
.text@2a0000(size_without_padding=16,padding=32,full_name=blink::ContiguousContainerBase::shrinkToFit(),object_path=third_party/WebKit.a/./../third_party/sub/PaintChunker.o,source_path=,flags={},num_aliases=1,component=)
.text@2a0010(size_without_padding=12,padding=0,full_name=blink::ContiguousContainerBase::shrinkToFit(),object_path=third_party/WebKit.a/./../third_party/sub/PaintChunker.o,source_path=,flags={clone,hot},num_aliases=1,component=)
.text@2a0020(size_without_padding=24,padding=4,full_name=blink::ContiguousContainerBase::ContiguousContainerBase(blink::ContiguousContainerBase&&),object_path=third_party/WebKit.a/sub/ContiguousContainer.o,source_path=,flags={},num_aliases=1,component=)
.text@2a1000(size_without_padding=0,padding=4040,full_name=** symbol gap 1,object_path=,source_path=,flags={},num_aliases=1,component=)
.text@2a1000(size_without_padding=94,padding=0,full_name=blink::PaintChunker::releasePaintChunks(),object_path=third_party/WebKit.a/sub/ContiguousContainer.o,source_path=,flags={anon,clone},num_aliases=1,component=)
......
......@@ -90,10 +90,10 @@ Memory map
.text.unlikely.foo_bar
0x0028f1e0 0x10e00 ./obj/third_party/icu/../icu/icuuc/ucnv_ext.o
.text._ZN5blink23ContiguousContainerBase11shrinkToFitEv
0x002a0000 0x10 obj/third_party/WebKit.a(sub/PaintChunker.o)
0x002a0000 0x10 obj/third_party/WebKit.a(./../third_party/sub/PaintChunker.o)
0x002a0001 blink::ContiguousContainerBase::shrinkToFit()
.text.hot._ZN5blink23ContiguousContainerBase11shrinkToFitEv2.part.1234.isra.2
0x002a0010 0xc obj/third_party/WebKit.a(sub/PaintChunker.o)
0x002a0010 0xc obj/third_party/WebKit.a(./../third_party/sub/PaintChunker.o)
0x002a0011 blink::ContiguousContainerBase::shrinkToFit()
.text._ZN5blink23ContiguousContainerBaseC2EOS0_
0xffffffffffffffff 0x18 obj/third_party/WebKit.a(sub/ContiguousContainer.o)
......@@ -126,9 +126,9 @@ Memory map
0x0284e398 0x20 obj/third_party/WebKit.a(sub/ContiguousContainer.o)
0x0284e398 chrome::mojom::FilePatcher::Name_
.rodata._ZN12_GLOBAL__N_1L37kAnimationFrameTimeHistogramClassPathE
0x028f3450 0x30 obj/third_party/WebKit.a(sub/PaintChunker.o)
0x028f3450 0x30 obj/third_party/WebKit.a(./../third_party/sub/PaintChunker.o)
.rodata._ZZN10_GLOBAL__N5blink20CSSValueKeywordsHash13findValueImplEPKcjE15value_word_list
0x028f3480 0x4 obj/third_party/WebKit.a(sub/PaintChunker.o)
0x028f3480 0x4 obj/third_party/WebKit.a(./../third_party/sub/PaintChunker.o)
0x028f3480 blink::(anonymous namespace)::CSSValueKeywordsHash::findValueImpl(char const*, unsigned int)::value_word_list
.data.rel.ro.local
......@@ -149,7 +149,7 @@ Memory map
.data.rel.ro 0x02cd8500 0x104108
.data.rel.ro._ZTV25ChromeMainDelegateAndroid
0x02cd8500 0x38 obj/third_party/WebKit.a(sub/PaintChunker.o)
0x02cd8500 0x38 obj/third_party/WebKit.a(./../third_party/sub/PaintChunker.o)
0x02cd8500 vtable for ChromeMainDelegateAndroid
.data.rel.ro._ZTVN4mojo15MessageReceiverE
0x02cd8538 0x18 obj/base/base/page_allocator.o
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment