diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-08-13 06:05:39 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-08-13 06:05:39 +0000 |
commit | 843589a7262806357cad1be029526839710eb597 (patch) | |
tree | 6dbdb9e3f0163244d791c8958af48f1dcedd4a29 /addr2line.c | |
parent | a20a2b00446d52f86b94e86bc43a1aee3da9f92f (diff) |
Revert "support compressed debug_line"
This reverts commit r64328
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64329 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'addr2line.c')
-rw-r--r-- | addr2line.c | 59 |
1 files changed, 7 insertions, 52 deletions
diff --git a/addr2line.c b/addr2line.c index a5b3e22074..fbe64758bc 100644 --- a/addr2line.c +++ b/addr2line.c @@ -101,9 +101,7 @@ void *alloca(); #define PATH_MAX 4096 #endif -#ifdef SHF_COMPRESSED -#include <zlib.h> -#else /* compatibility with glibc < 2.22 */ +#ifndef SHF_COMPRESSED /* compatibility with glibc < 2.22 */ #define SHF_COMPRESSED 0 #endif @@ -480,41 +478,6 @@ follow_debuglink(const char *debuglink, int num_traces, void **traces, fill_lines(num_traces, traces, 0, objp, lines, offset); } -static int -parse_compressed_debug_line(int num_traces, void **traces, - char *debug_line, unsigned long size, - obj_info_t *obj, line_info_t *lines, int offset) -{ - void *uncompressed_debug_line; - ElfW(Chdr) *chdr = (ElfW(Chdr) *)debug_line; - unsigned long destsize = chdr->ch_size; - int ret = 0; - - if (chdr->ch_type != ELFCOMPRESS_ZLIB) { - /* unsupported compression type */ - return -1; - } - - uncompressed_debug_line = malloc(destsize); - if (!uncompressed_debug_line) return -1; - ret = uncompress(uncompressed_debug_line, &destsize, - (const Bytef *)debug_line + sizeof(ElfW(Chdr)), size-sizeof(ElfW(Chdr))); - if (ret != Z_OK) { /* Z_OK = 0 */ - goto finish; - } - ret = parse_debug_line(num_traces, traces, - uncompressed_debug_line, - destsize, - obj, lines, offset); - if (ret) { - goto finish; - } - -finish: - free(uncompressed_debug_line); - return ret ? -1 : 0; -} - /* read file and fill lines */ static uintptr_t fill_lines(int num_traces, void **traces, int check_debuglink, @@ -681,20 +644,12 @@ fill_lines(int num_traces, void **traces, int check_debuglink, goto finish; } - if (compressed_p) { - int r = parse_compressed_debug_line(num_traces, traces, - file + debug_line_shdr->sh_offset, - debug_line_shdr->sh_size, - obj, lines, offset); - if (r) goto fail; - } - else { - int r = parse_debug_line(num_traces, traces, - file + debug_line_shdr->sh_offset, - debug_line_shdr->sh_size, - obj, lines, offset); - if (r) goto fail; - } + if (!compressed_p && + parse_debug_line(num_traces, traces, + file + debug_line_shdr->sh_offset, + debug_line_shdr->sh_size, + obj, lines, offset)) + goto fail; finish: return dladdr_fbase; fail: |