[compiler-rt] c9faea0 - Revert "[HWASan] Allow to linkify symbolizer output."
Nico Weber via llvm-commits
llvm-commits at lists.llvm.org
Fri May 6 06:53:56 PDT 2022
Author: Nico Weber
Date: 2022-05-06T09:53:45-04:00
New Revision: c9faea04b1f8ef658ee5367ba8f00266b2051263
URL: https://github.com/llvm/llvm-project/commit/c9faea04b1f8ef658ee5367ba8f00266b2051263
DIFF: https://github.com/llvm/llvm-project/commit/c9faea04b1f8ef658ee5367ba8f00266b2051263.diff
LOG: Revert "[HWASan] Allow to linkify symbolizer output."
This reverts commit 4af9392e13a212fe295dc33455bc591b2dc8f859.
The new test fails on several machines (including some bots),
see https://reviews.llvm.org/D124950
Added:
Modified:
compiler-rt/lib/hwasan/scripts/hwasan_symbolize
Removed:
compiler-rt/test/hwasan/TestCases/hwasan_symbolize.cpp
################################################################################
diff --git a/compiler-rt/lib/hwasan/scripts/hwasan_symbolize b/compiler-rt/lib/hwasan/scripts/hwasan_symbolize
index 3b457c202daf3..308505e766150 100755
--- a/compiler-rt/lib/hwasan/scripts/hwasan_symbolize
+++ b/compiler-rt/lib/hwasan/scripts/hwasan_symbolize
@@ -16,8 +16,6 @@ from __future__ import unicode_literals
import argparse
import glob
-import html
-import json
import mmap
import os
import re
@@ -108,40 +106,10 @@ class Symbolizer:
self.__log = False
self.__warnings = set()
self.__index = {}
- self.__link_prefixes = []
- self.__html = False
-
- def enable_html(self, enable):
- self.__html = enable
def enable_logging(self, enable):
self.__log = enable
- def maybe_escape(self, text):
- if self.__html:
- # We need to manually use for leading spaces, html.escape does
- # not do that, and HTML ignores them.
- spaces = 0
- for i, c in enumerate(text):
- spaces = i
- if c != ' ':
- break
- text = text[spaces:]
- return spaces * ' ' + html.escape(text)
- return text
-
- def print(self, line, escape=True):
- if escape:
- line = self.maybe_escape(line)
- if self.__html:
- line += '<br/>'
- print(line)
-
- def read_linkify(self, filename):
- with open(filename, 'r') as fd:
- data = json.load(fd)
- self.__link_prefixes = [(e["prefix"], e["link"]) for e in data]
-
def __open_pipe(self):
if not self.__pipe:
opt = {}
@@ -239,26 +207,6 @@ class Symbolizer:
except Symbolizer.__EOF:
pass
- def maybe_linkify(self, file_line):
- if not self.__html or not self.__link_prefixes:
- return file_line
- filename, line_col = file_line.split(':', 1)
- if not line_col:
- line = '0' # simplify the link generation
- else:
- line = line_col.split(':')[0]
- longest_prefix = max((
- (prefix, link) for prefix, link in self.__link_prefixes
- if filename.startswith(prefix)),
- key=lambda x: len(x[0]), default=None)
- if longest_prefix is None:
- return file_line
- else:
- prefix, link = longest_prefix
- return '<a href="{}">{}</a>'.format(
- html.escape(link.format(file=filename[len(prefix):], line=line,
- file_line=file_line, prefix=prefix)), file_line)
-
def build_index(self):
for p in self.__binary_prefixes:
for dname, _, fnames in os.walk(p):
@@ -281,22 +229,16 @@ def symbolize_line(line, symbolizer_path):
frames = list(symbolizer.iter_call_stack(binary, buildid, addr))
if len(frames) > 0:
- symbolizer.print(
- symbolizer.maybe_escape(
- "%s#%s%s%s in " % (match.group(1), match.group(2), match.group(3),
- frames[0][0])
- ) + symbolizer.maybe_linkify(frames[0][1]),
- escape=False)
+ print("%s#%s%s%s in %s" % (match.group(1), match.group(2),
+ match.group(3), frames[0][0], frames[0][1]))
for i in range(1, len(frames)):
space1 = ' ' * match.end(1)
space2 = ' ' * (match.start(4) - match.end(1) - 2)
- symbolizer.print(
- symbolizer.maybe_escape("%s->%s%s in " % (space1, space2, frames[i][0]))
- + symbolizer.maybe_linkify(frames[i][1]), escape=False)
+ print("%s->%s%s in %s" % (space1, space2, frames[i][0], frames[i][1]))
else:
- symbolizer.print(line.rstrip())
+ print(line.rstrip())
else:
- symbolizer.print(line.rstrip())
+ print(line.rstrip())
def save_access_address(line):
global last_access_address, last_access_tag
@@ -338,10 +280,10 @@ def process_stack_history(line, symbolizer, ignore_tags=False):
tag_offset = local[5]
if not ignore_tags and (tag_offset is None or base_tag ^ tag_offset != last_access_tag):
continue
- symbolizer.print('')
- symbolizer.print('Potentially referenced stack object:')
- symbolizer.print(' %d bytes inside variable "%s" in stack frame of function "%s"' % (obj_offset, local[2], local[0]))
- symbolizer.print(' at %s' % (local[1],))
+ print('')
+ print('Potentially referenced stack object:')
+ print(' %d bytes inside variable "%s" in stack frame of function "%s"' % (obj_offset, local[2], local[0]))
+ print(' at %s' % (local[1],))
return True
return False
@@ -353,8 +295,6 @@ parser.add_argument('--symbols', action='append')
parser.add_argument('--source', action='append')
parser.add_argument('--index', action='store_true')
parser.add_argument('--symbolizer')
-parser.add_argument('--linkify', type=str)
-parser.add_argument('--html', action='store_true')
parser.add_argument('args', nargs=argparse.REMAINDER)
args = parser.parse_args()
@@ -440,17 +380,10 @@ if args.v:
print()
symbolizer = Symbolizer(symbolizer_path, binary_prefixes, paths_to_cut)
-symbolizer.enable_html(args.html)
symbolizer.enable_logging(args.d)
if args.index:
symbolizer.build_index()
-if args.linkify:
- if not args.html:
- print('Need --html to --linkify', file=sys.stderr)
- sys.exit(1)
- symbolizer.read_linkify(args.linkify)
-
for line in sys.stdin:
if sys.version_info.major < 3:
line = line.decode('utf-8')
diff --git a/compiler-rt/test/hwasan/TestCases/hwasan_symbolize.cpp b/compiler-rt/test/hwasan/TestCases/hwasan_symbolize.cpp
deleted file mode 100644
index 934d456105dbf..0000000000000
--- a/compiler-rt/test/hwasan/TestCases/hwasan_symbolize.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-// RUN: %clang_hwasan -Wl,--build-id -g %s -o %t
-// RUN: echo '[{"prefix": "'"$(realpath $(dirname %t)/../../../../../../)"'/", "link": "http://test.invalid/{file}:{line}"}]' > %t.linkify
-// RUN: %env_hwasan_opts=symbolize=0 not %run %t 2>&1 | hwasan_symbolize --html --symbols $(dirname %t) --index | FileCheck %s
-// RUN: %env_hwasan_opts=symbolize=0 not %run %t 2>&1 | hwasan_symbolize --html --linkify %t.linkify --symbols $(dirname %t) --index | FileCheck --check-prefixes=CHECK,LINKIFY %s
-// RUN: %env_hwasan_opts=symbolize=0 not %run %t 2>&1 | hwasan_symbolize --symbols $(dirname %t) --index | FileCheck %s
-// REQUIRES: stable-runtime
-
-#include <sanitizer/hwasan_interface.h>
-#include <stdlib.h>
-
-static volatile char sink;
-
-int main(int argc, char **argv) {
- __hwasan_enable_allocator_tagging();
- char *volatile x = (char *)malloc(10);
- sink = x[100];
- // LINKIFY: <a href="http://test.invalid/compiler-rt/test/hwasan/TestCases/hwasan_symbolize.cpp:[[@LINE-1]]">
- // CHECK: hwasan_symbolize.cpp:[[@LINE-2]]
- // CHECK: Cause: heap-buffer-overflow
- // CHECK: allocated here:
- // LINKIFY: <a href="http://test.invalid/compiler-rt/test/hwasan/TestCases/hwasan_symbolize.cpp:[[@LINE-6]]">
- // CHECK: hwasan_symbolize.cpp:[[@LINE-7]]
- return 0;
-}
More information about the llvm-commits
mailing list