aboutsummaryrefslogtreecommitdiffstats
path: root/addr2line.c
Commit message (Collapse)AuthorAgeFilesLines
* * addr2line.c: drop to support ATARI ST platform. It was discontinuedhsbt2016-05-281-5/+3
| | | | | | | | more than two decades ago. [fix GH-1350] Patch by @cremno * include/ruby/ruby.h: ditto. * io.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55189 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c: define toupper for its use. fix r54391.naruse2016-03-291-2/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54392 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (fill_lines): get base addrs in fill_lines to use itnaruse2014-04-141-27/+27
| | | | | | | with dladdr_fbases introduced at r45563. it didn't get before if the executalbe is not pie. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45587 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (main_exe_path): support FreeBSD.naruse2014-04-141-0/+23
| | | | | | | At least sh, csh, tcsh, bash, and zsh sets realpath of the main executable for dladdr, but gdb doesn't. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45586 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (rb_dump_backtrace_with_lines): set base addressnaruse2014-04-111-29/+35
| | | | | | | which is retrived from dladdr to dladdr_fbases, to skip already parsed objects. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45563 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (append_obj): clear allocated memory.naruse2014-04-101-2/+3
| | | | | | * addr2line.c (rb_dump_backtrace_with_lines): free `base_addrs'. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45550 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (rb_dump_backtrace_with_lines): don't depend hard codednaruse2014-04-011-110/+125
| | | | | | | | | | | | | | symbol '_start'. * addr2line.c (fill_lines): instead of above, get a dynamic symbol in the main executable and use it to know the base address. * addr2line.c (follow_debuglink0): use obj_info_t instead of line_info_t to handle object related data. * addr2line.c (main_exe_path): defined for Linux. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45493 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (fill_lines): use dynsym, which is used for dynamicnaruse2014-03-311-2/+14
| | | | | | linking and always exists, if there's no symtab. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* revert r45417naruse2014-03-281-10/+0
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (fill_lines): check shdr[i].sh_type because even ifnaruse2014-03-271-8/+18
| | | | | | | | .symtab section exists, the section's type can be SHT_NOBITS and actual data doesn't exist in the file. [Bug #9654] revert r45441. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45445 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* temporally change for powerpc64-linux fc18naruse2014-03-261-1/+1
| | | | | | | fc18 powerpc64's libc6-dbg has symtab/strtab but it can't be referenced. therefore add workaround not to see them. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45441 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* remove break because strtab/symtab is usually the last segmentnaruse2014-03-261-10/+0
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45437 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* temporaly show sym->st_name and so onnaruse2014-03-261-1/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45435 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (fill_lines): loop reverse order not to overwritenaruse2014-03-261-72/+40
| | | | | | | | | | | | | | the basis of base addresses comparison. * addr2line.c: use uintptr_t instead of intptr_t for poinrters. * addr2line.c (rb_dump_backtrace_with_lines): don't use syms. * vm_dump.c (rb_print_backtrace): ditto. * addr2line.h: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45425 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (follow_debuglink): show message if it closes openednaruse2014-03-261-0/+1
| | | | | | (and maybe used) elf binary. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45422 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (fill_line): pass and use offset instead ofnaruse2014-03-261-10/+8
| | | | | | curobj_baseaddr. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* don't write _start as is; use dlsymnaruse2014-03-261-2/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45418 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* temporaly change/add to debug on powerpc64-linuxnaruse2014-03-251-0/+6
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45417 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (fill_lines): don't run fill_lines multiple times.naruse2014-03-251-17/+28
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* main is not a pubic function, use _start insteadnaruse2014-03-251-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45412 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (rb_dump_backtrace_with_lines): a function to get mustnaruse2014-03-251-1/+2
| | | | | | | be a function in the main executable, whose absolute path is not available by dladdr, and ruby get it by /proc/self/exe on Linux. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45410 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (fill_lines): skip if path is NULL.naruse2014-03-251-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45409 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (rb_dump_backtrace_with_lines): fetch path of thenaruse2014-03-241-1/+27
| | | | | | executable from /proc/self/exe on Linux. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45394 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (parse_debug_line_cu): explicitly specify signed charnaruse2014-03-241-1/+1
| | | | | | | because DWARF's line_Base is signed char and char maybe unsigned. patched by Rei Odaira. [ruby-dev:48068] [Bug #9654] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45391 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (fill_lines): compare the file names of object in whichnaruse2014-03-221-12/+17
| | | | | | symbols exist. [Bug #9654] [ruby-dev:48058] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45383 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (fill_lines): return address is just after callingnaruse2014-03-151-1/+1
| | | | | | | address. Therefore noreturn function with tail call's return address may be in another function. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45346 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (fill_lines): fetch symbol names from ELF binary'snaruse2014-03-141-88/+140
| | | | | | | | | | | | | | | | | | | | | | symbol table if it is built with cc -g and not stripped. Now ruby can show static symbols on Linux though glibc's backtrace_symbols(3) don't show them. * addr2line.c (rb_dump_backtrace_with_lines): use dladdr(3) to detect what object file declares the symbol because dl_iterate_phdr can't detect the main executable file and codes on the stack. NOTE: signal trampolines sometimes on the user stack. (FreeBSD) * addr2line.c (rb_dump_backtrace_with_lines): stop showing backtrace if the function's name is main. NOTE: FreeBSD's backtrace (libexecinfo) shows _start and an additional address. Why it doesn't remove them on dladdr phase is, dladdr may fail to detect the main function but detect as _start function. Therefore it must be after scanning the symbol table and getting correct name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45335 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * configure.in: always check dladdr(1).naruse2014-03-101-0/+8
| | | | | | | | | | | * addr2line.c (fill_lines): show the line number in C backtrace if ruby is built without --enable-shared (PIE) on Linux. patch is originally by Shinichiro Hamaji https://twitter.com/shinh/status/441957774264504321 NOTE: ld doesn't insert __executable_start for PIE. dladdr(3)'s argument must be a function pointer. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45305 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* use strlcatnobu2014-02-271-4/+2
| | | | | | | | * addr2line.c (follow_debuglink): use strlcat instead of strncat. * dln.c (aix_loaderror): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45191 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c: Include ELF header after system headers (especiallyakr2013-10-261-5/+6
| | | | | | | | | | sys/types.h) to avoid compilation failure, "usr/include/sh3/elf_machdep.h:4:2: error: #error Define _BYTE_ORDER!", on NetBSD/sh3 (dreamcast, hpcsh, landisk, mmeye). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43426 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c: use more generic type:naruse2013-04-061-26/+13
| | | | | | | | | | | | | * u_char -> unsigned char * u_short -> unsigned short * u_int -> unsigned int * u_long -> unsigned long * quad_t -> int64_t * u_quad_t -> uint64_t * addr2line.c (imax): inline is defined by configure. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40170 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c: quad_t and u_quad_t is not available on Solaris.ngoto2013-04-061-0/+13
| | | | | | | | | __inline is not available with old compilers on Solaris. [ruby-dev:47229] [Bug #8227] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40161 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c: include ruby/missing.h to fix compile error on Debian.akr2013-04-051-0/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40125 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Suppress -Werror=shorten-64-to-32naruse2013-03-261-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39933 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (putce): suppress unused return value warning.kosaki2013-03-241-1/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39921 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (kprintf): added from FreeBSD libstand's printf.naruse2013-03-231-13/+441
| | | | | | | | | this is consided as async signal safe function. * addr2line.c (rb_dump_backtrace_with_lines): use kfprintf. [Bug #8144] [ruby-core:53632] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39887 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (rb_dump_backtrace_with_lines): output line at once.naruse2013-03-211-5/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39866 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm_dump.c (rb_vm_bugreport): revert r38533.kosaki2012-12-211-1/+10
| | | | | | | * addr2line.c (fill_lines): add ELF sanity check. [Bug #7597] [ruby-dev:46786] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38543 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Fix build when gcc is used and the platform's libc lacks alloca().knu2012-11-091-3/+20
| | | | | | | | | | | | | | | | * include/ruby/ruby.h (alloca), eval_intern.h (alloca), gc.c (alloca): Make alloca() globally available by moving the ultimate ifdef's to ruby/ruby.h. Gcc hides its builtin alloca() when compiling with -ansi, and linking thus fails on platforms that lack their own alloca() implementation in libc, which include OpenBSD and some ports of NetBSD. We use alloca() everywhere including from within third party C extentions, so alloca() must be made globally available. [Bug #7307] * addr2line.c (alloca): Replace the alloca() part with the ultimate ifdef's. [Bug #7307] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37571 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c: SIZE_MAX is defined in stdint.h, so r36755 breaksnaruse2012-08-291-0/+1
| | | | | | 32bit FreeBSD. [ruby-core:47360] [Bug #6948] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36844 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* addr2line.c: suppress warningsnobu2012-08-211-1/+3
| | | | | | | * addr2line.c (fill_lines): check file size overflow only if it is necessary, and suppress a sign-compare warning. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36758 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (fill_lines): need check and cast of the file size ofusa2012-08-211-3/+8
| | | | | | | target binary because there are some platforms which off_t > size_t. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36755 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * io.c (io_encoding_set): suppress warnings. [ruby-dev:45627]naruse2012-05-061-18/+18
| | | | | | | | this tmp1 is not required after r35538. * addr2line.c: suppress warnings. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * adjust style.nobu2012-03-151-2/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35027 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (PATH_MAX): define if not defined. [ruby-core:40840]naruse2011-11-081-0/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33675 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c: use USE_ELF instead of __ELF__ because Solarisnaruse2011-07-081-2/+2
| | | | | | | | | | | doesn't define it. USE_ELF is already provided by configure. patched by Naohisa Goto. [ruby-dev:44066] [Bug #4998] * addr2line.h: ditto. * vm_dump.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32461 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c: fix r32407 to check HAVE_ALLOCA_H.mame2011-07-051-1/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32411 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c: include <alloca.h> to fix a build issue on Solaris.mame2011-07-041-0/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32407 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c (uleb128): cast the value to unsigned long.naruse2011-03-021-1/+7
| | | | | | * addr2line.c (fill_lines): print error when lseek fails. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31010 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * addr2line.c: suppressed shorten-64-to-32 warnings.naruse2011-01-311-9/+9
| | | | | | | | | | | | * regcomp.c: ditto. * regexec.c: ditto. * regint.h: ditto. * regparse.c: ditto. * regparse.h: ditto. * time.c: ditto. * variable.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30740 b2dd03c8-39d4-4d8f-98ff-823fe69b080e