aboutsummaryrefslogtreecommitdiff
path: root/libbacktrace/macho.c
AgeCommit message (Collapse)AuthorFilesLines
2024-07-15libbacktrace: support FDPICIan Lance Taylor1-10/+15
Based on patch by Max Filippov. * internal.h: If FDPIC, #include <link.h> and/or <sys/link.h>. (libbacktrace_using_fdpic): Define. (struct libbacktrace_base_address): Define. (libbacktrace_add_base): Define. (backtrace_dwarf_add): Change base_address to struct libbacktrace_base_address. * dwarf.c (struct dwarf_data): Change base_address to struct libbacktrace_base_address. (add_ranges, find_address_ranges, build_ddress_map): Likewise. (build_dwarf_data, build_dwarf_add): Likewise. (add_low_high_range): Change base_address to struct libbacktrace_base_address. Use libbacktrace_add_base. (add_ranges_from_ranges, add_ranges_from_rnglists): Likewise. (add_line): Use libbacktrace_add_base. * elf.c (elf_initialize_syminfo): Change base_address to struct libbacktrace_base_address. Use libbacktrace_add_base. (elf_add): Change base_address to struct libbacktrace_base_address. (phdr_callback): Likewise. Initialize base_address.m. (backtrace_initialize): If using FDPIC, don't call elf_add with main executable; always use dl_iterate_phdr. * macho.c (macho_add_symtab): Change base_address to struct libbacktrace_base_address. Use libbacktrace_add_base. (macho_syminfo): Change base_address to struct libbacktrace_base_address. (macho_add_fat, macho_add_dsym, macho_add): Likewise. (backtrace_initialize): Likewise. Initialize base_address.m. * pecoff.c (coff_initialize_syminfo): Change base_address to struct libbacktrace_base_address. Use libbacktrace_add_base. (coff_add): Change base_address to struct libbacktrace_base_address. Initialize base_address.m.
2024-07-11libbacktrace: correctly gather Mach-O symbol tableIan Lance Taylor1-6/+8
For PR libbacktrace/97082. * macho.c (MACH_O_N_EXT): Don't define. (MACH_O_N_UNDF): Define. (macho_defined_symbol): Don't discard N_EXT symbols. Do discard N_UNDF symbols.
2024-07-11libbacktrace: suggest how to fix missing debug infoIan Lance Taylor1-1/+1
* elf.c (elf_nodebug): Suggest -g. * macho.c (macho_nodebug): Suggest -g and dsymutil. * pecoff.c (coff_nodebug): Suggest -g.
2024-07-11libbacktrace: remove trailing whitespaceIan Lance Taylor1-1/+0
* dwarf.c: Remove trailing whitespace. * macho.c: Likewise.
2024-01-03Update copyright years.Jakub Jelinek1-1/+1
2023-01-16Update copyright years.Jakub Jelinek1-1/+1
2022-07-07libbacktrace: don't exit Mach-O dyld library loop on one failureIan Lance Taylor1-1/+1
* macho.c (backtrace_initialize) [HAVE_MACH_O_DYLD_H]: Don't exit loop if we can't find debug info for one shared library.
2022-01-03Update copyright years.Jakub Jelinek1-1/+1
2021-01-04Update copyright years.Jakub Jelinek1-1/+1
2020-09-16libbacktrace, Mach-O : Support PowerPC archs.Iain Sandoe1-0/+6
This adds the PPC architecture variants for Mach-O libbacktrace. With this (as for X86 and Arm) when dsymutil is run on the binary we get a basic usable backtrace. Testsuite results on powerpc-apple-darwin9 are the same as for X86: * btest fails (TBC why) * dwarf5 tests fail because dsymutil does not handle that so far. libbacktrace/ChangeLog: * macho.c (MACH_O_CPU_TYPE_PPC): New. (MACH_O_CPU_TYPE_PPC64): New. Add compile-tests for powerpc to the Mach-O variants.
2020-09-08libbacktrace: correct memory lengths in Mach-O dsym supportIan Lance Taylor1-1/+2
* macho.c (macho_add_dsym): Make space for '/' in dsym. Use correct length when freeing diralc.
2020-09-08libbacktrace: correctly swap Mach-O 32-bit file offsetIan Lance Taylor1-19/+22
libbacktrace/ChangeLog: PR libbacktrace/96973 * macho.c (macho_add_fat): Correctly swap 32-bit file offset.
2020-08-24libbacktrace: add Mach-O 64-bit FAT supportIan Lance Taylor1-18/+54
libbacktrace/: * macho.c (MACH_O_MH_MAGIC_FAT_64): Define. (MACH_O_MH_CIGAM_FAT_64): Define. (struct macho_fat_arch_64): Define. (macho_add_fat): Add and use is_64 parameter. (macho_add): Recognize 64-bit fat files.
2020-05-09libbacktrace: add Mach-O supportIan Lance Taylor1-0/+1309
libbacktrace/ PR libbacktrace/88745 * macho.c: New file. * filetype.awk: Recognize Mach-O files. * Makefile.am (FORMAT_FILES): Add macho.c. (check_DATA): New variable. Set to .dSYM if HAVE_DSYMUTIL. (%.dSYM): New pattern target. (test_macho_SOURCES, test_macho_CFLAGS): New targets. (test_macho_LDADD): New target. (BUILDTESTS): Add test_macho. (macho.lo): Add dependencies. * configure.ac: Recognize macho file type. Check for mach-o/dyld.h. Don't try to run objcopy if we don't find it. Look for dsymutil and define a HAVE_DSYMUTIL conditional. * Makefile.in: Regenerate. * configure: Regenerate. * config.h.in: Regenerate.