mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-23 19:03:59 +08:00
filetype.awk: Add AIX XCOFF type detection.
* filetype.awk: Add AIX XCOFF type detection. * configure.ac: Recognize xcoff format. * Makefile.am (FORMAT_FILES): Add xcoff.c. * fileline.c: Include <unistd.h>. (fileline_initialize): Add case for AIX procfs. * xcoff.c: New file. * configure, Makefile.in: Rebuild. From-SVN: r250435
This commit is contained in:
parent
60f80e6541
commit
b3530b946f
@ -1,3 +1,13 @@
|
|||||||
|
2017-07-21 Tony Reix <tony.reix@atos.net>
|
||||||
|
|
||||||
|
* filetype.awk: Add AIX XCOFF type detection.
|
||||||
|
* configure.ac: Recognize xcoff format.
|
||||||
|
* Makefile.am (FORMAT_FILES): Add xcoff.c.
|
||||||
|
* fileline.c: Include <unistd.h>.
|
||||||
|
(fileline_initialize): Add case for AIX procfs.
|
||||||
|
* xcoff.c: New file.
|
||||||
|
* configure, Makefile.in: Rebuild.
|
||||||
|
|
||||||
2017-06-21 Richard Biener <rguenther@suse.de>
|
2017-06-21 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
* configure.ac: Add AC_SYS_LARGEFILE.
|
* configure.ac: Add AC_SYS_LARGEFILE.
|
||||||
|
@ -57,7 +57,8 @@ BACKTRACE_FILES = \
|
|||||||
FORMAT_FILES = \
|
FORMAT_FILES = \
|
||||||
elf.c \
|
elf.c \
|
||||||
pecoff.c \
|
pecoff.c \
|
||||||
unknown.c
|
unknown.c \
|
||||||
|
xcoff.c
|
||||||
|
|
||||||
VIEW_FILES = \
|
VIEW_FILES = \
|
||||||
read.c \
|
read.c \
|
||||||
@ -155,3 +156,5 @@ sort.lo: config.h backtrace.h internal.h
|
|||||||
stest.lo: config.h backtrace.h internal.h
|
stest.lo: config.h backtrace.h internal.h
|
||||||
state.lo: config.h backtrace.h backtrace-supported.h internal.h
|
state.lo: config.h backtrace.h backtrace-supported.h internal.h
|
||||||
unknown.lo: config.h backtrace.h internal.h
|
unknown.lo: config.h backtrace.h internal.h
|
||||||
|
xcoff.lo: config.h backtrace.h internal.h
|
||||||
|
|
||||||
|
@ -319,7 +319,8 @@ BACKTRACE_FILES = \
|
|||||||
FORMAT_FILES = \
|
FORMAT_FILES = \
|
||||||
elf.c \
|
elf.c \
|
||||||
pecoff.c \
|
pecoff.c \
|
||||||
unknown.c
|
unknown.c \
|
||||||
|
xcoff.c
|
||||||
|
|
||||||
VIEW_FILES = \
|
VIEW_FILES = \
|
||||||
read.c \
|
read.c \
|
||||||
@ -817,6 +818,7 @@ sort.lo: config.h backtrace.h internal.h
|
|||||||
stest.lo: config.h backtrace.h internal.h
|
stest.lo: config.h backtrace.h internal.h
|
||||||
state.lo: config.h backtrace.h backtrace-supported.h internal.h
|
state.lo: config.h backtrace.h backtrace-supported.h internal.h
|
||||||
unknown.lo: config.h backtrace.h internal.h
|
unknown.lo: config.h backtrace.h internal.h
|
||||||
|
xcoff.lo: config.h backtrace.h internal.h
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
3
libbacktrace/configure
vendored
3
libbacktrace/configure
vendored
@ -12048,6 +12048,9 @@ elf*) FORMAT_FILE="elf.lo" ;;
|
|||||||
pecoff) FORMAT_FILE="pecoff.lo"
|
pecoff) FORMAT_FILE="pecoff.lo"
|
||||||
backtrace_supports_data=no
|
backtrace_supports_data=no
|
||||||
;;
|
;;
|
||||||
|
xcoff) FORMAT_FILE="xcoff.lo"
|
||||||
|
backtrace_supports_data=no
|
||||||
|
;;
|
||||||
*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not determine output file type" >&5
|
*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not determine output file type" >&5
|
||||||
$as_echo "$as_me: WARNING: could not determine output file type" >&2;}
|
$as_echo "$as_me: WARNING: could not determine output file type" >&2;}
|
||||||
FORMAT_FILE="unknown.lo"
|
FORMAT_FILE="unknown.lo"
|
||||||
|
@ -233,6 +233,9 @@ elf*) FORMAT_FILE="elf.lo" ;;
|
|||||||
pecoff) FORMAT_FILE="pecoff.lo"
|
pecoff) FORMAT_FILE="pecoff.lo"
|
||||||
backtrace_supports_data=no
|
backtrace_supports_data=no
|
||||||
;;
|
;;
|
||||||
|
xcoff) FORMAT_FILE="xcoff.lo"
|
||||||
|
backtrace_supports_data=no
|
||||||
|
;;
|
||||||
*) AC_MSG_WARN([could not determine output file type])
|
*) AC_MSG_WARN([could not determine output file type])
|
||||||
FORMAT_FILE="unknown.lo"
|
FORMAT_FILE="unknown.lo"
|
||||||
backtrace_supported=no
|
backtrace_supported=no
|
||||||
|
@ -37,6 +37,7 @@ POSSIBILITY OF SUCH DAMAGE. */
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "backtrace.h"
|
#include "backtrace.h"
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
@ -57,6 +58,7 @@ fileline_initialize (struct backtrace_state *state,
|
|||||||
int pass;
|
int pass;
|
||||||
int called_error_callback;
|
int called_error_callback;
|
||||||
int descriptor;
|
int descriptor;
|
||||||
|
char buf[64];
|
||||||
|
|
||||||
if (!state->threaded)
|
if (!state->threaded)
|
||||||
failed = state->fileline_initialization_failed;
|
failed = state->fileline_initialization_failed;
|
||||||
@ -80,7 +82,7 @@ fileline_initialize (struct backtrace_state *state,
|
|||||||
|
|
||||||
descriptor = -1;
|
descriptor = -1;
|
||||||
called_error_callback = 0;
|
called_error_callback = 0;
|
||||||
for (pass = 0; pass < 4; ++pass)
|
for (pass = 0; pass < 5; ++pass)
|
||||||
{
|
{
|
||||||
const char *filename;
|
const char *filename;
|
||||||
int does_not_exist;
|
int does_not_exist;
|
||||||
@ -99,6 +101,10 @@ fileline_initialize (struct backtrace_state *state,
|
|||||||
case 3:
|
case 3:
|
||||||
filename = "/proc/curproc/file";
|
filename = "/proc/curproc/file";
|
||||||
break;
|
break;
|
||||||
|
case 4:
|
||||||
|
snprintf (buf, sizeof (buf), "/proc/%d/object/a.out", getpid ());
|
||||||
|
filename = buf;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
abort ();
|
abort ();
|
||||||
}
|
}
|
||||||
|
@ -3,3 +3,6 @@
|
|||||||
/\177ELF\002/ { if (NR == 1) { print "elf64"; exit } }
|
/\177ELF\002/ { if (NR == 1) { print "elf64"; exit } }
|
||||||
/\114\001/ { if (NR == 1) { print "pecoff"; exit } }
|
/\114\001/ { if (NR == 1) { print "pecoff"; exit } }
|
||||||
/\144\206/ { if (NR == 1) { print "pecoff"; exit } }
|
/\144\206/ { if (NR == 1) { print "pecoff"; exit } }
|
||||||
|
/\001\337/ { if (NR == 1) { print "xcoff"; exit } }
|
||||||
|
/\001\367/ { if (NR == 1) { print "xcoff"; exit } }
|
||||||
|
|
||||||
|
76
libbacktrace/xcoff.c
Normal file
76
libbacktrace/xcoff.c
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
/* xcoff.c -- Get debug data from a XCOFFF file for backtraces.
|
||||||
|
Copyright (C) 2017 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
(1) Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
(2) Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in
|
||||||
|
the documentation and/or other materials provided with the
|
||||||
|
distribution.
|
||||||
|
|
||||||
|
(3) The name of the author may not be used to
|
||||||
|
endorse or promote products derived from this software without
|
||||||
|
specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||||
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
|
||||||
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||||
|
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE. */
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#include "backtrace.h"
|
||||||
|
#include "internal.h"
|
||||||
|
|
||||||
|
/* A trivial routine that always fails to find fileline data. */
|
||||||
|
|
||||||
|
static int
|
||||||
|
xcoff_fileline (struct backtrace_state *state ATTRIBUTE_UNUSED,
|
||||||
|
uintptr_t pc, backtrace_full_callback callback,
|
||||||
|
backtrace_error_callback error_callback ATTRIBUTE_UNUSED,
|
||||||
|
void *data)
|
||||||
|
|
||||||
|
{
|
||||||
|
static char buf[32];
|
||||||
|
|
||||||
|
snprintf (buf, sizeof(buf), "pc=0x%llx", (unsigned long long) pc);
|
||||||
|
return callback (data, pc, "unknown_file", 123, buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
xcoff_syminfo (struct backtrace_state *state ATTRIBUTE_UNUSED, uintptr_t addr,
|
||||||
|
backtrace_syminfo_callback callback,
|
||||||
|
backtrace_error_callback error_callback ATTRIBUTE_UNUSED,
|
||||||
|
void *data)
|
||||||
|
{
|
||||||
|
callback (data, addr, "unknown", 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Initialize the backtrace data when we don't know how to read the
|
||||||
|
debug info. */
|
||||||
|
|
||||||
|
int
|
||||||
|
backtrace_initialize (struct backtrace_state *state ATTRIBUTE_UNUSED,
|
||||||
|
int descriptor ATTRIBUTE_UNUSED,
|
||||||
|
backtrace_error_callback error_callback ATTRIBUTE_UNUSED,
|
||||||
|
void *data ATTRIBUTE_UNUSED, fileline *fileline_fn)
|
||||||
|
{
|
||||||
|
state->syminfo_fn = xcoff_syminfo;
|
||||||
|
state->fileline_data = NULL;
|
||||||
|
*fileline_fn = xcoff_fileline;
|
||||||
|
return 1;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user