From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 From: Fedora GDB patches Date: Fri, 27 Oct 2017 21:07:50 +0200 Subject: gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch FileName: gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch ;; Toolchain on sparc is slightly broken and debuginfo files are generated ;; with non 64bit aligned tables/offsets. ;; See for example readelf -S ../Xvnc.debug. ;; ;; As a consenquence calculation of sectp->filepos as used in ;; dwarf2_read_section (gdb/dwarf2read.c:1525) will return a non aligned buffer ;; that cannot be used directly as done with MMAP. ;; Usage will result in a BusError. ;; ;; While we figure out what's wrong in the toolchain and do a full archive ;; rebuild to fix it, we need to be able to use gdb :) ;;=push diff --git a/gdb/gdb_bfd.c b/gdb/gdb_bfd.c index 8fedeb438d..057f5e1ae9 100644 --- a/gdb/gdb_bfd.c +++ b/gdb/gdb_bfd.c @@ -24,12 +24,14 @@ #include "hashtab.h" #include "filestuff.h" #include "vec.h" +#ifndef __sparc__ #ifdef HAVE_MMAP #include #ifndef MAP_FAILED #define MAP_FAILED ((void *) -1) #endif #endif +#endif #include "target.h" #include "gdb/fileio.h" #include "inferior.h" @@ -484,6 +486,7 @@ free_one_bfd_section (bfd *abfd, asection *sectp, void *ignore) if (sect != NULL && sect->data != NULL) { +#ifndef __sparc__ #ifdef HAVE_MMAP if (sect->map_addr != NULL) { @@ -493,6 +496,7 @@ free_one_bfd_section (bfd *abfd, asection *sectp, void *ignore) gdb_assert (res == 0); } else +#endif #endif xfree (sect->data); } @@ -659,6 +663,7 @@ gdb_bfd_map_section (asection *sectp, bfd_size_type *size) if (descriptor->data != NULL) goto done; +#ifndef __sparc__ #ifdef HAVE_MMAP if (!bfd_is_section_compressed (abfd, sectp)) { @@ -693,6 +698,7 @@ gdb_bfd_map_section (asection *sectp, bfd_size_type *size) } } #endif /* HAVE_MMAP */ +#endif /* Handle compressed sections, or ordinary uncompressed sections in the no-mmap case. */